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

news2025/3/14 16:26:45

 <前文回顾>

点击此处查看 合集 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.coloradmin.cn/o/2314967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AIGC】OpenAI 集成 Langchain 操作实战使用详解

目录 一、前言 二、前置准备 2.1 安装 Langchain必须的依赖 2.1.1 python环境 2.1.2 langchain openai 环境 2.1.3 准备一个apikey 2.1.4 langchain 核心组件 三、Langchain 各组件使用 3.1 Chat models组件 3.1.1 Invocation 使用 3.1.1.1 结果解析 3.2 提示词模板…

Xxl-Job学习笔记

目录 概述 核心架构 核心特点 应用场景 什么是任务调度 快速入门 获取源码 初始化调度数据库 基本配置 数据源datasource 邮箱email&#xff08;可选&#xff09; 会话令牌access token 启动调度中心 启动执行器 依赖 yaml基本配置 XxlJobConfig类配置 定义执…

SAIL-RK3576核心板应用方案——无人机视觉定位与地面无人设备通信控制方案

本方案以 EFISH-RK3576-SBC工控板 或 SAIL-RK3576核心板 为核心&#xff0c;结合高精度视觉定位、实时通信与智能控制技术&#xff0c;实现无人机与地面无人设备的协同作业。方案适用于物流巡检、农业植保、应急救援等场景&#xff0c;具备高精度定位、低延迟通信与强环境适应性…

CSS 入门指南(一):基本概念 选择器 常用元素属性

