当前位置:   article > 正文

java系统部署到Linux

java系统部署到Linux

1、安装java 1.8JDK

卸载Open JDK

首先,我们先检查系统是否自带了 JDK。输入命令

java -verison
  • 1

在这里插入图片描述
批量删除

rpm -qa | grep java | xargs rpm -e --nodeps
  • 1

下载并安装JDK

我们在 user 目录下建立一个新的 java文件夹,用来存放 JDK文件。
在这里插入图片描述
jdk下载地址
在这里插入图片描述
上传到服务器后,执行解压命令

// tar包进行解压
tar -zxvf jdk-8u401-linux-x64.tar.gz
  • 1
  • 2

环境变量配置

如果/etc/profile文件不可编辑,我们需要先修改其为可编辑才行

sudo chmod -v u+w /etc/profile
  • 1

vim编辑器来进行编辑。输入命令

vim /etc/profile
  • 1

添加如下配置

# java
export JAVA_HOME=/usr/java/jdk1.8.0_401
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib

  • 1
  • 2
  • 3
  • 4
  • 5

配置添加完成后,按 “Esc”键,输入 “:wq”,就可以保存文件并返回了

重新编译

source /etc/profile

  • 1
  • 2

测试是否安装成功

java
javac
java -version
  • 1
  • 2
  • 3

jdk安装参考里面附带了Oracle账号

2、system 服务管理 Java 应用程序

创建服务单元文件

在 /etc/systemd/system 目录下创建一个以 .service 为后缀的文件,例如spring-boot.service。

vim /etc/systemd/system/spring-boot.service
chmod 777 /etc/systemd/system/spring-boot.service
  • 1
  • 2

/usr/lib/systemd/system/spring-boot.service

编辑服务单元文件

[Unit]
Description=spring-boot-demo
After=syslog.target

[Service]
User=root
ExecStart=/usr/java/jdk1.8.0_401/bin/java -jar /data/java/spring-boot/spring-boot-admin.jar
WorkingDirectory=/data/java/spring-boot
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

对应解释

[Unit] 部分:

Description=spring-boot:描述了这个服务的简短描述,即服务的名称。
After=syslog.target:指定了在启动这个服务之前,需要等待 syslog.target 目标完成启动。
[Service] 部分:

User=root:指定了这个服务运行的用户,这里是 root 用户。
ExecStart=java -jar /data/java/spring-boot/spring-admin.jar:指定了服务启动时要执行的命令,这里是启动一个Java应用程序,运行在 /data/java/spring-boot/spring-admin.jar 文件上。
WorkingDirectory=/data/java/spring-boot:指定了服务的工作目录,这是执行命令时的当前目录。
Restart=always:指定了服务的重启策略,即当服务意外退出时,总是自动重启。
RestartSec=10:指定了服务在意外退出后重新启动的延迟时间,这里是10秒。
StandardOutput=syslog:指定了服务的标准输出重定向到 syslog。这意味着服务的输出将会被记录到系统日志中。
StandardError=syslog:指定了服务的标准错误输出重定向到 syslog。
[Install] 部分:

此部分为空,因此没有指定服务的安装信息。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

ExecStart也可以加一下启动参数等

错误了看日志

状态日志
systemctl status spring-boot.service
正常日志
journalctl 
错误日志
journalctl -xe

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

重新加载systemd管理器配置

在编辑完成服务单元文件后,运行以下命令来重新加载systemd管理器配置:

sudo systemctl daemon-reload

  • 1
  • 2

启动并启用服务:

运行以下命令来启动和启用你的新服务:

sudo systemctl start spring-boot-service
sudo systemctl enable spring-boot-service

  • 1
  • 2
  • 3

验证服务状态:

运行以下命令来验证你的服务是否已经成功启动:

sudo systemctl status spring-boot-service
  • 1

3、Supervisor 管理 Java 应用程序

supervisorctl 命令

