Apache重新启动CentOS脚本

时间:2020-02-23 14:29:41  来源:igfitidea点击:

Apache Web服务器重启很容易,但是您将如何自动进行重启呢?几天前,我的apache服务器崩溃了,我的关闭了将近3个小时。
我只是在浏览器中打开时才发现的。
因此,我想到编写一个脚本,该脚本将检查我的是否定期关闭以及是否关闭,然后会发出apache restart命令。

Apache重新启动CentOS脚本

我正在使用CentOS操作系统,但是我的脚本也应该在其他Unix服务器上也可以使用。
要使apache重新启动脚本设置,我们需要以下内容:

  • 一个PHP脚本,它将检查是否在线以及PHP是否运行良好。

  • 一个shell脚本,将使用上述PHP来检查是否离线,在这种情况下,请重新启动Apache Web服务器。

  • 将cron作业设置为定期运行。

PHP脚本检查状态

这是我编写的用于检查状态的PHP脚本。

servercheck.php

<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://www.theitroad.local'); //Connect to your server
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11");
curl_setopt($curl, CURLOPT_TIMEOUT, 15);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_exec($curl);
$info = curl_getinfo($curl);
   
//Check server's state
if ((!curl_error($curl)) && ($info['http_code'] != 0)) {
 echo 1;
} else {
 echo 0;
}
   
curl_close($curl);
?>

这是一个非常简单的脚本,如果打开,则返回1;如果关闭,则返回0。

Apache重启脚本

这是我写来调用上述PHP的Shell脚本。

apache_restart.sh

#!/bin/bash
 
# Make sure you make these paths correct
result=`/usr/local/bin/php /home/journal/scripts/apache_restart/servercheck.php`
echo $result
if [ $result != 1 ]
then
/etc/init.d/httpd restart
sleep 10
restartcheck=`/usr/local/bin/php /home/journal/scripts/apache_restart/servercheck.php`
if [ $restartcheck == 1 ]
then
echo "Apache server have been successfully restarted!" | mail -s "Server Alert: Apache restarted" [email protected]
exit
else
echo "Apache server is still in error state!" | mail -s "Server Alert: Apache in error state" [email protected]
exit
fi
exit
fi

此apache重新启动脚本首先调用PHP以检查状态。
如果关闭,则它将重新启动apache服务器,并在10秒钟后再次检查状态。
如果启动,则会向指定的电子邮件ID发送一封邮件,以便我们知道服务器已重启多少次。

如果重新启动失败,则apache重新启动脚本会发送一封带有错误消息的邮件,这表明服务器确实存在问题。

确保使用" chmod"命令授予脚本执行权限,并执行一次以对其进行测试。
另外,请检查服务器重新启动命令,因为它取决于您的服务器操作系统。

为Apache重新启动脚本设置Cron作业

只需在crontab条目中添加以下行即可每五分钟运行一次以上脚本。
确保从根目录提供正确的路径。

*/5 * * * * /home/journal/scripts/apache_restart/apache_restart.sh > /home/journal/scripts/apache_restart/cron/apache_restart.log 2>&1

日志文件将包含脚本上一次运行的输出。
现在我们已经准备好脚本,只要您的服务器重新启动或者通过电子邮件处于错误状态,您就会收到通知。

参考:Apache HTTPD