寫在前面
之前用Spring Boot寫的獲取英雄聯盟戰績的小項目,只是上傳到了Github上,Github地址:lol-api。一直沒時間部署到服務器上。今天,找時間部署好了,網址是:api.51carry.com。具體的接口使用文檔還沒寫。需要說明的是,部署的這臺服務器,以前已經搭建好了環境(JDK + Nginx + Tomcat + Mysql),如果沒搭建環境可以自行搭建,推薦使用oneinstack一鍵搭建腳本。因爲是以Jar包形式部署,可以使用SpringBoot內置的Tomcat容器,所以Tomcat不需要自己另外裝,我裝是因爲之前部署過其它項目。
準備工作
項目內的Spring Boot
配置文件需要添加如下配置:
server:
port: 9090 #因爲我之前啓動了Tomcat,不能繼續使用8080,這裏按你所需的端口設置
use-forward-headers: true
tomcat:
remote-ip-header: x-forwarded-for
protocol-header: x-forwarded-proto
port-header: X-Forwarded-Port
#其它設置是讓Tomcat去Http頭信息去獲取協議信息,而不是從HttpServletRequest
將你測試完成的項目打成Jar包(查看之前的文章),上傳到服務器的目錄,上傳可通過FTP、SFTP、SCP等等。我這裏上傳到/data/wwwroot/api.51carry.com/
下,並將Jar
包改名爲lol.jar
。
運行項目
運行項目,如果直接使用java -jar lol.jar
的方式,不是很方便,是在前臺運行的,下面就通過使用Linux
下的nohup
命令實現在後臺運行我們的Spring Boot
項目。
nohup 命令
用途:不掛斷地運行命令。
語法:nohup Command [ Arg … ][ & ]
描述:nohup 命令運行由 Command 參數和任何相關的 Arg 參數指定的命令,忽略所有掛斷(SIGHUP)信號。在註銷後使用 nohup 命令運行後臺中的程序。要運行後臺中的 nohup 命令,添加 &到命令的尾部。
通過使用nohup java -jar lol.jar &
命令,來使我們的lol.jar
在後臺運行。爲了方便管理,我們可以使用Shell
來編寫一些簡單的腳本。
啓動應用的腳本:
#!/bin/bash
nohup java -jar lol.jar &
關閉應用的腳本:
#!/bin/bash
PID=$(ps -ef | grep lol.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
echo Application is already stopped
else
echo kill $PID
kill $PID
fi
接着,我們需要賦予這兩個腳本的權限:
chmod 755 start.sh stop.sh
最後,我們執行以下命令後臺運行項目:
./start.sh
運行結果如下:
實時查看日誌
查看運行日誌肯定是非常必要的,在上一步執行完畢start.sh
,輸出一個提示nohup: appending output to 'nohup.out'
。其中,nohup.out
就是我們項目運行所輸出的日誌。我們可以使用如下命令實時查看日誌:
tail -f nohup.out
顯示如下:
Ctrl + C
關閉查看。
Nginx配置
這一部分,因爲我之前已經將域名api.51carry.com
以A記錄解析到了這臺服務器,所以我直接也配置了server_name
爲該域名,這樣就可以通過域名訪問我們的Spring Boot項目
。
server {
listen 80;
server_name api.51carry.com;
#access_log /data/wwwlogs/api.51carry.com_nginx.log combined;
location / {
proxy_pass http://127.0.0.1:9090; #這裏的端口記得改成項目對應的哦
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
}
}
檢測下配置文件,通過之後重啓Nginx
就可以了。
測試
瀏覽器打開http://api.51carry.com,顯示如下界面:
沒錯,這就是我的首頁,哈哈哈,本來想寫接口說明的,懶的還沒寫。
好了,下面在測試一下接口能不能使用吧,測試的這個接口是通過遊戲暱稱來查詢該暱稱都在哪些大區有角色,並返回基本信息:
測試完畢,配置成功。
疑問與猜想
配置的過程中,有些疑問,我覺得需要記錄下來,如果有大牛能指點,那是最好不過了。猜想總歸是猜想,不要當真。
1. 使用War
包部署和使用Jar
包部署,哪個纔是部署Spring Boot
項目的最佳實踐?或者說兩種部署方式各自的優勢與劣勢是什麼?
現在水平的我,認爲
Jar
包的方式是最佳實踐,因爲Spring Boot
就是一個微框架,打包成一個Jar
包,直接內置了Java Web
容器,只要環境裏配置好了Java
環境,就直接可以部署項目,也符合Spring Boot
微框架的定位。
2. 之前通過War
包部署的Java Web
項目,靜態文件,如css
、js
、image
等,可以通過Nginx
配置,使靜態文件直接走Nginx
,而緩解Tomcat
的壓力,那麼,Spring Boot
項目,我這裏直接將所有請求都交給了它處理。我有疑問的是,Spring Boot
是否有動靜態分離的功能,靜態資源直接訪問,動態資源才走Web
容器?或者是在Nginx
也可以直接配置?
這單純的就是個猜想,下去我再慢慢查資料吧。
以上,僅僅是我自己的疑問,只是在搜索引擎簡單的搜索了一下,沒找到結果,所以才記錄下來。其中,猜想只代表我自己的觀點,請不要當真。當然,如果您可以解決我的疑惑,真的感激不盡。
小結
以上,就是我的部署過程,如果您對我這個查詢英雄聯盟戰績的小項目感興趣,還煩請去點個star
,謝謝。項目的地址:lol-api。
個人博客:https://www.howieli.cn 和個人CSDN博客: http://blog.csdn.net/howieli_1995。