手把手教你在Linux系統進行項目部署
百度網盤:https://pan.baidu.com/s/11wMIXT68GX7banf3Gaflrw (提取碼:lzt1)
GitHub:https://github.com/Newbie-Rookie/Project-deployment
已經將項目部署需要用到的工具放到網盤中和GitHub上
在進行項目部署前,你先需要擁有一台服務器、XShell軟件、XFtp軟件
(1) 服務器
上阿里雲、騰訊雲租一台即可,可以看看官網的最新活動的限時秒殺(騰訊雲),每天固定時間有優惠活動。
我目前用的是騰訊雲的雲服務器,學生有優惠https://cloud.tencent.com/act/campus(需要學生認證)
用購買服務器的賬號登錄服務器控制台(騰訊雲控制台),找到購買的雲服務器,進入實例
我們需要記住服務器初始登錄名為root,密碼我們進行重置密碼,更改為我們容易記住的密碼,用於登錄XShell和XFtp
我們還要記住公網IP
(2) XShell和XFtp
XShell是命令操作服務器上資源的軟件,XFtp是可視化操作服務器上資源的軟件。
官網下載XShell 7和XFtp 7即可,但目前不知道為什么進不去官網,我把軟件放網盤和github上,需要的自取。
① XShell連接雲服務器:
點擊該連接進行連接,需要再次輸入登錄名root和你所重置的密碼即可連接成功。
② XFtp連接雲服務器:
填寫雲服務器公網IP、登錄名和密碼,進行連接即可
以上將服務器、XShell和XFtp准備好后,我們就需要搭建項目運行環境,分四個步驟。
1、Linux安裝jdk8(或其他版本)
1.1 下載jdk8.0
Oracle官網:https://www.oracle.com/java/technologies/downloads/#java8
需要Oracle賬戶(百度搜索Oracle賬戶,嫖一個下載就ok)
下載:jdk-8u321-linux-x64.tar.gz(已為你們准備了jdk-8u311-linux-x64.tar.gz在網盤和GitHub中)
1.2 源代碼解壓
XFtp進入/usr/local,將jdk-8u311-linux-x64.tar.gz進去
以下在XShell中進行:
進入/usr/local,即jdk源代碼壓縮包位置:
cd /usr/local
解壓jdk源代碼壓縮包:
tar -zxvf jdk-8u311-linux-x64.tar.gz
刪除jdk源代碼壓縮包:
rm -f jdk-8u311-linux-x64.tar.gz
解壓成功:
1.3 配置jdk環境變量
/etc/profile文件的改變會涉及到系統的環境,也就是有關Linux環境變量的東西
所以,我們要將jdk配置到/etc/profile,才可以在任何一個目錄訪問jdk
vim /etc/profile
按i進入編輯,在profile文件尾部添加如下內容:
export JAVA_HOME=/usr/local/jdk1.8.0_311 #jdk安裝目錄
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
添加后如下:
然后按Esc退出編輯,按:wq退出配置文件即可
通過命令source /etc/profile讓profile文件立即生效:
source /etc/profile
1.4 測試jdk是否安裝成功
javac
java -version
2、Linux安裝Tomcat
2.1 下載安裝包
我部署的項目中使用的是apache-tomcat-9.0.56,所以網盤和GitHub為你們准備了apache-tomcat-9.0.56.tar.gz
項目中使用的9及9以下版本都可以用,如果使用的是10以上版本,需要自己到官網下載,因為10以上版本的包名已經和9及9以下版本的包名不同,9及9以下版本
2.2 上傳文件/解壓
XFtp進入/usr/local,將apache-tomcat-9.0.56.tar.gz進去
解壓:
tar -zxvf apache-tomcat-9.0.56.tar.gz
重命名:
mv apache-tomcat-9.0.56 tomcat
刪除壓縮包:
rm -f apache-tomcat-9.0.56.tar.gz
解壓成功:
2.3 啟動tomcat
進入目錄tomcat的bin目錄:
cd /usr/local/tomcat/bin/
啟動:
./startup.sh
查看tomcat啟動效果:
在瀏覽器輸入公網IP + 8080 (8080默認端口)
這就表示成功在Linux上安裝了Tomcat。
3、Linux安裝MySQL
我的項目使用的是MySQL8.0,所以我安裝MySQL8.0
3.1 安裝前清理工作(卸載mysql)
3.1.1 清理原有的mysql數據庫
使用以下命令查找出安裝的mysql軟件包和依賴包:
rpm -pa | grep mysql
可能顯示結果如下:
mysql80-community-release-el7-1.noarch
mysql-community-server-8.0.11-1.el7.x86_64
mysql-community-common-8.0.11-1.el7.x86_64
mysql-community-libs-8.0.11-1.el7.x86_64
mysql-community-client-8.0.11-1.el7.x86_64
使用以下命令依次刪除上面的程序:
yum remove 名字
刪除mysql的配置文件,卸載不會自動刪除配置文件,首先使用如下命令查找出所用的配置文件:
find / -name mysql
可能顯示結果如下:
/etc/selinux/targeted/active/modules/100/mysql
/usr/share/mysql
/usr/lib64/mysql
使用以下命令依次刪除上面的程序:
rm -rf 名字
3.1.2 刪除MariaDB的文件
由於MySQL在CentOS 7中收費了,所以已經不支持MySQL了,取而代之在CentOS7內部集成了mariadb,而安裝MySQL的話會和MariaDB的文件沖突,所以需要先卸載掉MariaDB.
使用rpm命令查找出要刪除的mariadb文件:
rpm -pa | grep mariadb
可能的顯示結果如下:
mariadb-libs-5.5.56-2.el7.x86_64
rpm -e mariadb-libs-5.5.56-2.el7.x86_64 #刪除上面的程序
可能出現錯誤提示如下:
依賴檢測失敗:
libmysqlclient.so.18()(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要
libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要
libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要
使用強制刪除:
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
至此就將原來有的mysql 和mariadb數據庫刪除了。
3.2 安裝MySQL
目前我用的是騰訊雲CentOS 7.6 64位,將安裝MySQL8.0
由於從CentOS 7系統開始,MariaDB成為yum源中默認1的數據庫安裝包,如果我們的Linux操作系統為CentOS 7及以上版本,使用yum命令安裝MySQL包時可能將無法啟動MySQL,且自己從官網下載Linux系統的MySQL安裝包到Linux系統中也一樣,也會出現無法啟動MySQL服務的問題,我嘗試了許多方法,暫時沒有找到解決方法。
直到我發現了一篇博文的方法比較靠譜,而且嘗試可行:CentOS 7.6 安裝MySQL8.0
即手動下載mysql的Yum Repository
3.2.1 下載Yum Repository
到MySQL官網下載mysql的Yum Repository:MySQL Yum Repository
根據不同版本的CentOS系統進行下載,點擊Download,我的是Linux 7
使用XShell,連接服務器,用wget下載mysql的rpm包:
wget https://repo.mysql.com//mysql80-community-release-el7-5.noarch.rpm
如上圖,則下載成功。
3.2.3 安裝MySQL(官網最新)
yum -y install mysql-community-server
最后結果如上圖,則安裝成功。
3.2.4 啟動mysql服務並查看mysql狀態
啟動mysql服務:
systemctl start mysqld.service
查看mysql狀態:
systemctl status mysqld.service
active表示mysql服務已啟動。
3.2.5 獲取mysql的root用戶初始密碼並修改
獲取root用戶初始密碼:
grep "password" /var/log/mysqld.log
初始密碼先記住,最好復制,第一次登陸時要用,如果忘記,可以百度一下怎么無密碼登錄(在這里我就不講了)
因為安裝了Yum Repostiory,以后每次yum操作都自動更新,需要把這個卸載掉:
yum -y remove mysql80-community-release-el7-5.noarch
關閉和重啟mysql:
systemctl stop mysqld.service #關閉mysql
service mysqld restart #重啟mysql
登錄root用戶並修改密碼:
mysql -uroot -p
回車后將剛剛生成的初始密碼復制進去,再回車即可
修改密碼:
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
如果出現以下錯誤:是密碼安全性未達到要求,你可以先設置比較復雜,你容易記的密碼先,因為第一次登陸必須先修改密碼才能進行其他操作
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
登陸之后,可查看MySQL完整的初始密碼規則:
SHOW VARIABLES LIKE 'validate_password%';
可以臨時修改validate_password.length和validate_password.policy的值,再設置較為簡單的密碼:
set global validate_password_length=4;
set global validate_password_policy=0;
這樣就可以通過上面的修改密碼語句將密碼修改為較為簡單的密碼。
3.2.6 設置遠程連接(Navicat)
use mysql; # 使用mysql數據庫
select user,host from user; # 查看用戶及用戶登錄權限
上面表示的的四個用戶均只能本地登錄,不允許遠程登錄,所以我們需要新增用戶,並賦予遠程連接權限
(1)新增遠程連接用戶:
# CREATE USER '用戶名'@'主機' IDENTIFIED BY '密碼';
CREATE USER 'lzt'@'%' IDENTIFIED BY 'lzt';
(2)設置遠程連接權限
grant all privileges on *.* to 'lzt'@'%';
(3)刷新權限
flush privileges;
很多用戶在使用Navicat Premium 12(我就是用這個版本,不用破解,即下即用)連接MySQL數據庫時會出現Authentication plugin 'caching_sha2_password' cannot be loaded的錯誤。
出現這個原因是MySQL8.0之前的版本中加密規則是mysql_native_password,而MySQL8.0之后,加密規則是caching_sha2_password, 解決問題方法有兩種,一種是升級Navicat驅動(太麻煩),一種是把mysql用戶登錄密碼加密規則還原成mysql_native_password
# 修改加密規則
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
# 更新用戶密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密碼';
ALTER USER 'lzt'@'%' IDENTIFIED WITH mysql_native_password BY '密碼';
4、項目部署
上面我們已將項目部署所需要的東西都准備好,現在我們只需要將我們的項目進行打包,由於我的項目使用了Maven,我將項目打包成war文件,然后將文件使用XFtp軟件放到Linux中/usr/local/tomcat/webapps中,即可通過 公網IP/端口(默認8080)/資源名 進行訪問:
到此項目部署完成(不同類型的項目進行部署會有差別,此項目部署較適用於JavaWeb項目、Maven項目)