如何将SpringBoot项目部署到阿里云Linux服务器中
在此之前,我寫了一個如何購買阿里云Windows服務器,并將自己的SpringBoot項目部署到Windows云服務器的博客,鏈接如下:https://blog.csdn.net/MagicMHD/article/details/89390601
由于在實際工作中,大家使用Linux部署項目會更多一點,所以我們現在學習一下如何在阿里云購買Linux服務器,并將我們的項目部署到上面。ok,Let's Go!
一、進入阿里云官網:http://aliyun.com/? ? ?注冊登陸后然后點擊右上角的控制臺:
選擇云服務器ECS,然后點擊左邊的云服務器ECS->實例->創建實例 進入購買新實例界面:
?
?
?
鏡像這里我們選擇CentOS? 7.4 64位的操作系統。
?
下面開始設置網絡和安全組。
這里選擇1M的寬帶就可以,有錢的話可以增大寬帶。
?安全組,就是指服務器開放什么端口讓別人訪問,默認只開放22和3389端口。這里使用默認的安全組
最后付款就ok了。
二、查看服務器實例
購買好以后,進入控制臺點擊云服務器ECS->實例 就可以看到已經購買的實例。
上面的公網IP就是以后我們需要用到的IP。
接下來就要到這個服務器上去進行一系列的操作了。 但是服務器所處于的位置在阿里云機房里面, 又不大可能到現場去進行操作,那么怎么辦呢?那就要借助客戶端工具來鏈接到Linux服務器上進行相關操作了,客戶端工具有很多種,這里采用個人比較熟悉的securityCRT。前面的新建Linux虛擬機的博客中已經提到這個securityCRT了,并且把這個軟件的安裝包上傳到了百度云,這里我再貼一下地址吧:
鏈接:https://pan.baidu.com/s/1OfeQPvU59MCEkcUUwMF5aA?
提取碼:uirg?
直接運行程序即可,下面說一下如何通過這個軟件來鏈接我們的阿里云服務器。
在這個上面輸入你的公網ip和你的ip名稱然后點擊鏈接即可,接著會讓你輸入用戶名和密碼,輸入即可!
這樣就代表我們鏈接成功了!
三、Linux常用命令操作
使用控制臺方式連接Linux,需要用到各種命令,這里列出了一些常用的簡單命令,大家熱熱身
Linux的文件系統和Windows不一樣,windows有c盤,d盤,e盤,Linux 看上去就只有一個盤,/usr就是相當于硬盤上的usr目錄。
1、切換到/usr目錄下
cd /usr
這樣就代表了切換到了usr目錄下面。
2、ls 用來遍歷當前目錄下所有的文件和目錄
ls -lh 遍歷詳細信息,如權限,所屬用戶,創建日期,大小等等信息
ls
ls -lh
3、查看當前所處目錄
有時候敲著敲著就忘記自己處于哪個目錄下了,那么這個時候就可以使用pwd命令來顯示當前所處與的目錄
pwd
4、創建目錄
mkdir -p /test/abc
創建目錄 /test/abc
-p的意思是如果abc的父目錄不存在,那么就會幫助創建其父目錄
這里我們創建這個目錄并進入到該目錄下:
5、創建文件
touch test.java
這里我們在abc目錄下創建test.java,并查看abc目錄下的文件
6、刪除文件
rm -f test.java
使用rm命令刪除文件。 -f是強制刪除的意思
這里我們把剛才新建的test.java文件刪除,并再次查看abc目錄下的文件
7、刪除目錄
rm -rf /test/abc
rm 命令也可以用來刪除目錄 -r表示刪除目錄 f表示強制
這里我們把剛才新建的/test/abc目錄刪除掉,并且查看usr目錄
8、查看文件內容
查看文件的命令有多種,這里介紹tail?
tail -50f /etc/passwd
查看 /ect/passwd 文件的內容, -50 表示查看最后50行 f表示滾動查看,當這個文件發生變化的時候,會自動展示最新的內容。
這種方式特別適合查看日志文件。 在后續的tomcat日志文件那里就會用這種方式。
退出方式: ctrl+c
這里有一份常用命令的圖片:
四、文本編輯命令vi
為什么單獨拿出一節說這個命令呢?因為這個在Linux中用到的非常多,并且對于剛學Linux的人來說容易整糊涂!
和記事本一樣,Linux下也需要進行文本編輯,但是又沒有圖形化的文本編輯軟件,那么就只能使用命令行方式來編輯文本了。 vi就是用于編輯文本的命令。下面我們就開始使用這個命令!
1、首先新建一個目錄和文件:
mkdir -p /temp/test
touch abc.txt
這樣我們就在/temp/test目錄下新建了一個叫abc.txt的文件。
2、然后我們來編輯這個文件:
vi abc.txt
3、此時我們打開了這個文本文件,但是我們還不能編輯它。我們要輸入a或者i才可以進行編輯。
左下角出現了INSERT就代表我們可以進行編輯了!
4、保存并退出:
要退出,首先要離開當前的編輯模式,點擊左上角的ESC鍵,退出編輯模式
然后輸入冒號 (shift+分號) 打開控制命令
接著輸入wq,然后敲回車,即保存退出
wq 是quit+write的縮寫
:wq
這樣就代表我們剛才的文件已經被保存了并且退出了!
有時候希望不保存,并且退出。 那么就先點擊左上角的ESC鍵,退出編輯模式
然后輸入冒號 (shift+分號) 打開控制命令
接著輸入q!,然后敲回車,即不保存退出
q! 就是不保存直接退出的意思
q!
五、安裝FTP
接下來就要在Linux上安裝ftp服務器了。 ftp的全稱是 File Transfer Protocol : 文件傳輸協議。?
顧名思義,ftp就是用來我們把本地的文件傳輸到服務器上,或者從服務器上下載文件用的。
接下來我們就會講解如何在linux 上安裝ftp服務器
Linux上的ftp服務器有各種型號,我們會使用vsftpd,全稱是:very secure FTP daemon 非常安全的ftp后臺程序
1、安裝vsftpd命令
yum install vsftpd -y
這樣就代表安裝完成了!
2、查看服務啟動狀態
systemctl start vsftpd.service
systemctl status vsftpd.service
第一步是用來啟動vsftpd服務,不一定需要,因為 安裝?結束后就會自動啟動,但是有時候不會自動啟動,所以還是加上吧
3、服務的關閉并和啟動
一般說來關閉,啟動,查看狀態幾個功能會如圖所示一起執行,這樣便于查看重啟是否成功
systemctl stop vsftpd.service
systemctl start vsftpd.service
systemctl status vsftpd.service
4、檢查端口
ftp服務啟動的是21端口,使用如下命令應該觀察到21端口正在處于監聽狀態,這也從側面反應了ftp服務器啟動成功了
netstat -anp|grep 21
六、創建用戶
要連接上 vsftpd 服務器需要為Linux創建專門的用戶。 接下來就會講解如何創建這個用戶。
1、在Linux中,不同用戶是有不同目錄訪問權限的,所以首先創建一個目錄,作為這個ftp用戶所擁有的目錄。
mkdir -p /home/wwwroot/ftptest
2、創建用戶
執行如下命令,創建用戶ftptest,并且指定其目錄為用戶目錄中創建的/home/wwwroot/ftptest?
useradd -d /home/wwwroot/ftptest -g ftp -s /sbin/nologin ftptest
-g ftp 表示該用戶屬于ftp分組 (ftp分組是內置的,本來就存在,不需要自己創建)
-s /sbin/nologin 表示這個用戶不能用來登錄secureCRT這樣的客戶端。 這種不能登陸的用戶又叫做虛擬用戶
創建過程給出的警告信息是正常的,不用理會
3、設置目錄權限
chown -R ftptest /home/wwwroot/ftptest
chmod -R 775 /home/wwwroot/ftptest
把目錄/home/wwwroot/ftptest的擁有者設置為ftptest
使ftptest用戶擁有這個目錄的讀寫權限
?
4、設置密碼
為ftptest用戶設置密碼:
passwd ftptest
這樣就代表創建密碼成功了。這個密碼在后續連接ftp服務器的時候會用到
七、配置用戶
在六中,我們已經創建了一個ftptest用戶,接下來就要在vsftpd服務器中配置該用戶
1、去掉匿名登陸
默認情況下vsftpd服務器是允許匿名登陸的,這樣非常不安全,所以要把這個選項關閉掉。
首先通過vi命令打開ftp服務器配置文件:
vi /etc/vsftpd/vsftpd.conf
然后把本來的
anonymous_enable=YES
修改為
anonymous_enable=NO
修改完成之后,保存退出。這樣就去掉了匿名登錄!
2、限制用戶訪問
接下來是限制用戶訪問,什么叫做限制用戶訪問呢??ftp用戶?教程中創建的ftptest用戶所擁有的目錄是 /home/wwwroot/ftptest,如果不做限制,那么使用ftptest登陸之后可以切換到其他敏感目錄去,比如切換到/usr目錄去,這樣就存在巨大的安全隱患。?
為了規避這個隱患,需要限制ftptest用戶只能通過ftp訪問到 /home/wwwroot/ftptest 目錄以及子目錄。
配置辦法:
首先通過vi命令打開ftp服務器配置文件:
vi /etc/vsftpd/vsftpd.conf
找到:
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
并修改為:
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
chroot_list_enable=YES: 表示對用戶訪問進行限制
chroot_list_file=/etc/vsftpd/chroot_list 表示對chroot_list里面指定的用戶進行限制 下一個步驟用戶清單就會對chroot_list 這個文件進行編輯
修改完成之后,保存退出。
3、用戶清單
接著上一個步驟,在chroot_list中添加ftptest用戶
首先通過vi命令打開chroot_list文件(此文件本來是空的):
vi /etc/vsftpd/chroot_list
?
然后增加一行:
ftptest
修改完成之后,保存退出。
這樣我們就把ftptest用戶添加到chroot_list中了。
4、給ftptest用戶寫的權限
vsftpd服務器是這樣的,一旦某個用戶被限制訪問了,那么默認情況下,該用戶的寫權限也被剝奪了。 這就導致ftp客戶端連接上服務器之后無法上傳文件。
這個時候,就需要打開此用戶的寫權限,請按照如下辦法操作:
首先通過vi命令打開ftp服務器配置文件:
vi /etc/vsftpd/vsftpd.conf
在最后面新加一行:
allow_writeable_chroot=YES
修改完成之后,保存退出。
這樣就給chroot添加了寫的權限。
八、設置FTP端口
vsftpd有兩種端口,一個是21端口,用來監聽客戶端連接請求的。 這個一般說來是固定的,就一直使用21端口。
另一種是,一旦獲取到請求之后,再專門用戶服務端和客戶端傳輸數據的端口。?
本知識點就是用于指定第二種端口的獲取范圍。下面我們進行端口的配置:
打開配置文件:
vi /etc/vsftpd/vsftpd.conf
在最后添加:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30010
這表示使用被動模式,用于傳輸數據的端口分配從30000-30010之間。
在后續的Linux開放端口教程中也會做相應的配合工作。
?
九:FTP用戶鑒權問題
因為用戶 ftptest 是 nologin的,所以存在鑒權的問題。 如果鑒權問題不解決,就是永不停息的 530錯誤。。。
解決辦法有如下兩種:
方式一:?pam.d/vsftpd 文件
vi /etc/pam.d/vsftpd
注釋掉/etc/pam.d/vsftpd文件里這一行:
#auth required pam_shells.so
這樣不去鑒權,從而允許 ftptest 這種 nologin用戶登錄 ftp 服務器.
方式二:vi /etc/shells
如果你的文件最下面沒有/usr/sbin/nologin
那就在/etc/shells文件里面增加一行:
/sbin/nologin
這樣允許不能登錄系統的用戶通過鑒權。
我們設置完上面的內容以后,記得重啟一下vsftpd服務
通常重啟使用的命令是
service vsftpd restart
但是centos7之后,改用的命令是如下方式:
systemctl restart vsftpd.service
最后執行查看狀態,以查看重啟成功了
systemctl status vsftpd.service
十:設置Linux云服務器的端口
前面我們在購買云服務器時,使用的是默認安全組,只開通了22和3389端口。
22就是SecureCRT鏈接Linux服務器用的端口號。
3389 是阿里云控制臺鏈接用的端口,這里沒有用到。
只有這兩個端口號是不夠用的,為了能夠鏈接vsftpd服務器還需要開放21端口和我們在第八步設置的 30000-30010端口,還有后期的項目中用到的端口等等。
既然用的是阿里云,那么我們就借助阿里云的安全組操作來實現端口的開放效果。
登陸阿里云后,按照如下順序選擇:云服務器ECS->安全組->配置規則
?
目前安全組規則是3個,分別是22,3389和ICMP協議。ICMP是網際控制報文協議,ping命令用的那個
然后點右上角的?添加安全組規則。
端口范圍: 21/21 表示從21開始,到21結束
授權對象: 0.0.0.0/0 表示所有的ip地址都可以訪問該端口.
然后再按照相同的辦法添加30000-30010端口
端口范圍: 30000/30010 表示從30000開始,到30010結束
授權對象: 0.0.0.0/0 表示所有的ip地址都可以訪問該端口.
最后看一下我們的安全組:
我們已經把21端口和30000-30010端口都加進來了,后面有需要加端口的時候使用這種辦法即可!
十一、FTP客戶端工具
配置完成ftp以后,我們還需要一個圖形工具來進行文件的傳輸。
ftp客戶端有各種各樣的版本,我個人習慣使用ftprush. 這里我把它放到百度云網盤了:
鏈接:https://pan.baidu.com/s/1q08SA7RqARVsdaFCkOrW5A?
提取碼:v6my?
1、打開ftprush.exe之后看到如圖所示的界面:
2、連接
菜單->站點->快速連接對話框
主機地址:輸入服務器地址
用戶名: ftptest
密碼: ******(剛才設置的密碼)
?連接成功之后,就可以看到如圖所示
左邊是服務端:?/home/wwwroot/ftptest?里的內容,暫時什么都沒有
右邊是本地: 一些文件
3、上傳與下載
把右邊的內容拖到左邊,就是上傳。。。。
把左邊的內容拖到右邊,就是下載。。。
如圖所示把abc.txt 上傳到了服務器
?4、到Linux中觀察是否有了abc.txt文件
說明我們上傳成功了!
十二、部署JAVA環境
FTP工具已經部署好了,現在我們來部署JAVA環境。Linux中安裝JAVA環境比Windows簡單了很多。直接使用yum安裝即可:
yum -y install java-1.8.0-openjdk.x86_64
然后接著運行:
java -version
出現當前java版本即表示java安裝成功了!
十三、MySQL安裝
1、下載
cd /tmp
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
?2、通過yum安裝
接著就可以通過yum安裝了:
yum install mysql mysql-server mysql-devel -y
安裝完成!
3、啟動mysql
執行如下命令就能啟動mysql服務器:
systemctl start mysql.service
驗證一下我們有沒有啟動成功:
啟動后會占用3306端口。 使用如下命令查看3306端口是否啟動,如果啟動了則表示mysql處于運行狀態。
netstat -anp|grep 3306
由上圖可知,3306端口已經被占用了,說明我們的mysql已經安裝成功并啟動成功了!
4、設置Mysql密碼
通過yum安裝的mysql的管理員賬戶是沒有密碼的,這里通過命令設置其密碼為?**** ,后續部署項目的時候會用到這個密碼。
mysqladmin -u root password ****
這里會出現Warning信息,并非提示設置失敗,而是告訴大家密碼露出來了,當心旁邊有人偷窺!
5、驗證設置的賬號和密碼
mysql -uroot -p****
能看到這3個數據庫,就表示用root賬號登陸成功了!
十四、安裝TOMCAT
yum上沒有tomcat的源,這里我們使用FTP將tomcat資源包上傳到Linux服務器中。
首先需要一個tomcat安裝包,這里我放到了百度云一個tomcat 8.5.23版本的資源,連接如下:
鏈接:https://pan.baidu.com/s/1OnTqFfcUC3ztqYw3iv6L2A?
提取碼:1l6t?
然后通過ftp將這個安裝包放到linux中:
我們知道我們之前設置的上傳到Linux中的文件的位置位:
/home/wwwroot/ftptest
先驗證一下這個文件夾下是否已經上傳了我們的tomcat:
已經存在。我們只需要將這個文件夾下的我們通過ftp上傳的tomcat安裝包copy到合適位置即可!可以使用下列命令:
cp /home/wwwroot/ftptest/apache-tomcat-8.5.23.tar.gz /tmp/apache-tomcat-8.5.23.tar.gz
下面我們再來看一下/tmp目錄下有沒有已經copy過來:
已經成功的copy過來了!
然后我們來解壓這個壓縮包:
?tar xzf apache-tomcat-8.5.23.tar.gz
解壓后把tomcat移動到 /usr/local/tomcat8 目錄下方便以后訪問:
mv apache-tomcat-8.5.23?/usr/local/tomcat8
我們在上圖中也已經驗證了在/usr/local/tomcat8有我們解壓以后的tomcat包!
然后我們來啟動tomcat:
/usr/local/tomcat8/bin/startup.sh
?
已經成功啟動!
我們再用端口來驗證一下,如果成功啟動了tomcat,那么8080端口肯定被占用了,我們來測試一下8080端口:
netstat -anp|grep 8080
8080端口已經占用。說明我們成功啟動了tomcat。
最后我們再來看一下tomcat的啟動日志:
tail -300f /usr/local/tomcat7/logs/catalina.out
?-300表示查看最后300行, f表示動態查看有更新可以立即看到
使用ctrl+c 退出查看狀態
開放Linux8080端口,這個就不贅述了,跟前面開放端口的方式一樣:
這里我們已經開啟了8080端口了!‘
這里我們要在Linux中也開啟對應8080端口的防火墻:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
這里--permanent是指永久開啟的意思,不然每次Linux重啟,都會把這個端口干掉。
然后更新防火墻規則:?
firewall-cmd --reload
再重啟一下防火墻服務:
systemctl restart firewalld.service
然后我們在瀏覽器輸入http://118.190.58.160:8080/? ?這里的IP換成你們自己的。
十五、部署項目
?首先我們來了解一下Linux中Mysql數據庫的規則。
Linux MySQL默認是大小寫敏感的,但是我們在系統開發時一般是在windows上開發的,而windows上的Mysql默認是非大小寫敏感的,所以JDBC代碼有的表名是大寫,有的是小寫的,一旦運行起來就會因為大小寫不一致導致無法識別表名。 為了解決這個矛盾,就需要把MySQL的大小寫敏感修改為非敏感。 解決辦法如下:
1. 打開mysql配置文件
vi /etc/my.cnf
2. 如圖所示在[mysqld]后添加添加
lower_case_table_names=1
這樣就解決了Linux中MySQL的大小寫敏感問題。
?
修改完成之后,保存退出。
3. 重啟mysql
systemctl restart mysqld.service
4、創建數據庫
首先通過連接到數據庫
mysql -uroot -p****
然后創建數據庫
CREATE DATABASE tmall DEFAULT CHARACTER SET utf8;
最后查看該數據庫:
show databases;
我們的數據庫已經新建成功!
最后我們再通過SQL文件導入表到tmall數據庫,首先來看一下我們的SQL文件:
?
是一些基本的增刪改查的sql語句。
我們把這個sql文件先通過vsftp放到的linux服務器中。
這樣我們就傳過來了,位置還是在/home/wwwroot/ftptest下面
然后我們把數據導入:
mysql -u root -padmin --default-character-set=utf8 tmall < /home/wwwroot/ftptest/tmall.sql
?
提示并非導入失敗,而是警告密碼露出來的,當心背后有人~
然后我們再登錄mysql驗證一下我們是否導入成功:
mysql -uroot -padmin
use tmall;
show tables;
select count(*) from product;
我們已經導入成功!
5、部署jar包
這是我們一個springboot項目在本地跑的時候頁面,現在我們要把它打jar包然后放到linux服務器中去運行:
然后我們把系統通過maven打好的jar包放到linux服務器中:
然后我們使用ftp工具把這個jar包傳到服務器。路徑為:/home/wwwroot/ftptest/product.jar
然后我們進入到/home/wwwroot/ftptest文件夾下:
然后執行
java -jar product.jar
然后通過我們的ip進行訪問:
?
部署成功!
但是這樣部署會有一個問題,就是我們不能關掉這個頁面:
如果我們按ctr+c鍵退出命令:
我們的系統也就退出了,我們可以看一下:
?
這里我們用另外一種辦法啟動jar包,?
nohup java -jar product.jar > nohup.out 2>&1 &
這是使用nohup命令將jar程序設置成后臺運行,運行日志輸出到nohup.out,關閉窗口無影響
如果要重新部署:
ps -ef|grep java
結果:
殺死進程:
kill -9 3939
重新部署的話執行nohup命令即可
這里就把部署的部分說完了!
還剩下最后一個小問題:就是自啟動
所謂的自啟動,就是在 Linux 重啟之后,會自動啟動一些服務和程序。
如上面的配置,在重啟之后,vsftpd, mysql ,tomcat都不會自動啟動,這樣在重啟之后,有些服務就不可以使用了。
為了解決這個問題,下面就講解如何進行自啟動配置
需要自啟動的服務有 vsftpd 和 mysql
需要自啟動的腳本有 tomcat
而在?centos7 里,服務和腳本的自啟動方式是不一樣的,下面分開來講解
服務:
分別執行如下代碼就可以開啟服務的自啟動了。
systemctl enable vsftpd.service
systemctl enable mysqld.service
而關閉方式是:
systemctl disable vsftpd.service
systemctl disable mysqld.service
腳本:
有個文件叫做 rc.local, 把腳本放進去就可以了。
不過這個腳本在 centos7里被降級了,不能被執行,所以要執行如下語句使得其可以被執行先
chmod +x /etc/rc.d/rc.local
然后修改 /etc/rc.d/rc.local, 放入 tomcat腳本即可
vi /etc/rc.d/rc.local
/usr/local/tomcat8/bin/startup.sh
保存退出即可完成tomcat的開機自啟動。
好了,關于
如何將SpringBoot項目部署到Linux服務器中的知識已經學習完了!
?
?
總結
以上是生活随笔為你收集整理的如何将SpringBoot项目部署到阿里云Linux服务器中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XPdf实现pdf转txt格式方法实现
- 下一篇: linux 其他常用命令