SpringBoot部署(Systemd方式)

问题

好久没有写过SpringBoot部署了。

步骤

安装JDK17

找到JDK17下载页面,下载JDK17的rpm包,如下图:
JDK17下载页面
下载成功后,然后使用FileZilla上传该rpm文件。上传成功后,使用yum命令手动安装rpm包,如下:

sudo yum install ./bellsoft-jdk17.0.12+10-linux-amd64.rpm

这样yum会下载相关依赖自动安装JDK17.具体依赖如下:

Installing:
 bellsoft-java17                                        x86_64                                        3:17.0.12.0.0.10-1                                         @commandline                                           183 M
Installing dependencies:
 alsa-lib                                               x86_64                                        1.2.9-1.al8                                                alinux3-updates                                        497 k
 libX11                                                 x86_64                                        1.7.0-9.al8                                                alinux3-updates                                        617 k
 libX11-common                                          noarch                                        1.7.0-9.al8                                                alinux3-updates                                        160 k
 libXau                                                 x86_64                                        1.0.9-8.al8                                                alinux3-updates                                         38 k
 libXext                                                x86_64                                        1.3.4-8.al8                                                alinux3-updates                                         46 k
 libXi                                                  x86_64                                        1.7.10-1.1.al8                                             alinux3-os                                              49 k
 libXrender                                             x86_64                                        0.9.10-7.2.al8                                             alinux3-os                                              33 k
 libXtst                                                x86_64                                        1.2.3-7.2.al8                                              alinux3-os                                              22 k
 libxcb                                                 x86_64                                        1.13.1-1.3.al8                                             alinux3-os                                             230
 Transaction Summary
==============================================================================================================================================================================================================================
Install  10 Packages

Total size: 185 M
Total download size: 1.7 M
Installed size: 369 M
Is this ok [y/N]: y
Downloading Packages:
(1/9): libXrender-0.9.10-7.2.al8.x86_64.rpm                                                                                                                                                   1.5 MB/s |  33 kB     00:00    
(2/9): libxcb-1.13.1-1.3.al8.x86_64.rpm                                                                                                                                                       8.1 MB/s | 230 kB     00:00    
(3/9): alsa-lib-1.2.9-1.al8.x86_64.rpm                                                                                                                                                         26 MB/s | 497 kB     00:00    
(4/9): libXtst-1.2.3-7.2.al8.x86_64.rpm                                                                                                                                                       300 kB/s |  22 kB     00:00    
(5/9): libX11-1.7.0-9.al8.x86_64.rpm                                                                                                                                                           32 MB/s | 617 kB     00:00    
(6/9): libXau-1.0.9-8.al8.x86_64.rpm                                                                                                                                                          4.2 MB/s |  38 kB     00:00    
(7/9): libXi-1.7.10-1.1.al8.x86_64.rpm                                                                                                                                                        460 kB/s |  49 kB     00:00    
(8/9): libXext-1.3.4-8.al8.x86_64.rpm                                                                                                                                                         3.9 MB/s |  46 kB     00:00    
(9/9): libX11-common-1.7.0-9.al8.noarch.rpm                                                                                                                                                   1.8 MB/s | 160 kB     00:00  

Java

先检查一下SpringBoot项目是否使用了fat jar方式打败,主要配置就是启用jar可执行即可,具体配置在pom.xml中,设置如下:

<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
	<configuration>
		<executable>true</executable>
	</configuration>
</plugin>

这种方式是不使用父POM方式,如果使用父POM(spring-boot-starter-parent父POM),这应该直接在子模块里面,设置插件即可:

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>

创建用户

sudo useradd --system --home /var/api --shell /sbin/nologin --comment "api user" --user-group api

创建文件夹

sudo mkdir /var/api && sudo chown -R api /var/api && sudo chgrp -R api /var/api && sudo chmod 707 -R /var/api

Systemd配置文件夹

sudo vim /etc/systemd/system/api.service,内容如下:

[Unit]
Description=myapp
After=syslog.target network.target

[Service]
User=myapp
Group=myapp

Environment="JAVA_HOME=/path/to/java/home"
Environment="NACOS_HOST=127.0.0.1"
Environment="NACOS_PORT=8848"
Environment="NACOS_USER=nacos"
Environment="NACOS_PASS=xxxx"
Environment="NACOS_NAMESPACE=xxxx"
Environment="SPRING_PROFILES_ACTIVE=dev"

ExecStart=${JAVA_HOME}/bin/java -jar /var/myapp/myapp.jar
ExecStop=/bin/kill -15 $MAINPID
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

设置Spring外部配置文件

sudo vim /var/api/api.conf,内容如下:

JAVA_OPTS="-Djava.library.path=/var/xxx/bin/lib -Dspring.profiles.active=prod -server -Xms6g -Xmx6g -XX:MaxGCPauseMillis=500 -XX:+UseParallelGC"
RUN_AS_USER="api"

上传jar文件

上传需要部署的jar文件到/var/xxx/目录下面。

重制文件权限

sudo chown -R api /var/api
sudo chgrp -R api /var/api
sudo chmod 700 -R /var/api
sudo chmod 500 /var/api/api.jar
sudo chattr +i /var/api/api.jar
sudo chmod 400 /var/api/api.conf
sudo chown api:api /var/api/api.conf

注意这里是使用了文件加锁权限,如果需要解锁需要使用下面命令:

sudo chattr -i /var/api/api.jar
# 查看锁
sudo lsattr /var/api/api.jar

启动服务

# 启用服务
sudo systemctl enable api.service
# 启动服务
sudo systemctl start api.service

这里假设防火墙关闭了,没有使用。

生产环境重新部署

sudo chattr -i /var/api/api.jar && sudo chmod 707 -R /var/api && sudo rm /var/api/api.jar
# 删除文件,重新上传文件。。。。
# 上传完成后
sudo chown -R api:api /var/api && sudo chmod 700 -R /var/api && sudo chmod 500 /var/api/api.jar && sudo chmod 400 /var/api/api.conf && sudo chattr +i /var/api/api.jar && sudo systemctl stop api.service && sudo systemctl start api.service
# 查看实时日志
journalctl -u api.service -f

最自由重新部署

# 解封权限
sudo chattr -i /var/api/api.jar && sudo chmod 707 -R /var/api
# 重启服务
sudo systemctl stop api.service && sudo systemctl start api.service && journalctl -u api.service -f

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值