CentOS7/Linux开机自启动Nginx/PHP-FPM/mysqld

  • 发表于
  • Linux

CentOS7/Linux开机自启动

懒人运维必备get,服务器每次重启,都需要手动启动一些服务,快用脚本来提升一点效率吧,体验盒子分享三个(nginx/php/mysql)最常用的开机自启动脚本。开机自启动的实现是通过服务管理来控制的。

Linux服务管理service和systemctl

CentOS 7继承了RHEL 7的新的特性,例如强大的systemctlsystemctl服务管理的配置和service相比变的简单而易用了许多。

service

service命令其实是去/etc/init.d目录下,去执行相关程序,在低版本的Linux中使用service进行服务管理很常见。但在centos 7中我们有了更好的选择systemctl

systemctl

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

systemctl命令兼容了service,即systemctl也会去/etc/init.d目录下,查看,执行相关程序:

systemctl常用命令

  • systemctl --version:查看版本。
  • whereis systemctl:查看位置。
  • systemctl list-unit-files:列出所有可用单元(服务)。 systemctl list-units:列出所有运行中的单元。
  • systemctl --failed:列出所有失败的单元。
  • systemctl list-unit-files | grep enable:查看自启动的软件。
  • systemctl is-enabled mysqld.service:查看某个单元是否开机启动。
  • systemctl status mysqld.service:查看某个单元的状态。 systemctl start mysqld.service:启动某个单元。
  • systemctl restart mysqld.service:重启某个单元。
  • systemctl stop mysqld.service:停止某个单元。
  • systemctl daemon-reload:修改了某个单元的配置文件后,重载配置文件。
  • systemctl reload mysqld.service:重载某个单元。
  • systemctl enable mysqld.service:设置开机自启动。 systemctl disable mysqld.service:关闭开机自启动。 systemctl kill mysqld,杀死单元。

CentOS7开机自启动Nginx/PHP-FPM/mysqld

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

Nginx开机自启动:nginx.service

创建配置

配置自启动内容

PHP开机自启动:php.service

创建配置

配置自启动内容

Mysql开机自启动:mysqld.service

创建配置

配置自启动内容

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

脚本命令说明

  • [Unit]:主要是对这个服务的说明,内容包括Description和After,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命令。