自学内容网 自学内容网

Java-部署

Windows

命令行直接部署

1.配置jdk运行环境

2.java -jar <jar包>

缺点:终端关闭服务进程就停止

注册为Windows服务

下载WinSW工具

将下载的WinSW-x64.exe文件重命名为与你的服务名称相匹配的名字,例如MyApp.exe。同时,也需要准备一个配置文件MyApp.xml,它定义了服务的行为和启动参数。

<service>
    <id>myapp</id>
    <name>My App Service</name>
    <description>This runs Spring Boot as a Service.</description>
    <executable>java</executable>
    <arguments>-Xmx256m -jar "%BASE%\MyApp.jar"</arguments>
    <logpath>%BASE%\logs</logpath>
    <logmode>rotate</logmode>
    <startmode>Automatic</startmode>
</service>

MyApp.exeMyApp.xml放置在同一目录下,然后打开命令提示符(以管理员身份),切换到该目录并执行以下命令来安装服务

MyApp.exe install
//启动,停止,卸载服务
MyApp.exe start
MyApp.exe stop
MyApp.exe uninstall

Linux

1.安装运行环境

在Ubuntu或Debian系统上,可以使用如下命令安装Java:

sudo apt update
sudo apt install default-jdk

而在CentOS或Fedora系统上,则可以使用以下命令:

sudo yum update
sudo yum install java-1.8.0-openjdk

2.用工具把jar包上传到Linux预置目录下

3.java -jar 命令启动

nohup

nohup命令和输出重定向来启动JAR包。这种方式可以保证即使SSH会话结束,程序仍然继续运行,并且所有输出都会被记录到指定的日志文件中,便于后续查看和调试。例如:

nohup java -jar myapp.jar > /path/to/output.log 2>&1 &

//配置jvm参数
nohup java -Xms512m -Xmx1g -Dfile.encoding=UTF-8 -jar myapp.jar > output.log 2>&1 &

这里>符号用于将标准输出重定向到output.log文件,而2>&1则表示将标准错误也重定向到同一个文件。&符号使得命令在后台执行

结合脚本

#!/bin/bash
# 检查是否已经存在相同名称的服务
if ps ax | grep -v grep | grep myapp.jar > /dev/null
then
    echo "Service already running."
else
    # 启动服务并记录PID
    nohup java -jar /path/to/myapp.jar > /path/to/output.log 2>&1 &
    echo $! > /path/to/pid.txt
fi

注册为Linux服务

编写systemd服务配置文件

[Unit]
Description=My Java Application
After=network.target

[Service]
User=youruser
ExecStart=/usr/bin/java -jar /path/to/myapp.jar
Restart=on-failure

[Install]
WantedBy=multi-user.target

保存此文件为/etc/systemd/system/myapp.service后,可以通过以下命令启用并启动服务

sudo systemctl enable myapp
sudo systemctl start myapp

docker

1.写Dockerfile文本文件,然后构建镜像

# 使用官方OpenJDK镜像作为基础镜像
FROM openjdk:8-jdk-alpine

# 设置工作目录
WORKDIR /app

# 将当前目录下的JAR文件复制到容器内的/app目录下
COPY target/*.jar app.jar

# 暴露应用监听的端口(假设为8080)
EXPOSE 8080

# 设置时区(可选)
RUN apk add --no-cache tzdata && \
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone

# 启动命令
ENTRYPOINT ["java", "-jar", "/app/app.jar"]
# 环境变量
ENV SPRING_PROFILES_ACTIVE=production
sudo docker build -t my-java-app .

2.运行包含该镜像的容器

sudo docker run -d --name my-java-app-container \
    -p 8080:8080 \
    -v /path/to/logs:/app/logs \
    my-java-app

为了让容器能够随着Docker守护进程一同启动,可以在运行容器时加上--restart=always选项。这意味着即使主机重启后,容器也会自动恢复运行状态

注意:对于多服务采用docker-compose.yml进行编排

具体复杂配置参照docker提供的各种命令进行,总体思路如上所示


原文地址:https://blog.csdn.net/qq_42936379/article/details/144335748

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!