1.tongweb.service
[Unit]
Description=TongWeb Server
After=network.target
[Service]
Type=forking
**Environment="JAVA_HOME=/user/local/java/jdk1.8.0 171"
#ExecStart=/opt/tongweb7.0/bin/startserver.sh restart
**ExecStart=/opt/tongweb7.0/bin/boot.sh
#ExecStop=/opt/tongweb7.0/bin/stopserver.sh stop
privateTmp=false
# Disable service start and stop timeout logic of systemd for tongweb service.
TimeoutSec=0
[Install]
WantedBy=multi-user.target
2.开机以非root用户启动
有的应用例如coremail应用需要coremail账户权限,可按下面红框添加User和Group,这样开机TongWeb以非root账户启动。
[Unit]
Description=TongWeb Server
After=network.target
[Service]
User=chenwb
Group=chenwb
Type=forking
**Environment="JAVA_HOME=/user/local/java/jdk1.8.0 171"
#ExecStart=/opt/tongweb7.0/bin/startserver.sh restart
**ExecStart=/opt/tongweb7.0/bin/boot.sh
#ExecStop=/opt/tongweb7.0/bin/stopserver.sh stop
privateTmp=false
# Disable service start and stop timeout logic of systemd for tongweb service.
TimeoutSec=0
[Install]
WantedBy=multi-user.target
3.使能服务
将tongweb.service放入/usr/lib/system/system中;
执行systemctl enable tongweb.service生效。
4.service文件说明
[Unit] #对服务的说明部分
Description=xxx
After=network.target #描述服务类别,表示本服务需要在network服务启动后在启动
Before=xxx.service # 表示需要在某些服务启动之前启动,After和Before字段只涉及启动顺序,不涉及依赖关系。
[Service] #核心部分
Type=forking #后台运行模式
User=user #设置服务运行的用户
Group=user #设置服务运行的用户组
Environment=”JAVA_HOME=/XX/XX” #设置环境变量,如JAVA_HOME
PIDFile=/usr/local/xxx #存放PID的绝对路径
KillMode=control-group #定义systemd如何停止服务
ExecStart=/usr/local/bin/forever start /node.js/xiyoulib/bin/www
ExecReload=/usr/local/bin/forever restart /node.js/xiyoulib/bin/www
ExecStop=/usr/local/bin/forever stop /node.js/xiyoulib/bin/www
Restart=no #定义服务进程退出后,systemd的重启方式,默认是不重启
PrivateTmp=true #表示给服务分配独立的临时空间
[Install] #服务的相关部分
WantedBy=multi-user.target #多用户
注意:该脚本配置好之后,需要授予755的权限。
5systemctl相关命令
(1)启动服务
systemctl start tongweb.service
(2)停止服务
systemctl stop tongweb.service
(3)查看服务状态
systemctl status tongweb.service
(4)禁用服务
systemctl disable tongweb.service
(5)使能服务
systemctl enable tongweb.service
(6)重新加载service
systemctl daemon-reload
6.优先级
Unit文件位置一般主要有三个目录:
/etc/systemd/system
/run/systemd/system
/lib/systemd/system
这三个目录的配置文件优先级依次从高到低,如果同一选项三个地方都配置了,优先级高的会覆盖优先级低的。
/usr/lib/system/system和/lib/system/system
中的service文件任一修改后会另一处会自动改变。
TongWeb中使用installservice.sh脚本,tongweb.service文件会复制到/etc/systemd/system和/usr/lib/systemd/system,/lib/systemd/system会自动生成一份。
7多次执行installservice.sh的问题
tongweb.service文件在安装目录service/linux中,执行installservice.sh时会修改此文件,将其中的JAVA_HOME_VARIATE和TongWeb字段替换为实际路径。对应JAVA_HOME和TongWeb安装路径。
如果TongWeb安装目录是TongWeb7.0那么多次执行installservice.sh只会替换TongWeb,导致会有TongWeb7.07.0情况。