天天看點

CentOS7 MySQL5.7安裝、JDK8安裝、Tomcat安裝、Maven熱部署

本文介紹了CentOS7 下MySQL5.7、Java、Tomcat、Maven熱部署等伺服器環境的搭建和調試過程。

學生伺服器資源擷取方法:

  1. 雲+校園計劃 - 騰訊雲
  2. 阿裡雲雲翼計劃
  3. github 學生包,裡面有Digital Ocean 50美元的VPS可用

已經将所需要的工具(Xshell,Xftp、FileZilla等sftp上傳工具,jdk-8u101-linux-x64.tar.gz和apache-tomcat-9.0.0.M10.tar.gz)上傳至百度雲 http://pan.baidu.com/s/1qYRms8G

MySQL5.7

安裝MySQL5.7

CentOS 7的yum源中貌似沒有正常安裝mysql時的mysql-sever檔案,需要去官網上下載下傳

# wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# rpm -ivh mysql57-community-release-el7-11.noarch.rpm
# yum install mysql-community-server
# 成功安裝之後啟動mysql服務
# systemctl start mysqld.service
# 初次安裝mysql是root賬戶是沒有密碼的,需要我們自己設定密碼
# mysql -uroot
# mysql>set password = password("你的密碼");
# mysql>flush privileges;
# mysql> exit
           

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

安裝完MySQL5.7後 執行

mysql -uroot

首次登陸會出現此問題,原因是 MySQL5.7設定了臨時密碼。

$sudo cat /var/log/mysqld.log  | grep password
2017-04-14T11:45:46.950302Z 1 [Note] A temporary password is generated for root@localhost: NS_E#kj!E5lJ
$mysql -uroot -pNS_E#kj!E5lJ
           

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

原來MySQL5.6.6版本之後增加了密碼強度驗證插件validate_password,相關參數設定的較為嚴格。使用了該插件會檢查設定的密碼是否符合目前設定的強度規則,若不滿足則拒絕設定。影響的語句和函數有:

create user,grant,set password,password(),old password

。簡單點說就是系統認為密碼太簡單,設定複雜點就行了。如

!QAZ2wsx

設定MySQL遠端連接配接

進入MySQL後通過

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密碼' WITH GRANT OPTION;
           

可以允許任意主機通路你在伺服器搭建的MySQL,可以吧

%

更換為你需要允許的IP和主機。

但是,在我進行遠端連接配接的時候發生如下錯誤

CentOS7 MySQL5.7安裝、JDK8安裝、Tomcat安裝、Maven熱部署

可以根據下面進行排錯

  1. 伺服器是否可以通路,是否能ping 通
  2. 安全組及端口号是否打開或者被占用
  3. 伺服器是否運作或者關閉隻允許本機通路
  4. 重新開機試試

當我排除上面3中情況後,發現屬于第四中,可能是因為還沒有立即生效。

解決MySQL中文亂碼問題

在我建立資料時發現中文無法插入,于是檢視使用

show variables like 'character%';

如圖所示,發現預設不是utf-8,如圖:

CentOS7 MySQL5.7安裝、JDK8安裝、Tomcat安裝、Maven熱部署

于是通過在CentOS7中修改檔案/usr/share/mysql/my-default.cnf,在[mysqld],[mysql],[client]下分别添加如下内容:

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character_set_server = utf8

[mysql]

default-character-set=utf8

[client]

default-character-set=utf8

           

修改完成後,重新開機mysql服務,systemctl restart mysql,然後進入mysql,再次使用

show variables like 'character%';

指令檢視,如圖:

CentOS7 MySQL5.7安裝、JDK8安裝、Tomcat安裝、Maven熱部署

發現一樣,說明utf-8可以使用,但是無法插入中文,于是猜測可能是系統原生不支援utf-8,更改系統編碼後發現果然如此。

# cat /etc/locale.conf
LANG="en_US.UTF-8"
# vim /etc/locale.conf
# cat /etc/locale.conf
LANG="zh_CN.UTF-8"
           

于是更改為

LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
           

執行

source /etc/locale.conf

或者

重新開機伺服器

之後,再次重新開機MySQL服務。

如圖,發現可以插入中文。

CentOS7 MySQL5.7安裝、JDK8安裝、Tomcat安裝、Maven熱部署

解決MySQL忘記密碼

通過跳過權限安全檢查設定新密碼。

  1. 首先檢查mysql服務是否啟動,若已啟動則先将其停止服務,可在開始菜單的運作,使用指令:

    net stop mysql

    ,然後打開第一個cmd1視窗,切換到mysql的bin目錄,運作指令:

    mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server 5.5\my.ini" --console --skip-grant-tables

    ,将指令中的MySql版本更換你的版本。

    該指令通過跳過權限安全檢查,開啟mysql服務,這樣連接配接mysql時,可以不用輸入使用者密碼。

    此時已經開啟了mysql服務了!

    這個視窗保留不關閉。

  2. 打開第二個cmd2視窗,連接配接mysql
    • 輸入指令:

      mysql -u root -p

      出現:

      Enter password:

      ,在這裡直接回車,不用輸入密碼。 然後就就會出現登入成功的資訊。
    • 使用指令切換到mysql資料庫:

      use mysql;

    • 使用指令更改root密碼:

      UPDATE user SET Password=PASSWORD('newpassword') where USER='root';

    • 重新整理權限:

      FLUSH PRIVILEGES;

    • 然後退出,重新登入:

      quit

    • 重新登入: 可以關掉之前的cmd1 視窗了。
  3. 然後用

    net start mysql

    啟動服務
    • 登入:

      mysql -u root -p

    • 出現輸入密碼提示,輸入新的密碼即可登入:

      Enter password: ***********