一、初识 CSS 1, CSS 定义 层叠样式表(Cascading Style Sheets&#xff0c;缩写为 CSS)&#xff0c;是一种 样式表 语言&#xff0c;用来描述 HTML 文档的呈现&#xff08;美化内容&#xff09; CSS 能够对网页中元素位置的排版进行 像素级 精确控制&#xff0c;实现美化页面…

HTML5(Web前端开发笔记第一期)

p.s.这是萌新自己自学总结的笔记&#xff0c;如果想学习得更透彻的话还是请去看大佬的讲解 目录 三件套标签标题标签段落标签文本格式化标签图像标签超链接标签锚点链接默认链接地址 音频标签视频标签 HTML基本骨架综合案例->个人简介列表表格表单input标签单选框radio上传…

【AIGC】计算机视觉-YOLO系列家族

YOLO系列家族 &#xff08;1&#xff09;YOLO发展史&#xff08;2&#xff09; YOLOX&#xff08;3&#xff09; YOLOv6&#xff08;4&#xff09; YOLOv7&#xff08;5&#xff09; YOLOv8&#xff08;6&#xff09; YOLOv9&#xff08;7&#xff09;YOLOv10&#xff08;8&…

The First项目报告:重塑 DeFi 流动性的革新者,ELX 即将登陆 The First

随着去中心化金融&#xff08;DeFi&#xff09;的持续发展&#xff0c;流动性问题一直是各类去中心化交易所&#xff08;DEX&#xff09;和项目方面临的核心挑战。传统的做市模式往往需要依赖中心化流动性提供者&#xff0c;而这些机构的资金控制能力可能影响代币价格波动&…

OpenCV连续数字识别—可运行验证

前言 ​ 文章开始&#xff0c;瞎说一点其他的东西&#xff0c;真的是很离谱&#xff0c;找了至少两三个小时&#xff0c;就一个简单的需求&#xff1a; 1、利用OpenCV 在Windows进行抓图 2、利用OpenCV 进行连续数字的检测。 3、使用C&#xff0c;Qt 3、将检测的结果显示出来 …

LiveGBS流媒体平台GB/T28181功能-海康大华宇视华为像头GB28181国标语音对讲语音喊话需要的摄像头设备及服务HTTPS准备

LiveGBS海康大华宇视华为像头GB28181国标语音对讲语音喊话需要的摄像头设备及服务HTTPS准备 1、背景2、准备2.1、服务端必备条件&#xff08;注意&#xff09;2.2、准备语音对讲设备2.2.1、 大华摄像机2.2.1.1、 配置接入示例2.2.1.2、 配置音频通道编号 2.2.2、 海康摄像机2.2…

第十五章:go package 包的管理

import f "fmt"   // 注意 这里 f 是包的别名 init初始化函数 在每一个Go源文件中&#xff0c;都可以定义任意个如下格式的特殊函数&#xff1a; func init(){// ... } package&#xff1a;声明包的关键字 packagename&#xff1a;包名&#xff0c;可以不与文…

deepseek的regflow安装mac版本

deepseek的ragflow部署安装 一:ollama安装,自行完成,我本地已安装 二:查看大模型情况oll::命令ollama list,我本地无ragflow 三:docker安装:命令docker version ,自行完成,我本地已安装 四:安装知识库软件ragflow: 简单科普下Ragflow 是一个基于深度学习模型的问答生成工具&…

文献分享: 对ColBERT段落多向量的剪枝——基于学习的方法

原论文 1. 导论 & \textbf{\&} &方法 1️⃣要干啥&#xff1a;在 ColBERT \text{ColBERT} ColBERT方法中&#xff0c;限制每个段落要保留的 Token \text{Token} Token的数量&#xff0c;或者说对段落 Token \text{Token} Token进行剪枝 2️⃣怎么干&#xff1a;注…

社交软件频繁更新,UI 设计在其中扮演什么角色?

在当今数字化时代&#xff0c;社交软件已成为人们日常生活中不可或缺的一部分。随着科技的飞速发展和用户需求的不断变化&#xff0c;社交软件更新频率日益加快。在这频繁更新的背后&#xff0c;UI 设计扮演着至关重要的角色&#xff0c;它如同社交软件的 “门面担当” 与 “交…

Gemini Robotics:Google DeepMind 让 AI 机器人真正“动”起来!

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

概率论的基本知识

逆概率还不懂&#xff0c;改天再想想。 联合概率 联合概率&#xff08;Joint Probability&#xff09; 是概率论中的一个重要概念&#xff0c;用于描述多个随机变量同时取某些值的概率。联合概率可以帮助我们理解多个变量之间的关系。

AI大数据挖掘的威力

通过AI挖掘大数据可以发现很多世界上用传统方法无法发现的潜在规律。 人类群体可以被精准的操控&#xff0c;这在AI发达的未来会越来越现实&#xff0c;甚至可以在社会动荡前夕精准清理权威节点。 基于AI与大数据的人类群体潜在规律发现 随着AI和大数据技术的深度结合&#xf…

使用服务器如何DNS呢

莱卡云服务器 DNS 配置指南 一、配置云服务器本地 DNS ‌修改网络配置文件‌ ‌Ubuntu/Debian‌&#xff1a; bashCopy Code sudo nano /etc/network/interfaces # 添加或修改 DNS 配置 dns-nameservers 8.8.8.8 8.8.4.4 *&#xff08;保存后重启网络服务&#xf…

【SpringBoot】实现登录功能

在上一篇博客中&#xff0c;我们讲解了注册页面的实现。在此基础上会跳转到登录页面&#xff0c;今天给大家带来的是使用 SpringBoot&#xff0c;MyBatis&#xff0c;Html&#xff0c;CSS&#xff0c;JavaScript&#xff0c;前后端交互实现一个登录功能。 目录 一、效果 二、…

图论part3|101.孤岛的总面积、沉没孤岛、417. 太平洋大西洋水流问题

101. 孤岛的总面积 &#x1f517;&#xff1a;101. 孤岛的总面积思路&#xff1a;和昨天的岛的区别是&#xff1a;是否有挨着边的岛屿 所以可以先遍历四条边挨着的岛屿&#xff0c;把他们标记为非孤岛再计算其他岛屿当中的最大面积 代码&#xff1a;&#xff08;深度搜索&…

江科大51单片机笔记【12】AT24C02(I2C总线)

写在前言 此为博主自学江科大51单片机&#xff08;B站&#xff09;的笔记&#xff0c;方便后续重温知识 在后面的章节中&#xff0c;为了防止篇幅过长和易于查找&#xff0c;我把一个小节分成两部分来发&#xff0c;上章节主要是关于本节课的硬件介绍、电路图、原理图等理论知识…