Java?Web程序在Linux系統(tǒng)上的部署完整流程
前言
本文介紹了在Linux系統(tǒng)中部署Web項(xiàng)目的完整流程。首先講解了使用apt命令管理軟件包、安裝JDK和MySQL的基本操作;然后詳細(xì)說明了如何通過Maven配置多環(huán)境參數(shù)、打包項(xiàng)目并上傳到服務(wù)器;最后介紹了后臺(tái)運(yùn)行程序、處理端口沖突的方法。整個(gè)部署過程涵蓋了從基礎(chǔ)環(huán)境搭建到項(xiàng)目上線的關(guān)鍵步驟,為開發(fā)者提供了實(shí)用的Linux部署指導(dǎo)。
一、搭建部署環(huán)境
使用 apt 在 Linux 環(huán)境中安裝,更新,刪除和管理軟件包;
1. apt 的常用命令
# 列出所有軟件包 apt list # 更新軟件包數(shù)據(jù)庫 apt-get update # 安裝軟件包 apt install package_name # 移除軟件包 apt remove package_name apt purge package_name
2. 安裝 JDK
安裝軟件前,先更新包管理器中的軟件資源:
apt-get updtae
查找及安裝 JDK:
# 查找 jdk apt list | grep "jdk" # 安裝 jdk apt install openjdk-17-jdk # 查看 jdk 版本 java -version
3. 安裝 mysql
# 查找安裝包 apt list | grep "mysql-server" # 安裝 mysql apt install mysql-server # 查看 mysql 狀態(tài) systemctl status mysql
二、部署 Web 項(xiàng)目到 Linux
1. 環(huán)境配置
為了避免在開發(fā)環(huán)境中和生產(chǎn)環(huán)境中切換時(shí),頻繁的修改程序,因此配置文件通常寫兩個(gè),程序打包時(shí),選擇使用哪個(gè)配置文件即可,避免修改程序;

