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.exe
和MyApp.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)!