1. 程式人生 > 實用技巧 >JavaWeb專案部署到Linux伺服器

JavaWeb專案部署到Linux伺服器

  • 寫這篇文章的目的就是為了方便以後遇到部署專案時不必要花更多的時間做些麻煩的事了。
  • 雖說當初第一次搭建的時候確實是花了不少時間和精力,但有時用到的又不算多。看起來簡單,但實際操作中依然會漏掉,導致部署失敗。所以才有了這次寫作!

目錄

1. 購買伺服器、域名並備案

  • 阿里雲、騰訊雲、華為雲啥的都可以選擇,也不算貴。一般至少購買三個月才能備案。
  • 現在的備案都簡化了好多,直接下載APP掃描就能成功備案了,之前我備案的時候差不多花了一個多月了,過程中也出現了些錯誤,當初還是郵寄幕布拍照上傳照片的。

2. 搭建環境

3. 專案部署

  • 把要上傳的java web專案打包成war包上傳到Tomcat目錄的webapps下,在還沒啟動Tomcat之前上傳了專案的war包時,是不會被解壓成資料夾的。只要Tomcat的webapp下的專案有所變動(增加或刪除),都要重新啟動Tomcat。

注意:如下命令必須進入到Tomcat的bin目錄才能執行。如果你配置好了環境變數就可以在任何路徑下執行了。

./startup.sh		// 啟動Tomcat
./shutdown.sh		// 關閉Tomcat
  • 上傳到 webapp下的 war包會被解析成一個與專案名同名的資料夾,開啟裡面就是個類似於專案的分層結構,如果你的專案war包上傳至webapp沒有被解壓成與專案名同名的資料夾,那就是你沒有重新啟動Tomcat,先執行上面關閉命令再執行啟動命令。
  • 進入解壓後的專案,可以發現,jsp檔案都能在專案的根目錄下看到到,javabean之類的java檔案和lib目錄、web.xml或其他配置檔案
    存在於根目錄下的WEB-INF資料夾下,因為java程式碼會被編譯成class檔案存放於classes資料夾下。
  • 這裡特別注意的一點是,如果java web專案是需要連線Linux伺服器上的資料庫的,注意把上傳專案提前改成Linux伺服器上的mysql資料庫的使用者名稱和密碼再打包成war包。或直接在Linux下的Tomcat編譯好的專案下進入專案路徑更改,完成後儲存檔案,再關閉Tomcat接著啟動Tomcat。

專案的資料庫檔案匯入問題

  • Linux下的專案資料庫的訪問地址依然不變,如:
url = "jdbc:mysql://localhost:3306/資料庫名"; 
或
url = "jdbc:mysql://127.0.0.1:3306/資料庫名"; 
或 
url = "jdbc:mysql://伺服器IP地址:3306/資料庫名"; 
  • 因為專案上傳至伺服器後,說明 localhost127.0.0.1也是表示伺服器本地路徑,當然這裡也可以選擇用服務的公網IP,但一般不建議使用,因為此時的localhost或127.0.0.1就是表示此時伺服器IP。

  • 本地Windows下的 Navicat 、SQLyog 或其他資料庫視覺化工具連線Linux伺服器上的msyql,方便於直接匯入專案上的資料庫檔案,可以訪問我之前寫過的文章來實現,這也是為了方便管理伺服器上的mysql資料庫。
    Navicat連線Linux伺服器的mysql出現連線不上的問題

  • 本地mysql資料庫匯入Linux伺服器上的mysql資料庫

  • 首先,先把Windows下的資料庫檔案匯出來並上傳到伺服器上,然後再建立好和本地Windows下同名的伺服器上的資料庫檔案

create database 資料庫名
  • 切換到建立好的資料庫中
use 資料庫名
  • 匯入資料
source 上傳的資料庫檔案路徑.sql
  • 如果不想這麼麻煩,也可以直接用Navicat連結好伺服器上的mysql,直接在Navicat上匯入即可。

Nginx反向代理通過域名訪問專案

  • 解析好專案要用的域名,一般是用二級域名作為訪問。
  • 其實可以直接用伺服器上的IP地址來訪問專案的,不必麻煩使用域名來訪問了。但這種形式不光還要記住域名且還要埠號,部署專案一多,確實有些麻煩,如:
IP:8080
IP:8081
IP:8082
或
域名;8080
域名:8081
域名:8082
  • 通過反向代理就不需要每次訪問專案還要加上埠號了。
  • 開啟 Nginx 的根路徑,切換到 conf/下,開啟 nginx.conf 檔案,在http模組下增加一個server模組
  • 這裡proxy_pass代理的就是Tomcat伺服器下的專案,Tomcat預設的埠號是8080,我這裡改為了8010
server {
		#監聽的埠號
		listen 80;
		#一級域名或二級域名
		server_name	sh.yunxdr.top;
		#預設文件
		index index.jsp index.html index.htm;
		location / {
			proxy_pass http://127.0.0.1:8010/專案名/;
		}
	}

注意:

  • 這裡特別注意 的是proxy_pass的IP地址,127.0.0.1localhost 表示的此時伺服器的IP,切記不可使用伺服器的公網IP,因為通過了域名解析後,使用IP來作為代理來通過二級域名是訪問不了的
  • proxy_pass 這裡可以使用。
http://localhost:8010/Tomcat解析的專案名
或
http://127.0.0.1:8010/Tomcat解析的專案名
  • 為了以後一個Tomcat部署一個專案,可以在Linux伺服器上覆制多個Tomcat,然後通過修改Tomcat預設埠號來達到不同的專案名都可以使用二級域名來訪問了。
  • 但也可以在一個Tomcat下部署多個專案,此時每次部署新的專案時,以前的專案都會隨著Tomcat的啟動或關閉又要被執行一次,非常耗服務的記憶體和CPU,會讓伺服器變的更卡了。我之前部署專案就是採用了這個方法。
  • 有的時候部署後,也出現訪問不了專案,這是可能是nginx沒有識別到預設檔案,在代理的專案名後面加上專案的預設訪問路徑,如:
proxy_pass http://127.0.0.1:8010/專案名/index.jsp;
  • 完成Nginx配置後,儲存並退出,執行過載命令,使剛才的配置的檔案生效。
./nginx -s reload