使用源码包安装的Nginx没办法使用"service nginx start"或"/etc/init.d/nginx start"进行操作和控制,所以写了以下的服务控制脚本

选项有:

  1.   start    启动
  2.  
  3.   stop    停止
  4.  
  5.   reload   重载
  6.  
  7.   restart    重启
  8.  
  9.   status   状态
  10.  
  11.   test    检查配置文件

创建脚本文件并添加执行权限

  1.   touch /etc/init.d/nginx
  2.  
  3.   chmod +x /etc/init.d/nginx

编写脚本内容

  1.   #!/bin/bash
  2.  
  3.   # chkconfig: - 85 15
  4.  
  5.   # description: Nginx server control script
  6.  
  7.   # processname: nginx
  8.  
  9.   # config file: /usr/local/nginx/conf/nginx.conf
  10.  
  11.   # pid file: /usr/local/nginx/logs/nginx.pid
  12.  
  13.   #
  14.  
  15.   # eastmoney public tools
  16.  
  17.   # version: v1.0.0
  18.  
  19.   # create by XuHoo, 2016-9-14
  20.  
  21.   #
  22.  
  23.   # source function library
  24.  
  25.   . /etc/rc.d/init.d/functions
  26.  
  27.   NGINX_NAME="nginx"
  28.  
  29.   NGINX_PROG="/usr/local/sbin/nginx"
  30.  
  31.   NGINX_PID_FILE="/usr/local/nginx/logs/nginx.pid"
  32.  
  33.   NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
  34.  
  35.   NGINX_LOCK_FILE="/var/lock/subsys/nginx.lock"
  36.  
  37.   # check current user
  38.  
  39.   [ "$USER" != "root" ] && exit 1
  40.  
  41.   start() {
  42.  
  43.   status
  44.  
  45.   if [[ $? -eq 0 ]]; then
  46.  
  47.   echo $"Nginx (PID $(cat $NGINX_PID_FILE)) already started."
  48.  
  49.   return 1
  50.  
  51.   fi
  52.  
  53.   echo -n $"Starting $NGINX_NAME: "
  54.  
  55.   daemon $NGINX_PROG -c $NGINX_CONF_FILE
  56.  
  57.   retval=$?
  58.  
  59.   echo
  60.  
  61.   [ $retval -eq 0 ] && touch $NGINX_LOCK_FILE
  62.  
  63.   return $retval
  64.  
  65.   }
  66.  
  67.   stop() {
  68.  
  69.   status
  70.  
  71.   if [[ $? -eq 1 ]]; then
  72.  
  73.   echo "Nginx server already stopped."
  74.  
  75.   return 1
  76.  
  77.   fi
  78.  
  79.   echo -n $"Stoping $NGINX_NAME: "
  80.  
  81.   killproc $NGINX_PROG
  82.  
  83.   retval=$?
  84.  
  85.   echo
  86.  
  87.   [ $retval -eq 0 ] && rm -f $NGINX_LOCK_FILE
  88.  
  89.   return $retval
  90.  
  91.   }
  92.  
  93.   restart() {
  94.  
  95.   stop
  96.  
  97.   sleep 1
  98.  
  99.   start
  100.  
  101.   retval=$?
  102.  
  103.   return $retval
  104.  
  105.   }
  106.  
  107.   reload() {
  108.  
  109.   echo -n $"Reloading $NGINX_NAME: "
  110.  
  111.   killproc $NGINX_PROG -HUP
  112.  
  113.   retval=$?
  114.  
  115.   echo
  116.  
  117.   return $retval
  118.  
  119.   }
  120.  
  121.   status() {
  122.  
  123.   netstat -anpt | grep "/nginx" | awk '{print $6}' &> /dev/null
  124.  
  125.   if [[ $? -eq 0 ]]; then
  126.  
  127.   if [[ -f $NGINX_LOCK_FILE ]]; then
  128.  
  129.   return 0
  130.  
  131.   else
  132.  
  133.   return 1
  134.  
  135.   fi
  136.  
  137.   fi
  138.  
  139.   return 1
  140.  
  141.   }
  142.  
  143.   _status() {
  144.  
  145.   status
  146.  
  147.   if [[ $? -eq 0 ]]; then
  148.  
  149.   state=`netstat -anpt | grep "/nginx" | awk '{ print $6 }'`
  150.  
  151.   echo $"Nginx server status is: $state"
  152.  
  153.   else
  154.  
  155.   echo "Nginx server is not running"
  156.  
  157.   fi
  158.  
  159.   }
  160.  
  161.   test() {
  162.  
  163.   $NGINX_PROG -t -c $NGINX_CONF_FILE
  164.  
  165.   retval=$?
  166.  
  167.   return $retval
  168.  
  169.   }
  170.  
  171.   case "$1" in
  172.  
  173.   start)
  174.  
  175.   start
  176.  
  177.   ;;
  178.  
  179.   stop)
  180.  
  181.   stop
  182.  
  183.   ;;
  184.  
  185.   reload)
  186.  
  187.   reload
  188.  
  189.   ;;
  190.  
  191.   restart)
  192.  
  193.   restart
  194.  
  195.   ;;
  196.  
  197.   status)
  198.  
  199.   _status
  200.  
  201.   ;;
  202.  
  203.   test)
  204.  
  205.   test
  206.  
  207.   ;;
  208.  
  209.   *)
  210.  
  211.   echo "Usage: { start | stop | reload | restart | status | test }"
  212.  
  213.   exit 1
  214.  
  215.   esac

