一 启动服务管理机制
从CentOS7.x开始,传统的init已经被舍弃,取而代之的是systemd(启动服务管理机制)
1.1 systemd的配置文件放置目录
- /usr/lib/systemd/system:每个服务主要的启动脚本设置(由原本软件提供的设置,不建议修改),类似/etc/init.d/下文件
- /run/systemd/system:系统执行过程中产生的服务脚本,优先级大于上面的
- /etc/systemd/system:管理员根据主机系统的需求建立的执行脚本,优先级max
1.2 配置文件详解
参考下面配置文件,大体上将整个设置分为三个部分
- [Unit]:其他daemon设置,Unit为通用术语,表示系统中各种可管理的对象 (target为一组unit集合)
- [Service]:不同unit类型设置不同的项目,这个项目主要规范服务启动脚本、环境配置文件名、重启方式
- [Install]:将此Unit安装到那个target里面去,在systemd中,安装(install)是指将unit文件复制到特定目录,以便systemd能够管理它
cat /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
以下是常用的选项:
[unit]部分 | |
Description | 使用systemctl status 输入此服务的说明 |
After | 说明该unit在哪个daemon启动后启动 |
[Service]部分 | |
Type=forking | 传统unit服务属于这种项目,后台运行模式 |
ExecStart | 实际执行此deamon的命令或脚本程序,服务启动命令 |
ExecReload | 与systemctl stop 的执行有关,服务重启命令 |
ExecStop | 与systemctl reload 有关的命令操作,服务停止命令 |
PrivateTmp=true | 给服务分配独立的临时空间 |
[Install]部分 | |
Alias | 链接别名的意思 |
二 Nginx、MySQL开机自启
如果是rpm包安装的直接可以使用systemd进行管理,只针对源码安装的Nginx、MySQL进行开启自启设置
systemd全部仅有一个systemd服务搭配systemctl命令来处理,无需其他额外命令来支持
主要参数:start、stop、restart、reload、enable、disable、status、is-active、is-enable
2.1 Nginx开机自启
cd /etc/systemd/system
vim nginx.service
[Unit]
Description=nginx service
After=network.target
[Service]
Type=forking
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 quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
systemctl list-units | grep nginx
参考优秀文档
2.2 MySQL开机自启(源码安装启动关闭命令)
疑惑之处:一直启动---超过时间就断开了,一直没有启动成功
cd /etc/systemd/system
vim mysql.service
[Unit]
Description=mysql service
After=network.target
[Service]
Type=forking
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/conf/my.cnf
#ExecStop=/usr/local/mysql/bin/mysqladmin -uroot -p'LXYlxy2:024.#8u}' shutdown
PrivateTmp=true
[Install]
WantedBy=multi-user.target