1. 程式人生 > >釋出springboot應用到阿里雲伺服器

釋出springboot應用到阿里雲伺服器

上一篇《打造完美介面文件 - 應用springboot+swagger2編寫restFull介面文件》,解決了api文件的諸多問題,但是當開發團隊不在同一個區域網時,檢視介面文件就有些問題了,那麼只有把專案釋出到公網伺服器了,小拉這裡分享應用阿里雲伺服器部署springboot應用的過程。

阿里雲伺服器的準備

阿里雲伺服器的購買

阿里雲伺服器的購買過程,這裡就不多說了,小拉這次用的是新人6個月的優惠活動,9元錢體驗6個月,這對於學習足夠用了。

建立阿里雲伺服器的例項

登入後,進入控制檯,選擇雲伺服器ecs->例項->建立例項, 小拉這次建立的是ubuntu16 64位,在建立過程中,設定root帳號密碼,一定記住

建立好之後,如下圖,注意下面的公網ip, 我們用ssh登入、ftp上傳檔案和網站的訪問都是通過這個公網ip

登入阿里雲伺服器

  1. 方式一、應用阿里雲的內嵌終端(速度較慢,不推薦)

  2. 方式二、應用Shell通過SSH登入,mac下shell(windows使用secureCRT)

小拉在macOS下應用iTerm2通過SSH登入,

//ssh 使用者名稱@公網IP
ssh root@60.205.206.196
// 輸入之前建立好密碼

springboot執行環境搭建

安裝JDK並配置環境變數

2.找面最新對應的JDK版本,複製下載連結

3.在終端執行下載命令

sudo wget http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz


下載完成

4.解壓

將下載好的壓縮包解壓到指定目錄,小拉放在了/root/sdk
/root/sdk

5.配置JDK環境變數

5.1 新增系統環境變數

vi /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin"
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export JAVA_HOME=/root/sdk/jdk1.8.0_141

不要忘了讓配置生效,終端執行

/etc/environment

5.2 新增使用者環境變數

vi /etc/profile 

新增如下內容

export JAVA_HOME=/root/sdk/jdk1.8.0_141
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

不要忘了讓配置生效,終端執行
/etc/profile

6.驗證jdk是否安裝成功

java -version

安裝MySQL

1.安裝之前更新一下軟體庫
sudo apt-get update

2.安裝mysql伺服器

apt-get install mysql 作為釋出有mysql伺服器已經夠了
也可以安裝上client
apt-get install mysql-client

3.設定密碼
安裝過程中會提示設定密碼什麼的,注意設定了不要忘了,安裝完成之後可以使用如下命令來檢查是否安裝成功:

4.驗證mysql是否安裝成功
sudo netstat -tap | grep mysql

通過上述命令檢查之後,如果看到有mysql 的socket處於 listen 狀態則表示安裝成功。

5.登入mysql
mysql -u root -p

配置Ftp伺服器

可以通過ftp的方式將應用檔案上傳到阿里雲伺服器,首先需要在阿里雲上安裝開啟ftp服務。

1.安裝sftp服務

 apt-get install vsftpd -y
 apt-get install ftp

2.修改配置檔案

vi /etc/vsftpd/vsftpd.conf
// 修改如下內容
local_enable=YES 
write_enable=YES 
chroot_local_user=YES 

3.ftp伺服器的控制命令

service vsftpd start    啟動
service vsftpd stop     關閉
service vsftpd restart  重啟

3.上傳檔案
注意,阿里雲伺服器上的ftp,應用sftp協議

sftp [email protected]

輸入密碼

put + 本地檔案 上傳成功

安裝git

git 確實是個好東西,git + maven的方式做到快速更新應用併發布,對於前期邊除錯邊釋出的階段,這是最好的方式。有了git,基本不用ftp來傳應用檔案了。

apt-get install git
git --version

安裝Maven

maven是個好東西,構建應用少不了它。由於在本地構建的springboot WEB應用,是把tomcat也整合進去了,這就使jar包比較大,再通過ftp上傳,浪費時間。我們可以在阿里雲服務上應用maven構建應用,程式碼通過git拉取,節省了大量的檔案上傳時間。

1.下載maven並解壓

2.配置變數

vi /etc/profile

在最後新增,然後別忘了source /etc/profile

export M2_HOME=/root/sdk/apache-maven-3.5.0
export M2=$M2_HOME/bin
export PATH=$M2:$PATH 

3.修改maven國內映象
為了maven構建速度,新增國內的映象伺服器

/root/sdk/apache-maven-3.5.0/conf/settings.xml檔案,複製到~/.m2目錄下

cp /root/sdk/apache-maven-3.5.0/conf/settings.xml ~/.m2

4.將下列內容新增到mirrors節點下

<mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
</mirror>

5.maven安裝成功驗證

mvn -version 顯示如下資訊,則安裝配置成功

springboot應用部署釋出

到此,springboot的部署環境基本完成

阿里雲端口安全配置

阿里雲對埠的安全防護做到很好,如果我們要開放某個埠,需要配置,比如http的80埠,如果不設定,網站是訪問不了的。小拉以80埠為例,進入阿里雲控制檯,選擇『網路和安全』->安全組 點選 配置規則

新增安全組規則

以下列格式新增

應用jar包上傳

ftp方式

sftp root@60.205.206.196
put path/xxx.jar

上傳40M的jar,用了1分鐘,還是挺慢的

通過maven方式打包

通過ftp方式還是比較慢的,如果頻繁部署還是採用git + maven方式比較快

1.clone程式碼

git clone https://git.coding.net/ruglcc/api4bangbang.git

2.maven 下載信賴包

mvn install 第一次構建時,會下載一些jar包,請等待,這些JAR包放在~.m2/repository目錄下

通過 du -hc repository/ 檢視總大小

3.maven 構建
切換到程式碼的目錄 (有maven 配置檔案pom.xml同級)執行:
mvn install 如果程式沒有錯誤,則構建成功

執行springboot應用

springboot jar包已經就緒(ftp上傳的springboot.jar或是在伺服器上通過maven現構建的jar包),執行只要通過終端執行

java -jar xxx.jar

去公網驗證下,瀏覽器訪問雲伺服器的公網ip

讓springboot應用在後臺執行

上邊方式通過終端執行jar,當終端關閉對應的java程序也有可能會被關閉,小拉通過nohup命令讓jar包在後臺執行,不會隨shell的關閉而關閉了

1.在springboot對應jar包目錄下,新建一個start.sh檔案

vim start.sh 新增 java -jar xx.jar
修改該檔案的可執行許可權 chmod 777 start.sh

通過nohup ./start.sh & 執行

2.關閉這個應用

檢視其對應的程序號
netstat -anp | grep 80

關閉sid的埠,即關閉應用

kill sid

繫結域名

可以給自己的API文件伺服器繫結一個自己申請好的域名,國內域名需要備案,還是比較麻煩和費時的,小拉這裡就不多說了,在阿里雲控制新增解析,即可繫結域名

總結

小拉將springboot+swagger應用成功地部署到了阿里雲,方便跨區域人員協同開發,restFull介面文件又完美一步。