分类: LINUX
2014-12-03 17:11:37
最近由于项目需求,需要开发CDN的分发及存储功能,打算以Nginx的架构为基础进行开发。Nginx的配置、源码,结合《深入理解Nginx-模块开发与架构解析》一书研究过一段时间,近期又发现了淘宝以Nginx为基础的开源项目Tengine,新增了一些功能,需要修改到Nginx的配置脚本,加之自己脚本写的比较少,所以把Nginx的configure脚本及auto目录下的脚本梳理了一遍,为了检查自己对脚本的基本掌握情况,这里分享一个简单的Nginx的启动、停止、重启、状态检查脚本。
我在梳理Nginx脚本时发觉这块的网络资料基本是一片空白,或许都是脚本高手,大家默认都能看得懂,且随意修改。如果看到这篇文章的读者,希望有一份关于Nginx配置脚本的详细文档,请留言,只要有一人留言,我就把Nginx配置脚本整理为规范、易读的文档共享到网上,献丑了,莫见笑。
脚本命名为process.sh,脚本内容如下:
#!/bin/sh
nginx_install_path=/usr/local/nginx/sbin/
nginx_install_name=nginx
function usage()
{
echo "Usage: `basename $0` (start|stop|restart|status)"
}
function ngx_status_echo()
{
status=$1
echo -e "Nginx status: [\033[1;32m $status \033[0m]"
}
function ngx_start_echo()
{
result=$1
echo -e "Starting nginx: [\033[1;32m $result \033[0m]"
}
function ngx_stop_echo()
{
result=$1
echo -e "Stopping nginx: [\033[1;32m $result \033[0m]"
}
function ngx_start()
{
if $nginx_install_path$nginx_install_name > /dev/null 2>&1 ; then
ngx_start_echo OK
else
ngx_start_echo FAILED
exit 1
fi
}
function ngx_stop()
{
if /usr/bin/killall -s QUIT $nginx_install_name > /dev/null 2>&1 ; then
ngx_stop_echo OK
else
ngx_stop_echo FAILED
exit 1
fi
}
function ngx_status()
{
if ps -C $nginx_install_name > /dev/null 2>&1 ; then
ngx_status_echo RUNNING
else
ngx_status_echo STOPPED
fi
}
function ngx_param_check()
{
if [ "$1" -ne "1" ] ; then
usage
exit 1
fi
}
ngx_param_check $#
case "$1" in
start)
if ps -C $nginx_install_name > /dev/null 2>&1 ; then
ngx_status_echo RUNNING
else
ngx_start
fi
;;
stop)
if ps -C $nginx_install_name > /dev/null 2>&1 ; then
ngx_stop
else
ngx_status_echo STOPPED
fi
;;
restart)
$0 stop
$0 start
;;
status)
ngx_status
;;
*)
usage
;;
esac
执行如下命令:
ln -s /home/chenqianwu/shell/process.sh /usr/bin/nginxst