SpringBoot可执行jar,开机启动

官方教程

https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html

1.首先Maven配置,完全可执行的jar

<plugin> 
	<groupId>org.springframework.boot</groupId> 
	<artifactId>spring-boot-maven-plugin</artifactId> 
	<configuration> 
		<executable>true</executable> 
	</configuration> 
</plugin>

2.把jar包在init.d目录下创建连接

sudo ln -s /var/myapp/myapp.jar /etc/init.d/myapp

3.启动服务

service myapp start

4.设置开机启动

sudo chkconfig myapp on

其他命令

#移除开机启动
sudo chkconfig blog off
#停止服务
sudo service blog stop

5.在jar的目录下创建.conf文件,文件名和jar的名称相同

注意一下日志和pid的存放目录,这里我用的tmp,生产环境绝对不能用tmp,尤其是pid,tmp下系统会定期清理的
到时候无法stop了

APP_NAME=myapp  #随便写
MODE=service #后台运行
JAVA_OPTS="-server -Xmx8g -Xms4g -Xloggc:/tmp/logs/pandora_gc.log -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=utf-8"
RUN_ARGS="--server.port=8081 --spring.profiles.active=prod --spring.pid.file=/tmp/logs/myapp.pid"
LOG_FOLDER=/tmp/logs
LOG_NAME=myapp

异常处理

将 Spring boot 安装为 Linux 服务启动,后输入 service myapp start 报错 Unable to find Java ,但是使用 java -jar myapp.jar 启动成功

解决方法:将java 连接到/sbin 文件夹下

sudo ln -s /usr/local/jdk/bin/java /sbin/java

### 配置Spring Boot JAR文件开机自启 #### 创建启动目录与放置JAR包 确保拥有一个用于存放项目的特定目录,并将Spring BootJAR包置于其中。例如: ```bash mkdir -p /home/java-server/test-demo ``` 这一步骤有助于组织项目结构,便于管理和维护[^1]。 #### 编写启动脚本 编写专门针对Spring Boot应用的启动脚本来管理其生命周期。建议按照项目名来命名此脚本以便识别,比如`cyber-country.sh`对于名为`cyber-country.jar`的应用而言。该脚本应位于系统的初始化脚本路径下,如`/etc/rc.d/init.d/`,以方便查找和调用: ```bash vim /etc/rc.d/init.d/cyber-country.sh ``` 在脚本内部定义必要的逻辑,包括但不限于检查是否存在旧版本进程并终止它们,随后依据预设参数重启新实例。这里展示了一个简单的启动函数示例: ```bash #!/bin/bash # jar位置 jar_path='/usr/local/project/cyber-country.jar' start(){ # 项目后台启动 并加入开机自启 if [ -jar $jar_path > nohup.out 2>&1 & else echo "未找到可执行$jar_path" exit fi } start ``` 上述代码片段展示了如何检测目标JAR文件的存在性以及利用`nohup`命令让Java程序以后台模式运行的同时重定向输出流至日志文件[^4]。 #### 设置权限 赋予启动脚本适当的读取、写入及执行权限,这对于保证脚本能正常工作至关重要。可以通过更改文件属性的方式完成这一操作: ```bash chmod -R 777 /usr/web/litemall-jar/litemall-all-0.1.0-exec.jar ``` 请注意调整这里的路径匹配实际环境中的情况[^5]。 #### 注册为Systemd服务(适用于现代Linux发行版) 为了让Spring Boot应用程序能够在系统引导过程中被自动激活,推荐将其注册成systemd的服务单元。创建一个新的`.service`文件描述所需的行为特性,通常存放在`/etc/systemd/system/`内。以下是模板化的配置项说明: ```ini [Unit] Description=My Spring Boot Application Service After=syslog.target [Service] User=username ExecStart=/usr/bin/java -jar /path/to/spring-boot-app.jar SuccessExitStatus=143 [Install] WantedBy=multi-user.target ``` 在此基础上替换掉占位符变量(`username`, `/path/to/spring-boot-app.jar`)的具体值之后保存退出编辑器。接着刷新守护进程缓存使改动生效并通过启用指令设定为默认状态下的启动组件之一: ```bash sudo systemctl daemon-reload sudo systemctl enable my-springboot-service.service ``` 这样就完成了整个流程的设计与实施过程[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值