【 <一> 煉丹初探:JavaWeb 的起源與基礎】之 JavaWeb 項目的部署:從開發環境到生產環境

?<前文回顧>

點擊此處查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12907601&sharerefer=PC&sharesource=FoyoDesigner&sharefrom=from_link

<今日更新>

一、開發環境:寫代碼的“溫床”

在 JavaWeb 開發里,開發環境就是寫代碼的“溫床”。開發環境通常包括 IDE(比如 IntelliJ IDEA、Eclipse)、本地 Tomcat[1] 服務器、數據庫啥的。開發環境的任務就是讓開發者能“舒舒服服”地寫代碼、調試代碼。

1.?本地 Tomcat:開發者的“玩具”

本地 Tomcat 是開發環境里的“玩具”,開發者能用它跑項目、調試代碼。本地 Tomcat 的配置通常比較簡單,端口號默認是 8080,項目路徑默認是?webapps

bash Code

# 啟動本地 Tomcat

$ catalina.sh run

2.?IDE:開發者的“利器”

IDE 是開發環境里的“利器”,開發者能用它寫代碼、調試代碼、打包項目。IDE 通常集成了 Tomcat,開發者能直接在 IDE 里啟動、停止 Tomcat。

XML Code

<!-- pom.xml 配置 Tomcat 插件 -->

<plugin>

????<groupId>org.apache.tomcat.maven</groupId>

????<artifactId>tomcat7-maven-plugin</artifactId>

????<version>2.2</version>

????<configuration>

????????<port>8080</port>

????????<path>/myapp</path>

????</configuration>

</plugin>

二、測試環境:代碼的“試煉場”

測試環境是代碼的“試煉場”,開發者能把項目部署到測試環境,測試功能、性能啥的。測試環境通常包括測試服務器、測試數據庫啥的。

1.?測試服務器:代碼的“考場”

測試服務器是測試環境里的“考場”,開發者能把項目部署到測試服務器,測試功能、性能啥的。測試服務器的配置通常和生產環境差不多,但硬件資源可能“縮水”了。

bash Code

# 部署項目到測試服務器

$ scp target/myapp.war user@test-server:/opt/tomcat/webapps

2.?測試數據庫:數據的“沙盒”

測試數據庫是測試環境里的“沙盒”,開發者能用它測試數據庫操作、數據一致性啥的。測試數據庫的數據通常是“假數據”,但數據結構得和生產環境一致。

Sql Code

-- 測試數據庫初始化腳本

CREATE TABLE users (

????id INT PRIMARY KEY,

????username VARCHAR(50),

????password VARCHAR(50)

);

三、生產環境:項目的“戰場”

生產環境是項目的“戰場”,項目部署到生產環境后,用戶就能訪問了。生產環境通常包括生產服務器、生產數據庫啥的。

1.?生產服務器:項目的“堡壘”

生產服務器是生產環境里的“堡壘”,項目部署到生產服務器后,用戶就能訪問了。生產服務器的配置通常“高大上”,硬件資源“充足”,安全性“高”。

bash Code

# 部署項目到生產服務器

$ scp target/myapp.war user@prod-server:/opt/tomcat/webapps

2.?生產數據庫:數據的“金庫”

生產數據庫是生產環境里的“金庫”,里頭存著用戶的“真數據”。生產數據庫的安全性“高”,備份策略“完善”,數據一致性“強”。

Sql Code

-- 生產數據庫初始化腳本

CREATE TABLE users (

????id INT PRIMARY KEY,

????username VARCHAR(50),

????password VARCHAR(50)

);

四、部署流程:從開發到生產

部署流程是從開發環境到生產環境的“必經之路”,通常包括打包、上傳、部署、啟動啥的。

1.?打包:項目的“裝箱”

打包是把項目“裝箱”,生成 WAR 文件。WAR 文件是 JavaWeb 項目的標準打包格式,里頭裝著項目的代碼、資源啥的。

bash Code

# 打包項目

