centos7 設置nginx開機自啓(systemctl和init.d兩種方案)

這裏提供兩種方案,推薦第二種

方案一(init.d)

1.進入/etc/init.d/

cd /etc/init.d/

2.創建nginx文件

touch nginx

3.vim編輯nginx,注意替換自己系統的nginx路徑

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15 
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
 
nginx="/usr/local/tengine/sbin/nginx"    #改成自己系統路徑
prog=$(basename $nginx)
 
NGINX_CONF_FILE="/usr/local/tengine/conf/nginx.conf"    #改成自己系統路徑
 
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
 
lockfile=/var/lock/subsys/nginx
 
make_dirs() {
   # make required directories
   user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
   for opt in $options; do
       if [ `echo $opt | grep '.*-temp-path'` ]; then
           value=`echo $opt | cut -d "=" -f 2`
           if [ ! -d "$value" ]; then
               # echo "creating" $value
               mkdir -p $value && chown -R $user $value
           fi
       fi
   done
}
 
start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
 
stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
 
restart() {
    configtest || return $?
    stop
    sleep 1
    start
}
 
reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}
 
force_reload() {
    restart
}
 
configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}
 
rh_status() {
    status $prog
}
 
rh_status_q() {
    rh_status >/dev/null 2>&1
}
 
case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac

4.修改文件權限

chmod 777 nginx

5.設置開機自啓(需要重啓)

chkconfig --add /etc/init.d/nginx   #將nginx服務加入chkconfig管理列表
chkconfig nginx on                  #設置開機自動啓動

想關閉開機自啓,使用命令:

chkconfig nginx off

6.服務命令

service nginx start      #開啓服務
service nginx stop       #結束服務
service nginx restart    #重啓服務
service nginx reload     #重載配置文件
service nginx status     #查看狀態

方案二(systemctl)推薦

知識擴展

1.CentOS7的服務systemctl腳本存放在:/usr/lib/systemd/,有系統(system)和用戶(user)之分:

/usr/lib/systemd/system (系統服務,開機不需要登錄就能運行)
/usr/lib/systemd/user (用戶服務,需要登錄後才能運行)

2./usr/lib/systemd/system/etc/systemd/system的區別:

對於那些支持 Systemd(YUM/DNF/RPM/APT/etc) 的軟件,安裝的時候,會自動在 /usr/lib/systemd/system 目錄添加一個配置文件。
對於非軟件包形式的臨時軟件安裝,系統操作員應將文件手動放置在 /etc/systemd/system

注意: 設置開機自啓動腳本可以在/etc/systemd/system或者/usr/lib/systemd/system目錄下配置,當兩個地方都配置了的情況下,/etc/systemd/system配置優先。

3.每一個服務以.service結尾,一般會分爲3部分:[Unit]、[Service]、[Install]
[Unit] 主要是對這個服務的說明,內容包括Description和After,Description用於描述服務,After用於描述服務類別。
[Service] 是服務的關鍵,是服務的一些具體運行參數的設置,

Type=forking是後臺運行的形式
PIDFile 爲存放PID的文件路徑
ExecStart 爲服務的具體運行命令
ExecReload 爲重啓命令
ExecStop 爲停止命令
PrivateTmp=True 表示給服務分配獨立的臨時空間

注意:[Service] 部分的啓動、重啓、停止命令全部要求使用絕對路徑,使用相對路徑則會報錯!
[Install] 是服務安裝的相關設置,可設置爲多用戶的

2.步驟

1.進入**/usr/lib/systemd/system**

cd /usr/lib/systemd/system

2.創建nginx.service

touch nginx.service

3.vim編輯nginx.service,裏面的路徑根據自己實際情況修改

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/tengine/sbin/nginx    #修改爲自己系統對應的路徑
ExecReload=/usr/local/tengine/sbin/nginx -s reload #修改爲自己系統對應的路徑
ExecStop=/usr/local/tengine/sbin/nginx -s quit    #修改爲自己系統對應的路徑
PrivateTmp=true

[Install]
WantedBy=multi-user.target

4.設置開機自啓

systemctl enable nginx.service

想關閉運行命令

systemctl disable nginx.service  #關閉開機自啓動

5.服務命令

systemctl start nginx.service   #開啓
systemctl stop nginx.service    #關閉
systemctl reload nginx.service  #重新加載配置
systemctl status nginx.service  #查看狀態
發佈了41 篇原創文章 · 獲贊 13 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章