当前位置: 首页 > news >正文

Linux搭建Java项目部署环境

1.搭建Java部署环境

1.1apt

apt (Advanced Packaging Tool), Linux软件包管理⼯具.⽤于在(Ubuntu、Debian和相关Linux发⾏版)上安装、更新、删除和管理deb软件包.
⼤多数apt命令必须以具有sudo权限的⽤⼾⾝份运⾏ 或者是管理身份运行如果切换到root⽤⼾,命令前就不需要加sudo了

apt常⽤命令

# 列出所有软件包 apt list # 输出所有包的列表,内容⽐较多,可以使⽤grep命令过滤输出 apt list |grep "java" # 更新软件包数据 sudo apt-get update # 安装软件包 sudo apt install package_name # 删除软件包 sudo apt remove package_name

remove命令将卸载给定的软件包,但可能会留下⼀些配置⽂件。如果要删除包含所有配置⽂件的软
包,请使⽤purge⽽不是remove

apt remove 和 apt purge 的区别

• apt remove 删除包的⼆进制⽂件,它留下了残留的配置⽂件.
• apt purge 删除与包相关的所有内容,包括配置⽂件.

如果弄乱了程序的配置,希望从系统中完全清除它的痕迹再重新开始,可以使⽤ apt purge
通常使⽤ apt remove 就⾜够了

1.2JDK

更新软件包数据

sudo apt-get update

安装jdk 对应的版本

#查找jdk包 apt list |grep "jdk" #安装jdk sudo apt install openjdk-17-jdk

使⽤java -version 验证是否安装成功.
如果提⽰"java命令找不到"则说明安装失败.
如果显示"java版本号"则说明安装成功.

卸载JDK

检查安装的是哪个OpenJDK # dpkg --list | grep -i jdk 移除 openjdk包: # apt-get purge openjdk* 卸载 OpenJDK 相关包: # apt-get purge icedtea-* openjdk-* 检查所有 OpenJDK包是否都已卸载完毕: # dpkg --list | grep -i jdk

1.3Mysql

  1. 使⽤apt安装MySQL
#查找安装包 apt list |grep "mysql-server" #安装mysql sudo apt install mysql-server
  1. 查看MySQL状态
    显示active (running) 就好了
sudo systemctl status mysql
  1. MySQL安装安全设置
    默认的MySQL设置是不安全的,MySQL安装提供了⼀个安全脚本,⽤于解决不太安全的默认选项.
sudo mysql_secure_installation

接下来按照提⽰输⼊:

root@hcss-ecs-0bb1:~# sudo mysql_secure_installation #安装安全设置​ Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y #是否设置验证密码组件​ There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2 #设置密码强度​ Skipping password set for root as authentication with auth_socket is used by default. If you would like to use password authentication instead, this can be done with the "ALTER_USER" command. See https://dev.mysql.com/doc/refman/8.0/en/alter-user.html#alter-userpassword-management for more information. By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y #默认情况下,MySQL安装有⼀个匿名⽤⼾, 允许任何⼈登录MySQL. 是否删除匿名⽤⼾?​ Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y #仅 应允许root从'localhost'连接​ Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y #默认情况下, MySQL带有⼀个test数据库, 是否删除?​ - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y #是否现在加载配置, 使刚才的修改⽣效? ​ Success. All done!

1.4. 设置密码

连接mysql服务器

sudo mysql

使⽤alter user 命令修改密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'XXXXXXX';

这个XXX代表的是刚才设置的密码

卸载MySQL

#停⽌mysql sudo systemctl stop mysql #卸载mysql sudo apt-get remove --purge mysql-server mysql-client mysql-common #删除 MySQL 配置⽂件和数据 sudo rm -rf /etc/mysql /var/lib/mysql #清理残留⽂件和⽬录 sudo apt-get autoremove sudo apt-get autoclean #验证卸载结果 mysql --version

2.部署Web项⽬到Linux

1 .什么是部署

⼯作中涉及到的"环境"
• 开发环境:开发⼈员写代码⽤的机器.
• 测试环境:测试⼈员测试程序使⽤的机器.
• ⽣产环境(线上环境):最终项⽬发布时所使⽤的机器.对稳定性要求很⾼.

