Kịch bản khởi động nginx và php-fpm

Kịch bản khởi động nginx

// Khởi động dịch vụ nginx với các tùy chọn stop|start|restart|reload
touch /etc/init.d/nginx
chmod 755 nginx
vi /etc/init.d/nginx

Lưu ý: Cập nhật các đường dẫn theo cấu hình của bạn. Sau khi chỉnh sửa, có thể sử dụng lệnh service nginx stop|start|restart|reload.

#!/bin/sh

# Kịch bản này dùng để khởi động và dừng dịch vụ nginx
# chkconfig:   - 85 15
# description: NGINX là một máy chủ HTTP(S), proxy ngược HTTP(S) và proxy IMAP/POP3
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid

# Nạp thư viện hàm.
. /etc/rc.d/init.d/functions

# Nạp cấu hình mạng.
. /etc/sysconfig/network

# Kiểm tra mạng đã hoạt động chưa.
[ "$NETWORKING" = "no" ] && exit 0

server="/usr/sbin/nginx"
program_name=$(basename $server)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

create_directories() {
    # Tạo các thư mục cần thiết
    user=`$server -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
    if [ -n "$user" ]; then
        if [ -z "`grep $user /etc/passwd`" ]; then
            useradd -M -s /bin/nologin $user
        fi
        options=`$server -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
                    mkdir -p $value && chown -R $user $value
                fi
            fi
        done
    fi
}

run_server() {
    [ -x $server ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    create_directories
    echo -n $"Khởi động $program_name: "
    daemon $server -c $NGINX_CONF_FILE
    result=$?
    echo
    [ $result -eq 0 ] && touch $lockfile
    return $result
}

stop_server() {
    echo -n $"Dừng $program_name: "
    killproc $program_name -QUIT
    result=$?
    echo
    [ $result -eq 0 ] && rm -f $lockfile
    return $result
}

restart_server() {
    configtest || return $?
    stop_server
    sleep 1
    run_server
}

reload_config() {
    configtest || return $?
    echo -n $"Tải lại cấu hình $program_name: "
    killproc $server -HUP
    RESULT=$?
    echo
}

force_restart() {
    restart_server
}

check_config() {
    $server -t -c $NGINX_CONF_FILE
}

status_check() {
    status $program_name
}

quiet_status_check() {
    status_check >/dev/null 2>&1
}

case "$1" in
    start)
        quiet_status_check && exit 0
        $1
        ;;
    stop)
        quiet_status_check || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        quiet_status_check || exit 7
        $1
        ;;
    force-reload)
        force_restart
        ;;
    status)
        status_check
        ;;
    condrestart|try-restart)
        quiet_status_check || exit 0
            ;;
    *)
        echo $"Cách dùng: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac

Kịch bản khởi động php-fpm

service php-fpm stop|start|restart|reload

Nội dung như sau:

#! /bin/sh

### BEGIN INIT INFO
# Provides:          php-fpm
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Khởi động php-fpm
# Description:       Khởi động PHP FastCGI Process Manager daemon
### END INIT INFO

prefix=/usr/local/php
exec_prefix=${prefix}

php_fpm_BIN=${exec_prefix}/sbin/php-fpm
php_fpm_CONF=${prefix}/etc/php-fpm.conf
php_fpm_PID=${prefix}/var/run/php-fpm.pid
php_config=${prefix}/lib/php.ini

php_options="-c $php_config --fpm-config $php_fpm_CONF --pid $php_fpm_PID"

wait_for_file () {
    attempt=0

    while test $attempt -lt 35 ; do

        case "$1" in
            'created')
            if [ -f "$2" ] ; then
                attempt='' 
                break
            fi
            ;;

            'removed')
            if [ ! -f "$2" ] ; then
                attempt=''
                break
            fi
            ;;
        esac

        echo -n .
        attempt=`expr $attempt + 1`
        sleep 1

    done

}

case "$1" in
    start)
        echo -n "Khởi động php-fpm "

        $php_fpm_BIN --daemonize $php_options

        if [ "$?" != 0 ] ; then
            echo " thất bại"
            exit 1
        fi

        wait_for_file created $php_fpm_PID

        if [ -n "$attempt" ] ; then
            echo " thất bại"
            exit 1
        else
            echo " hoàn tất"
        fi
    ;;

    stop)
        echo -n "Đang dừng php-fpm "

        if [ ! -r $php_fpm_PID ] ; then
            echo " cảnh báo, không tìm thấy tệp PID - php-fpm có đang chạy không?"
            exit 1
        fi

        kill -QUIT `cat $php_fpm_PID`

        wait_for_file removed $php_fpm_PID

        if [ -n "$attempt" ] ; then
            echo " thất bại. Sử dụng tùy chọn force-quit"
            exit 1
        else
            echo " hoàn tất"
        fi
    ;;

    status)
        if [ ! -r $php_fpm_PID ] ; then
            echo "php-fpm đã dừng"
            exit 0
        fi

        PID=`cat $php_fpm_PID`
        if ps -p $PID | grep -q $PID; then
            echo "php-fpm (PID $PID) đang chạy..."
        else
            echo "php-fpm chết nhưng tệp PID vẫn tồn tại"
        fi
    ;;

    force-quit)
        echo -n "Chấm dứt php-fpm "

        if [ ! -r $php_fpm_PID ] ; then
            echo " cảnh báo, không tìm thấy tệp PID - php-fpm có đang chạy không?"
            exit 1
        fi

        kill -TERM `cat $php_fpm_PID`

        wait_for_file removed $php_fpm_PID

        if [ -n "$attempt" ] ; then
            echo " thất bại"
            exit 1
        else
            echo " hoàn tất"
        fi
    ;;

    restart)
        $0 stop
        $0 start
    ;;

    reload)

        echo -n "Nạp lại dịch vụ php-fpm "

        if [ ! -r $php_fpm_PID ] ; then
            echo " cảnh báo, không tìm thấy tệp PID - php-fpm có đang chạy không?"
            exit 1
        fi

        kill -USR2 `cat $php_fpm_PID`

        echo " hoàn tất"
    ;;

    *)
        echo "Cách dùng: $0 {start|stop|force-quit|restart|reload|status}"
        exit 1
    ;;

esac

Thẻ: nginx php-fpm linux

Đăng vào ngày 1 tháng 6 lúc 13:00