目录
上一篇:Linxu的基础指令和环境部署,项目部署实战(上)-CSDN博客
[1. 搭建Java部署环境](#1. 搭建Java部署环境)
[1.1 apt](#1.1 apt)
[1.2 JDK](#1.2 JDK)
[1.2.1. 更新](#1.2.1. 更新)
[1.2.2. 安装openjdk()](#1.2.2. 安装openjdk())
[1.3 MySQL](#1.3 MySQL)
[1.3.1 使用apt安装MySQL](#1.3.1 使用apt安装MySQL)
[1.3.2 查看MySQL状态](#1.3.2 查看MySQL状态)
[1.3.3 设置密码](#1.3.3 设置密码)
[1.3.3.1 连接mysql服务器](#1.3.3.1 连接mysql服务器)
[1.3.3.2 使用 alter user 命令修改密码(自己能够记住就行)](#1.3.3.2 使用 alter user 命令修改密码(自己能够记住就行))
[2.1 环境配置](#2.1 环境配置)
[2.1.1 数据准备](#2.1.1 数据准备)
[2.1.2 程序配置文件修改](#2.1.2 程序配置文件修改)
[2.1.3 多平台文件配置](#2.1.3 多平台文件配置)
[2.2 构建项目并打包](#2.2 构建项目并打包)
[2.3 上传Jar包到服务器, 并运行](#2.3 上传Jar包到服务器, 并运行)
[1. 上传Jar包直接拖动打好的jar包到xshell窗口即可完成文件的上传](#1. 上传Jar包直接拖动打好的jar包到xshell窗口即可完成文件的上传)
[2. 安装lrzsz](#2. 安装lrzsz)
上一篇:Linxu的基础指令和环境部署,项目部署实战(上)-CSDN博客
1. 搭建Java部署环境
1.1 apt
apt(Advanced Packing Tool),Linux软件包管理工具。用于Ubuntu,Debian和相关的Linux发行版上安装,更新,删除和管理deb软件包。
大多数 apt 命令都要以有sudo权限的用户运行。
apt常用命令
列出所有的软件包
- apt list
这个命令输出所有的工具包列表,内容非常多,可以用 grep 命令过滤。
- apt list |grep "java"
更新软件包数据库
- sudo apt-get update #运行此命令时, 您将看到从各种服务器检索到的软件包信息.
实际上apt 它通过维护一个软件包的数据库来管理和安装软件。这个数据库包含了系统可用的软件包及其版本信息。
如果数据库没有更新,系统将无法检测到新的软件包版本,也无法安装或升级到最新的软件。因此,在安装Linux系统之后,更新APT数据库是一个非常重要的步骤。
如果切换到root用户, 命令前就不需要加 sudo了
切换root用户
sudo su
安装软件包
sudo apt install package_name
移除软件包
sudo apt remove package_name
值得注意的是 remove命令会卸载掉特定的软件包,但可能会留下配置文件,如果要把配置文件也彻底删除 ,就是用 purge 命令替代 remove ;
1.2 JDK
1.2.1. 更新
安装之前都要执行一遍更新软件包命令 sudo apt-get update
1.2.2. 安装openjdk()
注意: 此处安装的是OpenJDK, OpenJDK是一个开源版本的 JDK, 和 Oracle 官方的 JDK 略有差别. 此处我们就使用 OpenJDK 即可. 安装 Oracle JDK 比较麻烦.
1.#查找jdk包
2.apt list |grep "jdk"
4.#安装jdk17
- apt install openjdk-17-jdk
安装过程输入 y 确认

当跳出这个画面就按回车就好,然后等待安装;

1.2.3.检查安装jdk成功
- java -version #查看jdk版本
当输出jdk的版本,就说明你安装jdk成功了
如果提示 "java 命令找不到" 则说明安装失败

1.3 MySQL
1.3.1 使用apt安装MySQL
#查找安装包
apt list |grep "mysql-server"
#安装mysql
sudo apt install mysql-server
安装流程与安装jdk一致
1.3.2 查看MySQL状态
- sudo systemctl status mysql
执行结果
1.3.3 设置密码
1.3.3.1 连接mysql服务器
- sudo mysql
1.3.3.2 使用 alter user 命令修改密码(自己能够记住就行)
1 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
执行结果(证明修改密码成功)
2.部署web项目到Linux
2.1 环境配置
程序正常运行, 需要保证环境和程序都要正确, 我们需要先设置环境
2.1.1 数据准备
在服务器上的mysql数据上建立与项目一致的数据库,数据可以不用同步,只要库表结构一样就好了。
2.1.2 程序配置文件修改
实际工作中,开发环境,测试环境和线上环境的配置是不一样的
比如mysql的用户名和密码;
所以我们要针对不同的环境,设置不同的配置
2.1.3 多平台文件配置
方法有很多种,这里我只举例我使用的这一种
针对不同的平台创建不同的配置文件,要求名字为
- application.properties,
- application-dev.properties,
- application-test.properties;
dev指的是开发环境的配置,test指的是线上环境的配置,固定格式,只有后面的字母可以修改,在不同的配置文件写不同的内容(下面只是将数据库的配置作为展示,如果自己还有其他配置,像:日志的存储路径,图片的存取路径都是要按这种方式修改的。)

application-dev.properties(开发环境的数据库的配置)
application-test.properties(线上环境的数据库的配置)

在主配置文件 application.properties 中指定配置文件为线上开发环境的配置

2.2 构建项目并打包
在本地使用maven进行打包
-
如果Test代码中有与环境配置相关的操作(比如数据库相关的操作), 打包会失败, 点击下图①处的图标, 可以跳过测试。
-
点击clean->package
2.3 上传Jar包到服务器, 并运行
1. 上传Jar包
直接拖动打好的jar包到xshell窗口即可完成文件的上传
问题: 如果执行上述命令之后, 提示 Command 'XX' not found , 表示当前云服务器未安装lrzsz命令, 需要先进行安装
2. 安装lrzsz
- apt-get install lrzsz
3.运行程序
- nohup java -jar blog-spring-0.0.1-SNAPSHOT.jar &
nohup : 后台运行程序. 用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行.
4.创建相关数据库表
连接mysql数据库
mysql -uroot -p 回车 然后在命令行输入密码就可以了
看到一下界面就说明你连接数据库成功了
连接数据库成功之后,就可以去创建数据库,表等内容,这里不在过多赘述;
如果你有完整的sql文件,执行SQL文件: 使用以下命令执行SQL文件:
source /path/to/yourfile.sql
例如,如果你的SQL文件位于*/root* 目录下,文件名为test.sql ,则命令如下: source /root/test.sql;
如果在当前工作路径下,就直接source 文件名 就可以了。
4.开放端口
如果外网需要访问该服务, 需要先服务器防火墙开放对应的端口号,本着服务器安全的原则,云服务器上的端口非必要不开启.
比如常见端口号: 数据库 3306 , Redis 6379, 尽可能避免开放, 而是采用其他方式来连接, 比如配置隧道的方式。
以阿里云服务器为例子
进入实例的安全组界面,点击安全组的管理规则


端口号写需要开放的端口号, 多个端口号以逗号分割.
3.常见问题
1.检查程序是否启动
ps -ef |grep "java"
2.杀掉进程
1.查看目前的所有进程
1.ps -ef |grep "java" (只查看名字包含java的程序)

执行结果中的29916,31709就是进程执行的端口号
2.杀死进程
- kill -9 端口号(29916)(强制杀死进程)