CentOS7如何搭建基礎(chǔ)Java開發(fā)環(huán)境JDK,Maven,Tomcat,MySQL,Redis

這篇文章主要介紹CentOS 7如何搭建基礎(chǔ)Java開發(fā)環(huán)境JDK, Maven, Tomcat, MySQL,redis,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、英吉沙網(wǎng)絡(luò)推廣、微信平臺(tái)小程序開發(fā)、英吉沙網(wǎng)絡(luò)營(yíng)銷、英吉沙企業(yè)策劃、英吉沙品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供英吉沙建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:bm7419.com

一、搭建JDK環(huán)境

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

(1)卸載OpenJDK

先通過(guò)命令查詢Java相關(guān)的現(xiàn)有安裝:

rpm -qa | grep java

結(jié)果如下:

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
通過(guò)rpm -e xx(xx為上述包)逐個(gè)卸載,并再次查看發(fā)現(xiàn)已經(jīng)下載干凈,操作過(guò)程如下:
[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網(wǎng)站下載JDK(https://www.oracle.com/technetwork/java/javase/downloads/index.html),對(duì)CentOS 7選擇相應(yīng)版本的RPM安裝包即可;

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

(3)安裝Oracle SUN JDK

root權(quán)限下,將下載后的版本通過(guò)rpm命令安裝即可,命令示例:

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

(4)驗(yàn)證安裝

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

[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)修改環(huán)境變量配置文件

在/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

后執(zhí)行source /etc/profile命令使得配置生效;在其他某些Linux環(huán)境(例如Deepin)下可以通過(guò)修改/etc/bash.bashrc實(shí)現(xiàn)同樣的效果;

二、搭建Maven開發(fā)環(huán)境

(1)下載Maven安裝包

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

(2)安裝Maven

建議安裝目錄:/usr/local/maven/,需root權(quán)限下先創(chuàng)建好該目錄:

mkdir /usr/local/maven

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

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

然后復(fù)制目錄到安裝目錄:

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)修改環(huán)境變量配置文件:

在/etc/profile文件中添加環(huán)境變量MAVEN_HOME,并添加到PATH中,結(jié)合上面JAVA環(huán)境變量引起的變更,合計(jì)如下:

#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

執(zhí)行如下命令使得配置文件生效

source /etc/profile

(4)驗(yàn)證安裝

執(zhí)行mvn -v查看版本,執(zhí)行echo $MAVEN_HOME查看環(huán)境變量,過(guò)程如下:

[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環(huán)境

(1)下載Tomcat安裝包

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

(2)安裝Tomcat

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

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

之后將解壓后的目錄復(fù)制到/usr/local/tomcat,操作過(guò)程如下:

[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服務(wù)端口

執(zhí)行如下命令開放8080端口:

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

上述命令中的參數(shù)含義:
--zone #作用域
--add-port=8080/tcp #添加端口,格式為:端口/通訊協(xié)議
--permanent #永久生效,沒有此參數(shù)重啟后失效

然后重啟防火墻:

firewall-cmd --reload

之后在/usr/local/tomcat/bin下,如需啟動(dòng)Tomcat服務(wù)則執(zhí)行

./startup.sh

如需停止Tomcat服務(wù)則執(zhí)行:

./shutdown.sh

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

將Tomcat服務(wù)化管理在許多時(shí)候比較方便,通常包含如下幾個(gè)步驟:

(1)設(shè)置環(huán)境變量、用戶及組:

環(huán)境變量可以通過(guò)/etc/profile設(shè)置,也可以通過(guò)在tomcat/bin/setenv.sh進(jìn)行設(shè)置:

例如,在/etc/profile中設(shè)置相關(guān)路徑:

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

然后通過(guò)/usr/local/tomcat/bin/setenv.sh 設(shè)置運(yùn)行參數(shù),文件內(nèi)容如下:

#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服務(wù)運(yùn)行時(shí)的用戶及組,并賦予相應(yīng)的權(quán)限:

[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用于查詢,如果沒有查詢到則執(zhí)行||之后的命令;groupadd或者useradd之后的參數(shù)-r表示的是系統(tǒng)群組、系統(tǒng)用戶;useradd之后的參數(shù)-s /bin/nologin表示該用戶無(wú)法直接登錄,只用于系統(tǒng)作業(yè)使用;

注:本部分來(lái)源參考自:https://www.jianshu.com/p/29ecd624046f

(1)服務(wù)描述文件:

用service或systemctl管理服務(wù)的時(shí)候,需先在服務(wù)管理目錄(即/usr/lib/systemd/system目錄,或者/lib/systemd/system目錄,后者是前者的軟連接)創(chuàng)建一個(gè)腳本文件,

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

來(lái)管理服務(wù)的啟動(dòng)和停止,內(nèi)容示例如下:

[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

上述內(nèi)容中的參數(shù)說(shuō)明如下:

  • [Unit]:服務(wù)的說(shuō)明

       Description:描述服務(wù)

       Documentation  (可選):服務(wù)文檔      

       After:描述服務(wù)類別

  • [Service]服務(wù)運(yùn)行參數(shù)的設(shè)置

      Type=forking是后臺(tái)運(yùn)行的形式,取值有:simple、forking、oneshot、notify、dbus,其中:
      > simple(默認(rèn)值):systemd認(rèn)為該服務(wù)將立即啟動(dòng)。服務(wù)進(jìn)程不會(huì)fork。如果該服務(wù)要啟動(dòng)其他服務(wù),不要使用此類型啟動(dòng),除非該服務(wù)是socket激活型。
      > forking:systemd認(rèn)為當(dāng)該服務(wù)進(jìn)程fork,且父進(jìn)程退出后服務(wù)啟動(dòng)成功。對(duì)于常規(guī)的守護(hù)進(jìn)程(daemon),除非你確定此啟動(dòng)方式無(wú)法滿足需求,使用此類型啟動(dòng)即可。使用此啟動(dòng)類型應(yīng)同時(shí)指定 PIDFile=,以便systemd能夠跟蹤服務(wù)的主進(jìn)程。
      > oneshot:這一選項(xiàng)適用于只執(zhí)行一項(xiàng)任務(wù)、隨后立即退出的服務(wù)??赡苄枰瑫r(shí)設(shè)置 RemainAfterExit=yes 使得 systemd 在服務(wù)進(jìn)程退出之后仍然認(rèn)為服務(wù)處于激活狀態(tài)。
      > notify:與 Type=simple 相同,但約定服務(wù)會(huì)在就緒后向 systemd 發(fā)送一個(gè)信號(hào)。這一通知的實(shí)現(xiàn)由 libsystemd-daemon.so 提供。
      > dbus:若以此方式啟動(dòng),當(dāng)指定的 BusName 出現(xiàn)在DBus系統(tǒng)總線上時(shí),systemd認(rèn)為服務(wù)就緒。

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

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

      ExecStartPre (可選):?jiǎn)?dòng)前要做什么

      ExecStart:為服務(wù)的具體運(yùn)行命令
      ExecReload:為重啟命令,kill命令-s參數(shù)為向進(jìn)程發(fā)送信號(hào),HUP為重新運(yùn)行的信號(hào)
      ExecStop:為停止命令,kill命令-s參數(shù)為向進(jìn)程發(fā)送信號(hào),QUIT為退出程序的信號(hào)

      User、Group(可選):為運(yùn)行時(shí)所使用的用戶、群組,如果沒有將tomcat目錄綁定到該用戶,則這兩個(gè)參數(shù)不要在配置中出現(xiàn)
      PrivateTmp=True表示給服務(wù)分配獨(dú)立的臨時(shí)空間
      注意:[Service]的啟動(dòng)、重啟、停止命令全部要求使用絕對(duì)路徑,User、Group不指定則默認(rèn)為root

  • [Install]服務(wù)安裝的相關(guān)設(shè)置,可設(shè)置為多用戶

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

然后執(zhí)行systemctl enable tomcat設(shè)置為開機(jī)自動(dòng)啟動(dòng),或者先通過(guò)tomcat/bin子目錄下的shutdown.sh停掉當(dāng)前運(yùn)行的tomcat,然后執(zhí)行systemctl start tomcat運(yùn)行即可;

(2)啟動(dòng)阻塞超時(shí)的問(wèn)題:

全新的tomcat環(huán)境,在沒有運(yùn)行過(guò)的情況下,tomcat/logs子目錄下是沒有日志文件的,第一次運(yùn)行后將產(chǎn)生日志文件,最常見的是根據(jù)catalina.out日志文件定位問(wèn)題。

Tomcat啟動(dòng)有時(shí)因?yàn)槌瑫r(shí)導(dǎo)致啟動(dòng)失敗,常見的原因是安全隨機(jī)數(shù)耗時(shí)的問(wèn)題,從啟動(dòng)日志中看到類似如下的告警:

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

這是由于在服務(wù)器環(huán)境下,系統(tǒng)的隨機(jī)數(shù)參考環(huán)境變量比較少導(dǎo)致計(jì)算比較慢,解決方式有兩種:

方式一:可以通過(guò)配置 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 (本安裝中是這個(gè)文件,找到下面的內(nèi)容:

securerandom.source=file:/dev/random

替換為:

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

注:路徑中間的點(diǎn)號(hào)是在某些版本中securerandom.source 設(shè)置為 /dev/urandom 它也仍然使用的 /dev/random,因此用了變通的方式,如果所用版本測(cè)試驗(yàn)證直接用securerandom.source=file:/dev/urandom能正常工作,則無(wú)需用帶點(diǎn)號(hào)的路徑;

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

某些Tomcat web工程版本開發(fā)調(diào)測(cè)時(shí)發(fā)現(xiàn)用tomcat/bin下的shutdown.sh關(guān)閉不徹底,這時(shí)需要手工用kill 進(jìn)程號(hào)才能徹底關(guān)閉掉,通常這類問(wèn)題是開啟的非守護(hù)線程并沒有停止掉造成的,可借助幾個(gè)步驟:

第一步:查看Tomcat進(jìn)程號(hào)

ps -ef|grep tomcat

第二步:用JDK自帶的jstack工具分析活動(dòng)線程

$JAVA_HOME/bin/jstack  <pid>

<pid>為具體的進(jìn)程號(hào)

第三步:找到主線程main、自建線程檢查是否是守護(hù)線程,如果不是,修改相應(yīng)的Java代碼,在類似于new Thread()的動(dòng)作之后注意設(shè)置為守護(hù)線程,再重新發(fā)布版本驗(yàn)證;

第四步:對(duì)于IP端口號(hào)未及時(shí)釋放的,為了不影響調(diào)測(cè),臨時(shí)可通過(guò)kill強(qiáng)制關(guān)閉進(jìn)程:

kill <pid>

后續(xù)需檢查自行占用端口的代碼在程序退出時(shí)釋放及時(shí)釋放端口資源;

第五步:多個(gè)tomcat目錄的實(shí)例運(yùn)行,關(guān)閉失敗,需要記錄各個(gè)實(shí)例的進(jìn)程ID,在相應(yīng)的tomcat/bin/catalina.sh代碼前面添加如下操作:

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

在相應(yīng)的tomcat/bin/shutdown.sh中:

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

添加強(qiáng)制停止的參數(shù),即:

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

五、創(chuàng)建基于web項(xiàng)目的Maven多模塊工程

大量的Java工程都是web項(xiàng)目,對(duì)于企業(yè)應(yīng)用,這些項(xiàng)目通常都是多模塊項(xiàng)目。為了便于管理,通常對(duì)項(xiàng)目進(jìn)行分層,頂層是一個(gè)parent項(xiàng)目,parent下包含多個(gè)子模塊,單個(gè)子模塊可以是某個(gè)公共包、庫(kù)的集合,也可以按功能劃分子模塊,或者為了便于生成一個(gè)具體生產(chǎn)環(huán)境所需的配套包、或者測(cè)試環(huán)境的測(cè)試包也單獨(dú)開辟一個(gè)子模塊用戶生成所需的打包文件;以下以創(chuàng)建一個(gè)基礎(chǔ)的web項(xiàng)目的多模塊工程為樣例例進(jìn)行說(shuō)明。

(1)創(chuàng)建頂層工程parent

假設(shè)頂層工程名為sample-parent,進(jìn)入到所在的父目錄后,輸入如下命令:

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

注意:示例中g(shù)roupId為com.sample,工程名sample-parent,命令最后還可以加一個(gè)參數(shù)-DinteractiveMode=false表示無(wú)需在進(jìn)行交互式確認(rèn),本示例中未加該參數(shù),執(zhí)行過(guò)程中可以再次確認(rèn)版本等信息,如無(wú)需更改直接回車即可;

上述命令執(zhí)行完成后,頂層工程就創(chuàng)建好了,工程默認(rèn)的打包結(jié)果為jar,但我們用頂層工程的目的只是用來(lái)管理多個(gè)模塊不在頂層輸出jar包,為此,進(jìn)入到sample-parent目錄,將src文件夾刪除,然后修改pom.xml文件,將<packaging>jar</packaging>修改為<packaging>pom</packaging>

(2)創(chuàng)建子工程common

將一些最常用的公共類、包等放在一個(gè)可被依賴的子模塊中,非常利于團(tuán)隊(duì)中的代碼共享,為此先進(jìn)入到sample-parent目錄,然后創(chuàng)建sample-common子工程,這樣創(chuàng)建出來(lái)的子工程自動(dòng)成為sample-parent的一個(gè)子模塊,輸入的命令如下:

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

命令執(zhí)行完成之后可以看到在sample-parent目錄中生成了sample-common,里面包含src目錄和pom.xml文件。同時(shí),在sample-parent目錄中的pom.xml文件自動(dòng)添加了如下內(nèi)容:
   

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

修改sample-common目錄中的pom.xml文件,把<groupId>sample-common</groupId>和<version>1.0-SNAPSHOT</version>去掉,加上<packaging>jar</packaging>,
因?yàn)間roupId和version會(huì)繼承sample-parent中的groupId和version,packaging設(shè)置打包方式為jar;

(3)創(chuàng)建子工程web

假定需要發(fā)布一個(gè)能在Tomcat中運(yùn)行的war包,這個(gè)可發(fā)布的包位于一個(gè)子模塊sample-web中,在進(jìn)入sample-parent目錄后,可執(zhí)行如下命令創(chuàng)建web工程:

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

注意:參數(shù)-DarchetypeArtifactId=maven-archetype-webapp表示這是創(chuàng)建web工程,默認(rèn)打包為war包

(4)添加依賴?yán)^承、依賴

在父工程的pom.xml中通過(guò)properties標(biāo)簽內(nèi)容羅列依賴的版本號(hào),然后通過(guò)<dependencyManagement>羅列依賴的各種jar包、模塊,再在子工程的<dependencies>添加該子工程所需要的依賴時(shí)可以繼承父工程已經(jīng)聲明的包、模塊,無(wú)需再指明具體的版本號(hào);類似的機(jī)制適用于在父工程中通過(guò)<pluginManagement>聲明build所需的maven插件,在子工程的<plugins>中再添加所需的maven插件,無(wú)需再指明具體的版本號(hào);

六、搭建MySQL環(huán)境

(1)下載MySQL

從MySQL官方網(wǎng)站下載頁(yè)面(https://dev.mysql.com/downloads/mysql/)下載社區(qū)版MySQL(MySQL Community Server),例如選擇下載:MySQL Community Server 5.7
安裝說(shuō)明文檔(Installation structions)也可在該頁(yè)面找到;根據(jù)配套的服務(wù)器操作系統(tǒng)版本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服務(wù)器,解壓安裝包
可借助客戶端工具例如MobaXterm上傳版本到服務(wù)器的一個(gè)目錄,例如:/var/ftp/tools
然后執(zhí)行解壓命令:

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

(3)安裝MySQL Server

在解壓目錄下,依次執(zhí)行如下命令安裝各個(gè)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

注意:如果系統(tǒng)之前安裝了其他的MySQL、MariaDB,可能由于沖突導(dǎo)致安裝失敗,應(yīng)先卸載之前的安裝,可通過(guò)rpm -qa|grep mysql查詢之前安裝的rpm包,然后通過(guò)rpm -e xxx卸載之前的rpm包;

(4)啟動(dòng)MySQL

執(zhí)行如下命令:(注意在CentOS下MySQL的服務(wù)名為mysqld,在SUSE Linux下為mysql)

service mysqld start

或者

systemctl start mysqld

安裝完成后mysqld位于/usr/sbin/mysqld,reboot重啟系統(tǒng)后:
 > 可通過(guò)systemctl status mysqld查看運(yùn)行狀態(tài)
 > 可通過(guò)ps -ef | grep ^mysql查看進(jìn)程號(hào)
 > 可通過(guò)netstat -anpl |grep mysql查看網(wǎng)絡(luò)服務(wù)
 > 可通過(guò)mysqladmin --version查看版本號(hào)

(5)配置root用戶密碼
MySQL在初始安裝的時(shí)候,會(huì)生成安裝日志(位于/var/log/mysqld.log),其中記錄了一個(gè)隨機(jī)的初始密碼,以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

操作過(guò)程如下:

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)配置遠(yuǎn)程登錄權(quán)限
登錄MySQL后,修改root的登錄權(quán)限,在其中依次執(zhí)行如下兩步
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '121132@MySQL' WITH GRANT OPTION;
flush privileges;

注意:命令中BY后面的121132@MySQL為root的密碼,實(shí)際操作時(shí)請(qǐng)輸入實(shí)際的密碼;

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

例如HedisSQL工具;

(8)忘記root密碼時(shí)補(bǔ)救辦法

第一步:修改配置文件/etc/my.cnf在[mysqld]后新增一行,內(nèi)容為skip-grant-tables,用于方通MySQL的密碼檢查

第二步:重啟MySQL,例如執(zhí)行:service mysqld restart 或 systemctl restart mysqld

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

然后在MySQL命令行中依次執(zhí)行:

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

注意:上述123456為新的密碼,實(shí)際操作時(shí)以請(qǐng)輸入具體的密碼;

然后執(zhí)行quit退出MySQL命令行;

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

(9)root密碼過(guò)于簡(jiǎn)單導(dǎo)致設(shè)置密碼失敗

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

set global validate_password_policy=0;

可設(shè)置密碼校驗(yàn)復(fù)雜度為0;

輸入命令:

set global validate_password_length=0

可設(shè)置密碼最小長(zhǎng)度為4;

之后,可輸入命令查看密碼相關(guān)的參數(shù):

SHOW VARIABLES LIKE 'validate_password%';

七、搭建Redis環(huán)境

(1)下載Redis

從Redis官方網(wǎng)站(https://redis.io/download ) 下載Redis的安裝包,其中包含源碼;將安裝包復(fù)制的服務(wù)器的一個(gè)目錄下并解壓,例如:

tar zxvf redis-5.0.0.tar.gz

(2)進(jìn)入解壓后的目錄,例如:

cd redis-5.0.0/

(3)編譯程序

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

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

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

如果因?yàn)橹皼]有安裝gcc導(dǎo)致編譯失敗,請(qǐng)先刪除剛剛解壓的redis目錄,重新解壓,重新進(jìn)入解壓目錄后再重新編譯;