把程序安装到⽣产环境上,这个过程称为"部署".也叫"上线".⼀旦程序部署成功,那么这个程序就能被外⽹中千千万万的普通⽤⼾访问到。换句话说,如果程有BUG,这个BUG也就被千千万万的⽤⼾看到了.部署过程⾄关重要,属于程序开发中最重要的⼀环.⼀旦部署出现问题,极有可能导致严重的事故(服务器不可⽤之类的).
为了防⽌部署出错,⼀般公司内部都有⼀些⾃动化部署⼯具(如Jenkins等).当前我们先使⽤⼿⼯部署的⽅式来完成部署 。

2.环境配置

程序正常运⾏,需要保证环境和程序都要正确,我们需要先设置环境
数据准备
按照之前的数据库建表脚本,在服务器上运⾏,建⽴相同的表结构.
程序配置⽂件修改
实际⼯作中,开发环境,测试环境以及⽣产环境的配置都是不⼀样的
⽐如mysql的⽤⼾名和密码
我们可以针对不同的环境,设置不同的配置
多平台⽂件配置
针对不同平台创建不同的配置⽂件,要求名字为application-XXX.yml
或者application-XXX.properties以下以application-XXX.yml为例

开发环境:dev
测试环境:test
生产环境:prod
固定格式,只有后⾯的字⺟可以修改在配置⽂件⾥写不同的内容
application-dev.yml注意自己的数据库用户名和密码自己设置的

spring: datasource: url: jdbc:mysql://127.0.0.1:3306/java_blog_spring? characterEncoding=utf8&useSSL=false username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver

application-prod.yml

spring: datasource: url: jdbc:mysql://127.0.0.1:3306/java_blog_spring? characterEncoding=utf8&useSSL=false username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver

在主配置⽂件 application.yml 中指定配置⽂件,并删除数据库相关配置

spring: profiles: active: prod

从Maven中读取环境配置变量

<profiles> <profile> <id>dev</id> <properties> <profile.name>dev</profile.name> </properties> </profile> <profile> <id>prod</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <profile.name>prod</profile.name> </properties> </profile> </profiles>

修改 application.yml

spring: profiles: active: @profile.name@

3.构建项⽬并打包

在本地使⽤maven进⾏打包

  1. 如果Test代码中有与环境配置相关的操作(⽐如数据库相关的操作),打包会失败,点击下图①处的图标,可以跳过测试
  2. 点击clean->package

出现这个就是打包成功

4.上传Jar包到服务器,并运⾏

4.1. 上传Jar包

直接拖动打好的jar包到xshell窗即可完成⽂件的上传

Xshell可以直接拖动⽂件到窗,达到上传⽂件的⽬的,如果使⽤其他客⼾端,不⽀持⽂件的上传,需要借助lrzsz命令
1.上传文件

sz filename

2.下载文件

rz

执⾏该命令后,在弹出框中选择要上传的⽂件即可,上传的速度取决于⽹络.

问题:如果执⾏上述命令之后,提⽰ Command ‘XX’ not found ,表⽰当前云服务器未安装lrzsz命令,需要先进⾏安装
3. 安装lrzsz

apt-get install lrzsz

4.2 运行程序

nohup java -jar blog-spring-0.0.1-SNAPSHOT.jar &

nohup:后台运⾏程序.⽤于在系统后台不挂断地运⾏命令,退出终端不会影响程序的运⾏.
语法格式:

nohup Command [ Arg … ] [ & ] 参数说明: Command:要执⾏的命令。 Arg:⼀些参数,可以指定输出⽂件 &:让命令在后台执⾏,终端退出后命令仍旧执⾏ ⽐如: nohup java -jar blog-0.0.1-SAPSHOT.jar >/logs & **Linux可以通过 > 把需要输出的内容写到指定⽂件中.这样的操作称为"重定向".**

4.3 开放端口号

如果外⽹需要访问该服务,需要先服务器防⽕墙开放对应的端⼝号

本着服务器安全的原则,云服务器上的端⾮必要不开启.
⽐如常⻅端号:数据库3306,Redis6379,尽可能避免开放,⽽是采⽤其他⽅式来接,⽐如配置隧道的⽅式

5.验证程序

  1. 访问项目,需要改云服务的ip 和端口号
  2. 按照项⽬的功能进⾏验证

• 验证账⼾注册登录
• 验证展⽰博客列表
• 验证新增博客
• 验证展⽰博客内容
• …

6. 常见问题

