CentOS 7
中设置服务程序开机启动,常用如下两种方式。
1、方式一
通过/etc/rc.local
配置系统启动时运行自定义脚本,在文件尾行增加需启动命令(如下以自启java
程序和挂载数据盘为例)。
# 设置开机自动挂载nas存储(sleep 10,为了确保外部就绪,避免失败)
mkdir /nas/ >/dev/null 2>&1
sleep 10 & mount -t nfs -o rw,vers=3 foo.bar.com:/storage_dir /nas
# 设置开机启动java服务(-Dspring.profiles.active=sth为启动参数示例,非必须)
sleep 10 && cd /java-artifact-path && source /etc/profile && nohup java -Dspring.profiles.active=sth -jar foo-bar.jar >out.log 2>&1 &
2、方式二
配置系统后台服务(通常标识为daemon
,缩写d
,表示伺服程序,如下以nginx
为例)。
1)创建配置文件
在/etc/systemd/system/
目录下新增文件 nginx.service
[Unit]
Description=nginx service
After=network.target
[Service]
User=root
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx # 置换为nginx实际目录
ExecReload=/usr/local/nginx/sbin/nginx -s reload # 置换为nginx实际目录
ExecStop=/usr/local/nginx/sbin/nginx -s stop # 置换为nginx实际目录
ExecStartPre=/bin/sleep 10
[Install]
WantedBy=multi-user.target
**备注:**系统内建服务配置通常放在目录
/usr/lib/systemd/system
,而自定义服务通常放在目录/etc/systemd/system
。systemd加载服务配置时,会优先查找/etc/systemd/system
目录,即,如两个目录有同名服务,自定义服务配置会覆盖了系统服务配置。
2)启动服务
# 在启动服务之前,需要先重载systemctl命令
systemctl daemon-reload
# 启动服务
systemctl start nginx.service
# 设置开机自启
systemctl enable nginx
3)常用管理命令
- 重载systemctl命令:
systemctl daemon-reload
- 启动服务:
systemctl start nginx
- 关闭服务:
systemctl stop nginx
- 重启服务:
systemctl restart nginx
- 设置开机启动:
systemctl enable nginx
3、systemctl配置文件举例
-
复杂版nginx配置举例
[Unit] #对服务的说明 Description=nginx - high performance web server #描述服务 After=network.target remote-fs.target nss-lookup.target #描述服务类别 [Service] #服务的一些具体运行参数的设置 Type=forking #后台运行的形式 PIDFile=/usr/local/nginx/logs/nginx.pid #PID文件的路径 ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf #启动准备 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #启动命令 ExecReload=/usr/local/nginx/sbin/nginx -s reload #重启命令 ExecStop=/usr/local/nginx/sbin/nginx -s stop #停止命令 ExecQuit=/usr/local/nginx/sbin/nginx -s quit #快速停止 PrivateTmp=true #给服务分配临时空间 [Install] WantedBy=multi-user.target #服务用户的模式
-
java服务配置举例
[Unit] Description=Your Java Service After=network.target [Service] Type=simple User=<username> ExecStart=/usr/bin/java -jar /path/to/your-application.jar -Dspring.profiles.active=production Restart=on-failure [Install] WantedBy=multi-user.target
4、参考
2024/4/19 v1.0