小知识:详解基于CentOS 7配置Nginx自启动

Nginx是广为流行的轻量级Web服务器软件。它开源,短小精悍,简单易用,深受广大互联网企业以及IT运维人员所喜爱。很多时候,我们在生产环境基于编译方式安装Nginx后,Nginx需要手工配置自启动服务,以确保服务器异常宕机后自动重启该服务。以下描述的是基于CentOS 7下来配置自启动服务,供大家参考。

一、yum 安装方式Nginx自启动

当前环境

?
1
2
[root@node142 ~]# more /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

查看是否保护nginx rpm包

?
1
2
3
4
5
6
7
8
9
10
[root@node142 ~]# rpm -qa|grep nginx
nginx-mod-http-geoip-1.12.2-2.el7.x86_64
nginx-1.12.2-2.el7.x86_64
nginx-filesystem-1.12.2-2.el7.noarch
nginx-mod-http-xslt-filter-1.12.2-2.el7.x86_64
nginx-mod-stream-1.12.2-2.el7.x86_64
nginx-mod-http-perl-1.12.2-2.el7.x86_64
nginx-mod-http-image-filter-1.12.2-2.el7.x86_64
nginx-all-modules-1.12.2-2.el7.noarch
nginx-mod-mail-1.12.2-2.el7.x86_64

查看是否存在相应的服务,如下,有nginx.service

?
1
2
[root@node142 ~]# systemctl list-unit-files |grep nginx
nginx.service               disabled

将其配置为自动

?
1
[root@node142 ~]# systemctl enable nginx.service

查看nginx.service文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@node142 ~]# more /lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target

上述配置文件中的内容和官网提供的一模一样

https://www.nginx.com/resources/wiki/start/topics/examples/systemd/

二、编译安装后的自启动配置

由于是编译安装,因此,对于这个自启动的脚本我们需要自行配制。

具体则是参考上面的链接或者上面给出的nginx.service文件内容。

然后将其保存为 /lib/systemd/system/nginx.service。

看下面的例子

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# more /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
# ps -ef|grep nginx
root  10092 10014 0 16:23 pts/0  00:00:00 grep –color=auto nginx
root  20791  1 0 Mar20 ?    00:00:00 nginx: master process ./sbin/nginx -c /u01/app/nginx/nginx.conf
nobody 20792 20791 0 Mar20 ?    00:00:44 nginx: worker process
nobody 20793 20791 0 Mar20 ?    00:00:42 nginx: worker process
nobody 20794 20791 0 Mar20 ?    00:00:50 nginx: worker process
nobody 20795 20791 0 Mar20 ?    00:00:44 nginx: worker process
nobody 20796 20791 0 Mar20 ?    00:00:43 nginx: worker process
nobody 20797 20791 0 Mar20 ?    00:00:43 nginx: worker process
nobody 20798 20791 0 Mar20 ?    00:00:37 nginx: worker process
nobody 20799 20791 0 Mar20 ?    00:00:48 nginx: worker process
nobody 20800 20791 0 Mar20 ?    00:00:04 nginx: cache manager process
#

无相应的rpm包,如下查询,此处为编译安装

?
1
# rpm -qa|grep nginx

也没有添加相应的自启动服务

?
1
# systemctl list-unit-files |grep nginx

nginx版本

?
1
2
# /u01/app/nginx/sbin/nginx -v
nginx version: nginx/1.8.1

获取nginx编译模块,然后查看诸如pid,二进制位置并记录以便修改启动文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# /u01/app/nginx/sbin/nginx -V
nginx version: nginx/1.8.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: –prefix=/u01/app/nginx –sbin-path=/u01/app/nginx/sbin/nginx
–conf-path=/u01/app/nginx/nginx.conf –error-log-path=/u01/app/nginx/log/error.log
–http-log-path=/u01/app/nginx/log/access.log –pid-path=/u01/app/nginx/nginx.pid
–lock-path=/u01/app/nginx/nginx.lock –http-client-body-temp-path=/u01/app/nginx/client_temp
–http-proxy-temp-path=/u01/app/nginx/proxy_temp
–http-fastcgi-temp-path=/u01/app/nginx/fastcgi_temp
–http-uwsgi-temp-path=/u01/app/nginx/uwsgi_temp –http-scgi-temp-path=/u01/app/nginx/scgi_temp
–user=nginx –group=nginx –with-http_ssl_module –with-http_realip_module
–with-http_addition_module –with-http_sub_module –with-http_dav_module
–with-http_flv_module –with-http_mp4_module –with-http_gunzip_module
–with-http_gzip_static_module –with-http_random_index_module –with-http_secure_link_module
–with-http_stub_status_module –with-http_auth_request_module –with-mail –with-mail_ssl_module
–with-file-aio –with-http_spdy_module –with-ipv6

下面我们生成一个新的nginx.service文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# vim /lib/systemd/system/nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/u01/app/nginx/nginx.pid
ExecStartPre=/u01/app/nginx/sbin/nginx -t
ExecStart=/u01/app/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

下面我们先手工停止nginx

?
1
# /u01/app/nginx/sbin/nginx -s stop

配置自启动

?
1
# systemctl enable nginx.service

使用systemctl工具启动nginx服务

?
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
# systemctl start nginx.service
# systemctl status nginx.service
● nginx.service – The NGINX HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2018-03-29 16:37:47 CST; 6s ago
Process: 10588 ExecStart=/u01/app/nginx/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 10586 ExecStartPre=/u01/app/nginx/sbin/nginx -t (code=exited, status=0/SUCCESS)
Main PID: 10590 (nginx)
CGroup: /system.slice/nginx.service
├─10590 nginx: master process /u01/app/nginx/sbin/nginx
├─10591 nginx: worker process # Author : Leshami
├─10592 nginx: worker process # Blog : https://blog.csdn.net/leshami
├─10593 nginx: worker process
├─10594 nginx: worker process
├─10595 nginx: worker process
├─10596 nginx: worker process
├─10597 nginx: worker process
├─10598 nginx: worker process
├─10599 nginx: cache manager process
└─10600 nginx: cache loader process
Mar 29 16:37:47 ydq-std systemd[1]: Starting The NGINX HTTP and reverse proxy server…
Mar 29 16:37:47 ydq-std nginx[10586]: nginx: the configuration file /u01/app/nginx/nginx.conf syntax is ok
Mar 29 16:37:47 ydq-std nginx[10586]: nginx: configuration file /u01/app/nginx/nginx.conf test is successful
Mar 29 16:37:47 ydq-std systemd[1]: Started The NGINX HTTP and reverse proxy server.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/leshami/article/details/79745487

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Linux 下目录文件权限(命令)的查看和修改

2023-4-19 2:54:04

建站知识

小知识:使用Linux要改掉几个的命令习惯

2023-4-19 3:02:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索