将脚本添加到系统服务并设置开机启动

  1.   chkconfig --add nginx
  2.  
  3.   chkconfig --level 3 nginx on
脚本二
  1.   [root@localhost ~]# cd /usr/local/nginx/conf/
  2.  
  3.   [root@localhost conf]# ls
  4.  
  5.   fastcgi.conf fastcgi_params koi-utf mime.types nginx.conf scgi_params uwsgi_params win-utf
  6.  
  7.   fastcgi.conf.default fastcgi_params.default koi-win mime.types.default nginx.conf.default scgi_params.default uwsgi_params.default

备份主配置文件

  1.   [root@localhost conf]# cp nginx.conf nginx.conf.origin
  2.  
  3.   [root@localhost conf]# vim nginx.conf
  4.  
  5.   去除#pid logs/nginx.pid;前面#号
  1.   [root@localhost conf]# netstat -anpt | grep 80
  2.  
  3.   tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19108/nginx
  4.  
  5.   [root@localhost conf]# kill -3 19108
  6.  
  7.   [root@localhost conf]# netstat -anpt | grep 80
  8.  
  9.   [root@localhost conf]# nginx
  10.  
  11.   [root@localhost conf]# netstat -anpt | grep 80
  12.  
  13.   tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19864/nginx
  14.  
  15.   [root@localhost conf]# cd ../logs/
  16.  
  17.   [root@localhost logs]# ls
  18.  
  19.   access.log error.log nginx.pid
  20.  
  21.   [root@localhost logs]# cat nginx.pid
  22.  
  23.   19864

