欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

详解基于CentOS 7配置Nginx自启动

程序员文章站 2022-09-25 22:46:54
nginx是广为流行的轻量级web服务器软件。它开源,短小精悍,简单易用,深受广大互联网企业以及it运维人员所喜爱。很多时候,我们在生产环境基于编译方式安装nginx后,n...

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

一、yum 安装方式nginx自启动

当前环境

[root@node142 ~]# more /etc/redhat-release 
centos linux release 7.2.1511 (core) 

查看是否保护nginx rpm包

[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

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

将其配置为自动

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

查看nginx.service文件

[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

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


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

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

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

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

看下面的例子

# 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包,如下查询,此处为编译安装

# rpm -qa|grep nginx

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

# systemctl list-unit-files |grep nginx

nginx版本

# /u01/app/nginx/sbin/nginx -v
nginx version: nginx/1.8.1

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

# /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文件

# 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

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

配置自启动

# systemctl enable nginx.service

使用systemctl工具启动nginx服务

# 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.

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