$ mvn clean package

2.?上傳:項目的“運輸”

上傳是把 WAR 文件“運輸”到服務器。上傳通常用 SCP、FTP 啥的,得確保網絡“暢通”,權限“足夠”。

bash Code

# 上傳 WAR 文件到服務器

$ scp target/myapp.war user@server:/opt/tomcat/webapps

3.?部署:項目的“上架”

部署是把 WAR 文件“上架”到 Tomcat。Tomcat 會自動解壓 WAR 文件,部署項目。部署完成后,用戶就能訪問項目了。

bash Code

# 啟動 Tomcat

$ catalina.sh start

4.?啟動:項目的“開張”

啟動是項目的“開張”,Tomcat 會加載項目,處理請求。啟動完成后,開發者得檢查日志,確保項目“正常”。

bash Code

# 查看 Tomcat 日志

$ tail -f /opt/tomcat/logs/catalina.out

五、部署參數:項目的“調校”

部署參數是項目的“調校”,開發者能通過配置參數,調整項目的性能、行為啥的。

1.?端口號:項目的“門牌號”

端口號是項目的“門牌號”,用戶得通過端口號訪問項目。Tomcat 的默認端口號是 8080,但生產環境通常得改成 80。

XML Code

<!-- server.xml 配置端口號 -->

<Connector port="80" protocol="HTTP/1.1"

???????????connectionTimeout="20000"

???????????redirectPort="8443" />

2.?上下文路徑:項目的“別名”

上下文路徑是項目的“別名”,用戶得通過上下文路徑訪問項目。Tomcat 的默認上下文路徑是 WAR 文件名,但生產環境通常得改成?/

XML Code

<!-- server.xml 配置上下文路徑 -->

<Context path="/" docBase="myapp" />

3.?線程池:項目的“發動機”

線程池是項目的“發動機”,Tomcat 用線程池處理請求。線程池的大小得根據硬件資源、請求量啥的“調校”。

XML Code

<!-- server.xml 配置線程池 -->

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

??????????maxThreads="200" minSpareThreads="10" />

六、部署工具:項目的“助手”

部署工具是項目的“助手”,開發者能用它自動化部署流程,減少“手工操作”。

1.?Maven:項目的“打包工”

Maven 是項目的“打包工”,開發者能用它打包項目、管理依賴啥的。Maven 的配置通常寫在?pom.xml?里。

XML Code

<!-- pom.xml 配置打包插件 -->

<plugin>

????<groupId>org.apache.maven.plugins</groupId>

????<artifactId>maven-war-plugin</artifactId>

????<version>3.3.1</version>

????<configuration>

????????<warName>myapp</warName>

????</configuration>

</plugin>

2.?Ansible:項目的“部署工”

Ansible 是項目的“部署工”,開發者能用它自動化部署流程,減少“手工操作”。Ansible 的配置通常寫在?playbook.yml?里。

Yml Code

# playbook.yml 配置部署任務

- hosts: prod-server

??tasks:

????- name: 上傳 WAR 文件

??????copy:

????????src: target/myapp.war

????????dest: /opt/tomcat/webapps

????- name: 啟動 Tomcat

??????command: catalina.sh start

=========================================================================

專有名詞解釋

  1. Tomcat:Apache Tomcat,一個開源的 JavaWeb 服務器,用于運行 Servlet 和 JSP。
  2. WAR 文件:Web Application Archive,JavaWeb 項目的標準打包格式,包含項目的代碼、資源等。
  3. SCP:Secure Copy Protocol,一種用于在本地和遠程服務器之間傳輸文件的協議。
  4. Maven:一個用于 Java 項目的構建工具,能管理依賴、打包項目等。
  5. Ansible:一個用于自動化部署、配置管理的工具,能減少手工操作。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72429.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72429.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72429.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度學習CNN特征提取與匹配

