nginx自动启动脚本
nginx自动启动脚本
环境准备提示:
启动服务命令为:/application/nginx/sbin/nginx
停止服务命令为: /application/nginx/sbin/nginx -s stop
请用case语句开发脚本,以实现Nginx服务启动及关闭的功能,具体脚本命令为/etc/init.d/nginxd {status|start|stop|restart}
如果读者对Ngnix环境还不是很熟悉,那么请参考跟老男孩学\<<Linux运维:Web集群实战>>第5章的内容。
参考资料:
https://blog.51cto.com/398528/2053566
# nginx安装 cd /opt/ wget https://ftp.pcre.org/pub/pcre/pcre-8.36.tar.gz tar -zxvf pcre-8.36.tar.gz cd pcre-8.36 ./configure make && make install cd /opt/ wget http://nginx.org/download/nginx-1.12.2.tar.gz tar -zxvf nginx-1.12.2.tar.gz useradd nginx -s /sbin/nologin -M yum -y install pcre-devel cd nginx-1.12.2 ./configure --user=nginx --group=nginx --prefix=/application/nginx-1.12.2 --with-http_stub_status_module --with-http_ssl_module --with-pcre=/opt/pcre-8.36 make && make install ln -s /application/nginx-1.12.2 /application/nginx /application/nginx/sbin/nginx -t 启动 /application/nginx/sbin/nginx 查看端口 netstat -lnt ps -ef|grep nginx 反查 lsof -i :8080 nginx主页文件所在位置 /application/nginx/conf/nginx.conf
---------------------------------------------------------------------------------------------------------------------
解题思路:
1 ) 先判断Ngnix的PID文件是否存在(Nginx服务正常启动后PID文件就会存在),如果不存在,即表示Nginx没有运行,则运行Nginx服务的启动命令
(可以把此部分写成start函数)。待要停止时,如果PID存在,就运行Nginx服务停止命令,否则就不运行停止命令(可以把此部分写成stop函数)。
2 ) 通过脚本传参start或stop等,通过case语句获取参数进行判断。
3 ) 为了看起来更专业,这里采用前文讲解的系统函数functions中的action函数。
4 ) 对函数及命令运行的返回值进行处理,使脚本看起来更专业、规范。
5 ) 通过chkconfig来管理Nginx脚本,实现开机自动启。
cat >/etc/init.d/nginxd<<"EOF" #!/bin/bash # chkconfig: 2345 40 98 # dectiption: Start/Stop Nginx server path="/application/nginx/sbin" pid="/application/nginx/logs/nginx.pid" RETVAL=0 # 设定RETVAL为0,作为返回值变量。 . /etc/init.d/functions # start function usage(){ echo $"`basename $0` {status|start|stop|restart}" exit 1 } function status(){ if [[ -f $pid ]]; then echo "nginx is running..." else echo "nginx is not running" fi exit $RETVAL } function start(){ if [ ! -f $pid ]; then $path/nginx RETVAL=$? if [[ $RETVAL -eq 0 ]]; then action "nginx is started" /bin/true else action "nginx is started" /bin/false return RETVAL fi else echo "nginx is running..." return 0 fi } function stop(){ if [[ -f $pid ]]; then $path/nginx -s stop RETVAL=$? if [[ $RETVAL -eq 0 ]]; then action "nginx is stopped" /bin/true return $RETVAL else action "nginx is stopped" /bin/false return $RETVAL fi else echo "nginx is no running" return $RETVAL fi } case "$1" in start ) start RETVAL=$? ;; stop ) stop RETVAL=$? ;; restart ) stop sleep 3 start RETVAL=$? ;; status ) status RETVAL=$? ;; * ) usage esac exit $RETVAL EOF chmod +x /etc/init.d/nginxd [root@db nginx-1.12.2]# /etc/init.d/nginxd status nginx is running... [root@db nginx-1.12.2]# /etc/init.d/nginxd stop nginx is stopped [ OK ] [root@db nginx-1.12.2]# /etc/init.d/nginxd status nginx is not running [root@db nginx-1.12.2]# /etc/init.d/nginxd start nginx is started [ OK ] [root@db nginx-1.12.2]# /etc/init.d/nginxd stop nginx is stopped [ OK ] [root@db nginx-1.12.2]# /etc/init.d/nginxd restart nginx is no running nginx is started [ OK ] [root@db nginx-1.12.2]# /etc/init.d/nginxd restart nginx is stopped [ OK ] nginx is started [ OK ] [root@db nginx-1.12.2]#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下