⼀个程序的正常运⾏,需要程序的正确和环境的正确.同样的代码在Windows上可以运⾏成功,不⼀定在Linux上运⾏成功.不同的系统对代码的理解和⽀持是不的.
⽐如Windows系统对MySQL不区分⼤⼩写,Linux区分⼤⼩写
服务不能正常访问的原因有很多,主要分以下⼏⽅⾯

  1. 服务未启动
    a. 使⽤ps -ef|grep java查看程序是否在运⾏

b. 使⽤curl 自己的链接看下是否有返回html⻚⾯,
如果有返回,说明程序启动成功了,考虑端未开放
c. 如果未启动成功,需要查看对应的⽇志,根据原因来分析.

i. 数据库不存在
ii. 表不存在(区分⼤⼩写)
iii. 数据库密码不正确
iv. Jdk安装版本不对,或者未安装
v. mysql未设置密码
vi. …

  1. http端未开放
    检查云服务器防⽕墙/安全组是否开放相应端⼝(如8080)

7. 杀掉进程

如果我们需要重启服务,或者重新部署等,都需要先停⽌之前的服务

  1. 查看当前服务的进程
ps -ef|grep java

上图35443就是该服务的进程.
2. 杀掉进程

kill -9 PID

8.总结

  1. 连接Linux服务器的⽅式有很多,xshell只是其中⼀种.xshell是⼀个客⼾端,⽽⾮服务器.
  2. Ubuntu软件管理⼯具是apt,他的linux发⾏版本软件包管理⼯具不同,⽐如CentOS是使⽤yum来管理软件的
  3. SpringBoot可以使⽤多个配置⽂件来完成不同平台的配置.
  4. 在Window上可以运⾏成功的代码,在Linux上不⼀定能运⾏成功.
  5. 启动程序需要使⽤nohup后台运⾏,需要停⽌服务时,使⽤kill命令
http://www.jsqmd.com/news/1292272/

相关文章:

  • 二维电子气:从基础原理到HEMT器件应用
  • STM32 FMC驱动NAND FLASH:从原理到实战的完整指南
  • 终极指南:Windows平台微信QQ防撤回补丁,让你的聊天记录不再消失
  • AI自媒体矩阵搭建实战手册:3天快速部署5平台协同系统,附自动化SOP模板(限免领取)
  • Python+Vue构建汽车推荐系统:技术选型与实战经验
  • UE5蓝图与WebSocket构建实时数字人交互系统:架构、实现与优化
  • IIS6.0解析漏洞与PUT上传攻击:原理、复现与纵深防御实践
  • Java程序员转正述职报告:从技术实现到价值呈现的实战指南
  • 超全汇总:AI Agent 管理平台有哪些?这一篇说全了
  • 破局B2B短视频获客:2026年抖音运营公司综合实力评估与选择指南
  • STM32 GPIO深度解析:从八种工作模式到实战避坑指南
  • 图片压缩工具免费jpg在线:论文投稿被卡时手机电脑对照着选 - 办公小帮手
  • 星链4SAPI中转站:构建Claude Code跨模型开发环境的AI大模型聚合平台深度解析
  • 算法偏见检测缺失,导致92%的AI面试题被候选人投诉:一线AI招聘平台CTO首曝内部审计清单
  • Android 11+分区存储机制解析:开发者适配与高级用户访问Android/data目录全攻略
  • 30分钟快速搭建Mysql主从环境
  • 超越基础画框:Python实现专业级目标检测可视化方案
  • 应变式、电感式与电容式传感器:原理、选型与实战应用指南
  • 如何判断飞檐机构的技术实力?
  • 2026年有哪些值得推荐的游戏BI工具
  • 00-1-Web架构全景与linux基础知识总结
  • 字符串处理全解析:从基础操作到生产环境实战指南
  • 2026PDF转JPG工具最全教程!免费在线、电脑、手机方法手把手教 - 工具软件使用方法推荐
  • OpenAI 事件复盘:Agent 安全,至少评估五项能力
  • 图片压缩在线使用:理赔材料上传失败先过这张自检清单 - AI测评专家
  • 西西北家谱编修与印刷服务标准化白皮书(2026 版)| 五花马印务编制 - 品牌观察室
  • 字符串编程全解析:从基础操作到KMP算法与动态规划实战
  • 2026 年至今,九江评价高的工业园区沙盘直销厂家深度解析与优选指南,别再盲目跟风园区投资,它竟能让你的企业选址少花几十万还避大坑 - 行业鉴选官
  • Java垃圾回收机制原理与性能优化指南
  • 记一次 Windows 11 下 BAT 文件失效问题:用 PowerShell 包装器曲线救国