漫步在阿里云:springboot項(xiàng)目部署到ECS云服務(wù)器

我在學(xué)習(xí)后臺(tái)開發(fā)的時(shí)候,用到了阿里的fastjson包,用到了對(duì)象存儲(chǔ)OSS存儲(chǔ)文件……體驗(yàn)良好。于是乎,在完成用springboot編寫的一個(gè)小型網(wǎng)站后,覺得老在本地的tomcat運(yùn)行沒意思,想在云上走一波,毅然決然地選擇了阿里云的ECS服務(wù)器。雖然我的一個(gè)bro是用騰訊云的,但是喜歡一樣?xùn)|西就得從一而終,對(duì),就是這樣。好了,不整這些沒用的了,進(jìn)入正題。

符號(hào)說明:本文出現(xiàn)的"[]"代表內(nèi)容填寫的標(biāo)志,根據(jù)實(shí)際情況填寫。

一.準(zhǔn)備階段

1.購買云服務(wù)器

阿里云推出的“云翼計(jì)劃”,學(xué)生可以享有優(yōu)惠,對(duì)學(xué)習(xí)大有裨益。進(jìn)入阿里云購買地址消費(fèi)一波?!邦A(yù)裝環(huán)境”選Ubuntu 16.04 64位,“地域”根據(jù)實(shí)際情況選擇,如圖1。

圖1 購買界面

2.創(chuàng)建云服務(wù)器實(shí)例

購買完成后,進(jìn)入控制臺(tái),依次選擇側(cè)邊欄的“云服務(wù)器ECS”、“實(shí)例”、“創(chuàng)建實(shí)例”,在創(chuàng)建過程中會(huì)設(shè)置密碼,過程如圖2。


圖2 創(chuàng)建實(shí)例

創(chuàng)建完成之后,如下圖,這里的公網(wǎng)IP很關(guān)鍵,通過ssh登錄、通過ftp上傳文件和網(wǎng)站的訪問都要通過這個(gè)公網(wǎng)IP。


3.登錄阿里云服務(wù)器

推薦使用shell通過ssh登錄,mac下shell(windows使用secureCRT)。這里,我使用的是Mac OS終端利器ITerm2,當(dāng)然用自帶的終端也是可以的,過程如圖3。
輸入如下命令:

//ssh 用戶名@公網(wǎng)IP
ssh root@120.79.5.246
//輸入密碼
圖3 ITerm2界面

二.搭建springboot運(yùn)行環(huán)境

1.安裝JDK并配置環(huán)境變量

①進(jìn)入Java8下載頁面獲取下載鏈接,目標(biāo)是下載紅色圈出來的Linux x64版本,如下圖4。
這里劃個(gè)重點(diǎn),這個(gè)問題卡了我好久。我參考的一篇博客提到,直接點(diǎn)擊右鍵“復(fù)制鏈接地址”,然后用"sudo wget"命令,即可下載。但這樣做會(huì)導(dǎo)致后面解壓失敗,因?yàn)槲募]有完全下載,文件大小只有幾k;
怎么做呢?直接點(diǎn)擊下載鏈接,Chrome會(huì)開始下載,在Chrome下載頁面中再點(diǎn)擊右鍵“復(fù)制鏈接地址”,如圖5。

圖4 Java8下載界面

圖6 獲取下載鏈接

②終端執(zhí)行下載命令
我是下載到"/root/sdk"的路徑下

sudo wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz?AuthParam=1535981454_bd77fcb0fe03223bdbce6436359d6e57

③終端執(zhí)行解壓命令
我是解壓到"/root/sdk"的路徑下

tar -zxvf jdk-8u181-linux-x64.tar.gz

下載解壓之后,結(jié)果如下圖。



④配置JDK環(huán)境變量
a.添加系統(tǒng)環(huán)境變量

vi /etc/environment

加入以下幾行:

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

我記得第一行好像是有的,以防萬一,還有貼出來吧。
執(zhí)行如下命令,使配置生效:

source /etc/environment

b.添加用戶環(huán)境變量

vi /etc/profile

在開頭添加如下內(nèi)容,我印象中好像放在別的地方配置無效。

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

執(zhí)行如下命令,使配置生效:

source /etc/profile

⑤驗(yàn)證安裝

java -version

若如下圖,則安裝成功



2.安裝MySQL和配置遠(yuǎn)程服務(wù)

①安裝
執(zhí)行如下命令

apt-get install mysql

②配置遠(yuǎn)程服務(wù)
tips:如果過程中沒有設(shè)置數(shù)據(jù)庫的密碼,默認(rèn)密碼好像是"123456"。
因?yàn)槠?,我給出我參考的文章“阿里云服務(wù)器MYSQL數(shù)據(jù)庫開啟遠(yuǎn)程訪問”,按照作者的步驟即可,我就是參考這篇文章實(shí)現(xiàn)的,我太懶了,不想再復(fù)現(xiàn)一遍了。

最后,使用MySQLWorkbench測(cè)試一下鏈接,如下圖,遠(yuǎn)程連接成功。


3.安裝redis和配置遠(yuǎn)程服務(wù)

①下載
我還是下載到"/root/sdk"路徑下

wget http://download.redis.io/releases/redis-4.0.10.tar.gz

②解壓
解壓到"/root/sdk"路徑下

tar xzf redis-4.0.10.tar.gz

③編譯

cd redis-4.0.10
make

④配置遠(yuǎn)程訪問
進(jìn)入redis目錄,執(zhí)行如下指令:

vi redis.conf

a.注釋綁定的本機(jī)地址



b.設(shè)置redis-service為后臺(tái)服務(wù)
將"daemonize no"改為"daemonize yes"



