欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java部署項目流程幾種常見方式詳解

 更新時間:2025年06月06日 08:46:55   作者:x-ming-code  
部署Java項目通常有幾種常見的方法,具體選擇哪種方法取決于項目需求、資源、團隊習(xí)慣等因素,這篇文章主要介紹了java部署項目流程幾種常見方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

java部署有幾種方式,這里說一個比較簡單的

方式一:Docker 容器化部署

Docker:將Java應(yīng)用程序及其運行時環(huán)境打包成一個Docker鏡像。Docker容器提供了隔離的運行環(huán)境,確保應(yīng)用程序在不同環(huán)境中具有一致的行為。可以通過Docker Compose或Kubernetes等工具來管理和部署多個容器化應(yīng)用。(后續(xù)會出教程)

方式二:云平臺部署

  • PaaS (Platform as a Service):如Heroku、Google App Engine、AWS Elastic Beanstalk等云平臺提供了Java應(yīng)用的托管服務(wù)。開發(fā)者只需上傳代碼或WAR/JAR文件,平臺會自動處理應(yīng)用的部署、擴展和管理。

  • IaaS (Infrastructure as a Service):如AWS EC2、Azure VM、Google Compute Engine等云平臺允許您創(chuàng)建虛擬機并在其上部署Java應(yīng)用。您可以完全控制服務(wù)器的配置和環(huán)境設(shè)置。

  • Serverless:如AWS Lambda、Google Cloud Functions等無服務(wù)器計算平臺允許您以函數(shù)的形式部署Java代碼,按需執(zhí)行并自動擴展。

這里為了方便使用寶塔進行部署

寶塔面板(BT Panel)是一款基于Web的Linux服務(wù)器管理工具,旨在簡化Linux服務(wù)器的管理和部署過程。它提供了圖形化的用戶界面,寶塔面板支持多種操作系統(tǒng),如CentOS、Ubuntu、Debian等,并且提供了豐富的功能來幫助用戶部署和管理網(wǎng)站、數(shù)據(jù)庫、郵件服務(wù)等。

涉及到具體的部署方式,前端要遵循 Next.is 服務(wù)端渲染的部署模式,基于 Node.is 運行;后端可以直接運行 jar 包。

也可使用docker進行部署,有空了會出過程

部署計劃

前端:通過 Nginx 進行部署,訪問地址為 http://{域名}。由于是 Node 服務(wù),實際運行在 3000 端口。

后端:通過 Nginx 進行轉(zhuǎn)發(fā),訪問地址為 http://{域名}/api 。實際運行在 8101 端口。JDK 建議選擇 17 版本!

為什么要用 Nginx 轉(zhuǎn)發(fā)?

前端和后端域名一致,保證不會出現(xiàn)跨域問題。

Nginx:服務(wù)器 80 端口,默認(rèn)已安裝,

數(shù)據(jù)庫:服務(wù)器 3306 端口,默認(rèn)已安裝。

Redis:服務(wù)器 6379 端口,需要手動安裝

做好規(guī)劃后,我們需要在騰訊云控制臺的防火墻中開通需要外網(wǎng)訪問的服務(wù)端口:

添加自己需要開放的防火墻即可

環(huán)境準(zhǔn)備

mysql,這里使用docker進行安裝

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
-v /root/mysql/conf:/etc/mysql/conf.d \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
  mysql

里面的賬號密碼可以自行設(shè)置

寶塔也可進行直接安裝mysql,這里不做演示,redis使用寶塔進行演示

redis安裝,搜索直接安裝即可

要部署 Java 項目,必須安裝 JDK。在寶塔面板中,可以通過下圖的方式快速安裝指定版本的 JDK。

建議多安裝幾個版本,比如 JDK8、11、17,需要用哪個版本的時候可以隨時切換。

后端代碼打包

修改 application-prod 生產(chǎn)環(huán)境配置,包括數(shù)據(jù)庫、Redis 等,替換為上述安裝依賴時指定的配置(如用戶名、密碼)

以下僅供參考,總之就是把數(shù)據(jù)庫連接等配置改為線上地址 改之前可以手動進行連接測試

# 線上配置文件
server:
  port: 8101
