我在學習后臺開發(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。
2.創(chuàng)建云服務器實例
購買完成后,進入控制臺,依次選擇側(cè)邊欄的“云服務器ECS”、“實例”、“創(chuàng)建實例”,在創(chuàng)建過程中會設(shè)置密碼,過程如圖2。
創(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
//輸入密碼
二.搭建springboot運行環(huán)境
1.安裝JDK并配置環(huán)境變量
①進入Java8下載頁面獲取下載鏈接,目標是下載紅色圈出來的Linux x64版本,如下圖4。
這里劃個重點,這個問題卡了我好久。我參考的一篇博客提到,直接點擊右鍵“復制鏈接地址”,然后用"sudo wget"命令,即可下載。但這樣做會導致后面解壓失敗,因為文件沒有完全下載,文件大小只有幾k;
怎么做呢?直接點擊下載鏈接,Chrome會開始下載,在Chrome下載頁面中再點擊右鍵“復制鏈接地址”,如圖5。
②終端執(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的格式添加。
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。
三.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)過類似問題的人提供參考。