(4)復(fù)制配置文件到安裝目錄下

依次執(zhí)行如下命令:

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

(5)常用配置參數(shù)

配置參數(shù)存放在redis.conf文件中,需編輯該文件進(jìn)行配置,例如:

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

daemonize:如需要在后臺(tái)運(yùn)行,把該項(xiàng)的值改為yes

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

bind:指定redis只接收來(lái)自該IP的請(qǐng)求,如果不設(shè)置,那么將處理所有請(qǐng)求,在生產(chǎn)環(huán)節(jié)中最好設(shè)置該項(xiàng)

port:監(jiān)聽端口,默認(rèn)為6379

timeout:設(shè)置客戶端連接時(shí)的超時(shí)時(shí)間,單位為秒

loglevel:等級(jí)分為4級(jí),debug,revbose,notice和warning。生產(chǎn)環(huán)境下一般開啟notice

logfile:配置log文件地址,默認(rèn)使用標(biāo)準(zhǔn)輸出,即打印在命令行終端的端口上

database:設(shè)置數(shù)據(jù)庫(kù)的個(gè)數(shù),默認(rèn)使用的數(shù)據(jù)庫(kù)是0

save:設(shè)置redis進(jìn)行數(shù)據(jù)庫(kù)鏡像的頻率

rdbcompression:在進(jìn)行鏡像備份時(shí),是否進(jìn)行壓縮

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

