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、jar包相同路径下创建一个 springboot .conf文件,名称应该与.jar的名称相同
[[email protected] service]# tree -L 1
.
├── application.yml
├── springboot.conf
├── springboot.jar
└── lib
1 directory, 3 files
application.yml :
spring:
datasource:
einic:
url: jdbc:mysql://127.0.0.1:3306/einic?characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
username: F50KqUrT
password: wvTY047rMkIJ1q3F
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
thymeleaf:
cache: false
redis:
host: 127.0.0.1
port: 6379
password: wvTY047rMkIJ1q3F
elasticsearch:
rest:
uris: http://127.0.0.1:9200
rabbitmq:
host: 127.0.0.1
username: F50KqUrT
password: wvTY047rMkIJ1q3F
servlet:
multipart:
max-file-size: 20MB
max-request-size: 20MB
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
mybatis:
configuration:
map-underscore-to-camel-case: true
logging:
level:
com.infvie.einic.*: debug
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count=countSql
server:
port: 8088
servlet:
context-path: /einic
tomcat:
uri-encoding: UTF-8
max-threads: 1600
max-connections: 20000
accept-count: 1600
max-http-header-size: 65536
min-spare-threads: 200
fdfs:
so-timeout: 1501
connect-timeout: 2000
thumb-image:
width: 150
height: 150
tracker-list:
- fdfs-devops.infvie.com:22122
springboot .conf :
RUN_AS_USER="www"
USE_START_STOP_DAEMON=false
JAVA_HOME="$JAVA_HOME/bin/java"
JAVA_OPTS="-Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai -Xms2048M -Xmx2048M -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -XX:AutoBoxCacheMax=20000 -XX:G1ConcRefinementThreads=4 -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:InitiatingHeapOccupancyPercent=70 -XX:G1ReservePercent=15 -XX:G1HeapRegionSize=32M -XX:MaxMetaspaceSize=256m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:+UnlockDiagnosticVMOptions -XX:HeapDumpPath=/dev/shm/ -XX:+PerfDisableSharedMem -XX:+PrintCompressedOopsMode -XX:-PrintGCApplicationStoppedTime -XX:ParGCCardsPerStrideChunk=8192 -XX:+UseG1GC -XX:+UseStringDeduplication -XX:MaxGCPauseMillis=180 -Dlog4j2.formatMsgNoLookups=true -javaagent:/data/wwwroot/elastic-apm-agent-1.14.0.jar -Delastic.apm.service_name=sc-chengd
u-springboot-api01-181 -Delastic.apm.server_urls=http://apm-server:8200 -Delastic.apm.application_packages=* -Dloader.path=lib/"
RUN_ARGS="--spring.config.location=application.yml"
PID_FOLDER="/var/run"
LOG_FOLDER="/data/wwwlogs"
自定义参数参考:
变量 | 描述 |
---|---|
MODE | 操作的“模式”。默认值取决于jar的构建方式,但通常auto 是这样(这意味着它会通过检查目录中是否为符号链接来尝试猜测它是否为初始化脚本init.d )。您可以将其显式设置为service 以便stop|start|status|restart 命令run 可以运行,也可以将其设置为要在前台运行脚本。 |
RUN_AS_USER | 将用于运行应用程序的用户。未设置时,将使用拥有jar文件的用户 |
USE_START_STOP_DAEMON | 该start-stop-daemon 命令在可用时是否应用于控制过程。默认为true 。 |
PID_FOLDER | pid文件夹的根名称(/var/run 默认情况下)。 |
LOG_FOLDER | 放置日志文件的/var/log 默认情况下)。 |
CONF_FOLDER | 从中读取.conf文件的文件夹的名称(默认情况下与jar文件相同的文件夹)。 |
LOG_FILENAME | 日志文件的名称LOG_FOLDER (<appname>.log 默认情况下为)。 |
APP_ | 应用程序的名称。如果jar是从符号链接运行的,则脚本会猜测应用程序名称。如果它不是符号链接,或者您要显式设置应用程序名称,则这将很有用。 |
RUN_ARGS | 传递给程序(Spring Boot应用程序)的参数。 |
JAVA_HOME | java 可执行文件的位置PATH 默认情况下使用来发现,但是如果在上有可执行文件,则可以显式设置它$JAVA_HOME/bin/java 。 |
JAV | 启动JVM时传递给JVM的选项 |
JARFILE | jar文件的显式位置,以防脚本用于启动实际上未嵌入的jar。 |
DEBUG | 如果不为空,则-x 在shell进程上设置该标志,从而易于查看脚本中的逻辑。 |
STOP_WAIT_TIME | 停止应用程序之前要强制关闭的等待时间(以秒为单位60 )(默认情况下)。 |
3、将打包好的springboot jar包放入服务器上,然后执行下面的命令
sudo ln -s /usr/java/jdk1.8.0_181/bin/java /sbin/java
chown www:www springboot.jar && chmod 500 springboot.jar && sudo chattr +i springboot.jar
chmod 400 springboot.conf && sudo chown root:root springboot.conf
sudo ln -s /data/wwwroot/service/springboot.jar /etc/init.d/springboot
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"
设置开机启动项二 systemd
Service
假设您在/var/myapp
中安装了Spring Boot应用程序,以将Spring Boot应用程序作为systemd
服务安装,请创建一个名为的脚本springboot.service
并将其放置在/etc/systemd/system
目录中。以下脚本提供了一个示例:
[Unit]
Description=springboot
After=syslog.target
[Service]
User=www
ExecStart=/data/wwwroot/service/springboot.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
日志分割
[[email protected] init.d]# more /etc/logrotate.d/wwwlogs
/data/wwwlogs/*.log {
daily
rotate 5
dateext
compress
copytruncate
delaycompress
missingok
notifempty
}
参考文献
https://www.freedesktop.org/software/systemd/man/systemd.service.html
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#deployment