本文介紹使用spring boot應(yīng)用打包后的war包在阿里云平臺上部署并訪問應(yīng)用。
一、打包
- 首先我們對spring boot項(xiàng)目的pom.xml文件進(jìn)行修改:
<packaging>war</packaging>
-
點(diǎn)擊IDEA左下角的按鈕后選擇maven projects,雙擊lifecycle下的install按鈕即可打包:
image.png
打包后可發(fā)現(xiàn)在項(xiàng)目根目錄下的target目錄下出現(xiàn)以.war和.war.original后綴的文件
二、部署
我們先將上面生成的兩個war包上傳到阿里云后,執(zhí)行java -jar xxx.war 就可以啟動這個spring boot項(xiàng)目了。
部署過程中遇到操作上的誤解,只有這篇文章是可行的,分享一下:https://blog.csdn.net/wangrui8431/article/details/79022501
三、阿里云相關(guān)配置
(一)應(yīng)用配置
由于項(xiàng)目中默認(rèn)的端口號是8080,我們需要在阿里云上進(jìn)行配置才能成功訪問應(yīng)用:

從截圖看除了配置8080端口以外,安全組中還加了3306的端口配置,這是mysql數(shù)據(jù)庫默認(rèn)的端口號,下面馬上用到。
(二)數(shù)據(jù)庫配置
- 本例使用的數(shù)據(jù)庫是mysql,安裝好mysql后,我們首先進(jìn)入/usr/bin/目錄下執(zhí)行mysql -u root -p命令(默認(rèn)用戶是root),輸入密碼后登錄mysql執(zhí)行下面兩句命令:
grant all privileges on *.* to 'root'@'%' identified by 'password';
flush privileges;
第一個*是數(shù)據(jù)庫,可以改成允許訪問的數(shù)據(jù)庫名稱 ,第二個 是數(shù)據(jù)庫的表名稱,代表允許訪問任意的表 ,root代表遠(yuǎn)程登錄使用的用戶名,可以自定義 ,%代表允許任意ip登錄,如果你想指定特定的IP,可以把%替換掉就可以了 ,password代表遠(yuǎn)程登錄時使用的密碼,可以自定義 ;flush privileges;這是讓權(quán)限立即生效 。
修改my.cnf配置文件
這個是mysql的配置文件,如果你無標(biāo)題文章找不到在哪里的話,可以輸入find /* -name my.cnf 找到,在實(shí)際查找中發(fā)現(xiàn)my.cnf這個配置文件中并沒有bind-address這個配置,但是我在它關(guān)聯(lián)的其他配置文件/etc/mysql/mysql.conf.d/mysqld.cnf中找到這行配置了。通過vim編輯該文件,找到bind-address = 127.0.0.1這一句,然后在前面加個#號注釋掉,保存退出。重啟服務(wù)
service mysql restart或者執(zhí)行 /etc/init.d/mysql restart配置阿里云上3306的端口配置
執(zhí)行完上述四點(diǎn)后,我們就可以使用mysql workbench來遠(yuǎn)程登錄并且創(chuàng)建數(shù)據(jù)庫和表了。
其他問題
- 由于項(xiàng)目中使用到了thymeleaf,之前寫法如下:
public ModelAndView avatar(@PathVariable("username") String username, Model model) {
User user = (User)userDetailsService.loadUserByUsername(username);
model.addAttribute("user", user);
return new ModelAndView("/userspace/avatar", "userModel", model);
}
userspace目錄位于template目錄下,在本地這樣請求頁面能正常打開,但是一部署到阿里云啟動后訪問就失敗,提示找不到這個目錄下的模板,后來上網(wǎng)查到并解決,正確的寫法應(yīng)該把userspace前面的斜杠去掉。
public ModelAndView avatar(@PathVariable("username") String username, Model model) {
User user = (User)userDetailsService.loadUserByUsername(username);
model.addAttribute("user", user);
return new ModelAndView("userspace/avatar", "userModel", model);
}
這樣thymeleaf才能正常訪問模板頁面。
2.在寫頁面的時候發(fā)現(xiàn)一個問題,那就是當(dāng)頁面顯示不下的時候沒有縱向的滾動條,后來發(fā)現(xiàn)設(shè)置滾動條的樣式加在了<div>元素上,將這個樣式加在<body>元素上后就出現(xiàn)滾動條了,下面是具體的代碼:
<body style="height: auto; overflow-y:scroll">
<div class="container">
...
</div>
</body>

