溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

編譯安裝nginx時(shí)配置開機(jī)自啟

發(fā)布時(shí)間:2020-07-16 16:31:50 來源:網(wǎng)絡(luò) 閱讀:261 作者:wx5c4682be18b52 欄目:系統(tǒng)運(yùn)維

詳細(xì)編譯安裝nginx請參考【Nginx目錄結(jié)構(gòu)與配置文件詳解】以及【Nginx安裝部署】,在這里就進(jìn)行簡單安裝

安裝Nginx

環(huán)境介紹

操作系統(tǒng):

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

nginx軟件版本: nginx-1.17.6.tar.gz

安裝依賴

注意:編譯安裝一定要安裝開發(fā)工具,否則無法進(jìn)行安裝或安裝報(bào)錯

[root@localhost opt]# yum -y install openssl openssl-devel zlib zlib-devel pcre pcre-devel make gcc gcc-c++

安裝nginx

[root@localhost ~]# cd /opt/
[root@localhost opt]# wget http://nginx.org/download/nginx-1.17.6.tar.gz
[root@localhost opt]# tar zxf nginx-1.17.6.tar.gz 
[root@localhost opt]# cd nginx-1.17.6/
[root@localhost opt]# cd nginx-1.17.6/
[root@localhost nginx-1.17.6]# 
[root@localhost nginx-1.17.6]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
[root@localhost nginx-1.17.6]# ./configure --prefix=/usr/local/nginx && make && make install

啟動測試nginx

[root@localhost nginx-1.17.6]# cd /usr/local/nginx/
[root@localhost nginx]# ls
conf  html  logs  sbin
[root@localhost nginx]# cd sbin/
[root@localhost sbin]# ./nginx 
[root@localhost sbin]# netstat -anpl | grep nginx       //查看端口
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      11881/nginx: master 
unix  3      [ ]         STREAM     CONNECTED     53405    11881/nginx: master  
unix  3      [ ]         STREAM     CONNECTED     53404    11881/nginx: master  
[root@localhost sbin]# ps aux | grep nginx      //查看進(jìn)程
jia       5496  0.0  0.0 302400   852 ?        Sl   10:58   0:00 /usr/libexec/ibus-engine-simple
root     11881  0.0  0.0  20560   620 ?        Ss   11:23   0:00 nginx: master process ./nginx
nobody   11882  0.0  0.1  23080  1632 ?        S    11:23   0:00 nginx: worker process
root     11896  0.0  0.1 112728   988 pts/0    S+   11:24   0:00 grep --color=auto ngin

設(shè)置為系統(tǒng)命令

[root@localhost sbin]# ln nginx /usr/local/sbin/
[root@localhost ~]# nginx -t        //檢查nginx語法
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# nginx -s stop       //停止nginx
[root@localhost ~]# which nginx     //查看啟動程序位置
/usr/local/sbin/nginx

方法一利用rc.local腳本

rc.local是啟動加載文件,在linux中要把一個(gè)程序加入開機(jī)啟動,一般可以通過修改rc.local來完成,這個(gè)文件時(shí)開機(jī)就要加載的文件,所以我們就可以利用linux這個(gè)文件設(shè)置nginx開機(jī)自啟動

[root@localhost ~]# cat /etc/rc.local       //文件存放在/etc目錄下

下面時(shí)rc.local的文件內(nèi)容:

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local

利用這個(gè)文件可以設(shè)置自己想在開機(jī)時(shí)啟動的命令,直接把自己想執(zhí)行的命令寫到rc.local中就可以了
我們把nginx啟動命令加入此文件中

[root@localhost ~]# echo sh /usr/local/nginx/sbin/nginx >> /etc/rc.local 
[root@localhost ~]# cat /etc/rc.local 
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
/usr/local/nginx/sbin/nginx
如果你上面把nginx設(shè)置為系統(tǒng)命令那你就可以直接寫命令就好了
nginx

然后讓我們重啟系統(tǒng)再次查看端口和進(jìn)程

[root@localhost ~]# reboot
重啟后發(fā)現(xiàn)nginx自動啟動了
[root@localhost ~]# netstat -anpl | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4847/nginx: master  
unix  3      [ ]         STREAM     CONNECTED     39265    4847/nginx: master   
unix  3      [ ]         STREAM     CONNECTED     39264    4847/nginx: master   
[root@localhost ~]# ps aux | grep nginx
root      4847  0.0  0.0  20560   612 ?        Ss   11:45   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody    4848  0.0  0.1  23080  1388 ?        S    11:45   0:00 nginx: worker process
root      4860  0.0  0.1 112724   988 pts/0    S+   11:45   0:00 grep --color=auto nginx
[root@localhost ~]# 

方法二設(shè)置系統(tǒng)服務(wù)

推薦設(shè)置開機(jī)自啟

配置啟動生成pid文件

pid文件是進(jìn)程文件里面存放的是程序運(yùn)行的進(jìn)程ID也就是進(jìn)程號
nginx生成pid文件需要修改配置文件
修改內(nèi)容如下:

