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