【 <一> 炼丹初探:JavaWeb 的起源与基础】之 JavaWeb 项目的部署:从开发环境到生产环境

devtools/2025/3/14 14:13:41/

 <前文回顾>

点击此处查看 合集 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.ppmy.cn/devtools/167041.html

相关文章

Vue项目搜索引擎优化(SEO)终极指南:从原理到实战

文章目录 1. SEO基础与Vue项目的挑战1.1 为什么Vue项目需要特殊SEO处理&#xff1f;1.2 搜索引擎爬虫工作原理 2. 服务端渲染&#xff08;SSR&#xff09;解决方案2.1 Nuxt.js框架实战原理代码实现流程图 2.2 自定义SSR实现 3. 静态站点生成&#xff08;SSG&#xff09;技术3.1…

vue 知识点整理

1.data为什么是一个函数而不是对象 维度对象形式函数形式数据隔离性所有实例共享同一对象&#xff0c;导致数据污染每个实例拥有独立数据副本复用安全性不适用于可复用组件支持组件安全复用语言机制引用传递引发副作用函数返回值实现作用域隔离&#xff08;闭包&#xff09;框…

OpenCV(应用) —— 凸包检测的实战应用

文章目录 一、凸包的概念二、Opencv中的API三、应用场景与实战3.1、实战场景一一、凸包的概念 常见的找寻目标的外轮廓有矩形框(如最小外接矩阵)和圆形框,但这种包围框为了保持几何形状,与图形的真实轮廓贴合度较差。如果能找出图形最外层的端点,将这些端点连接起来,就可…

什么是SWAP虚拟内存?使用服务器如何开启SWAP虚拟内存

一、SWAP 虚拟内存是什么&#xff1f;‌ ‌定义‌&#xff1a; SWAP&#xff08;交换分区&#xff09;是磁盘上的一块空间&#xff0c;用于在物理内存&#xff08;RAM&#xff09;不足时&#xff0c;将部分不活跃的内存数据临时存储到磁盘中&#xff0c;避免系统因内存耗尽而崩…

AI+Mermaid 制作流程图

一、引言 在软件开发的全生命周期里&#xff0c;文档编写扮演着举足轻重的角色。它犹如项目的“导航图”&#xff0c;为团队成员清晰呈现项目架构、功能流程和技术细节&#xff0c;是保障高效协作的关键。然而&#xff0c;传统的文字描述往往难以直观地展现复杂的系统架构、业…

怎样进行相关论文的调研——How to conduct research on relevant papers?

怎样进行相关论文的调研 写在前面1.打开Web of Science2.检索同类表达3.构建“检索式”什么是“检索式” 参考内容 写在前面 偶然间刷到一篇知乎文章&#xff0c;顺着文章的推荐看了钟澄老师的科研论和在B站上的教学视频&#xff0c;深入了解后发现读文章还有这么多讲究&#…

年龄与疾病(信息学奥赛一本通-1106)

【题目描述】 某医院想统计一下某项疾病的获得与否与年龄是否有关&#xff0c;需要对以前的诊断记录进行整理&#xff0c;按照0-18、19-35、36-60、61以上&#xff08;含61&#xff09;四个年龄段统计的患病人数占总患病人数的比例。 【输入】 共2行&#xff0c;第一行为过往病…

青年公寓服务平台的设计与实现(代码+数据库+LW)

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;房屋信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广…