【 <一> 炼丹初探: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:一个用于自动化部署、配置管理的工具,能减少手工操作。
相关推荐
ONETHING_CLOUD_25 分钟前
不用电脑要不要关机?
经验分享·科技·电脑·数码·实用技巧分享
编程猪猪侠19 分钟前
Tailwind CSS 自定义工具类与主题配置指南
前端·css
qhd吴飞23 分钟前
mybatis 差异更新法
java·前端·mybatis
YGY Webgis糕手之路1 小时前
OpenLayers 快速入门(九)Extent 介绍
前端·经验分享·笔记·vue·web
患得患失9491 小时前
【前端】【vueDevTools】使用 vueDevTools 插件并修改默认打开编辑器
前端·编辑器
ReturnTrue8681 小时前
Vue路由状态持久化方案,优雅实现记住表单历史搜索记录!
前端·vue.js
UncleKyrie1 小时前
一个浏览器插件帮你查看Figma设计稿代码图片和转码
前端
遂心_1 小时前
深入解析前后端分离中的 /api 设计:从路由到代理的完整指南
前端·javascript·api
你听得到111 小时前
Flutter - 手搓一个日历组件,集成单日选择、日期范围选择、国际化、农历和节气显示
前端·flutter·架构
风清云淡_A1 小时前
【REACT18.x】CRA+TS+ANTD5.X封装自定义的hooks复用业务功能
前端·react.js