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 ~]# 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。
看下面的例子
# 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
也没有添加相应的自启动服务
Nginx版本
获取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
# 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
配置自启动
# 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.