dir:數(shù)據(jù)庫(kù)鏡像備份的文件放置的路徑

slaveof:設(shè)置該數(shù)據(jù)庫(kù)為其他數(shù)據(jù)庫(kù)的從數(shù)據(jù)庫(kù)

masterauth:當(dāng)主數(shù)據(jù)庫(kù)連接需要密碼驗(yàn)證時(shí),在這里設(shè)定

requirepass:設(shè)置客戶端連接后進(jìn)行任何其他指定前需要使用的密碼

maxclients:限制同時(shí)連接的客戶端數(shù)量

maxmemory:設(shè)置redis能夠使用的最大內(nèi)存

appendonly:開啟appendonly模式后,redis會(huì)把每一次所接收到的寫操作都追加到appendonly.aof文件中,當(dāng)redis重新啟動(dòng)時(shí),會(huì)從該文件恢復(fù)出之前的狀態(tài)

appendfsync:設(shè)置appendonly.aof文件進(jìn)行同步的頻率

vm_enabled:是否開啟虛擬內(nèi)存支持

vm_swap_file:設(shè)置虛擬內(nèi)存的交換文件的路徑

vm_max_momery:設(shè)置開啟虛擬內(nèi)存后,redis將使用的最大物理內(nèi)存的大小,默認(rèn)為0

