systemctl的配置文件目录一般在
/usr/lib/systemd/system/
或者/etc/systemd/system/
需要注意的是,nginx与php运行用户必须是root,所以不需要添加运行用户,子进程会根据你对应配置设置的用户去运行
mysql配置如下
[Unit]
Description=MySQL Community Server
After=network.target
After=syslog.target
# 关机前操作
Before=shutdown.target
[Install]
WantedBy=multi-user.target
Alias=mysql.service
[Service]
Type=forking
User=mysql
Group=mysql
#systemctl status就是根据pid来判断服务的运行状态的
PIDFile=/usr/local/mysql/mysqld.pid
# 以root权限来启动程序
PermissionsStartOnly=true
# 设置程序启动前的必要操作。例如初始化相关目录等等
#ExecStartPre=/usr/bin/mysql-systemd-start pre
# 启动服务
ExecStart=/usr/local/mysql/mysqld start
ExecStop=/usr/local/mysql/mysqld stop
ExecReload=/usr/local/mysql/mysqld reload
# Don't signal startup success before a ping works
#ExecStartPost=/usr/bin/mysql-systemd-start post
# Give up if ping don't get an answer
TimeoutSec=600
#Restart配置可以在进程被kill掉之后,让systemctl产生新的进程,避免服务挂掉
Restart=on-failure
RestartSec=30
PrivateTmp=false
php配置如下
[Unit]
Description=php
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
ExecStop=/bin/pkill -9 php-fpm
PrivateTmp=true
#Restart配置可以在进程被kill掉之后,让systemctl产生新的进程,避免服务挂掉
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
nginx配置如下
[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
#User=www
#Group=www
PIDFile=/usr/local/nginx/logs/nginx.pid
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
#Restart配置可以在进程被kill掉之后,让systemctl产生新的进程,避免服务挂掉
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target