再说博客服务器的KeepAlive

提醒:本文最后更新于 2643 天前,文中所描述的信息可能已发生改变,请仔细核实。

作为经费不足的站长。。。一台VPS已经是我的极限了。欢迎赞助我,喵~

所以如果服务器挂了,肯定是没法KeepAlive的。

但如果服务器没挂,而是应用(可能是Varnish、Nginx、MySQL、PHP等)挂了,怎么办?

虽然如此,人生就是为了活的有点逼格。所以就简单利用cron job来循环检测。

主要目的就是,确保应用在线。流程如下:
1.确定应用是否创建了pid文件,如果没有,肯定没启动,启动应用。
2.如果创建pid文件,但通过pid找不到进程信息,说明应用可能已经崩溃,启动应用。
3.如果都正常,说明应用正常运行中,列出各自状态。

这是按照我的VPS的应用写的。实际大家按照需求,参考改动。

把代码放上来,供大家参考:

#!/bin/sh

###############

VARNISHPIDFILE=/var/run/varnish.pid
if [ ! -r $VARNISHPIDFILE ] ; then
        /etc/init.d/varnishd start
fi


NGINXPIDFILE=/var/run/nginx.pid
if [ ! -r $NGINXPIDFILE ] ; then
        /etc/init.d/nginx start
fi


MYSQLPIDFILE=/var/run/mysql.pid
if [ ! -r $MYSQLPIDFILE ] ; then
        /etc/init.d/mysql start
fi


PHPPIDFILE=/var/run/php-fpm.pid
if [ ! -r $PHPPIDFILE ] ; then
        /etc/init.d/php-fpm start
fi


MEMCACHEPIDFILE=/var/run/memcached.pid
if [ ! -r $MEMCACHEPIDFILE ] ; then
        /etc/init.d/memcached start
fi


REDISPIDFILE=/var/run/redis.pid
if [ ! -r $REDISPIDFILE ] ; then
        /etc/init.d/redisd start
fi

###############

VARNISHPID=`cat $VARNISHPIDFILE`
if ps -p $VARNISHPID | grep -q $VARNISHPID; then
        /etc/init.d/varnishd status
else
        /etc/init.d/varnishd start
fi


NGINXPID=`cat $NGINXPIDFILE`
if ps -p $NGINXPID | grep -q $NGINXPID; then
        /etc/init.d/nginx status
else
        /etc/init.d/nginx start
fi


MYSQLPID=`cat $MYSQLPIDFILE`
if ps -p $MYSQLPID | grep -q $MYSQLPID; then
        /etc/init.d/mysql status
else
        /etc/init.d/mysql start
fi


PHPPID=`cat $PHPPIDFILE`
if ps -p $PHPPID | grep -q $PHPPID; then
        /etc/init.d/php-fpm status
else
        /etc/init.d/php-fpm start
fi


MEMCACHEPID=`cat $MEMCACHEPIDFILE`
if ps -p $MEMCACHEPID | grep -q $MEMCACHEPID; then
        /etc/init.d/memcached status
else
        /etc/init.d/memcached start
fi


REDISPID=`cat $REDISPIDFILE`
if ps -p $REDISPID | grep -q $REDISPID; then
        /etc/init.d/redisd status
else
        /etc/init.d/redisd start
fi

将上述代码保存到任意文件即可,我是保存到/home/web_keepalived。

另简单介绍Crontab命令:

基本格式:
*  *  *  *  *  command 
分 时 日 月 周 命令 
第1列表示分钟1~59 每分钟用*或者 */1表示 
第2列表示小时1~23(0表示0点) 
第3列表示日期1~31 
第4列表示月份1~12 
第5列标识号星期0~6(0表示星期天) 
第6列要运行的命令

现在起,我们就可以通过:

crontab -e

输入:

*/1 * * * * /bin/sh /home/web_keepalived >/dev/null 2>&1

来自动执行(每分钟会执行一次脚本),以达到应用一直在线的目的。

 >/dev/null 2>&1

的目的是不输出信息,因为在cron下没必要输出。

更多crontab命令帮助,请自行搜索。

本篇文章结束,下篇文章更精彩,明天发布哦。

转载请注明转自:kn007的个人博客的《再说博客服务器的KeepAlive