spring:
  # 數(shù)據(jù)庫配置
  # todo 需替換配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://你自己的服務(wù)器地址:3306/mianshiniu
    username: root
    password: 你自己的數(shù)據(jù)庫密碼
  # Redis 配置
  # todo 需替換配置
  redis:
    database: 1
    host: 你自己的服務(wù)器地址
    port: 6379
    timeout: 5000
    password: 你自己的數(shù)據(jù)庫密碼
  # Elasticsearch 配置
  # todo 需替換配置
  elasticsearch:
    uris: http://你自己的服務(wù)器地址:9200
#    username: root
#    password: 你自己的es密碼
mybatis-plus:
  configuration:
    # 生產(chǎn)環(huán)境關(guān)閉日志
    log-impl: ''
#mybatis-plus:
#  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 接口文檔配置
knife4j:
  basic:
    enable: true
    username: root
    password: 自己設(shè)置



sa-token:
  # token 名稱(同時也是 cookie 名稱)
  token-name: token
  # token 有效期(單位:秒) 默認(rèn)30天,-1 代表永久有效
  timeout: 2592000
  # token 最低活躍頻率(單位:秒),如果 token 超過此時間沒有訪問系統(tǒng)就會被凍結(jié),默認(rèn)-1 代表不限制,永不凍結(jié)
  active-timeout: -1
  # 是否允許同一賬號多地同時登錄 (為 true 時允許一起登錄, 為 false 時新登錄擠掉舊登錄)
  is-concurrent: false
  # 在多人登錄同一賬號時,是否共用一個 token (為 true 時所有登錄共用一個 token, 為 false 時每次登錄新建一個 token)
  is-share: true
  # token 風(fēng)格(默認(rèn)可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
  token-style: uuid
  # 是否輸出操作日志
  is-log: true

打包即可

打包成功后會得到一個jar包

上傳jar包到服務(wù)器

上傳完成后,運行jar包即可

啟動成功后即可看到

如果失敗了可查看項目運行日志

但是現(xiàn)在我們無法通過ip地址加接口文檔地址訪問到測試文檔

這是因為我們的服務(wù)器防火墻沒有放開 8101端口。這里我們故意不放開,因為在之前的部署規(guī)劃中,后端需要通過 Nginx 進行轉(zhuǎn)發(fā),從而解決跨域問題。

nginx配置

新建一個php(只是使用Nginx進行代理轉(zhuǎn)發(fā),并不寫代碼)

如果訪問的是后端接口(地址有 /api 前綴),則 Nginx 將請求轉(zhuǎn)發(fā)到后端服務(wù),對應(yīng)配置代碼如下:

location /api {
  proxy_pass  http://127.0.0.1:8101;
  proxy_set_header Host $proxy_host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_buffering off;
  proxy_set_header Connection "";
}

添加代理規(guī)則

一定要注釋掉下列配置!**否則訪問接口文檔時,靜態(tài)資源的加載可能會出錯:

服務(wù)器ip地址加/api/doc.html即可訪問到接口文檔

前端

環(huán)境準(zhǔn)備

要選擇穩(wěn)定的版本進行安裝

打包

  • 線上的前端需要請求線上的后端接口,所以需要修改 libs/request.ts 文件中的請求地址為線上:

改為線上地址,因為Next.js在構(gòu)建時需要調(diào)用后端接口,所以后端必須啟動才能完成構(gòu)建

  • 修改 Nextjs 配置文件 next.config.mjs ,使用 standalone 模式部署,這樣上傳到服務(wù)器的時候可以不用上傳 nodemodules 目錄。

ignoreBuildErrors: true, 忽略構(gòu)建時的語法錯誤

  • 執(zhí)行打包命令,注意node.js版本要大于18.18,否則報錯

如果構(gòu)建過程中出現(xiàn)其他錯誤,需要根據(jù)錯誤信息排查并處理。比如下面這個示例,顯然是 TypeScript 類型錯誤:

找到 fileController 文件,加個 // @ts-ignore 就好了:

可能還會遇到其他因為類型的錯誤,這類錯誤不影響運行,但是會在 Next,js 打包時被檢測,可以根據(jù)實際情況修改?;蛘咧苯釉诖虬鼤r忽略 TypeScript錯誤,參考官方文檔:Configuration: TypeScript | Next.js

注意,如果后端接口沒啟動,也可能會導(dǎo)致打包錯誤!

打包成功后,看到下圖信息,能夠很直觀地看到哪些頁面用到了靜態(tài)渲染和服務(wù)端渲染:

