- 寫這篇文章的目的就是為了方便以后遇到部署項目時不必要花更多的時間做些麻煩的事了。
- 雖說當初第一次搭建的時候確實是花了不少時間和精力,但有時用到的又不算多。看起來簡單,但實際操作中依然會漏掉,導致部署失敗。所以才有了這次寫作!
1. 購買服務器、域名並備案
- 阿里雲、騰訊雲、華為雲啥的都可以選擇,也不算貴。一般至少購買三個月才能備案。
- 現在的備案都簡化了好多,直接下載APP掃描就能成功備案了,之前我備案的時候差不多花了一個多月了,過程中也出現了些錯誤,當初還是郵寄幕布拍照上傳照片的。
2. 搭建環境
- 有關這方面的知識,我也不過多寫了,可以訪問我之前寫過的搭建步驟。
- Centos7.3雲服務器上安裝Nginx、MySQL、JDK、Tomcat環境
- Centos7.6安裝mysql5.5教程
- Cenos7.3安裝mysql8.0
- Centos8.0編譯安裝穩定最新版的nginx
- Centos7.3 卸載 Nginx(徹底卸載) 並重新安裝 Nginx(RPM源yum安裝)
- 如果還有問題請直接百度
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/數據庫名";
-
因為項目上傳至服務器后,說明
localhost
或127.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.1
或localhost
表示的此時服務器的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
-
此時的執行必須切換到nginx的
bin
目錄下執行才能成功,除非配置好了環境變量才能在任意路徑下執行。有關Linux增加環境變量的文章,可以訪問:
關於Linux服務器配置java環境遇到的問題
Centos8.0編譯安裝穩定最新版的nginx -
此時部署大功告成,可以通過域名來訪問Tomcat下的項目了。注意的是二級域名要解析好才能訪問項目