?一、CNN特征提取核心方法? ?基礎網絡架構? 使用卷積神經網絡&#xff08;如ResNet、VGG、MobileNet&#xff09;提取多層特征圖&#xff0c;通過卷積層自動學習圖像的局部紋理、形狀及語義信息?。 ?淺層特征?&#xff1a;邊緣、角點等低級特征&#xff08;Conv1-3&…

Vuex 高級技巧與最佳實踐

使用 map 輔助函數簡化代碼&#xff1a; javascript import { mapState, mapGetters } from vuexexport default {computed: {...mapState([num]),...mapGetters([doubleNum])} }模塊化開發&#xff1a; javascript // modules/student.js export default {namespaced: true,st…

算法題(98):大數加法

審題&#xff1a; 本題需要我們解決大數加法&#xff0c;大數直接運算會超出范圍&#xff0c;所以我們需要轉換成字符串一位位進行計算 思路&#xff1a; 方法一&#xff1a;高精度加法 我們將兩個大數的每一個位分別計算&#xff0c;然后頭插到answer字符串中即可 解題&#x…

C# Exe + Web 自動化 (BitComet 綠燈 自動化配置、設置)

BitComet GreenLight,內網黃燈轉綠燈 (HighID), 增加p2p連接率提速下載-CSDN博客 前兩天寫個這個&#xff0c;每次開機關機后要重來一遍很麻煩的索性寫個自動化。 先還是按照上面的教程自己制作一遍&#xff0c;留下Luck 以及 路由器相關的 端口記錄信息。 &#xff08;因為自…

基于 Docker 搭建 FRP 內網穿透開源項目

有些配置項不知道該不該用,不知道該在哪用,不知道怎么用,所以我自己寫個文章簡單記錄一下做個筆記 本文介紹的是基于 Docker 運行 frps 和 frpc,并通過 TCP 協議簡單穿透 SSH 和 HTTP,在觀看本文之前請確保你的機器已經安裝 Docker 服務端搭建 frps# 連接擁有公網 IP 的…

python---序列 (str,list,tuple)

一、 序列類型入門 python的數據類型&#xff1a;int float bool str 運算符 - * / % > < and or not 流程控制ifelsewhilefor掌握python的2大容器類型數值類型&#xff08;3個&#xff09;&#xff1a;int float bool序列類型容器(3個)&#xff1a;str &#xff1a; …

CSS元素層疊順序規則

CSS元素層疊順序規則 看圖說話總結: background/borderz-index(<0)blockfloatinline/inline-blockz-index(0,auto)z-index (>0)

刪除有序數組中的重復項(26)