開發(fā)環(huán)境使用 dev 配置文件,線上環(huán)境使用 prod 配置文件;兩個(gè)文件的格式是相同的,內(nèi)容需要根據(jù)數(shù)據(jù)庫的配置填寫不同的內(nèi)容;
以 dev 為例:
spring:
application:
name: spring-blog
# 數(shù)據(jù)庫配置
datasource:
url: jdbc:mysql://127.0.0.1:3308/java_blog_spring?characterEncoding=utf8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
# 配置 mybatis xml 的文件路徑,在 resources/mapper 創(chuàng)建所有表的 xml 文件
mapper-locations: classpath:mapper/**Mapper.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 配置打印 MyBatis日志
map-underscore-to-camel-case: true #配置駝峰自動(dòng)轉(zhuǎn)換
logging:
file:
name: spring-blog.log在 application.yml 中指定使用哪個(gè)配置文件;
spring:
profiles:
active: dev為了防止 application.yml 中的總是需要修改,可以從 Maven 環(huán)境中讀取配置變量:
<profiles> <profile> <id>dev</id> <properties> <profile.name>dev</profile.name> </properties> </profile> <profile> <id>prod</id> <properties> <profile.name>prod</profile.name> </properties> </profile> </profiles>
修改 application.yml:
spring:
profiles:
active: @profile.name@2. 構(gòu)建項(xiàng)目并打包
使用 Maven 進(jìn)行打包:
1. 需要選擇使用哪個(gè)配置文件,勾選好之后,要刷新,重新加載 Maven 配置;

2. 如果是線上環(huán)境,數(shù)據(jù)庫配置和本地環(huán)境不同,打包時(shí)測(cè)試相關(guān)的操作會(huì)失敗,因此可以跳過測(cè)試;

3. 雙擊 package 進(jìn)行打包;
打包完,在指定目錄中找到打包好的軟件包,通常有幾十兆,如果打包過小,只有幾兆,可能是 Maven 中打包插件有問題,沒有打包引入的第三方的代碼;

3. 上傳 jar 包到服務(wù)器
將打好的 jar 包托到服務(wù)器的指定目錄:

拖動(dòng)需要使用 rzsz 命令,如果拖動(dòng)失敗,先安裝 rzsz:
apt-get install lrzsz
成功后運(yùn)行程序:
nohup java -jar blog-spring-0.0.1-SNAPSHOT,jar &
使用 nohup 指令,可以使程序在 shell 窗口關(guān)閉后也能運(yùn)行(后臺(tái)運(yùn)行程序);
程序運(yùn)行后,注意一定要開放應(yīng)用程序的端口號(hào);
一切就緒后,使用瀏覽器進(jìn)行訪問,檢查能否訪問成功;
4. 解決端口號(hào)沖突
如果端口號(hào)沖突,先查找到使用這個(gè)端口進(jìn)程;
netstat -anp | grep "8080"
找到使用這個(gè)端口的進(jìn)程,查看這個(gè)進(jìn)程是什么:
ps aux | grep "進(jìn)程號(hào)"
如果這個(gè)進(jìn)程可以不運(yùn)行,可以殺掉進(jìn)程:
kill 進(jìn)程號(hào)
總結(jié)
到此這篇關(guān)于Java Web程序在Linux系統(tǒng)上的部署完整流程的文章就介紹到這了,更多相關(guān)Java Web程序部署Linux系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IntelliJIDEA中實(shí)現(xiàn)SpringBoot多實(shí)例運(yùn)行的兩種方式
在微服務(wù)開發(fā)中,經(jīng)常需要同時(shí)啟動(dòng)多個(gè)服務(wù)實(shí)例進(jìn)行測(cè)試或模擬集群環(huán)境,?IntelliJ?IDEA?作為Java開發(fā)者常用工具,提供了靈活的多實(shí)例啟動(dòng)支持,本文將詳細(xì)介紹如何通過修改配置?和批量啟動(dòng)?兩種方式實(shí)現(xiàn)SpringBoot多實(shí)例運(yùn)行,并解決常見問題,需要的朋友可以參考下2025-03-03
完整java開發(fā)中JDBC連接數(shù)據(jù)庫代碼和步驟
這篇文章主要介紹了完整java開發(fā)中JDBC連接數(shù)據(jù)庫代碼和步驟,需要的朋友可以參考下2015-09-09
Java Swing中的工具欄(JToolBar)和分割面版(JSplitPane)組件使用案例
這篇文章主要介紹了Java Swing中的工具欄(JToolBar)和分割面版(JSplitPane)組件使用案例,本文直接給出代碼實(shí)例和效果截圖,需要的朋友可以參考下2014-10-10
Spring事務(wù)失效場(chǎng)景原理及解決方案
這篇文章主要介紹了Spring事務(wù)失效場(chǎng)景原理及解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
JavaWeb項(xiàng)目音頻資源播放實(shí)現(xiàn)方法詳解
這篇文章主要介紹了JavaWeb項(xiàng)目音頻資源播放實(shí)現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
Java數(shù)據(jù)結(jié)構(gòu)之二叉樹遍歷算法與底層實(shí)現(xiàn)方法剖析
只有通過大量的練習(xí),才能逐漸熟悉常見的數(shù)據(jù)結(jié)構(gòu)和算法技巧,從而更快地解決問題,這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之二叉樹遍歷算法與底層實(shí)現(xiàn)方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-06-06
Java多線程實(shí)現(xiàn)阻塞隊(duì)列的示例代碼
本文主要介紹了Java多線程實(shí)現(xiàn)阻塞隊(duì)列的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
使用spring aop 統(tǒng)一捕獲異常和寫日志的示例demo
本文通過一個(gè)小demo給大家介紹spring AOP 實(shí)現(xiàn)的異常捕獲和日志的方法技巧,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-08-08

