#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH # Check if user is root if [ $(id -u) != "0" ]; then printf "Error: You must be root to run this script! " exit 1 fi printf "========================================================================= " printf "Manager for LNMP service , Written by lixiuran " printf " " printf "Usage: /root/lnmp {start|stop|reload|restart|kill|status} " printf "========================================================================= " NGINXNAME=nginx NGINXCONFIGFILE=/usr/local/nginx/conf/$NGINXNAME.conf NGINXPIDFILE=/var/run/$NGINXNAME.pid NGINXDAEMON=/usr/local/nginx/sbin/$NGINXNAME PHPFPMNAME=php-fpm PHPFPMCONFIGFILE=/usr/local/php/etc/$PHPFPMNAME.conf PHPFPMPIDFILE=/var/run/$PHPFPMNAME.pid PHPFPMDAEMON=/usr/local/php/sbin/$PHPFPMNAME HOSTNAME=`hostname` MYSQLPIDFILE=/data/mysql/$HOSTNAME.pid function_start() { printf "Starting LNMP... " if [ -f $NGINXPIDFILE ]; then printf "Nginx is runing! " exit 1 else $NGINXDAEMON -c $NGINXCONFIGFILE printf "Nginx start successfully! " fi if [ -f $PHPFPMPIDFILE ]; then printf "php-fpm is runing! " else $PHPFPMDAEMON & printf "PHP-FPM start successfully! " fi if [ -f $MYSQLPIDFILE ]; then printf "MySQL is runing! " else /etc/init.d/mysql start printf "MySQL start successfully! " fi } function_stop() { printf "Stoping LNMP... " if [ -f $NGINXPIDFILE ]; then kill `cat $NGINXPIDFILE` printf "Nginx program is stop " else printf "Nginx program is not runing! " fi if [ -f $PHPFPMPIDFILE ]; then kill -INT `cat $PHPFPMPIDFILE` printf "PHP-FPM program is stop " else printf "PHP-FPM program is not runing! " fi if [ -f $MYSQLPIDFILE ]; then /etc/init.d/mysql stop printf "MySQL program is stop " else printf "MySQL program is not runing! " fi } function_reload() { printf "Reload LNMP... " printf "Reload Nginx configure... " $NGINXDAEMON -t $NGINXDAEMON -s reload printf "Nginx program is reloding! " /etc/init.d/mysql reload kill -USR2 `cat $PHPFPMPIDFILE` } function_restart() { printf "Reload LNMP... " printf "Reload Nginx configure... " $NGINXDAEMON -t kill `cat $NGINXPIDFILE` $NGINXDAEMON -c $NGINXCONFIGFILE printf "Nginx program is restarting! " /etc/init.d/mysql restart printf "PHP-FPM program is restarting! " kill -USR2 `cat $PHPFPMPIDFILE` } function_kill() { kill `cat $NGINXPIDFILE` kill `cat $PHPFPMPIDFILE` kill `cat $MYSQLPIDFILE` } function_status() { if [ -f $NGINXPIDFILE ]; then printf "Nginx is runing! " else printf "Nginx is stop! " fi if [ -f $PHPFPMPIDFILE ]; then printf "php-fpm is runing! " else printf "php-fpm is stop! " fi /etc/init.d/mysql status } case "$1" in start) function_start ;; stop) function_stop ;; restart) function_stop function_start ;; reload) function_reload ;; kill) function_kill ;; status) function_status ;; *) printf "Usage: /root/lnmp {start|stop|reload|restart|kill|status} " esac exit
Nginx和PHP-FPM的启动/重启脚本
一、Nginx启动脚本/etc/init.d/nginx
#!/bin/bash # # Startup script for 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: /usr/local/nginx/conf/nginx.conf # pidfile: /usr/local/nginx/logs/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/nginx/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 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
#==============================================================
编辑好后保存,执行以下命令
sudo chmod +x /etc/init.d/nginx
sudo /sbin/chkconfig nginx on
# 检查一下
sudo /sbin/chkconfig --list nginx
nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off
完成!可以使用以下命令管理Nginx了
service nginx start
service nginx stop
service nginx restart
service nginx reload
/etc/init.d/nginx start
/etc/init.d/nginx stop
/etc/init.d/nginx restart
/etc/init.d/nginx reload
二、PHP-FPM启动脚本/etc/init.d/php-fpm
#!/bin/bash # # Startup script for the PHP-FPM server. # # chkconfig: 345 85 15 # description: PHP is an HTML-embedded scripting language # processname: php-fpm # config: /usr/local/php/etc/php.ini # Source function library. . /etc/rc.d/init.d/functions PHP_PATH=/usr/local DESC="php-fpm daemon" NAME=php-fpm # php-fpm路径 DAEMON=$PHP_PATH/php/sbin/$NAME # 配置文件路径 CONFIGFILE=$PHP_PATH/php/etc/php-fpm.conf # PID文件路径(在php-fpm.conf设置) PIDFILE=$PHP_PATH/php/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME # Gracefully exit if the package has been removed. test -x $DAEMON || exit 0 rh_start() { $DAEMON -y $CONFIGFILE || echo -n " already running" } rh_stop() { kill -QUIT `cat $PIDFILE` || echo -n " not running" } rh_reload() { kill -HUP `cat $PIDFILE` || echo -n " can't reload" } case "$1" in start) echo -n "Starting $DESC: $NAME" rh_start echo "." ;; stop) echo -n "Stopping $DESC: $NAME" rh_stop echo "." ;; reload) echo -n "Reloading $DESC configuration..." rh_reload echo "reloaded." ;; restart) echo -n "Restarting $DESC: $NAME" rh_stop sleep 1 rh_start echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2 exit 3 ;; esac exit 0
#=====================================================
编辑好后保存,执行以下命令
sudo chmod +x /etc/init.d/php-fpm
sudo /sbin/chkconfig php-fpm on
# 检查一下
sudo /sbin/chkconfig --list php-fpm
php-fpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off
完成!可以使用以下命令管理php-fpm了
service php-fpm start
service php-fpm stop
service php-fpm restart
service php-fpm reload
/etc/init.d/php-fpm start
/etc/init.d/php-fpm stop
/etc/init.d/php-fpm restart
/etc/init.d/php-fpm reload
注意:里面的程序路径必须写对,这里用的都是默认的路径哟!而且对于php-fpm,默认的pid文件是没有设置的,要使用这个必须先在配置文件启用pid文件!~
二、mysql启动脚本/etc/init.d/mysql
添加服务,拷贝服务脚本到init.d目录,并设置开机启动
cp /usr/local/mysql/support-files/support-files/mysql.server /etc/init.d/mysql chkconfig mysql on service mysql start --启动MySQL