部署项目

前后端部署项目

部署项目 liunx

软件安装

软件安装方式

在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下:

image-20250310233120674

建议nginx、MySQL、Redis等等使用docker安装,会很便捷,这里只演示JDK、ngxin手动的安装

安装JDK

上述我们介绍了Linux系统软件安装的四种形式,接下来我们就通过第一种(二进制发布包)形式来安装JDK。 JDK对应的二进制发布包:jdk-17.0.12_linux-x64_bin.tar.gz一般为gz格式的文件。

1). 上传安装包

使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux

image-20250310233305440

由于上述在进行文件上传时,选择的上传目录 /root,上传完毕后,我们执行指令 cd /root 切换到根目录下,查看上传的安装包。

image-20250310233317191

2). 解压安装包

执行如下指令,将上传上来的压缩包进行解压,并通过-C参数指定解压文件存放目录为 /usr/local。

1
tar -zxvf jdk-17.0.12_linux-x64_bin.tar.gz -C /usr/local/

3). 配置环境变量

使用vim命令修改/etc/profile文件,在文件末尾加入如下配置

1
2
export JAVA_HOME=/usr/local/jdk-17.0.12
export PATH=$JAVA_HOME/bin:$PATH

具体操作指令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1). 编辑/etc/profile文件,进入命令模式
vim /etc/profile

2). 在命令模式中,输入指令 G , 切换到文件最后
G

3). 在命令模式中输入 i/a/o 进入插入模式,然后切换到文件最后一行
i

4). 将上述的配置拷贝到文件中
export JAVA_HOME=/usr/local/jdk-17.0.12
export PATH=$JAVA_HOME/bin:$PATH

5). 从插入模式,切换到指令模式
ESC

6). 按:进入底行模式,然后输入wq,回车保存
:wq

4). 重新加载profile文件

为了使更改的配置立即生效,需要重新加载profile文件,执行命令:

1
source /etc/profile

5). 检查安装是否成功

1
java -version

输出版本号即为成功~~

安装Nginx

Nginx的安装包,从官方下载下来的是c语言的源码包,我们需要自己编译安装。具体操作步骤如下:

1). 安装Nginx运行时需要的依赖

1
yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel

安装C语言的编译环境.

1
yum install gcc-c++

2). 上传Nginx的源码包(指路:nginx: download

image-20250310231501080

3). 解压源码包到当前目录

1
tar -zxvf nginx-1.20.2.tar.gz

4). 进入到解压目录后,执行指令

1
2
3
4
5
#进入解压目录
cd nginx-1.20.2

#执行命令配置, 生成Makefile文件
./configure --prefix=/usr/local/nginx

5). 执行命令进行编译和安装

1
2
3
4
5
#编译
make

#编译安装
make install

启动Nginx

进入到nginx安装目录/usr/local/nginx,启动nginx服务

1
2
cd /usr/local/nginx/
sbin/nginx

启动完毕之后,我们可以通过 ps 指令查询当前系统中的nginx进程,从而确认nginx是否启动 。

image-20250310231658635

然后,我们就可以打开浏览器,访问服务器上的nginx 。

image-20250310231643073

后端项目部署

之前我们讲解Linux操作系统时,就提到,我们服务端开发工程师学习Linux系统的目的就是将来我们开发的项目绝大部分情况下都需要部署在Linux系统中。

环境准备

那现在,项目要上线了,要部署到linux服务器上了,我们也需要使用linux服务器上所安装的mysql数据库。

那此时,我们就可以再准备一份文件 application.yml 将里面的配置的mysql的ip、redis的ip地址及相关配置信息修改一下(配置Linux上安装的MySQL、Redis的信息):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#配置数据库连接信息
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.100.128:3306/tlias
username: root
password: 1234
servlet:
multipart:
max-file-size: 10MB #单个文件最大大小限制10MB
max-request-size: 100MB #单个请求最大大小限制100MB
redis:
host: 192.168.100.128
port: 6379
database: 0
password: 159357
timeout: 10s # 连接超时时间
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms

改造完毕之后,可以在本地的idea中先启动当前项目,然后访问一下,看看工程是否正常访问。

打包部署

1). 执行 package 指令,进行打包操作,将当前的springboot项目,打成一个jar包。 (跳过测试)

image-20250310232149507

2). 在Linux服务器上创建一个目录,将jar包上传到服务器 。

1
mkdir -p /usr/local/app

image-20250310232218427

3). 通过java命令,启动项目

1
2
3
4
5
#进入目录/usr/local/app 
cd /usr/local/app

#运行jar包
java -jar tlias-web-management-0.0.1-SNAPSHOT.jar

image-20250310232243697

项目启动起来之后,就可以打开浏览器测试啦**(使用服务器的ip访问)**。

后台运行

1). 后台运行程序

1
nohup java -jar tlias-web-management-0.0.1-SNAPSHOT.jar &> tlias.log &

通过上述指令就可以后台运行服务,服务运行之后, 所有的日志信息都会输出到 tlias.log 文件中。

image-20250310232512371

2). 停止服务

1
2
3
4
5
#查看服务的进程信息
ps -ef|grep tlias

#杀掉进程
kill -9 xxxxx

image-20250310232525532

目前程序运行的问题

  • 线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行
  • 线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息

nohup命令:英文全称no hang up(不挂起),用于不挂断地运行指定命令,退出终端不会影响程序的运行。

语法格式:nohup Command[Arg...][&]

参数说明:

  • Command:要执行的命令
  • Arg:一些参数,可以指定输出文件
  • &:让命令在后台运行

举例:nohup java -jar hello-0.0.1-SNAPSHOT.jar &> xzy.log &

后台运行java-jar命令,并将日志输出到xzy.log文件

想要停掉项目,先查询项目占用的端口号:ps -ef | grep java 。然后杀掉这个进制即可:kill -9 xxxx

前端项目部署

1). 将nginx的安装目录的html中的静态资源文件先删除掉。

image-20250310231828437

2).将打包好的dist静态资源文件,全部上传到nginx安装目录下的 html 目录中.

image-20250310231840536

3). 修改资料中提供的 nginx.conf 配置文件,将其上传到nginx安装目录下的 conf 目录中.

image-20250310231904149

4). 重新加载nginx服务的配置文件

1
2
#重新加载配置文件
sbin/nginx -s reload

5). 再次访问nginx (可能会存在浏览器缓存, 可以按Ctrl+F5,强制刷新清理缓存)

nginx服务常见操作指令:

  • 启动: sbin/nginx
  • 重载: sbin/nginx -s reload
  • 停止: sbin/nginx -s stop

部署项目 Docker

todo


部署项目
http://example.com/2025/03/11/部署项目/
作者
xzy
发布于
2025年3月11日
许可协议