OpenShift的云主机会经常性的进行维护操作或者由于性能的原因出现503、502等错误,导致网站应用无法访问,一般来说,你可以登陆OpenShift的后台或者使用命令进行重启操作,但是甚为不便,要是能够让其自动检测到问题后自动重启应用,那就再好不过了。
网上搜索了一下,有很多大同小异的自动重启的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服务。
点击这个链接,找到名为“Cron 1.4 ”的服务,
点击添加。
成功安装后,你就可以手动停止应用,等待10分钟,看看是否能够成功重启了。