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分钟,看看是否能够成功重启了。

标签: Cron, OpenShift

已有 5 条评论

  1. 初话 初话

    安装了Cron没有这个目录.openshift/cron/minutely 怎么解决

    1. chonghua chonghua

      按道理不应该啊,这个目录基本上都自带,和装不装cron无关

      1. 初话 初话

        那是怎么回事?

        1. chonghua chonghua

          这个我也不是很清楚,还没遇到过这种情况。你是进得repo目录吗?

    2. 如果sftp找不到.openshift/cron/minutely目录,使用git push一次就会出现了

添加新评论