將JavaWeb項(xiàng)目部署到云服務(wù)器的詳細(xì)步驟
1. 搭建 Java 部署環(huán)境
接下來(lái)以 Ubuntu 來(lái)進(jìn)行演示
1.1. apt 包管理工具
apt 就相當(dāng)于手機(jī)上的應(yīng)用市場(chǎng)
列出所有軟件包:apt list
這個(gè)命令輸出所有包的列表,內(nèi)容比較多,可以使用 grep 命令過(guò)濾輸出:apt list |grep "jdk"
如果需要下載的軟件,軟件包中沒(méi)有的話(huà)那就需要用其他方式下載了
安裝軟件前需要更新一下軟件包數(shù)據(jù)庫(kù):sudo apt-get update
安裝軟件包
sudo apt install package_name
移除軟件包
sudo apt remove package_name
remove 命令將卸載給定的軟件包,但可能會(huì)留下一些配置文件。如果要?jiǎng)h除包含所有配置文件的軟件包,要使用 purge
apt remove 和 apt purge 的區(qū)別
?apt remove 刪除包的二進(jìn)制文件,它留下了殘留的配置文件。
?apt purge 刪除與包相關(guān)的所有內(nèi)容,包括配置文件。
如果弄亂了程序的配置,希望從系統(tǒng)中完全清除它的痕跡再重新開(kāi)始,可以使用 apt purge。
1.2. 下載 jdk
sudo apt install openjdk-17-jdk
安裝之后可以使用 java -version 來(lái)查看是否安裝成功
關(guān)于如何卸載 jdk
檢查安裝的是哪個(gè) OpenJDK
dpkg --list | grep -i jdk
移除 openjdk 包:
apt-get purge openjdk*
卸載 OpenJDK 相關(guān)包:
apt-get purge icedtea-* openjdk-*
檢查所有 OpenJDK 包是否都已卸載完畢:
dpkg --list | grep -i jdk
1.3. 下載 mysql
通過(guò)下面的命令來(lái)下載 mysql
sudo apt install mysql-server
安裝好之后可以通過(guò) mysql --version
來(lái)查看版本
也可以通過(guò) sudo systemctl status mysql
來(lái)檢查 mysql 的狀態(tài)
關(guān)于卸載 mysql:
- 停止 mysql
sudo systemctl stop mysql
- 卸載 mysql
sudo apt-get remove --purge mysql-*
- 刪除 MySQL 配置文件和數(shù)據(jù)
sudo rm -rf /etc/mysql/var/lib/mysql
- 清理殘留文件和目錄
sudo apt-get autoremove
sudo apt-get autoclean
- 驗(yàn)證卸載結(jié)果
mysql --version
2. 部署 Web 項(xiàng)目
開(kāi)發(fā)環(huán)境:開(kāi)發(fā)人員寫(xiě)代碼用的機(jī)器。
測(cè)試環(huán)境:測(cè)試人員測(cè)試程序使用的機(jī)器。
生產(chǎn)環(huán)境 (線(xiàn)上環(huán)境): 最終項(xiàng)目發(fā)布時(shí)所使用的機(jī)器,對(duì)穩(wěn)定性要求很高。
2.1. mysql 安全設(shè)置
運(yùn)行一下命令:
sudo mysql_secure_installation
運(yùn)行之后的選項(xiàng)都輸入 Y,密碼強(qiáng)度設(shè)置為 2
輸入 sudo mysql
進(jìn)入后設(shè)置密碼
ALTERUSER'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '自定義密碼';
設(shè)置之后就可以創(chuàng)建數(shù)據(jù)庫(kù)和表,保持和開(kāi)發(fā)時(shí)的數(shù)據(jù)一致
2.2. 配置環(huán)境
開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境肯定是不一樣的,所以一些配置也需要修改,比如 mysql 的密碼或者一些日志的配置,就可以針對(duì)不同的平臺(tái)來(lái)進(jìn)行配置
那么這三個(gè)文件哪個(gè)可以生效,可以在 application.yml 來(lái)配置下面這些內(nèi)容
spring: profiles: active: @profile.name@
是通過(guò)自定義 Maven 的參數(shù)來(lái)實(shí)現(xiàn)的
<profiles> <profile> <id>dev</id> <properties> <profile.name>dev</profile.name> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>prod</id> <properties> <profile.name>prod</profile.name> </properties> </profile> </profiles>
這樣就可以通過(guò) Maven 來(lái)進(jìn)行選擇使用哪個(gè)配置了
也可以設(shè)置默認(rèn)選擇的是哪個(gè)配置文件
<activation> <activeByDefault>true</activeByDefault> </activation>
2.3. 打包項(xiàng)目
上面配置好之后就可以打包了,注意要選擇 prod,然后雙擊 package
如果 Test 代碼中有與環(huán)境配置相關(guān)的操作 (比如數(shù)據(jù)庫(kù)相關(guān)的操作,可能由于密碼等不一致發(fā)生錯(cuò)誤),打包會(huì)失敗,可以選擇跳過(guò)測(cè)試,因?yàn)閳?zhí)行 package 時(shí)會(huì)按照步驟從上往下依次執(zhí)行
2.4. 上傳并運(yùn)行 jar 包
可以直接把 jar 包拖進(jìn) finalshell 中或者使用 rz 命令來(lái)進(jìn)行上傳,上傳之后通過(guò) java -jar
命令來(lái)運(yùn)行 jar 包
如果希望別人也能訪(fǎng)問(wèn)的話(huà),項(xiàng)目中設(shè)置的端口號(hào)(例如8080)也需要在云服務(wù)器上進(jìn)行開(kāi)放
不過(guò)使用上面的啟動(dòng)方式的話(huà),如果 finalshell 關(guān)了或者斷開(kāi)連接,服務(wù)就停止了,就需要使用 nohup 命令來(lái)啟動(dòng):
看日志的話(huà)推薦 tail -f 命令來(lái)去看,就可以實(shí)時(shí)查看,后續(xù)新增的日志也是能看到的
3. 常見(jiàn)問(wèn)題總結(jié)
如果說(shuō)服務(wù)不能正常訪(fǎng)問(wèn),可能會(huì)有以下原因:
服務(wù)未啟動(dòng):
可以使用 ps -ef|grep java
來(lái)查看程序是否運(yùn)行
使用 curl 項(xiàng)目路徑
來(lái)看是否返回有 html 頁(yè)面,如果有返回,那么就說(shuō)明程序啟動(dòng)成功了, 可能是端口號(hào)未開(kāi)放
如果沒(méi)有啟動(dòng)成功,需要查看對(duì)應(yīng)的日志,可能是數(shù)據(jù)庫(kù)不存在或者數(shù)據(jù)庫(kù)密碼不正確,jdk版本 ,mysql 沒(méi)有設(shè)置密碼等問(wèn)題
http 端口未開(kāi)放,如果說(shuō)云服務(wù)器的防火墻打開(kāi)了,還需要再打開(kāi)防火墻的端口號(hào)
可以使用sudu ufw status
命令來(lái)查看防火墻是否開(kāi)啟,下面顯示的是未開(kāi)啟狀態(tài)
如果說(shuō)在部署之后又發(fā)生了錯(cuò)誤,要重新部署,就需要先把對(duì)應(yīng)的進(jìn)程結(jié)束掉,可以先通過(guò)netstat -nltp|grep 8080
來(lái)查看對(duì)應(yīng)的進(jìn)程,再使用 kill 命令結(jié)束進(jìn)程
以上就是將JavaWeb項(xiàng)目部署到云服務(wù)器的詳細(xì)步驟的詳細(xì)內(nèi)容,更多關(guān)于將JavaWeb部署到云服務(wù)器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決SSLContext.getInstance()中參數(shù)設(shè)置TLS版本無(wú)效的問(wèn)題
這篇文章主要介紹了解決SSLContext.getInstance()中參數(shù)設(shè)置TLS版本無(wú)效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01Java中do-while循環(huán)的使用方法及注意事項(xiàng)詳解
這篇文章主要介紹了Java中do-while循環(huán)的使用方法及注意事項(xiàng)的相關(guān)資料,在Java編程中,do-while循環(huán)是一種基本的循環(huán)控制結(jié)構(gòu),它至少執(zhí)行一次循環(huán)體,然后根據(jù)條件判斷是否繼續(xù),文中將用法介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10解決Maven的pom.xml中設(shè)置repository不起作用問(wèn)題
這篇文章主要介紹了解決Maven的pom.xml中設(shè)置repository不起作用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03Java中documentHelper解析xml獲取想要的數(shù)據(jù)
本文主要介紹了Java中documentHelper解析xml獲取想要的數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02基于java springboot + mybatis實(shí)現(xiàn)電影售票管理系統(tǒng)
這篇文章主要介紹了基于java springboot + mybatis實(shí)現(xiàn)的完整電影售票管理系統(tǒng)基于java springboot + mybatis,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08Spring?Boot和Vue前后端分離項(xiàng)目架構(gòu)的全過(guò)程
前后端分離是目前互聯(lián)網(wǎng)開(kāi)發(fā)中比較廣泛使用的開(kāi)發(fā)模式,主要是將前端和后端的項(xiàng)目業(yè)務(wù)進(jìn)行分離,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot和Vue前后端分離項(xiàng)目架構(gòu)的相關(guān)資料,需要的朋友可以參考下2022-04-04Java項(xiàng)目中如何引入Hutool工具類(lèi)并正確使用它
Hutool是一個(gè)小而全的Java工具類(lèi)庫(kù),通過(guò)靜態(tài)方法封裝,降低相關(guān)API的學(xué)習(xí)成本,提高工作效率,使Java擁有函數(shù)式語(yǔ)言般的優(yōu)雅,這篇文章主要給大家介紹了關(guān)于Java項(xiàng)目中如何引入Hutool工具類(lèi)并正確使用它的相關(guān)資料,需要的朋友可以參考下2024-01-01Java環(huán)境安裝和編寫(xiě)并運(yùn)行第一個(gè)程序(使用?VSCode?輕松上手)
這篇文章主要介紹了Java環(huán)境安裝和編寫(xiě)并運(yùn)行第一個(gè)程序的相關(guān)資料,文中介紹的是使用VSCode來(lái)實(shí)現(xiàn),通過(guò)這些步驟,初學(xué)者可以快速入門(mén)Java編程,需要的朋友可以參考下2025-04-04