Ubuntu 下监控并自动重启 Apache

很多时候网站服务器挂掉手工重启是件很麻烦的事情,使用以下方法可以做到自动重启,并且生成相应的日志记录。相关文章:Ubuntu 下监控并自动重启网卡

1 创建被监控的文件 OK.php

内容如下:

OK

为了尽可能简单,这里只用一个内容为 OK 的空 php 文件作为监控文件。
当然如果你想要监控其他状态不妨也写在这个 OK.php,例如监控 MySQL 连接是否在正常:

connect_error) {
    die("连接失败: " . $conn->connect_error);
} 
echo "OK";
?>

总之,只要正常时返回 OK 即可。

上传此文件到服务器根目录:/var/www/

2 创建脚本 auto_restart_apache.sh

内容如下:

#!/bin/bash
wget http://127.0.0.1/OK.php > /dev/null 2>&1
if [ $? -ne 0 ]
then
#	lnmp restart >/dev/null 2>&1
	service apache2 restart >/dev/null 2>&1
	service httpd restart >/dev/null 2>&1
	echo "apache restarted at `date +%y-%m-%d\ %H:%M:%S`" >> /alidata/tools/apache_restart_logs.txt
else
	wt=`cat OK.php `
	echo $wt
	if [ $wt != 'OK' ]
	then
#		lnmp restart > /dev/null 2>&1
		service apache2 restart >/dev/null 2>&1
		service httpd restart >/dev/null 2>&1
		echo "apache restarted at `date +%y-%m-%d\ %H:%M:%S`" >> /alidata/tools/apache_restart_logs.txt
	else
		echo "apache works fine at `date +%y-%m-%d\ %H:%M:%S`" >> /alidata/tools/apache_restart_logs.txt
	fi
fi
rm -rf OK.php

上传此文件到服务器。

注释:
1)该脚本会读取 OK.php 文件并且在本地生成 apache_restart_logs.txt 日志文件。
2)如果不能访问到 OK.php 则重启 apache 服务。

3 创建定时任务

创建定时任务有两种方法一种是直接编辑 /etc/crontab,运行:

sudo vim /etc/crontab

在后面添加:

*/30 *  * * *   root    /alidata/tools/auto_restart_apache.sh >> /alidata/tools/logs.txt 2>&1

其中 */30 表示每 30 分钟执行一次脚本。
关于 crontab 时间说明如下:

# .---------------- minute (0 - 59) 
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ... 
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)  OR
#sun,mon,tue,wed,thu,fri,sat 
# |  |  |  |  |
# *  *  *  *  *  command to be executed

另一种是使用命令:

crontab -e

在后面添加:

*/30 *  * * *   /alidata/tools/auto_restart_apache.sh >> /alidata/tools/logs.txt 2>&1

我的理解,这两种方式前者添加的是一个整个系统所有用户的定时任务,所以在时间后面需要指定用户 root。后者是当前用户的定任务。采用哪一种都可以。

重启定时任务:

sudo service crond restart

如果顺利的话这一脚本就会每隔 30 分钟执行一次,并且可以在 /alidata/tools/apache_restart_logs.txt 看到脚本执行的日志以及 /alidata/tools/logs.txt 看到每次执行的输出。因为频率低以及只输出不多的几个字符,这两个 log 文件通常不会增加很多,不过也应当注意下及时清除。

Add a Comment

Your email address will not be published. Required fields are marked *