vm_page_size:設(shè)置虛擬內(nèi)存頁(yè)的大小

vm_pages:設(shè)置交換文件的總的page數(shù)量

vm_max_thrrads:設(shè)置vm IO同時(shí)使用的線程數(shù)量

(5)配置redis為后臺(tái)啟動(dòng)

編輯redis.conf文件:

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

將文件中daemonize no 改成daemonize yes

(6)可選步驟一:將redis加入到開機(jī)啟動(dòng),編輯/etc/rc.local文件:

vi /etc/rc.local

在里面添加內(nèi)容即可:

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

注:上述內(nèi)容即開機(jī)時(shí)調(diào)用命令redis-server,配置文件為redis.conf,該行命令也可用于手工啟動(dòng)redis服務(wù);

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

手工停掉redis,可執(zhí)行如下命令:

pkill redis-server

或者

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

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

rm -rf /usr/local/redis

執(zhí)行客戶端連接redis

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

 (8)將redis配置為可通過(guò)systemctl管理的服務(wù)

參考上述tomcat服務(wù)的配置文件,類似的編寫一個(gè)描述redis服務(wù)的文件(配置參數(shù)的含義參考上述tomcat服務(wù)配置文件中對(duì)參數(shù)的解釋),先創(chuàng)建服務(wù)描述文件并進(jìn)行編輯:

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

文件內(nèi)容示例如下:

[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

之后執(zhí)行刷新系統(tǒng)服務(wù)配置

systemctl daemon-reload

再執(zhí)行激活開機(jī)自動(dòng)啟動(dòng)redis服務(wù)

systemctl enable redis

其后:可通過(guò)如下命令查看redis服務(wù)狀態(tài)

systemctl status redis

通過(guò)如下命令手工停止redis服務(wù)

systemctl stop redis

通過(guò)如下命令手工啟動(dòng)redis

systemctl start redis

通過(guò)如下命令手工重啟redis服務(wù)

system restart redis

以上是“CentOS 7如何搭建基礎(chǔ)Java開發(fā)環(huán)境JDK, Maven, Tomcat, MySQL,Redis”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站欄目:CentOS7如何搭建基礎(chǔ)Java開發(fā)環(huán)境JDK,Maven,Tomcat,MySQL,Redis
網(wǎng)站地址:http://bm7419.com/article22/iihcjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃搜索引擎優(yōu)化、靜態(tài)網(wǎng)站App設(shè)計(jì)、網(wǎng)站建設(shè)網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)