Spring Boot學習筆記-Nginx+Jar包部署項目

寫在前面

  之前用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項目,靜態文件,如cssjsimage等,可以通過Nginx配置,使靜態文件直接走Nginx,而緩解Tomcat的壓力,那麼,Spring Boot項目,我這裏直接將所有請求都交給了它處理。我有疑問的是,Spring Boot是否有動靜態分離的功能,靜態資源直接訪問,動態資源才走Web容器?或者是在Nginx也可以直接配置?
這單純的就是個猜想,下去我再慢慢查資料吧。

  以上,僅僅是我自己的疑問,只是在搜索引擎簡單的搜索了一下,沒找到結果,所以才記錄下來。其中,猜想只代表我自己的觀點,請不要當真。當然,如果您可以解決我的疑惑,真的感激不盡。


小結

  以上,就是我的部署過程,如果您對我這個查詢英雄聯盟戰績的小項目感興趣,還煩請去點個star,謝謝。項目的地址:lol-api
  個人博客:https://www.howieli.cn 和個人CSDN博客: http://blog.csdn.net/howieli_1995


參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章