然后在 .next 日錄下會生成 standalone 目錄,該目錄就是可以獨立部署的前端包。但是必須按照如下模式組織目錄,一定不能有錯!

  • 1.將項目根目錄下的 public 日錄移動到.next/standalone 內(nèi)
  • 2.將.next/static日錄移動到.next/standalone/.next內(nèi)

目錄結(jié)構(gòu)如下

3.上傳服務(wù)器,只需要上傳standalone下的文件即可,建議打成壓縮包上傳,解壓即可

4.新建一個node項目

修改配置

可以查看啟動時的項目日志,快速定位問題

5 nginx轉(zhuǎn)發(fā)

當(dāng)用戶訪問除了后端之外的任何地址時,都找到前端的node服務(wù) http://127.0.0.1:3000;,從而訪問到頁面

location / {
  proxy_pass  http://127.0.0.1:3000;
  proxy_set_header Host $proxy_host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_buffering off;
  proxy_set_header Connection "";
}

完整的nginx代理如下

訪問即可 ip或域名即可

總結(jié) 

到此這篇關(guān)于java部署項目流程幾種常見方式詳解的文章就介紹到這了,更多相關(guān)java部署項目流程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java類比C++的STL庫詳解

    java類比C++的STL庫詳解

    這篇文章主要介紹了java類比C++的STL庫詳解,標(biāo)準(zhǔn)模板庫,是C++標(biāo)準(zhǔn)庫的重要組成部分,中文可譯為標(biāo)準(zhǔn)模板庫或者泛型庫,其包含有大量的模板類和模板函數(shù),STL 是一些容器、算法和其他一些組件的集合,需要的朋友可以參考下
    2023-08-08
  • springboot如何為web層添加統(tǒng)一請求前綴

    springboot如何為web層添加統(tǒng)一請求前綴

    這篇文章主要介紹了springboot如何為web層添加統(tǒng)一請求前綴,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Python實現(xiàn)filter函數(shù)實現(xiàn)字符串切分

    Python實現(xiàn)filter函數(shù)實現(xiàn)字符串切分

    這篇文章主要介紹了Python實現(xiàn)filter函數(shù)實現(xiàn)字符串切分,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • 一文搞清楚Spring事務(wù)

    一文搞清楚Spring事務(wù)

    Spring事務(wù)是指在Spring框架中對于數(shù)據(jù)庫操作的一種支持,它通過對一組數(shù)據(jù)庫操作進行整體控制來保證數(shù)據(jù)的一致性和完整性。本文介紹Spring事務(wù)介紹的非常詳細(xì),有需要的朋友可以參考本文
    2023-04-04
  • Spring項目中使用Junit單元測試并配置數(shù)據(jù)源的操作

    Spring項目中使用Junit單元測試并配置數(shù)據(jù)源的操作

    這篇文章主要介紹了Spring項目中使用Junit單元測試并配置數(shù)據(jù)源的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java注釋和關(guān)鍵字實例詳解

    Java注釋和關(guān)鍵字實例詳解

    注釋是對程序語言的說明,有助于開發(fā)者和用戶之間的交流,方便理解程序,注釋不是編程語句,因此被編譯器忽略,下面這篇文章主要給大家介紹了關(guān)于Java注釋和關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Java8并行流中自定義線程池操作示例

    Java8并行流中自定義線程池操作示例

    這篇文章主要介紹了Java8并行流中自定義線程池操作,結(jié)合實例形式分析了并行流的相關(guān)概念、定義及自定義線程池的相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • JAVA中使用MD5加密實現(xiàn)密碼加密

    JAVA中使用MD5加密實現(xiàn)密碼加密

    本篇文章主要介紹JAVA中使用MD5加密實現(xiàn)密碼加密,很多地方都要存儲用戶密碼,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下
    2017-07-07
  • idea?maven?經(jīng)常主目錄自動變回默認(rèn)的解決方法

    idea?maven?經(jīng)常主目錄自動變回默認(rèn)的解決方法

    很多朋友反映idea?maven?經(jīng)常主目錄自動變回默認(rèn),遇到這樣的問題真的很頭疼,該如何解決呢?下面小編給大家介紹下idea?maven目錄變回默認(rèn)的解決方法,需要的朋友可以參考下
    2022-08-08
  • mybatis insert返回主鍵代碼實例

    mybatis insert返回主鍵代碼實例

    這篇文章主要介紹了mybatis insert返回主鍵代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12

最新評論