当前位置: 首页 > news >正文

如何在服务器上部署一个java程序

如何在服务器上部署一个java程序?

一、在服务器上安装jdk环境

1.创建目录用于存放jdk文件

cd /usr/local

2.下载最新版oracle jdk22

wget https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.tar.gz

3.解压

tar -zxf jdk-22_linux-x64_bin.tar.gz

4.配置环境变量

vim /etc/profile
// 在末尾处添加
export JAVA_HOME=/usr/local/jdk-22.0.1 #你安装jdk的路径,你的jdk版本(不一定是22.0.1版本)
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

// 注意:JAVA_HOME、CLASSPATH、PATH必配置,最好5个变量都配置上。
// JAVA_HOME一定注意是你安装的jdk路径,是你安装的jdk22最新版本

5.刷新环境变量

source /etc/profile

6.验证java是否已安装成功

java -version

二、安装java程序

1.创建新的系统用户,用户名可自定义

useradd -m service

2.为 service用户创建密码

passwd service

3.登录到service用户

su - service

4.创建存放运行包的目录,这里以 ~/app 为例

mkdir ~/app && cd ~/app

5.下载jar包

wget https://xxxx.jar -O service.jar

6.创建工作目录

mkdir ~/.service2 && cd ~/.service2

7.创建 service配置文件,并在配置文件中填写配置内容

vim application.yaml

8.测试运行service

cd ~/app && java -jar service.jar --spring.config.additional-location=optional:file:$HOME/.service2/

三、将service设为在后台运行

1.切换到root

exit

2.创建xxx.service文件

vim /etc/systemd/system/xxx.service

3.填写xxx.service文件

[Unit]
Description=Hello Service
Documentation=https://docs.com

After=network-online.target

Wants=network-online.target

[Service]
Type=simple
User=USER
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar JAR_PATH --spring.config.additional-location=optional:file:/home/service/.service2/
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target

4.重新加载 systemd

systemctl daemon-reload

5.运行服务

`systemctl start xxx

6.将服务设置为系统启动时自动运行

systemctl enable xxx

7.最后,可以通过下面的命令查看服务日志

journalctl -n 20 -u halo

相关文章:

  • 电脑提示d3dcompiler_47.dll丢失的解决方法,实测靠谱的5种方法
  • Linux C++
  • 图卷积网络(Graph Convolutional Network, GCN)
  • 一文详解扩散模型
  • 王思聪隐形女儿曝光
  • Centos离线安装Python3
  • 人工智能—美国加利福尼亚州房价预测实战
  • Ribbon与Nginx的区别
  • 华为IPD体系中三大流程之IPD流程的六个阶段和七个评审点介绍
  • object类教程
  • 图像的高频和低频细节
  • [C#]winform使用onnxruntime部署LYT-Net轻量级低光图像增强算法
  • 宏任务与微任务
  • 对于补码的个人理解
  • Python考前综合练习-第六章[python123题库]
  • Docker入门(二) - Dockerfile
  • emacs初体验
  • JDK 6和JDK 7中的substring()方法
  • learning koa2.x
  • nodejs实现webservice问题总结
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • select2 取值 遍历 设置默认值
  • unity如何实现一个固定宽度的orthagraphic相机
  • 从输入URL到页面加载发生了什么
  • 如何解决微信端直接跳WAP端
  • 怎么把视频里的音乐提取出来
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 【干货分享】dos命令大全
  • 阿里云重庆大学大数据训练营落地分享
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 如何用纯 CSS 创作一个货车 loader
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #162 (Div. 2)
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #QT(一种朴素的计算器实现方法)
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (20)docke容器
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (libusb) usb口自动刷新
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (九)c52学习之旅-定时器
  • (四) 虚拟摄像头vivi体验
  • (一)Neo4j下载安装以及初次使用
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)shell调试方法
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (转载)Linux 多线程条件变量同步
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Core 项目指定SDK版本
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .net refrector