漫步在阿里云:springboot項目部署到ECS云服務器

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

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

一.準備階段

1.購買云服務器

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

圖1 購買界面

2.創(chuàng)建云服務器實例

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


圖2 創(chuàng)建實例

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


3.登錄阿里云服務器

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

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

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

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

①進入Java8下載頁面獲取下載鏈接,目標是下載紅色圈出來的Linux x64版本,如下圖4。
這里劃個重點,這個問題卡了我好久。我參考的一篇博客提到,直接點擊右鍵“復制鏈接地址”,然后用"sudo wget"命令,即可下載。但這樣做會導致后面解壓失敗,因為文件沒有完全下載,文件大小只有幾k;
怎么做呢?直接點擊下載鏈接,Chrome會開始下載,在Chrome下載頁面中再點擊右鍵“復制鏈接地址”,如圖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

⑤驗證安裝

java -version

若如下圖,則安裝成功



2.安裝MySQL和配置遠程服務

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

apt-get install mysql

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

最后,使用MySQLWorkbench測試一下鏈接,如下圖,遠程連接成功。


3.安裝redis和配置遠程服務

①下載
我還是下載到"/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

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

vi redis.conf

a.注釋綁定的本機地址



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



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

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

redis-server redis.conf

查看進程:

ps -ef | grep redis

若如下圖所示,則配置遠程訪問成功。


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

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

4.安裝Tomcat

①進入Tomcat下載頁面,點擊右鍵“復制鏈接地址”


②下載(下載到"/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

④配置(使用默認配置)
⑤啟動
進入安裝路徑(根據(jù)你的安裝情況):



執(zhí)行以下命令:

sh startup.sh

⑥驗證
輸入[your IP]:8080

5.安裝git

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

apt-get install git
git --version

6.安裝Maven

用作打包和構(gòu)建應用
由于與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)建速度)
復制"settings.xml"到"~/.m2"路徑下

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

然后:

vi ~/.m2/settings.xml

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

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

⑤驗證

mvn -version

顯示版本信息,安裝成功

7.安裝Nginx

①安裝

apt-get install nginx

②配置Nginx

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

"server_name"后面寫你申請的域名,沒有可以寫云服務器的IP,當你輸入IP的時候,Nginx就會反向代理到"http://127.0.0.1:8080"上,這正是本機的Tomcat。

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

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


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

三.springboot應用打包

1.修改應用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()方法,改為你應用的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(官方會有指引,不作描述)

5.在阿里云服務器上clone/pull代碼

首次創(chuàng)建:

git clone [url]

或者在已有項目的目錄下:

git pull

6.使用Maven打包

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

mvn package -Dmaven.test.skip=true

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


四.部署到阿里云

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

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

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


五.運行項目

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



六.結(jié)語

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,998評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,993評論 2 374

推薦閱讀更多精彩內(nèi)容