CentOS 7基礎Java開發環境JDK, Maven, Tomcat, MySQL,Redis

一、搭建JDK環境


通常情況下CentOS 7自帶的JDK爲OpenJDK,不同於Oracel SUN JDK,爲了與在PC上保持相同的JDK配置方式及使用習慣,可替換爲Oracle SUN JDK。

(1)卸載OpenJDK

先通過命令查詢Java相關的現有安裝:

rpm -qa | grep java

結果如下:

python-javapackages-3.4.1-11.el7.noarch
java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64
tzdata-java-2018e-3.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.171-8.b10.el7_5.x86_64
通過rpm -e xx(xx爲上述包)逐個卸載,並再次查看發現已經下載乾淨,操作過程如下:
[root@centos jvm]# rpm -e java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64
[root@centos jvm]# rpm -e java-1.8.0-openjdk-headless-1.8.0.171-8.b10.el7_5.x86_64
[root@centos jvm]# rpm -e tzdata-java-2018e-3.el7.noarch
[root@centos jvm]# rpm -e javapackages-tools-3.4.1-11.el7.noarch
[root@centos jvm]# rpm -e python-javapackages-3.4.1-11.el7.noarch
[root@centos jvm]# rpm -qa |grep java
[root@centos jvm]# java -version
bash: /usr/bin/java: No such file or directory

(2)下載Oracle SUN JDK

