OpenShift的云主机会经常性的进行维护操作或者由于性能的原因出现503、502等错误,导致网站应用无法访问,一般来说,你可以登陆OpenShift的后台或者使用命令进行重启操作,但是甚为不便,要是能够让其自动检测到问题后自动重启应用,那就再好不过了。
方法1:
网上搜索了一下,有很多大同小异的自动重启的shell脚本,下面是无需修改的改进版脚本,使用了变量来代替你的应用的信息:
#!/bin/bash
curl -I $OPENSHIFT_APP_DNS 2> /dev/null | head -1 | grep -q ‘200\|301\|302’
s=$?
if [ $s != 0 ];
then
echo “`date +”%Y-%m-%d %I:%M:%S”` down” >> $OPENSHIFT_DATA_DIR/web_error.log
let t=`date +”%M”`%10
if [ $t -eq 0 ];
then
echo “`date +”%Y-%m-%d %I:%M:%S”` restarting…” >> $OPENSHIFT_DATA_DIR/web_error.log
/usr/bin/gear stop 2>&1 /dev/null
/usr/bin/gear start 2>&1 /dev/null
echo “`date +”%Y-%m-%d %I:%M:%S”` restarted!!!” >> $OPENSHIFT_DATA_DIR/web_error.log
fi
else
echo “`date +”%Y-%m-%d %I:%M:%S”` is ok” > $OPENSHIFT_DATA_DIR/web_run.log
fi
将其保存为restart.sh,并复制到app-root/repo/.openshift/cron/minutely目录,使用
chmod 711 restart.sh命令或者使用WinSCP将其权限改为711。
不过,当你执行完上面的步骤后,会发现,这个脚本会不起作用,网上的教程基本上没有告诉你还有一个最重要的步骤没做,安装Cron服务。安装成功后,等待10分钟手动停止应用。看是否能够成功重启!
方法2:
openshift每天都会维护,维护后应用需要重启,不然再访问就会503,需要手动进入后台重启应用,故用如下shell每天自动重启所有应用,每分钟检查一次,如果宕机每隔10分钟重启一次(防止频繁重启造成服务器压力过大)。
CSDN中的下载地址:http://www.benen.cn/xz/ctl_all_restart.rar
将以上shell存入ctl_all_restart.sh中,放到/var/lib/openshift/你的用户名/app-root/repo/.openshift/cron/minutely/目录下,并赋执行权限。
chmod 711 ctl_all_restart.sh