顯示登入資訊: 成功 就一切ok了

Java環境配置

環境準備

通過

uname -r

判斷系統是多少位

  • 64位 : 出現x86_64
  • 32位 : 出現i686或i386

安裝Java JDK8.0

  1. 建立Java目錄,存放Java和Tomcat
    • cd /usr/local/

    • mkdir Java

    • cd Java

  2. 使用FileZilla将下載下傳好的jdk-8u101-linux-x64.tar.gz 和 apache-tomcat-9.0.0.M10.tar.gz上傳至Java目錄下(傳送的國外伺服器很慢,國内幾乎是國外的十倍,但是也隻有兩三百KB,也可能是電腦問題)
  3. 将上傳的jdk解壓,然後重命名為jdk
    • tar -zxv -f jdk-8u101-linux-x64.tar.gz

    • mv jdk1.8.0_101 jdk

    • cd jdk

  4. 配置環境變量Environment=JAVA_HOME=/usr/local/Java/jdk
    1. vim /etc/profile

    2. 打開之後按鍵盤(i)進入編輯模式,将下面的内容複制到底部
    JAVA_HOME=/usr/local/Java/jdk
    PATH=$JAVA_HOME/bin:$PATH
    CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
    export PATH JAVA_HOME CLASSPATH
               
    1. 寫完之後我們按鍵盤(ESC)按鈕退出,然後按(:wq)儲存并且關閉Vim。
    2. 使用

      source /etc/profile

      指令使其立即生效
    3. java -version

      驗證Java是否配置成功。

安裝Tomcat9

  1. 在Java目錄下解壓上面一步已經上傳上去的Tomcat9.0
    • tar -zxv -f apache-tomcat-9.0.0.M10.tar.gz

    • mv apache-tomcat-9.0.0.M10 tomcat

    • cd tomcat

  2. 啟動指令為

    /usr/local/Java/tomcat/bin/startup.sh

  3. 啟動完成後還需開放8080端口(CentOS7這個版本的防火牆預設使用的是firewall,與之前的版本使用iptables不一樣。 關于防火牆端口可以檢視後面的參考文檔)
    • firewall-cmd --zone=public --add-port=8080/tcp --permanent

      出現success表明添加成功
    • 更新防火牆規則即可:

      firewall-cmd --reload

    • 重新開機防火牆

      systemctl restart firewalld.service

  4. 然後再次在浏覽器中輸入http://ip:8080,如果看到tomcat系統界面,說明安裝成功。
  5. Tomcat 8080 端口無法通路
    • 檢視8080端口被那個程式占用(應該是Java) netstat -anp 然後再殺死占用程序。
    • 可能是你的伺服器提供商有安全組來控制端口,你需要去提供商那裡開啟端口(PS:我的阿裡雲伺服器就是必須要設定端口安全組才可以通路端口)
  6. 關閉指令為

    /usr/local/Java/tomcat/bin/shutdown.sh

Maven 熱部署

Maven 熱部署可以通過一行指令部署到本地伺服器,沒有問題的話就一行指令部署到正式伺服器。及其友善了開發和部署。因為我的Tomcat9遇到很多問題。

可以參考 maven自動部署到遠端tomcat教程 進行部署和測試。

下面是我遇到的一個錯誤,因為沒有配置IDEA的make 導緻出錯。

[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project liwenhao: Cannot invoke Tomcat manager: Connect
ion reset by peer: socket write error -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1]
           

可以通過将make如下配置

CentOS7 MySQL5.7安裝、JDK8安裝、Tomcat安裝、Maven熱部署

即可成功

war包部署在伺服器亂碼

CentOS7 MySQL5.7安裝、JDK8安裝、Tomcat安裝、Maven熱部署

可以通過配置如下屬性,解決中文war包伺服器亂碼。

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
           

配置完圖。

CentOS7 MySQL5.7安裝、JDK8安裝、Tomcat安裝、Maven熱部署

在我通過

mvn tomcat7:deploy

指令熱部署時,會出現mysql無法連接配接的情況,後來在我重新進行熱部署的時候,沒有出現這個問題。

猜測

應該是我的配置檔案的問題

參考文檔

  1. centos 7 開放 80端口
  2. centos7 設定中文
  3. CentOS 7下徹底解除安裝MySQL資料庫
  4. CentOS7 遠端通路MySQL
    • Centos 7 mysql 5.7 給root開啟遠端通路權限,修改root密碼
    • 連接配接Mysql提示Can’t connect to local MySQL server through socket的解決方法
  5. How To Install Apache Tomcat 8 on CentOS 7
  6. windows環境中mysql忘記root密碼的解決辦法