使用systemctl设置Nginx、PHP、Mysql开机启动

CentOS 7继承了RHEL 7的新的特性,例如强大的systemctl,而systemctl的使用也使得以往系统服务的/etc/init.d的启动脚本的方式就此改变,也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,说实在的,变的简单而易用了许多。

CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,最好还是存在系统服务里面,即:/usr/lib/systemd/system目录下,每一个服务以.service结尾,一般会分为3部分:[Unit][Service][Install]

我们可以使用systemctl -a来查看所有服务,如果列表里面没有Nginx,PHP、Mysql,又想借助于systemctl来进行统一管理的话,就到上述所说的/usr/lib/systemd/system目录下面创建以下文件吧

Nginx之nginx.service文件[自定义]

  1. [Unit]
  2. Description=nginx
  3. After=network.target
  4. [Service]
  5. Type=forking
  6. PIDFile=/usr/local/nginx/logs/nginx.pid
  7. ExecStart=/usr/local/nginx/sbin/nginx
  8. ExecReload=/usr/local/nginx/sbin/nginx -s reload
  9. ExecStop=/usr/local/nginx/sbin/nginx stop
  10. PrivateTmp=true
  11. [Install]
  12. WantedBy=multi-user.target

PHP之php.service文件[自定义]

  1. [Unit]
  2. Description=php
  3. After=network.target
  4. [Service]
  5. Type=forking
  6. ExecStart=/usr/local/php/sbin/php-fpm
  7. ExecStop=/bin/pkill php-fpm
  8. PrivateTmp=true
  9. [Install]
  10. WantedBy=multi-user.target

Redis之php.service文件[自定义]

  1. [Unit]
  2. Description=php
  3. After=network.target
  4. [Service]
  5. Type=forking
  6. ExecStart=/usr/local/bin/redis-server /etc/redis.conf
  7. ExecStop=/bin/pkill redis-server
  8. PrivateTmp=true
  9. [Install]
  10. WantedBy=multi-user.target

Mysql之mysqld.service文件[安装的时候软件自动生成]

  1. #
  2. # Simple MySQL systemd service file
  3. #
  4. # systemd supports lots of fancy features, look here (and linked docs) for a full list:
  5. # http://www.freedesktop.org/software/systemd/man/systemd.exec.html
  6. #
  7. # Note: this file ( /usr/lib/systemd/system/mysql.service )
  8. # will be overwritten on package upgrade, please copy the file to
  9. #
  10. # /etc/systemd/system/mysql.service
  11. #
  12. # to make needed changes.
  13. #
  14. # systemd-delta can be used to check differences between the two mysql.service files.
  15. #
  16. [Unit]
  17. Description=MySQL Community Server
  18. After=network.target
  19. After=syslog.target
  20. [Install]
  21. WantedBy=multi-user.target
  22. Alias=mysql.service
  23. [Service]
  24. User=mysql
  25. Group=mysql
  26. # Execute pre and post scripts as root
  27. PermissionsStartOnly=true
  28. # Needed to create system tables etc.
  29. ExecStartPre=/usr/bin/mysql-systemd-start pre
  30. # Start main service
  31. ExecStart=/usr/bin/mysqld_safe
  32. # Don't signal startup success before a ping works
  33. ExecStartPost=/usr/bin/mysql-systemd-start post
  34. # Give up if ping don't get an answer
  35. TimeoutSec=600
  36. Restart=always
  37. PrivateTmp=false

上述文件创建完成后,只要使用systemctl enable xxxxx就可以将所编写的服务添加至开机启动了

注意:

[Unit]部分主要是对这个服务的说明,内容包括DescriptionAfter,Description用于描述服务,After用于描述服务类别

[Service]部分是服务的关键,是服务的一些具体运行参数的设置,这里 Type=forking是后台运行的形式,PIDFile为存放PID的文件路径,
ExecStart为服务的具体运行命令,ExecReload为重启命令,ExecStop为停止命令,PrivateTmp=True表示给服务分配独立的临时空间。[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!

[Install]部分是服务安装的相关设置,可设置为多用户的

服务脚本按照上面编写完成后,以754的权限保存在/usr/lib/systemd/system目录下,这时就可以利用systemctl进行配置了

使用systemctl start [服务名(也是文件名)]可以测试服务是否可以成功运行,如果不能运行则可以使用systemctl status [服务名(也是文件名)]查看错误信息和其他服务信息。然后根据报错进行修改,直到可以start,如果不放心还可以测试restart和stop命令

暂无评论

发送评论 编辑评论


				
上一篇
下一篇