c.設(shè)置redis-cli連接redis服務(wù)器的密碼
手動(dòng)輸入"requirepass [your password]"(注意這里的中括號(hào)只是輸入內(nèi)容的標(biāo)志)

d.退出保存
e.啟動(dòng)redis服務(wù)器(一定要在redis目錄下)
以剛剛的配置啟動(dòng)redis服務(wù)器

redis-server redis.conf

查看進(jìn)程:

ps -ef | grep redis

若如下圖所示,則配置遠(yuǎn)程訪問成功。


切記,要在阿里云添加安全組規(guī)則,不論是上面提到的MySQL還是下面準(zhǔn)備提到的Tomcat都要在阿里云添加安全組規(guī)則,否則無法遠(yuǎn)程連接。以圖7的格式添加。

圖7 添加redis安全組規(guī)則

4.安裝Tomcat

①進(jìn)入Tomcat下載頁面,點(diǎn)擊右鍵“復(fù)制鏈接地址”


②下載(下載到"/root/sdk")

sudo wget wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.33/bin/apache-tomcat-8.5.33.tar.gz

③解壓(解壓到"/root/sdk")

tar -xzvf apache-tomcat-8.5.33.tar.gz

④配置(使用默認(rèn)配置)
⑤啟動(dòng)
進(jìn)入安裝路徑(根據(jù)你的安裝情況):



執(zhí)行以下命令:

sh startup.sh

⑥驗(yàn)證
輸入[your IP]:8080

5.安裝git

用作從自己的GitHub上拉取代碼

apt-get install git
git --version

6.安裝Maven

用作打包和構(gòu)建應(yīng)用
由于與Tomcat的安裝雷同,就不給出截圖了
①下載(需要其他版本自行去官網(wǎng)獲取鏈接)

wget http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

②解壓

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

③配置Maven環(huán)境變量

vi /etc/profile

在Java環(huán)境變量后面添加:

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

使用如下命令使配置生效:

source /etc/profile

④修改Maven國內(nèi)鏡像(提高構(gòu)建速度)
復(fù)制"settings.xml"到"~/.m2"路徑下

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

然后:

vi ~/.m2/settings.xml

在mirrors節(jié)點(diǎn)下添加如下內(nèi)容:

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

⑤驗(yàn)證

mvn -version

顯示版本信息,安裝成功

7.安裝Nginx

①安裝

apt-get install nginx

②配置Nginx

vi /etc/nginx/sites-enabled/[filename]

"server_name"后面寫你申請(qǐng)的域名,沒有可以寫云服務(wù)器的IP,當(dāng)你輸入IP的時(shí)候,Nginx就會(huì)反向代理到"http://127.0.0.1:8080"上,這正是本機(jī)的Tomcat。

server{
        listen 80;
        server_name [domain name];
        location / {
                proxy_pass http://127.0.0.1:8080;
        }
}

到此,折騰我很久的配置環(huán)節(jié)就結(jié)束了。最后,一定要記得在阿里云增加安全組規(guī)則,方法在配置redis的時(shí)候已經(jīng)提到了,只是端口范圍不同而已,例如MySQL就寫"3306/3306",Tomcat就寫"8080/8080"。最終的安全組規(guī)則列表如圖8。


圖8 安全組規(guī)則列表

三.springboot應(yīng)用打包

1.修改應(yīng)用MySQL和Redis的鏈接

①修改application.properties的Mysql鏈接

spring.datasource.url=jdbc:mysql://[your IP]:3306/toutiao?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=[your password]

②修改JedisPool的鏈接

    @Override
    public void afterPropertiesSet() throws Exception {
        //jedis = new Jedis("localhost");
        pool = new JedisPool("[your IP]", 6379);
    }

2.application繼承SpringBootServletInitializer

重寫configure()方法,改為你應(yīng)用的application類名:

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
       return builder.sources([your application class name].class);
}

3.pom.xml打包改為war

<groupId>com.st</groupId>
<artifactId>toutiao2</artifactId>
<version>2.0</version>
<packaging>war</packaging>

4.提交代碼到GitHub(官方會(huì)有指引,不作描述)

5.在阿里云服務(wù)器上clone/pull代碼

首次創(chuàng)建:

git clone [url]

或者在已有項(xiàng)目的目錄下:

git pull

6.使用Maven打包

在項(xiàng)目的目錄下執(zhí)行如下指令("-Dmaven.test.skip=true"代表跳過測(cè)試用例的運(yùn)行,為了加快打包過程):

mvn package -Dmaven.test.skip=true

不出意外的話,項(xiàng)目下的"target"目錄會(huì)出現(xiàn)打包好的war:


四.部署到阿里云

在項(xiàng)目的"target"目錄下,將war包拷貝到Tomcat的"webapps"目錄中,重命名為"ROOT.war",原因:一是為了直接輸入IP的時(shí)候就進(jìn)我們的項(xiàng)目,二是如果不這樣做的話,velocity模板引擎渲染不出前臺(tái)的效果,本人親測(cè)過。

cp toutiao-1.0.war ~/sdk/apache-tomcat-8.0.53/webapps/ROOT.war

文件名和"webapps"路徑根據(jù)自己安裝情況自行修改


五.運(yùn)行項(xiàng)目

輸入綁定的域名即可訪問springboot項(xiàng)目,由于我的域名還沒備案,直接輸入公網(wǎng)IP,Nginx就會(huì)反向代理到Tomcat。展示如下:



六.結(jié)語

在完成上面全套配置的時(shí)候,我走了很多彎路,遇到了各種問題,浪費(fèi)了很多時(shí)間。寫這篇文章的出發(fā)點(diǎn)只有一個(gè),將部署過程中遇到的問題和解決方法進(jìn)行匯總,給和我出現(xiàn)過類似問題的人提供參考。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容