默認(rèn)配置文件有這一條,如果沒有請?jiān)趎ginx.conf中找到這一條然后將前面注釋刪除就可以了
pid        logs/nginx.pid;

在/usr/lib/systemd/system路徑下添加nginx.service文件

/usr/lib/systemd/system 此目錄是用來存放一些系統(tǒng)服務(wù)的
nginx文件內(nèi)容:

[root@localhost system]# cat nginx.service 
[Unit]
Description=nginx       //描述
After=syslog.target network.target remote-fs.target nss-lookup.target       \\描述服務(wù)類別

[Service]
Type=forking        //設(shè)置運(yùn)行方式,后臺運(yùn)行
PIDFile=/usr/local/nginx/logs/nginx.pid     //設(shè)置PID文件
ExecStart=/usr/local/nginx/sbin/nginx       //啟動命令
ExecReload=/bin/kill -s HUP $MAINPID        //重啟命令
ExecStop=/bin/kill -s QUIT $MAINPID         //關(guān)閉命令
PrivateTmp=true     //分配獨(dú)立的臨時(shí)空間
*注意命令需要寫絕對路徑
[Install]       ///服務(wù)安裝的相關(guān)設(shè)置,可設(shè)置為多用戶
WantedBy=multi-user.target      

注意:此文件需要754的權(quán)限

測試啟動關(guān)閉

[root@localhost ~]# systemctl start nginx       //啟動服務(wù)
[root@localhost ~]# netstat -anpl | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5249/nginx: master  
unix  3      [ ]         STREAM     CONNECTED     42458    5249/nginx: master   
unix  3      [ ]         STREAM     CONNECTED     42459    5249/nginx: master  
[root@localhost ~]# systemctl stop nginx            //關(guān)閉服務(wù)
[root@localhost ~]# netstat -anpl | grep nginx
[root@localhost ~]# systemctl restart nginx         //重新啟動服務(wù)
[root@localhost ~]# netstat -anpl | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5289/nginx: master  
unix  3      [ ]         STREAM     CONNECTED     45346    5289/nginx: master   
unix  3      [ ]         STREAM     CONNECTED     45347    5289/nginx: master   

需要注意的是使用之前執(zhí)行腳本來啟動服務(wù)的,無法使用此方法關(guān)閉服務(wù)

設(shè)置開機(jī)自啟動

[root@localhost ~]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@localhost ~]# systemctl enable nginx

重啟看效果

[root@localhost ~]# netstat -anpl | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4081/nginx: master  
unix  3      [ ]         STREAM     CONNECTED     32429    4081/nginx: master   
unix  3      [ ]         STREAM     CONNECTED     32428    4081/nginx: master  

init.d設(shè)置開機(jī)啟動

init啟動方式在centos7系統(tǒng)版本已經(jīng)不推薦使用了

在/etc/init.d目錄中創(chuàng)建啟動文件nginx

文件內(nèi)容如下:

#!/bin/bash
# chkconfig: 345 80 20  //啟動順序
# description: start the nginx deamon       //說明
# Source function library
. /etc/rc.d/init.d/functions

prog=nginx
# 根據(jù)自己的路徑改寫CATALANA_HOME
CATALANA_HOME=/usr/local/nginx
export CATALINA_HOME

case "$1" in
start)
    echo "Starting nginx..."
    $CATALANA_HOME/sbin/nginx
    ;;

stop)
    echo "Stopping nginx..."
    $CATALANA_HOME/sbin/nginx -s stop
    ;;

restart)
    echo "Stopping nginx..."
    $CATALANA_HOME/sbin/nginx -s stop
    sleep 2
    echo
    echo "Starting nginx..."
    $CATALANA_HOME/sbin/nginx
    ;;
*)
    echo "Usage: $prog {start|stop|restart}"
    ;;
esac
exit 0

設(shè)置權(quán)限

[root@localhost ~]# chmod +x /etc/init.d/nginx      //設(shè)置執(zhí)行權(quán)限

測試啟動

[root@localhost init.d]# service nginx start            //啟動nginx
Starting nginx (via systemctl):                            [  確定  ]
[root@localhost init.d]# netstat -anpl | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4081/nginx: master  
unix  3      [ ]         STREAM     CONNECTED     38534    4081/nginx: master   
unix  3      [ ]         STREAM     CONNECTED     38535    4081/nginx: master 
[root@localhost init.d]# service nginx stop         //關(guān)閉nginx
Stopping nginx (via systemctl):                            [  確定  ]
[root@localhost init.d]# netstat -anpl | grep nginx
[root@localhost init.d]# service nginx restart          //重新啟動nginx
Restarting nginx (via systemctl):                          [  確定  ]
[root@localhost init.d]# netstat -anpl | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5304/nginx: master  
unix  3      [ ]         STREAM     CONNECTED     43218    5304/nginx: master   
unix  3      [ ]         STREA  

在centos7中init.d中的服務(wù)默認(rèn)也會在system目錄中

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI