运维笔记

springboot部署启动配置

Einic Yeo · 3月19日 · 2019年 ·

1、首先,项目的pom引入下面的插件,然后maven install 

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

2、将打包好的springboot jar包放入到服务器上,然后执行下面的命令

sudo ln -s /usr/local/server/springboot.jar /etc/init.d/springboot

安全设置与授权

chown www:www springboot.jar && chmod 500 springboot.jar && sudo chattr +i springboot.jar

3、自定义参数,在jar包相同路径下创建一个.conf文件,名称应该与.jar的名称相同,如springboot.conf

在其中配置相关变量,如:

RUN_AS_USER="www"
USE_START_STOP_DAEMON=false #[当提示start-stop-daemon: unrecognized option '--no-close则修改为false,默认是true]
JAVA_HOME="$JAVA_HOME/bin/java"
JAVA_OPTS="-ms256m -mx256m -Xmn128m -Djava.awt.headless=true -XX:PermSize=512M -XX:MaxPermSize=1024m"
RUN_ARGS="--spring.config.location=application.yml"
PID_FOLDER="/var/run"
LOG_FOLDER="/data/wwwlogs"

安全设置与授权

chmod 400 springboot.conf && sudo chown root:root springboot.conf

自定义参数参考:

变量描述
MODE操作的“模式”。默认值取决于jar的构建方式,但通常auto是这样(这意味着它会通过检查目录中是否为符号链接来尝试猜测它是否为初始化脚本init.d)。您可以将其显式设置为service以便stop|start|status|restart命令run可以运行,也可以将其设置为要在前版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!台运行脚本。
RUN_AS_USER将用于运行应用程序的用户。未设置时,将使用拥有jar文件的用户。
USE_START_STOP_DAEMON版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!start-stop-daemon命令在可用时是否应用于控制过程。默认为true
PID_FOLDERpid文件夹的根名称(/var/run默认情况下)。
LOG_FOLDER放置日志文件的文件夹的名称(/var/log默认情况下)。
CONF_版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!FOLDER从中读取.conf文件的文件夹的名称(默认情况下与jar文件相同的文件夹)。
LOG_FILENAME日志文件的名称LOG_FOLDER<appname>.log默认情况下为)。
APP_NAME应用程序的名称。如果jar是从符号链接运行的,则脚本会猜测应用程序名称。如果它不是符号链接,或者您要显式设置应用程序名称,则这将很有用。
RUN_ARGS传递给程序(Spring Boot应用程序)的参数。
JAVA_HOMEjava可执行文件的位置PATH默认情况版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!下使用来发现,但是如果在上有可执行文件,则可以显式设置它$JAVA_HOME/bin/java
JAVA_OPTS启动JVM时传递给JVM的选项。
JARFILEjar文件的显式位置,以防脚本用于启动实际上未嵌入的jar。
DEBUG如果不为空,则-x在shell进程上设置该标志,从而易于查看脚本中的逻辑。
STOP_WAIT_TIME停止应用程序之前要强制关闭的等待时间(以秒为单位60版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!(默认情况下)。

4、上述命令执行完全之后,通过下面的命令就可以操作项目了

#启动服务
/etc/init.d/springboot start 
#服务关闭
/etc/init.d/springboot stop
#服务重启
/etc/init.d/springboot restart 
#前台运行
/etc/init.d/springboot run 

5、配置项目开机自启动一

1)检查rc.local 执行权限
# ll /etc/rc.local 
lrwxrwxrwx. 1 root root 13 Jul 25  2018 /etc/rc.local -> rc.d/rc.local
# ll /etc/rc.d/rc.local 
-rwxr-xr-x. 1 root root 401 Mar 19 15:20 /etc/rc.d/rc.local

2)配置运行环境与启动服务
more /etc/rc.local

#Location of JAVA_HOME (bin files)
export JAVA_HOME=/usr/java/jdk1.8.0_181

#Add Java binary files to PATH
export PATH=$JAVA_HOME/bin:$PATH

#Add springboot run start
/bin/su www -c "/etc/init.d/springboot start"

设置开机启动项二 systemdService

假设您在/var/myapp中安装了Spring Boot应用程序,以将Spring Boot应用程序作为systemd服务安装,请创建一个名为的脚本myapp.service并将其放置在/etc/systemd/system目录中。以下脚本提供了一个示例:

[Unit]
Description=myapp
After=syslog.target

[Service]
User=myapp
ExecStart=/var/myapp/myapp.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

参考文献

https://www.freedesktop.org/software/systemd/man/systemd.service.html
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#deployment

0 条回应