Linux部署Java程序并设置开机启动
1、先检查服务器是否已安装Java
java -version
2、先试试直接运行
java -jar /opt/tejianplatform/api/report-3.0.jar
注意:此时运行jar会自动找配置文件,如果application.yml和jar在同级目录,正常运行没问题
3、创建Linux服务文件
vim /etc/systemd/system/tejianapi.service
“tejianapi”即服务名称,后续启动、停止、查看日志文件都用此名称
4、编辑service
[Unit]
Description=tejian-platform-api
After=syslog.target
[Service]
Type=simple
ExecStart=/home/java/jdk1.8.0_441/bin/java -jar /opt/tejianplatform/api/report-3.0.250118.jar --spring.config.location=/opt/tejianplatform/api/application.yml
SuccessExitStatus=143
Environment="JAVA_HOME=/home/java/jdk1.8.0_441"
[Install]
WantedBy=multi-user.target
5、刷新配置
sudo systemctl daemon-reload
6、启动服务
sudo systemctl start tejianapi.service
7、查看服务状态
systemctl status tejianapi.service
下面介绍踩的一些坑:
1、ExecStart配置的Java安装目录
一定要注意路径正确,先查看本机Java安装的地方,再配上去,可以用ls命令看是否存在
ls /home/java/jdk1.8.0_441/bin/java
2、ExecStart配置的Java配置文件
使用服务启动时,默认不会加载同目录下的配置文件,此时就需要手动指定,要使用全路径
3、application.yml配置
如果使用了日志配置文件,如“logback-spring.xml”,必须配置全路径
4、logback-spring.xml配置
日志目录要配全路径,要不然会日志会存到根目录
5、设置权限
需要给Java和jar都设置权限
chmod +x /home/java/jdk1.8.0_441/bin/java
chmod +x /opt/tejianplatform/api/report-3.0.250118.jar
6、SELinux 或其他安全机制:如果系统启用了 SELinux,可能会导致权限问题。禁用 SELinux
setenforce 0
另,查看系统服务日志命令:
journalctl -u tejianapi.service -f
sudo journalctl -u tejianapi.service --since "2025-03-05 17:00:00" --until "2025-03-05 18:0:00"