编辑写服务脚本

  1.   [root@localhost ~]# vim /etc/init.d/nginx
  2.  
  3.   可以使用的选项有:
  4.  
  5.   start    启动
  6.  
  7.   stop    停止
  8.  
  9.   reload   重载
  10.  
  11.   restart    重启
  12.  
  13.   status   状态
  14.  
  15.   test    检查配置文件
  1.   #!/bin/bash
  2.  
  3.   #chkconfig: 2345 99 20
  4.  
  5.   #description:Nginx Server Control Scripts shell
  6.  
  7.   PROG="/usr/local/nginx/sbin/nginx"
  8.  
  9.   PIDF="/usr/local/nginx/logs/nginx.pid"
  10.  
  11.   case "$1" in
  12.  
  13.   start)
  14.  
  15.   if [ -f $PIDF ];
  16.  
  17.   then
  18.  
  19.   echo "Nginx正在运行…"
  20.  
  21.   else
  22.  
  23.   $PROG
  24.  
  25.   fi
  26.  
  27.   ;;
  28.  
  29.   stop)
  30.  
  31.   if [ -f $PIDF ];
  32.  
  33.   then
  34.  
  35.   kill -3 $(cat $PIDF)
  36.  
  37.   rm -f $PIDF
  38.  
  39.   else
  40.  
  41.   echo "Nginx正在停止…"
  42.  
  43.   fi
  44.  
  45.   ;;
  46.  
  47.   restart)
  48.  
  49.   $0 stop
  50.  
  51.   $0 start
  52.  
  53.   ;;
  54.  
  55.   reload)
  56.  
  57.   if [ -f $PIDF ];
  58.  
  59.   then
  60.  
  61.   kill -1 $(cat $PIDF)
  62.  
  63.   else
  64.  
  65.   echo "Nginx正在停止…重新加载"
  66.  
  67.   fi
  68.  
  69.   ;;
  70.  
  71.   status)
  72.  
  73.   if [ -f $PIDF ];
  74.  
  75.   then
  76.  
  77.   echo "Nginx正在运行"
  78.  
  79.   else
  80.  
  81.   echo "Nginx停止"
  82.  
  83.   fi
  84.  
  85.   ;;
  86.  
  87.   *)
  88.  
  89.   echo "Usage: $0 (start|stop|restart|reload|status)"
  90.  
  91.   exit 1
  92.  
  93.   esac
  94.  
  95.   exit 0

脚本文件并添加执行权限

  1.   [root@localhost ~]# chmod +x /etc/init.d/nginx
  2.  
  3. 将脚本添加到系统服务并设置开机启动
  4.  
  5.   [root@localhost ~]# chkconfig --add nginx
  6.  
  7.   添加为服务启动项
  8.  
  9.   [root@localhost ~]# chkconfig --list nginx
  10.  
  11.   nginx 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
  12.  
  13.   [root@localhost ~]# chkconfig --level 3 nginx on
  14.  
  15.   测试脚本是否能够执行
  16.  
  17.   [root@localhost ~]# service nginx start
  18.  
  19.   Nginx正在运行…
  20.  
  21.   [root@localhost ~]# service nginx restart
  22.  
  23.   [root@localhost ~]# service nginx stop
  24.  
  25.   [root@localhost ~]# service nginx stop
  26.  
  27.   Nginx正在停止…
  28.  
  29.   [root@localhost ~]# service nginx start
  30.  
  31.   [root@localhost ~]# service nginx status
  32.  
  33.   Nginx正在运行

