rhel7 mysql开机启动_CentOS7/Linux开机自启动Nginx/PHP-FPM/mysqld

CentOS7/Linux开机自启动

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

Linux服务管理service和systemctl

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

service

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

# service命令启动redis脚本

$ service redis start

# 直接启动redis脚本

$ /etc/init.d/redis start

# 开机自启动

$ update-rc.d redis defaults

1

2

3

4

5

6

7

8

# service命令启动redis脚本

$serviceredisstart

# 直接启动redis脚本

$/etc/init.d/redisstart

# 开机自启动

$update-rc.dredisdefaults

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 redis start

$ systemctl redis stop

# 开机自启动

systemctl enable redis

1

2

3

4

5

$systemctlredisstart

$systemctlredisstop

# 开机自启动

systemctlenableredis

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

创建配置

vim /usr/lib/systemd/system/nginx.service

1

vim/usr/lib/systemd/system/nginx.service

配置自启动内容

[Unit]

Description=nginx

After=network.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target

1

2

3

4

5

6

7

8

9

10

11

12

13

14

[Unit]

Description=nginx

After=network.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx-sreload

ExecStop=/usr/local/nginx/sbin/nginx-sstop

PrivateTmp=true

[Install]

WantedBy=multi-user.target

PHP开机自启动:php.service

创建配置

vim /usr/lib/systemd/system/php.service

1

vim/usr/lib/systemd/system/php.service

配置自启动内容

[Unit]

Description=php

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/php/sbin/php-fpm

ExecStop=/bin/pkill -9 php-fpm

PrivateTmp=true

[Install]

WantedBy=multi-user.target

1

2

3

4

5

6

7

8

9

10

11

12

[Unit]

Description=php

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/php/sbin/php-fpm

ExecStop=/bin/pkill-9php-fpm

PrivateTmp=true

[Install]

WantedBy=multi-user.target

Mysql开机自启动:mysqld.service

创建配置

vim /usr/lib/systemd/system/mysqld.service

1

vim/usr/lib/systemd/system/mysqld.service

配置自启动内容

[Unit]

Description=MySQL Community Server

After=network.target

After=syslog.target

[Install]

WantedBy=multi-user.target

Alias=mysql.service

[Service]

User=mysql

Group=mysql

#systemctl status就是根据pid来判断服务的运行状态的

PIDFile=/var/run/mysqld/mysqld.pid

# 以root权限来启动程序

PermissionsStartOnly=true

# 设置程序启动前的必要操作。例如初始化相关目录等等

ExecStartPre=/usr/bin/mysql-systemd-start pre

# 启动服务

ExecStart=/usr/bin/mysqld_safe

# 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=always

PrivateTmp=false

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

[Unit]

Description=MySQLCommunityServer

After=network.target

After=syslog.target

[Install]

WantedBy=multi-user.target

Alias=mysql.service

[Service]

User=mysql

Group=mysql

#systemctl status就是根据pid来判断服务的运行状态的

PIDFile=/var/run/mysqld/mysqld.pid

# 以root权限来启动程序

PermissionsStartOnly=true

# 设置程序启动前的必要操作。例如初始化相关目录等等

ExecStartPre=/usr/bin/mysql-systemd-startpre

# 启动服务

ExecStart=/usr/bin/mysqld_safe

# Don't signal startup success before a ping works

ExecStartPost=/usr/bin/mysql-systemd-startpost

# Give up if ping don't get an answer

TimeoutSec=600

#Restart配置可以在进程被kill掉之后,让systemctl产生新的进程,避免服务挂掉

Restart=always

PrivateTmp=false

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

# 重新载入 systemd

$ systemctl daemon-reload

# 将php服务添加至开机启动。执行enable命令后,会自动创建一个软链接/etc/systemd/system/multi-user.target.wants/php.service指向此文件。

$ systemctl enable php.service

$ Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

# 启动和查看php是否已设置为开机启动

$ systemctl start php

$ systemctl status php.service

$ systemctl is-enabled php.service

1

2

3

4

5

6

7

8

9

10

11

# 重新载入 systemd

$systemctldaemon-reload

# 将php服务添加至开机启动。执行enable命令后,会自动创建一个软链接/etc/systemd/system/multi-user.target.wants/php.service指向此文件。

$systemctlenablephp.service

$Createdsymlinkfrom/etc/systemd/system/multi-user.target.wants/nginx.serviceto/usr/lib/systemd/system/nginx.service.

# 启动和查看php是否已设置为开机启动

$systemctlstartphp

$systemctlstatusphp.service

$systemctlis-enabledphp.service

脚本命令说明

[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命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为什么会这样[user_mongo@nosql01 replicaset]$ cd /opt [user_mongo@nosql01 opt]$ ll total 0 drwxr-xr-x. 3 root root 25 Mar 16 17:08 servers drwxr-xr-x. 2 root root 51 Mar 16 17:10 software [user_mongo@nosql01 opt]$ tar -zxvf /opt/software/mongodb-linux-x86_64-rhel70-4.4.12.tgz -C /opt/servers/mongodb_demo/replicaset/ mongodb-linux-x86_64-rhel70-4.4.12/LICENSE-Community.txt tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/LICENSE-Community.txt: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/MPL-2 tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/MPL-2: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/README tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/README: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/THIRD-PARTY-NOTICES tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/THIRD-PARTY-NOTICES: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/install_compass tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/install_compass: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongo tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongo: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongod tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongod: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongos tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongos: Cannot open: No such file or directory tar: Exiting with failure status due to previous errors [user_mongo@nosql01 opt]$ tar -zcvf /opt/software/mongodb-linux-x86_64-rhel70-4.4.12.tgz -C /opt/servers/mongodb_demo/replicaset/ tar: Cowardly refusing to create an empty archive Try `tar --help' or `tar --usage' for more information.
最新发布
06-01

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值