VPS侦探论坛

 找回密码
 注册
查看: 63868|回复: 23

Nginx 502 Bad Gateway 自动重启脚本

[复制链接]
发表于 2010-11-17 21:03:25 | 显示全部楼层 |阅读模式

推荐脚本
需要确保系统已安装curl,centos可以执行:yum install curl,debian/ubuntu可以执行:apt-get install curl

winscpvi有或nano在/root目录下创建502.sh 内容如下:
  1. #!/bin/bash
  2. # author: licess
  3. # website: http://www.lnmp.org

  4. CheckURL="https://www.vpser.net"

  5. STATUS_CODE=`curl -o /dev/null -m 10 --connect-timeout 10 -s -w %{http_code} $CheckURL`
  6. #echo "$CheckURL Status Code:\t$STATUS_CODE"
  7. if [ "$STATUS_CODE" = "502" ]; then
  8.         /etc/init.d/php-fpm restart
  9. fi
复制代码
chmod +x /root/502.sh
crontab 一分钟执行一次。上面的https://www.vpser.net改成你的地址,如果该页面是静态,需换成以php的页面地址。
crontab 教程:https://www.vpser.net/manage/crontab.html

其他的重启脚本,下面这个如果php函数里禁用了shell_exec 将无法使用。
  1. #!/usr/bin/php
  2. <?
  3. $url = 'https://www.vpser.net';
  4. $cmd = '/etc/init.d/php-fpm restart';

  5. for($i = 0; $i < 5; $i ++){
  6. $exec = "curl --connect-timeout 3 -I $url 2>/dev/null";
  7. $res = shell_exec($exec);

  8. if(stripos($res,'502 Bad Gateway') !== false){
  9. shell_exec($cmd);
  10. exit();
  11. }
  12. }
  13. ?>
复制代码
crontab 一分钟执行一次。 url和cmd根据自己的改。

原理就是用curl获取HTTP头,发现502状态码就执行重启php-fpm的命令。
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2010-12-24 14:50:30 | 显示全部楼层


老大,这代码最后怎么有个?>
是不是多了,或者开头应该有个<?
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 2010-12-24 16:08:05 | 显示全部楼层

回复 2# 的帖子


已修正
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2010-12-24 16:55:22 | 显示全部楼层



Parse error: syntax error, unexpected $end in /root/autorestartphp.sh on line 15

第15行就是最后一行只有一个?>

这是啥问题啊老大
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 2010-12-24 17:04:15 | 显示全部楼层

回复 4# 的帖子


可能是里面的一下符合,如‘ } 之类的成了中文下面的,检查一下看看。

军哥运维代购:http://shop63846532.taobao.com/

发表于 2010-12-24 17:36:41 | 显示全部楼层

请问 这代码放在哪???????????
发表于 2011-1-24 10:15:43 | 显示全部楼层

原帖由 mmdmm 于 2010-12-24 17:36 发表
请问 这代码放在哪???????????


超级菜鸟同问。
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2011-1-24 11:12:58 | 显示全部楼层

回复 7# 的帖子


crontab -e
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 2011-1-24 14:45:14 | 显示全部楼层


老大 用crontab -e 命令 编辑好内容后 如何保存并关闭呢。。

军哥运维代购:http://shop63846532.taobao.com/

发表于 2011-1-24 22:51:30 | 显示全部楼层



esc
:
wq
发表于 2011-1-25 13:52:42 | 显示全部楼层

按 ESC?
然后按 :
再按 wq?
发表于 2011-1-26 19:24:16 | 显示全部楼层

Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 2011-3-31 11:47:37 | 显示全部楼层

回复 1# 的帖子

crontab中每分钟启动执行一次,这个命令怎么写?
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2011-3-31 12:45:01 | 显示全部楼层

回复 13# 的帖子

*/1 * * * * 文件

军哥运维代购:http://shop63846532.taobao.com/

发表于 2011-9-5 10:58:41 | 显示全部楼层

回复 1# 的帖子

Do you want to retry the same edit? n
crontab: edits left in /tmp/crontab.XXXX1vmv68

出现这个是什么原因?

麻烦,能抽空回答下吗?谢谢了

[ 本帖最后由 智立更生 于 2011-9-5 11:53 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|VPS侦探 ( 鲁ICP备16040043号-1 )

GMT+8, 2024-9-23 14:40 , Processed in 0.030863 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表