案例十:shell编写nginx服务启动程序的更多相关文章

  1. SHELL编写NGINX服务控制脚本

    使用源码包安装的Nginx没办法使用"service nginx start"或"/etc/init.d/nginx start"进行操作和控制,所以写了以下的 ...

  2. pm2命令,端口查询,mongodb服务启动,nginx服务启动,n模块的使用,搭建nodejs服务器环境,搭建oracledb服务器环境 linux的环境搭建

    pm2命令 pm2 ls //查询pm2 启动的列表 pm2 start app.js //启动文件 pm2 restart app //重启项目 pm2 logs app //监控项目执行日志打印 ...

  3. Nginx系列~Nginx服务启动不了

    Nginx服务有时起动不了了,原因是80端口为其它应用程序占用了,这时,我们需要查看是哪个程序占用了它,可能是IIS的某个站点,或者Tomat,Apache等,都有可能,所以,我们需要查看一下电脑80 ...

  4. 97: Address family not supported by protocol,nginx服务启动失败

    1.启动nginx服务报错 环境:centos 6.9,yum安装的nginx,启动报错 [root@lnmp ~]# nginx -tnginx: the configuration file /e ...

  5. [shell脚本] mysql服务启动脚本

    服务启动脚本(初始化.启动.登录) #!/bin/bash export PID=/usr/local/nestdb_master/bin/mysqld export PASSWORD=123456 ...

  6. SHELL编写NGINX自动部署脚本

    1.功能描述 1. 安装支持包,从软件源下载自定义的NGINX包,创建NGINX用户和用户组. 2. 安装并初始化NGINX配置. 3. 运行NGINX并检测运行状态. 2.实现 源码如下: #!/b ...

  7. 第十八单元 nginx服务

    安装python 源 wget   网上下载 原码 编译    安装的流程 (gcc glic) 版本更新时起冲突,删除原版本(或者reinstall重新安装) 可执行文件运行   ./ 软连接 查看 ...

  8. Nginx服务启动脚本

    #!/bin/sh # chkconfig: 2345 40 98 # description: Start/Stop Nginx server path=/application/nginx/sbi ...

  9. 用shell编写小九九乘法表程序

    1.使用for循环 运行结果: 2.方法二:for循环 运行结果: 备注: 1. echo -n 的意思是不自动换行,因为在linux shell中 echo到最后一个字符时会自动换行的,所以echo ...

随机推荐

  1. android ndk下没有pthread_yield,好在std::this_thread::yield()可以达到同样的效果

    一个多线程的算法中,发现线程利用率只有47%左右,大量的处理时间因为usleep(500)而导致线程睡眠: 性能始终上不去. 把usleep(500)修改为std::this_thread::yiel ...

  2. Cesium入门4 - 创建Cesium Viewer

    Cesium入门4 - 创建Cesium Viewer Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 任何Ce ...

  3. CSS设置标签、图片放大、缩小、旋转、移动(tranform)

    CSS设置标签.图片放大.缩小.旋转.移动(tranform) 1.缩小和放大属性(scale) 格式:tranform:缩小类型(数值): 注意:缩小和放大都是 scale : 其中的值(0~1)代 ...

  4. gin框架中中间件的编写与使用

    概念 一个完整的系统可能包括鉴权认证.权限管理.安全检查.日志记录等多维度的系统支持. 中间件位与服务器和实际业务处理程序之间,其含义就相当于在请求和具体的业务处理逻辑之间增加某些操作,这种以额外增加 ...

  5. 哪些是GET请求,哪些是POST请求

    GET请求: 1,form标签 method=get 2,a标签 3,link标签引入css 4,Script标签引入js文件 5,img标签引入图片 6,iframe引入html页面 7,在浏览器地 ...

  6. Kubernetes:故障排查(Trouble Shooting)方法总结

    Blog:博客园 个人 本文部分内容源自网络,侵删. 概述 为了跟踪和发现在Kubernetes集群中运行的容器应用出现的问题,我们常用如下排查方法: 查看Kubernetes对象的当前运行时信息,特 ...

  7. Photoshop如何快速扣取图标

    由于图标往往与背景色区别很大,因此首先使用魔棒工具快速选择出图标 有时候选择出来是图标,有时候是背景色 可以通过选择反向来调节(右键即可) ctrl + J 提取出选择的区域 这时进行等分裁剪即可 点 ...

  8. Git简单多人协作

    感谢廖雪峰老师,引自他的Git教程. Git简单多人协作 首先,可以试图用git push origin <branch-name>推送自己的修改: 如果推送失败,则因为远程分支比你的本地 ...

  9. Mac版jdk1.6

    java sdk 1.6 for mac 在苹果官网下载 https://support.apple.com/kb/DL1572?locale=zh_CN

  10. 简述redis特点及其应用场景

    1. Redis八大特点 1.1. 速度快 说到Redis的速度快,大家的第一反应一定是内存读取,那是肯定的,但如果面试的时候仅仅说到这点,那还是远远不够的,至少还有以下三点要补充: Redis是用C ...