java系统部署到Linux

1、安装java 1.8JDK

卸载Open JDK

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

java -verison

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

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

下载并安装JDK

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

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

环境变量配置

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

sudo chmod -v u+w /etc/profile

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

vim /etc/profile

添加如下配置

# 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

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

重新编译

source /etc/profile

测试是否安装成功

java
javac
java -version

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

/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

对应解释

[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] 部分:

此部分为空,因此没有指定服务的安装信息。

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

错误了看日志

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

重新加载systemd管理器配置

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

sudo systemctl daemon-reload

启动并启用服务:

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

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

验证服务状态:

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

sudo systemctl status spring-boot-service

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

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

解释

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

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 服务可能更适合你的需求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/473963.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

上位机图像处理和嵌入式模块部署(qmacvisual拟合直线)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 测量是图像处理的一个基本技能。那么测量的前提&#xff0c;就是我们需要在图像中找出特定的集合图形&#xff0c;比如说直线。当然&#xff0c;发…

lsn和redo

瀚高数据库 目录 文档用途 详细信息 相关文档 记录lsn三种记录形式&#xff0c;以及redo对lsn的操作。 详细信息 一、lsn的三种形式 1. pg_controldata中可以看到这样的lsn表示&#xff1a; Latest checkpoint location: 0/1548018Latest checkpoint’s REDO location: 0/…

智慧公园:AI智能分析网关V4城市公园视频智能监管方案

一、背景分析 随着天气渐渐转暖&#xff0c;城市公园的花卉也逐渐盛开&#xff0c;春暖花开时节&#xff0c;前往公园赏花游玩的城市居民也渐渐多起来&#xff0c;因此安全问题也成为相关监管部门的重要管理任务之一。随着科技的不断进步&#xff0c;智能监控技术已经成为现代…

Python将字符串转换为datetime

有这样一些字符串&#xff1a; 1710903685 20240320110125 2024-03-20 11:01:25 要转换成Python的datetime 代码如下&#xff1a; import functools import re from datetime import datetime, timedelta from typing import Union# pip install python-dateutil from date…

关于Rust的项目结构的笔记

层级 PackageCrateModulePath Package cargo的特性, 构建、测试、共享Crate 组成: 一个 Cargo.toml 文件, 描述了如何构建这些 Crates至少包含一个 crate最多只能包含一个 library crate可以包含任意个 binary crate cargo new demo-pro 会产生一个名为 demo-pro 的 Packa…

Python 深度学习第二版(GPT 重译)(一)

前言 序言 如果你拿起这本书&#xff0c;你可能已经意识到深度学习在最近对人工智能领域所代表的非凡进步。我们从几乎无法使用的计算机视觉和自然语言处理发展到了在你每天使用的产品中大规模部署的高性能系统。这一突然进步的后果几乎影响到了每一个行业。我们已经将深度学…

MATLAB三维图形的绘制

1&#xff0c;三维曲线 plot3(x,y,z)通过描点连线画出曲图&#xff0c;这里x,y,z都是n维向量&#xff0c;分别表示该曲线上点集的横坐标&#xff0c;纵坐标&#xff0c;竖坐标。 t0:pi/50:10*pi; subplot(121),plot3(sin(t),cos(t),t); subplot(122),fplot3((t)sin(t),(t)cos…

Linux集群

前言&#xff1a; 环境准备&#xff1a;虚拟机&#xff0c;xshell&#xff0c;mysql&#xff0c;tomcat&#xff0c;jdk&#xff0c;centos 虚拟机安装centos可以参考博客&#xff1a;虚拟机安装centos 一&#xff0c;安装jdk 打开xshell 点击cftp&#xff0c;如果没有安装…

HarmonyOS(鸿蒙)应用开发——(一)

目录 1 创建hellopro项目 2 了解ArkTS 3 了解ArkTS的组件 4 组件介绍 4.1 常用基础组件&#xff1a; 4.1.1 Text 4.1.2 Button 4.1.3 TextInput 4.2 容器组件 4.2.1 Column 4.2.2 Row 5 案例——实现一个简易登录页面 5.1 在实现预览效果之前&#xff0c;我们…

记录开发STM32遇到的卡死问题-串口

背景&#xff1a;以STM32作为主控&#xff0c;广州大彩显示屏显示&#xff0c;主控实时采集数据&#xff0c;串口波特率115200.设置收发频率为50Hz&#xff0c;即单片机每秒发送50帧数据&#xff0c;每秒接收50帧数据&#xff0c;每帧数据大概14字节。 问题&#xff1a;系统长…

Cronos zkEVM 基于 Covalent Network(CQT)数据可用性 API,推动其 Layer2 DeFi 生态更好地发展

在一项旨在显著改善 DeFi 生态的战略举措中&#xff0c;Cronos 与 Covalent Network&#xff08;CQT&#xff09;携手合作&#xff0c;以期待 Cronos zkEVM 的推出。这一整合&#xff0c;预计将进一步降低以太坊生态系统的交易成本、提升交易速度&#xff0c;并带来更好的交易体…

ZnO非线性电阻片功率损耗的频率特性

对不同频率正弦交流电压作用下直流氧化锌阀片的功率损耗进行了测量。图3.16(a)和(b)分别为试品类型A和试品类型B两种直流ZnO阀片在不同频率电压作用下的功率损耗随荷电率变化的特性。两种阀片的功率损耗都随频率和荷电率的增加而增加。当频率达到1kHz或以上时,阀片的功率损耗增…

SQLiteC/C++接口详细介绍sqlite3_stmt类(二)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类简介 下一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;三&#xff09; sqlite3_reset() 功能&#xff1a;重置一个准备好执行的SQL语…

IDEA之This license XXXX has been suspended

IDEA激活码突然报如下错误: This license XXXXX has been suspended. Please contact your license administrator 解决方案: IDEA版本2022.2.3&#xff0c;亲测管用

【机器学习智能硬件开发全解】(十一)—— 政安晨:通过ARM-Linux掌握基本技能【C语言程序的链接过程】

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 机器学习智能硬件开发全解 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 前言 我们回顾一下上篇文章&#xff1a; 【机器学习…

软件企业在咨询第三方软件测试机构报价时,应提前准备什么资料?

近年来&#xff0c;随着软件行业的迅速发展&#xff0c;软件企业对于软件质量的重视程度日益增加。为了确保软件产品的质量以及用户的满意度&#xff0c;越来越多的企业倾向于委托第三方软件测试机构进行测试工作。在咨询第三方软件测试机构报价之前&#xff0c;软件企业需要提…

SQLiteC/C++接口详细介绍sqlite3_stmt类(四)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;三&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;五&#xff09; 7. sqlite3_bind_parameter_count函数 sqlite3_bind_param…

风速预测(八)VMD-CNN-Transformer预测模型

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测&#xff08;一&#xff09;数据集介绍和预处理-CSDN博客 风速预测&#xff08;二&#xff09;基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测&#xff…

【实例】React 组件传值方法: Props、回调函数、Context、路由传参

React原始传值方法 借用状态管理库的传值见下篇文&#xff1a;MobX 和 Redux 【实例】React 状态管理库 MobX Redux 入门及对比 文章目录 React原始传值方法父组件->子组件 props子组件->父组件 回调函数Context路由传值 父组件->子组件 props 父组件可以通过属性&a…

sheng的学习笔记-AI-Inception network

目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 基础知识 构建卷积层时&#xff0c;你要决定过滤器的大小究竟是11&#xff08;原来是13&#xff0c;猜测为口误&#xff09;&#xff0c;33还是55&#xff0c;或者要不要添加池化层。而Inception网络的作用就是代替你来决定&…