26. 刪除有序數組中的重復項 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; class Solution { public:int removeDuplicates(vector<int>& nums) {auto first nums.begin();auto last nums.end();auto result first;if (first last) {return std::…

Vue 概念、歷史、發展和Vue簡介

一、Vue概念 官方定義&#xff1a; 漸進式JavaScript 框架&#xff0c;易學易用&#xff0c;性能出色&#xff0c;適用場景豐富的 Web 前端框架。 Vue.js 是一個流行的前端JavaScript框架&#xff0c;由尤雨溪&#xff08;Evan You&#xff09;開發并維護。 它最初于2014年發…

ArcGIS Pro將有文字標注底圖切換為無標注底圖(在線地圖圖源)

今天介紹一下在ArcGIS Pro將有標注的地形底圖換成無標注的底圖。 大家在這項目底圖時候會經常調用ArcGIS Pro自帶的地形圖&#xff0c;但是這個地形圖自帶是有注記的&#xff0c;如下圖。 如何更改&#xff0c;才可以調用無文字注記的呢&#xff1f; 對于一個已經切好圖的有注記…

Xxl-Job學習筆記

目錄 概述 核心架構 核心特點 應用場景 什么是任務調度 快速入門 獲取源碼 初始化調度數據庫 基本配置 數據源datasource 郵箱email&#xff08;可選&#xff09; 會話令牌access token 啟動調度中心 啟動執行器 依賴 yaml基本配置 XxlJobConfig類配置 定義執…

讓雙向鏈表不在云里霧里

又來博客留下我的足跡了&#xff0c;哈哈哈&#xff0c;這次是對于雙向鏈表的理解 目錄 創建雙向鏈表&#xff1a; 申請結點&#xff1a; 雙向鏈表初始化&#xff1a; 雙向鏈表插入結點&#xff1a; 雙向鏈表刪除結點&#xff1a; 雙向鏈表的打印&#xff1a; 雙向鏈表…

java虛擬機(JVM)以及各種參數詳解

Java 虛擬機&#xff08;JVM&#xff09;提供了許多參數來調整其行為和性能&#xff0c;以便更好地適應不同的應用場景。理解和使用這些參數對于優化 Java 應用程序的性能非常重要。以下是一些常用的 JVM 參數及其詳細說明&#xff1a; 1. 內存管理參數 -Xms<size>&…

如何搭配 AI 量化策略選股

AI 量化選股策略結合了 技術指標、基本面數據、市場情緒&#xff0c;利用 機器學習、深度學習、因子分析 等方法&#xff0c;提高選股精準度和交易決策效率。下面介紹 如何搭配 AI 量化策略選股。 1. AI 量化選股的核心方法 AI 量化選股主要依靠 數據驅動&#xff0c;包括&…

Python 爬蟲:一文掌握 SVG 映射反爬蟲

更多內容請見: 爬蟲和逆向教程-專欄介紹和目錄 文章目錄 1. SVG 概述1.1 SVG的優點1.1 映射反爬蟲的原理2. SVG 映射反爬蟲的示例3. 應對 SVG 映射反爬蟲的方法3.1 解析 SVG 圖像3.2 處理自定義字體3.3 使用 OCR 技術3.4 動態生成 SVG 的處理4. 實戰案例4.1 使用 SVG 映射顯示…

前端工程化之前端工程化詳解 包管理工具

前端工程化詳解 & 包管理工具 前端工程化什么是前端工程化前端工程化發展腳手架能力 體驗度量規范流程效能流程扭轉 穩定性建設針對整體穩定性建設 可監控&#xff1a;前端監控系統 包管理工具npm包詳解package.jsonname 模塊名description 模塊描述信息keywords&#xff1…

《Python實戰進階》No24: PyAutoGUI 實現桌面自動化

No24: PyAutoGUI 實現桌面自動化 摘要 PyAutoGUI 是一個跨平臺的桌面自動化工具&#xff0c;能夠模擬鼠標點擊、鍵盤輸入、屏幕截圖與圖像識別&#xff0c;適用于重復性桌面任務&#xff08;如表單填寫、游戲操作、批量文件處理&#xff09;。本集通過代碼截圖輸出日志的實戰形…

一周學會Flask3 Python Web開發-SQLAlchemy查詢所有數據操作-班級模塊

鋒哥原創的Flask3 Python Web開發 Flask3視頻教程&#xff1a; 2025版 Flask3 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 我們來新建一個的藍圖模塊-班級模塊&#xff0c;后面可以和學生模塊&#xff0c;實現一對多的數據庫操作。 blueprint下新建g…

Neural Architecture Search for Transformers:A Survey

摘要 基于 Transformer 的深度神經網絡架構因其在自然語言處理 (NLP) 和計算機視覺 (CV) 領域的各種應用中的有效性而引起了極大的興趣。這些模型是多種語言任務&#xff08;例如情緒分析和文本摘要&#xff09;的實際選擇&#xff0c;取代了長短期記憶 (LSTM) 模型。視覺 Tr…

TCP 全連接隊列 內核層理解socket

TCP 全連接隊列 理解 listen 的第二個參數 int listen(int sockfd, int backlog);backlog 參數表示 全連接隊列&#xff08;accept 隊列&#xff09;的最大長度。 那什么是全連接隊列呢&#xff1f; 三次握手 & accept() 處理流程 客戶端發送 SYN&#xff0c;服務器收到并…