天翼云支持自动扩容节点,所以要把项目配置成自动启动,否则节点增加后,也没法正常使用。

配置linux自动启动有多种方式,但是为了便于管理,还是配置成linux系统服务,托管给systemd最方便,所以这里使用该种方式配置。

首先linux的系统服务需要创建服务配置文件.service

我们先在 /usr/lib/systemd/system 下创建test.service文件,内容如下:

[Unit]
Description=service名称
Documentation=
After=network.target
Wants=
Requires=

[Service]
WorkingDirectory=/www/jar/sdd-organization/
ExecStart=/usr/bin/java -jar -Xms6000m -Xmx6000m /www/jar/sdd-organization/sdd-organization-2.6.0.jar
ExecStop=/usr/bin/kill -15 $MAINPID
PrivateTmp=true
Restart=always
Type=simple

[Install]
WantedBy=multi-user.target

WorkingDirectory是配置工作目录,用来加载启动jar包时的yml配置文件,如果没有用外部配置文件也可以不设置,但是一般分布式部署都是把配置文件放到工作目录下config文件夹下,便于修改。

Description:运行软件描述
Documentation:软件的文档
After:因为软件的启动通常依赖于其他软件,这里是指定在哪个服务被启动之后再启动,设置优先级
Wants:弱依赖于某个服务,目标服务的运行状态可以影响到本软件但不会决定本软件运行状态
Requires:强依赖某个服务,目标服务的状态可以决定本软件运行。
ExecStart:执行命令
ExecStop:停止执行命令
ExecReload:重启时的命令
Type:软件运行方式,默认为simple
WantedBy:这里相当于设置软件,选择运行在linux的哪个运行级别,只是在systemd中不在有运行级别概念,但是这里权当这么理解。

其他几个参数比较简单,应该一看就懂了。

注意点:java要是用绝对路径,服务启动的时候不会加载环境变量配置,当然如果是python什么的也一样,jar包路径同样需要绝对路径

配置文件创建完成后,通过

systemctl start test 

启动服务即可。test是配置文件名称,带上test.service也可以

如果启动出错,通过systemctl status test可以查看错误信息及服务状态。

如果应用没有独立的log文件,也可以通过

journalctl -u 服务名

来通过系统log来查看指定服务的输出日志。

执行

systemctl enable test

将服务设置为开机自动启动

以上