到Oracle網站下載JDK(https://www.oracle.com/technetwork/java/javase/downloads/index.html),對CentOS 7選擇相應版本的RPM安裝包即可;

例如:jdk-8u171-linux-x64.rpm

(3)安裝Oracle SUN JDK

root權限下,將下載後的版本通過rpm命令安裝即可,命令示例:

rpm -ivh jdk-8u171-linux-x64.rpm

(4)驗證安裝

輸入命令java -version即可,另外可通過ls /usr/java查看默認安裝路徑下的java安裝版本,操作過程如下:

[root@centos_vm2 tools]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
[root@centos_vm2 tools]# ls /usr/java
default  jdk1.8.0_171-amd64  latest

(5)修改環境變量配置文件

在/etc/profile文件中添加如下幾行:

#java environment
 export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
 export PATH=$PATH:${JAVA_HOME}/bin

後執行source /etc/profile命令使得配置生效;在其他某些Linux環境(例如Deepin)下可以通過修改/etc/bash.bashrc實現同樣的效果;


二、搭建Maven開發環境


(1)下載Maven安裝包

到apache網站下載maven(http://maven.apache.org/download.cgi) ,選擇所需版本並下載

(2)安裝Maven

建議安裝目錄:/usr/local/maven/,需root權限下先創建好該目錄:

mkdir /usr/local/maven

先將下載的安裝包解壓的某個目錄(筆者的安裝包、安裝包解壓均在/var/ftp/tools/目錄下):

tar -zxvf apache-maven-3.5.4-bin.tar.gz

然後複製目錄到安裝目錄:

cp -r apache-maven-3.5.4/* /usr/local/maven/

之後可查看安裝目錄下的文件、目錄列表:

[root@centos_vm2 tools]# ls /usr/local/maven
bin  boot  conf  lib  LICENSE  NOTICE  README.txt

(3)修改環境變量配置文件:

在/etc/profile文件中添加環境變量MAVEN_HOME,並添加到PATH中,結合上面JAVA環境變量引起的變更,合計如下:

#java environment
 export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
 export MAVEN_HOME=/usr/local/maven
 export PATH=$PATH:${JAVA_HOME}/bin:${MAVEN_HOME}/bin

執行如下命令使得配置文件生效

source /etc/profile

(4)驗證安裝

執行mvn -v查看版本,執行echo $MAVEN_HOME查看環境變量,過程如下:

[root@centos tools]# mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_171, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_171-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"
[root@centos tools]# echo $MAVEN_HOME
/usr/local/maven


三、搭建Tomcat環境


(1)下載Tomcat安裝包

到apache網站下載Tomcat(http://tomcat.apache.org/) ,選擇所需版本並下載

(2)安裝Tomcat

建議安裝目錄/usr/local/tomcat,解壓壓縮包:

tar -zxvf apache-tomcat-9.0.10.tar.gz

之後將解壓後的目錄複製到/usr/local/tomcat,操作過程如下:

[root@centos usr]# su root
[root@centos usr]# cd /usr/local
[root@centos local]# mkdir tomcat
[root@centos local]# cd /var/ftp/tools
[root@centos tools]# cp -r apache-tomcat-9.0.10/* /usr/local/tomcat/

(3)開放Tomcat的8080服務端口

執行如下命令開放8080端口:

firewall-cmd --zone=public --add-port=8080/tcp --permanent

上述命令中的參數含義:
--zone #作用域
--add-port=8080/tcp #添加端口,格式爲:端口/通訊協議
--permanent #永久生效,沒有此參數重啓後失效

然後重啓防火牆:

firewall-cmd --reload

之後在/usr/local/tomcat/bin下,如需啓動Tomcat服務則執行

./startup.sh

如需停止Tomcat服務則執行:

./shutdown.sh


四、將Tomcat服務化(可選步驟)


將Tomcat服務化管理在許多時候比較方便,通常包含如下幾個步驟:

(1)設置環境變量、用戶及組:

環境變量可以通過/etc/profile設置,也可以通過在tomcat/bin/setenv.sh進行設置:

例如,在/etc/profile中設置相關路徑:

export CLASS_PATH=.:$JAVA_HOME/lib
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE=/usr/local/tomcat
export PATH=$PATH:${JAVA_HOME}/bin:${CATALINA_HOME}/bin

然後通過/usr/local/tomcat/bin/setenv.sh 設置運行參數,文件內容如下:

#add tomcat pid 
CATALINA_PID="$CATALINA_BASE/tomcat.pid" 
#add java opts 
JAVA_OPTS="-server -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"

可配置tomcat服務運行時的用戶及組,並賦予相應的權限:

[root@snails ~]# getent group tomcat || groupadd -r tomcat 
[root@snails ~]# getent passwd tomcat || useradd -r -d /opt -s /bin/nologin -g tomcat tomcat 
[root@snails ~]# chown -R tomcat:tomcat /usr/local/tomcat
[root@snails ~]# chmod a+rwx -R /usr/local/tomcat/logs

上述命令getent用於查詢,如果沒有查詢到則執行||之後的命令;groupadd或者useradd之後的參數-r表示的是系統羣組、系統用戶;useradd之後的參數-s /bin/nologin表示該用戶無法直接登錄,只用於系統作業使用;


注:本部分來源參考自:https://www.jianshu.com/p/29ecd624046f


(1)服務描述文件:

用service或systemctl管理服務的時候,需先在服務管理目錄(即/usr/lib/systemd/system目錄,或者/lib/systemd/system目錄,後者是前者的軟連接)創建一個腳本文件,

vim /usr/lib/systemd/system/tomcat.service

來管理服務的啓動和停止,內容示例如下:

[Unit] 
Description=Apache Tomcat 9
After=network.target  
[Service]
Type=forking
PIDFile=/usr/local/tomcat/tomcat.pid
ExecStart=/usr/local/tomcat/bin/startup.sh  
ExecReload=/bin/kill -s HUP $MAINPID 
ExecStop=/bin/kill -s QUIT $MAINPID 
PrivateTmp=true 
User=tomcat
Group=tomcat  
[Install]
WantedBy=multi-user.target

上述內容中的參數說明如下:

  • [Unit]:服務的說明

       Description:描述服務

       Documentation  (可選):服務文檔      

       After:描述服務類別

  • [Service]服務運行參數的設置

      Type=forking是後臺運行的形式,取值有:simple、forking、oneshot、notify、dbus,其中:
      > simple(默認值):systemd認爲該服務將立即啓動。服務進程不會fork。如果該服務要啓動其他服務,不要使用此類型啓動,除非該服務是socket激活型。
      > forking:systemd認爲當該服務進程fork,且父進程退出後服務啓動成功。對於常規的守護進程(daemon),除非你確定此啓動方式無法滿足需求,使用此類型啓動即可。使用此啓動類型應同時指定 PIDFile=,以便systemd能夠跟蹤服務的主進程。
      > oneshot:這一選項適用於只執行一項任務、隨後立即退出的服務。可能需要同時設置 RemainAfterExit=yes 使得 systemd 在服務進程退出之後仍然認爲服務處於激活狀態。
      > notify:與 Type=simple 相同,但約定服務會在就緒後向 systemd 發送一個信號。這一通知的實現由 libsystemd-daemon.so 提供。
      > dbus:若以此方式啓動,當指定的 BusName 出現在DBus系統總線上時,systemd認爲服務就緒。

      

     PIDFile: 進程ID文件路徑,對於上述tomcat的配置,相應的tomat/bin/catalina.sh需加入CATALINA_PID參數,參考方式是在腳本一開始的# OS specific support.行之前添加變更,示例如下:

# -----------------------------------------------------------------------------
CATALINA_PID=/usr/local/tomcat/tomcat.pid
# OS specific support.  $var _must_ be set to either true or false.

      ExecStartPre (可選):啓動前要做什麼

      ExecStart:爲服務的具體運行命令
      ExecReload:爲重啓命令,kill命令-s參數爲向進程發送信號,HUP爲重新運行的信號
      ExecStop:爲停止命令,kill命令-s參數爲向進程發送信號,QUIT爲退出程序的信號

      User、Group(可選):爲運行時所使用的用戶、羣組,如果沒有將tomcat目錄綁定到該用戶,則這兩個參數不要在配置中出現
      PrivateTmp=True表示給服務分配獨立的臨時空間
      注意:[Service]的啓動、重啓、停止命令全部要求使用絕對路徑,User、Group不指定則默認爲root

  • [Install]服務安裝的相關設置,可設置爲多用戶


注:本部分參考自:https://blog.csdn.net/younger_china/article/details/52539522


然後執行systemctl enable tomcat設置爲開機自動啓動,或者先通過tomcat/bin子目錄下的shutdown.sh停掉當前運行的tomcat,然後執行systemctl start tomcat運行即可;


(2)啓動阻塞超時的問題:

全新的tomcat環境,在沒有運行過的情況下,tomcat/logs子目錄下是沒有日誌文件的,第一次運行後將產生日誌文件,最常見的是根據catalina.out日誌文件定位問題。

Tomcat啓動有時因爲超時導致啓動失敗,常見的原因是安全隨機數耗時的問題,從啓動日誌中看到類似如下的告警:

19-Jul-2018 22:43:02.156 WARNING [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [149,396] milliseconds.
19-Jul-2018 22:43:02.174 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/ROOT] has finished in [149,652] ms

這是由於在服務器環境下,系統的隨機數參考環境變量比較少導致計算比較慢,解決方式有兩種:

方式一:可以通過配置 JRE 使用非阻塞的 Entropy Source:

在 catalina.sh 中加入這麼一行:

-Djava.security.egd=file:/dev/./urandom

例如:

# Make the umask available when using the org.apache.catalina.security.SecurityListener
JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/urandom  -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"


方式二:打開 $JAVA_HOME/jre/lib/security/java.security (本安裝中是這個文件,找到下面的內容:

securerandom.source=file:/dev/random

替換爲:

securerandom.source=file:/dev/./urandom

注:路徑中間的點號是在某些版本中securerandom.source 設置爲 /dev/urandom 它也仍然使用的 /dev/random,因此用了變通的方式,如果所用版本測試驗證直接用securerandom.source=file:/dev/urandom能正常工作,則無需用帶點號的路徑;


(3)Tomcat停止時原線程、IP端口釋放不徹底的問題

某些Tomcat web工程版本開發調測時發現用tomcat/bin下的shutdown.sh關閉不徹底,這時需要手工用kill 進程號才能徹底關閉掉,通常這類問題是開啓的非守護線程並沒有停止掉造成的,可藉助幾個步驟:

第一步:查看Tomcat進程號

ps -ef|grep tomcat

第二步:用JDK自帶的jstack工具分析活動線程

$JAVA_HOME/bin/jstack  <pid>

<pid>爲具體的進程號

第三步:找到主線程main、自建線程檢查是否是守護線程,如果不是,修改相應的Java代碼,在類似於new Thread()的動作之後注意設置爲守護線程,再重新發布版本驗證;

第四步:對於IP端口號未及時釋放的,爲了不影響調測,臨時可通過kill強制關閉進程:

kill <pid>

後續需檢查自行佔用端口的代碼在程序退出時釋放及時釋放端口資源;

第五步:多個tomcat目錄的實例運行,關閉失敗,需要記錄各個實例的進程ID,在相應的tomcat/bin/catalina.sh代碼前面添加如下操作:

#############
if [ -z "$CATALINA_PID" ]; then
    CATALINA_PID=$PRGDIR/CATALINA_PID
    cat $CATALINA_PID
fi############

在相應的tomcat/bin/shutdown.sh中:

exec "$PRGDIR"/"$EXECUTABLE" stop "$@"

添加強制停止的參數,即:

exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"


五、創建基於web項目的Maven多模塊工程


大量的Java工程都是web項目,對於企業應用,這些項目通常都是多模塊項目。爲了便於管理,通常對項目進行分層,頂層是一個parent項目,parent下包含多個子模塊,單個子模塊可以是某個公共包、庫的集合,也可以按功能劃分子模塊,或者爲了便於生成一個具體生產環境所需的配套包、或者測試環境的測試包也單獨開闢一個子模塊用戶生成所需的打包文件;以下以創建一個基礎的web項目的多模塊工程爲樣例例進行說明。

(1)創建頂層工程parent

假設頂層工程名爲sample-parent,進入到所在的父目錄後,輸入如下命令:

mvn archetype:generate -DgroupId=com.sample -DartifactId=sample-parent -DarchetypeArtifactId=maven-archetype-quickstart

注意:示例中groupId爲com.sample,工程名sample-parent,命令最後還可以加一個參數-DinteractiveMode=false表示無需在進行交互式確認,本示例中未加該參數,執行過程中可以再次確認版本等信息,如無需更改直接回車即可;

上述命令執行完成後,頂層工程就創建好了,工程默認的打包結果爲jar,但我們用頂層工程的目的只是用來管理多個模塊不在頂層輸出jar包,爲此,進入到sample-parent目錄,將src文件夾刪除,然後修改pom.xml文件,將<packaging>jar</packaging>修改爲<packaging>pom</packaging>

(2)創建子工程common

將一些最常用的公共類、包等放在一個可被依賴的子模塊中,非常利於團隊中的代碼共享,爲此先進入到sample-parent目錄,然後創建sample-common子工程,這樣創建出來的子工程自動成爲sample-parent的一個子模塊,輸入的命令如下:

mvn archetype:generate -DgroupId=com.sample -DartifactId=sample-common -DarchetypeArtifactId=maven-archetype-quickstart

命令執行完成之後可以看到在sample-parent目錄中生成了sample-common,裏面包含src目錄和pom.xml文件。同時,在sample-parent目錄中的pom.xml文件自動添加了如下內容:
   

<modules>
    <module>sample-common</module>
</modules>

修改sample-common目錄中的pom.xml文件,把<groupId>sample-common</groupId>和<version>1.0-SNAPSHOT</version>去掉,加上<packaging>jar</packaging>,
因爲groupId和version會繼承sample-parent中的groupId和version,packaging設置打包方式爲jar;

(3)創建子工程web

假定需要發佈一個能在Tomcat中運行的war包,這個可發佈的包位於一個子模塊sample-web中,在進入sample-parent目錄後,可執行如下命令創建web工程:

mvn archetype:generate -DgroupId=com.sample -DartifactId=sample-web -DarchetypeArtifactId=maven-archetype-webapp

注意:參數-DarchetypeArtifactId=maven-archetype-webapp表示這是創建web工程,默認打包爲war包

(4)添加依賴繼承、依賴

在父工程的pom.xml中通過properties標籤內容羅列依賴的版本號,然後通過<dependencyManagement>羅列依賴的各種jar包、模塊,再在子工程的<dependencies>添加該子工程所需要的依賴時可以繼承父工程已經聲明的包、模塊,無需再指明具體的版本號;類似的機制適用於在父工程中通過<pluginManagement>聲明build所需的maven插件,在子工程的<plugins>中再添加所需的maven插件,無需再指明具體的版本號;


六、搭建MySQL環境


(1)下載MySQL

從MySQL官方網站下載頁面(https://dev.mysql.com/downloads/mysql/)下載社區版MySQL(MySQL Community Server),例如選擇下載:MySQL Community Server 5.7
安裝說明文檔(Installation structions)也可在該頁面找到;根據配套的服務器操作系統版本CentOS7,本次下載的是:
Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit), RPM Bundle 5.7.22 570.3M
(mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar)

(2)上傳版本到CentOS服務器,解壓安裝包
可藉助客戶端工具例如MobaXterm上傳版本到服務器的一個目錄,例如:/var/ftp/tools
然後執行解壓命令:

tar -xvf mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar

(3)安裝MySQL Server

在解壓目錄下,依次執行如下命令安裝各個rpm包:

rpm -ivh mysql-community-common-5.7.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.22-1.el7.x86_64.rpm

注意:如果系統之前安裝了其他的MySQL、MariaDB,可能由於衝突導致安裝失敗,應先卸載之前的安裝,可通過rpm -qa|grep mysql查詢之前安裝的rpm包,然後通過rpm -e xxx卸載之前的rpm包;

(4)啓動MySQL

執行如下命令:(注意在CentOS下MySQL的服務名爲mysqld,在SUSE Linux下爲mysql)

service mysqld start

或者

systemctl start mysqld

安裝完成後mysqld位於/usr/sbin/mysqld,reboot重啓系統後:
 > 可通過systemctl status mysqld查看運行狀態
 > 可通過ps -ef | grep ^mysql查看進程號
 > 可通過netstat -anpl |grep mysql查看網絡服務
 > 可通過mysqladmin --version查看版本號

(5)配置root用戶密碼
MySQL在初始安裝的時候,會生成安裝日誌(位於/var/log/mysqld.log),其中記錄了一個隨機的初始密碼,以root用戶及此初始密碼登錄,然後修改root密碼;
例如:vi /var/log/mysqld.log,找到如下行

2018-07-15T16:11:30.955449Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-07-15T16:11:30.956742Z 1 [Note] A temporary password is generated for root@localhost: /yBner_jl6Ii

以用戶root初始密碼/yBner_j16Ii登陸:

mysql -uroot -p/yBner_jl6Ii

操作過程如下:

mysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.  
Commands end with ; or \g.Your MySQL connection id is 8Server version: 5.7.22
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> set password=password('11211');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> set password=password('127212yZp');ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> set password=password('121132@MySQL');Query OK, 0 rows affected, 1 warning (0.00 sec)

(6)配置遠程登錄權限
登錄MySQL後,修改root的登錄權限,在其中依次執行如下兩步
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '121132@MySQL' WITH GRANT OPTION;
flush privileges;

注意:命令中BY後面的121132@MySQL爲root的密碼,實際操作時請輸入實際的密碼;

(7)使用PC客戶端工具連接MySQL

例如HedisSQL工具;

(8)忘記root密碼時補救辦法

第一步:修改配置文件/etc/my.cnf在[mysqld]後新增一行,內容爲skip-grant-tables,用於方通MySQL的密碼檢查

第二步:重啓MySQL,例如執行:service mysqld restart 或 systemctl restart mysqld

第三步:以root用戶登錄MySQL,執行登錄MySQL:mysql -uroot -p (直接回車,密碼爲空)

然後在MySQL命令行中依次執行:

update user set authentication_string=password('123456') where user='root';
flush privileges;

注意:上述123456爲新的密碼,實際操作時以請輸入具體的密碼;

然後執行quit退出MySQL命令行;

第四步:恢復配置文件/etc/my.cnf,去掉第一步中加的skip-grant-tables,重啓MySQL(參考第二步)

(9)root密碼過於簡單導致設置密碼失敗

登錄MySQL後,在MySQL命令行下,輸入命令:

set global validate_password_policy=0;

可設置密碼校驗複雜度爲0;

輸入命令:

set global validate_password_length=0

可設置密碼最小長度爲4;

之後,可輸入命令查看密碼相關的參數:

SHOW VARIABLES LIKE 'validate_password%';


七、搭建Redis環境


(1)下載Redis

從Redis官方網站(https://redis.io/download ) 下載Redis的安裝包,其中包含源碼;將安裝包複製的服務器的一個目錄下並解壓,例如:

tar zxvf redis-5.0.0.tar.gz

(2)進入解壓後的目錄,例如:

cd redis-5.0.0/

(3)編譯程序

在編譯之前請確保系統以及安裝了gcc,如果沒有安裝,請先安裝gcc(例如執行yum install gcc);之後依次執行如下命令:

make
cd src
make install PREFIX=/usr/local/redis

注:上述PREFIX=/usr/local/redis表示安裝到/usr/local/redis目錄下

如果因爲之前沒有安裝gcc導致編譯失敗,請先刪除剛剛解壓的redis目錄,重新解壓,重新進入解壓目錄後再重新編譯;

(4)複製配置文件到安裝目錄下

依次執行如下命令:

cd..
mkdir /usr/local/redis/etc
cp redis.conf /usr/local/redis/etc/

(5)常用配置參數

配置參數存放在redis.conf文件中,需編輯該文件進行配置,例如:

vim /usr/local/redis/etc/redis.conf

daemonize:如需要在後臺運行,把該項的值改爲yes

pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址

bind:指定redis只接收來自該IP的請求,如果不設置,那麼將處理所有請求,在生產環節中最好設置該項

port:監聽端口,默認爲6379

timeout:設置客戶端連接時的超時時間,單位爲秒

loglevel:等級分爲4級,debug,revbose,notice和warning。生產環境下一般開啓notice

logfile:配置log文件地址,默認使用標準輸出,即打印在命令行終端的端口上

database:設置數據庫的個數,默認使用的數據庫是0

save:設置redis進行數據庫鏡像的頻率

rdbcompression:在進行鏡像備份時,是否進行壓縮

dbfilename:鏡像備份文件的文件名

dir:數據庫鏡像備份的文件放置的路徑

slaveof:設置該數據庫爲其他數據庫的從數據庫

masterauth:當主數據庫連接需要密碼驗證時,在這裏設定

requirepass:設置客戶端連接後進行任何其他指定前需要使用的密碼

maxclients:限制同時連接的客戶端數量

maxmemory:設置redis能夠使用的最大內存

appendonly:開啓appendonly模式後,redis會把每一次所接收到的寫操作都追加到appendonly.aof文件中,當redis重新啓動時,會從該文件恢復出之前的狀態

appendfsync:設置appendonly.aof文件進行同步的頻率

vm_enabled:是否開啓虛擬內存支持

vm_swap_file:設置虛擬內存的交換文件的路徑

vm_max_momery:設置開啓虛擬內存後,redis將使用的最大物理內存的大小,默認爲0

vm_page_size:設置虛擬內存頁的大小

vm_pages:設置交換文件的總的page數量

vm_max_thrrads:設置vm IO同時使用的線程數量


(5)配置redis爲後臺啓動

編輯redis.conf文件:

vi /usr/local/redis/etc/redis.conf

將文件中daemonize no 改成daemonize yes

(6)可選步驟一:將redis加入到開機啓動,編輯/etc/rc.local文件:

vi /etc/rc.local

在裏面添加內容即可:

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf 

注:上述內容即開機時調用命令redis-server,配置文件爲redis.conf,該行命令也可用於手工啓動redis服務;

(7)可選步驟二:常用操作

手工停掉redis,可執行如下命令:

pkill redis-server

或者

/usr/local/redis/bin/redis-cli shutdown

卸載redis,可在停止redis後,刪除上述安裝目錄即可:

rm -rf /usr/local/redis

執行客戶端連接redis

/usr/local/redis/bin/redis-cli

 (8)將redis配置爲可通過systemctl管理的服務

參考上述tomcat服務的配置文件,類似的編寫一個描述redis服務的文件(配置參數的含義參考上述tomcat服務配置文件中對參數的解釋),先創建服務描述文件並進行編輯:

vim /usr/lib/systemd/system/redis.service

文件內容示例如下:

[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
#PID Should be the same as redis.conf
PIDFile=/var/run/redis_6379.pid
#For start: redis-server path and redis.conf path
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
#For restart
ExecReload=/bin/kill -s HUP $MAINPID
#For stop
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
#System startup mode
WantedBy=multi-user.target

之後執行刷新系統服務配置

systemctl daemon-reload

再執行激活開機自動啓動redis服務

systemctl enable redis

其後:可通過如下命令查看redis服務狀態

systemctl status redis

通過如下命令手工停止redis服務

systemctl stop redis

通過如下命令手工啓動redis

systemctl start redis

通過如下命令手工重啓redis服務

system restart redis




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章