#启动一个服务
supervisorctl start <service_name>
#停止一个服务
supervisorctl stop <service_name>
#重启一个服务
supervisorctl restart <service_name>
查看所有服务的状态:
supervisorctl status
查看某个服务的状态:
supervisorctl status <service_name>
查看所有服务的详细信息:
supervisorctl -c /path/to/supervisord.conf status
重新加载配置:
supervisorctl reread
supervisorctl update
关闭 Supervisor:
supervisorctl shutdown

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

Supervisor 配置示例

[program:spring-admin]
command=/usr/local/java/jdk1.8.0_391/bin/java -jar -Xms256m -Xmx256m -Dspring.profiles.active=dev -Dserver.port=8801 /data/springBoot/sd-api/spring-admin-0.0.1-SNAPSHOT.jar
directory=/data/springBoot/sd-api/
environment=NACOS_NAMESPACE="d90cb455-****-61458cb3cf1a",NACOS_HOST="172.****.251",NACOS_PASSWORD="***"
autostart=true
startsecs=10
autorestart=true
startretries=3
user=root
priority=999
redirect_stderr=true
stdout_logfile_maxbytes=20MB
stdout_logfile_backups = 20
stopasgroup=false
killasgroup=false
stdout_logfile_maxbytes=1024MB
stdout_logfile=/data/springBoot/sd-api/logs/springBoot-admin.log

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

解释

[program:spring-admin]:定义了一个名为 spring-admin 的程序。

command:指定了启动命令,即 Java 应用程序的启动命令。在这里,它启动了一个 Java 可执行文件(JAR 文件),并设置了一些 JVM 参数和应用程序的参数,如内存大小、激活的 Spring profile、服务器端口等。

directory:指定了程序的工作目录,即程序运行时的当前工作目录。

environment:设置了环境变量。这里设置了三个环境变量:NACOS_NAMESPACE、NACOS_HOST 和 NACOS_PASSWORD。

autostart:指定了是否在 Supervisor 启动时自动启动该程序。

startsecs:指定了程序启动后的等待时间(秒),用于判断程序是否成功启动。

autorestart:指定了是否在程序意外退出后自动重启。

startretries:指定了自动重启的次数。

user:指定了程序运行的用户。

priority:指定了程序的优先级。

redirect_stderr:指定了是否将标准错误重定向到标准输出。

stdout_logfile_maxbytes:指定了标准输出日志文件的最大大小。

stdout_logfile_backups:指定了标准输出日志文件的备份数量。

stopasgroup 和 killasgroup:指定了是否将程序的进程和子进程组一起停止或杀死。

stdout_logfile:指定了标准输出日志文件的路径。
  • 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
  • 28
  • 29

4、Supervisor 和自定义 Systemd 服务的对比

Supervisor:

优点:
  1. 简单易用:Supervisor 的配置相对简单,上手较容易。
  2. 跨平台支持:可以在不同的操作系统上使用。
  3. 功能丰富:提供了丰富的进程管理功能,如进程监控、自动重启等。
缺点:
  1. 对于一些高级功能,可能需要额外的配置。
  2. 不如 Systemd 那样紧密集成到操作系统中。

自定义 Systemd 服务(例如 spring-boot.service):

优点:
  1. 紧密集成到操作系统中:Systemd 是现代 Linux 系统中默认的服务管理工具,自定义服务可以更紧密地集成到系统中。
  2. 更丰富的功能:Systemd 提供了更丰富的功能和选项,如依赖管理、进程隔离、资源限制等。
  3. 灵活性和定制性:你可以完全控制你的自定义服务的行为,以满足特定的需求。
缺点:
  1. 配置复杂:相比 Supervisor,自定义 Systemd 服务的配置可能更加复杂一些。
  2. 学习曲线较陡:Systemd 提供了大量的功能和选项,需要花一些时间来学习和掌握。

总的来说,如果你的需求比较简单,只需要一个轻量级的进程管理工具来启动和监控 Java 应用程序,那么 Supervisor 是一个不错的选择。而如果你需要更丰富的功能和更紧密地集成到操作系统中,那么自定义 Systemd 服务可能更适合你的需求

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/279107
推荐阅读
相关标签
  

闽ICP备14008679号