网站搜索

在 Arch Linux 中使用 LEMP 或 LAMP Stack 安装“PHP Server Monitor”工具


PHP Server Monitor 是一个用 PHP 编写的开源 Web 前端监控工具,可以验证您的服务器(IP、域)或服务是否正常运行,并可以通过邮件服务或 SMS 向您发送通知如果受监控的服务或端口出现问题。它使用 HTTP 状态代码检查网站,可以显示正常运行时间和延迟的历史图表,并且可以使用两个级别的身份验证(管理员和普通用户)。

本教程向您介绍了一种在 Arch Linux 服务器环境中安装 PHP Server Monitor 的方法,无论使用 Apache 作为服务器还是 Nginx Web 服务器,因此,您可以选择最适合您的安装过程。

PHP 服务器监控要求

作为为任何其他 Linux 平台安装和设置 PHP Server Monitor 的一般要求,您的服务器需要安装以下软件包。

  1. PHP 5.3.7+
  2. PHP 软件包:cURL、MySQL
  3. MySQL数据库
  4. Nginx 或 Apache Web 服务器

系统要求

要使用 Nginx 安装 PHP Server Monitor,请使用以下教程作为在 Arch 上设置 LEMP 堆栈和虚拟主机的指南。

  1. 在 Arch Linux 中安装 LEMP(Linux、Nginx、MySQL、PHP)
  2. 在 Arch Linux 中创建 Nginx 虚拟主机

要使用 Apache 安装 PHP Server Monitor,请使用以下指南在 Arch Linux 上设置 LAMP 堆栈。

  1. 在 Arch Linux 中安装 LAMP(Linux、Apache、MySQL、PHP)

第 1 步:配置 Nginx/Apache Web 服务器

1. 在我们开始之前,如果您的设置使用虚拟主机,您需要确保您有有效的 DNS 条目指向您的域,或者使用本地 hosts 文件(以防万一)没有 DNS 服务器。本教程使用虚拟主机,并通过 配置了本地域假冒的 Web 服务器(NginxApache) - phpsrvmon.lan /etc/hosts 文件。

创建 Nginx 虚拟主机配置文件

2. 要添加新的 Nginx 虚拟主机,请使用 phpsrvmon.conf/etc/nginx/sites-available/ 上创建新的配置文件命名并使用以下模板作为配置示例。

sudo nano /etc/nginx/sites-available/phpsrvmon.conf

将以下代码添加到 phpsrvmon.conf 文件中。

server {
    listen 80;
    server_name phpsrvmon.lan;

    access_log /var/log/nginx/phpsrvmon.lan-access.log;
    error_log /var/log/nginx/phpsrvmon.lan-error.log;

                root /srv/www/phpsrvmon;

    location / {
    index index.php index.html index.htm;
                autoindex on;
}

location ~ \.php$ {
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }
}

3. 如果您想通过安全 HTTP 协议访问 PHP Sever Monitor,请创建其 SSL 等效配置文件。

sudo nano /etc/nginx/sites-available/phpsrvmon-ssl.conf

将以下代码添加到 phpsrvmon-ssl.conf 文件中。

server {
    listen 443 ssl;
    server_name phpsrvmon.lan;

       root /srv/www/phpsrvmon;
       ssl_certificate     /etc/nginx/ssl/nginx.crt;
       ssl_certificate_key  /etc/nginx/ssl/nginx.key;
       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;
       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

    access_log /var/log/nginx/phpsrvmon.lan-ssl_access.log;
    error_log /var/log/nginx/phpsrvmon.lan-ssl_error.log;

    location / {
    index index.php index.html index.htm;
                autoindex on;
 }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }
}

4. 编辑 Nginx conf 文件后,创建文档根路径,如果您将其更改为 /srv/www/phpsrvmon/,请使用 n2ensite 实用程序并重新启动 Nginx 以反映更改。

sudo mkdir -p /srv/www/phpsrvmon/
sudo n2ensite phpsrvmon
sudo n2ensite phpsrvmon-ssl
sudo systemctl restart nginx

如果您的虚拟主机需要新的 SSL 证书,请使用 nginx_gen_ssl 命令和您的域名生成一个证书,并相应地修改 phpsrvmon-ssl.conf

创建 Apache 虚拟主机配置文件

5. 如果您使用 Apache 作为 Web 服务器,请使用 phpsrvmon 在 /etc/httpd/conf/sites-available/ 上创建新的虚拟主机配置文件。 conf 名称并使用以下文件定义作为模板。

sudo nano /etc/httpd/conf/sites-available/phpsrvmon.conf

将以下代码添加到 phpsrvmon.conf 文件中。

<VirtualHost *:80>
                DocumentRoot "/srv/www/phpsrvmon"
                ServerName phpsrvmon.lan
                ServerAdmin [email 
                ErrorLog "/var/log/httpd/phpsrvmon-error_log"
                TransferLog "/var/log/httpd/phpsrvmon-access_log"

<Directory />
    Options +Indexes
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>
</VirtualHost>

6. 如果您还需要在 HTTPS 协议上访问 PHP 服务器监视器,请使用以下语句创建新的虚拟主机 SSL 配置文件。

sudo nano /etc/httpd/conf/sites-available/phpsrvmon-ssl.conf

将以下完整代码添加到 phpsrvmon-ssl.conf 文件中。

<VirtualHost *:443>
                ServerName phpsrvmon.lan
                DocumentRoot "/srv/www/phpsrvmon"
                ServerAdmin [email 
                ErrorLog "/var/log/httpd/phpsrvmon.lan-error_log"
                TransferLog "/var/log/httpd/phpsrvmon.lan-access_log"

SSLEngine on
SSLCertificateFile "/etc/httpd/conf/ssl/phpsrvmon.lan.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/phpsrvmon.lan.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />
    Options +Indexes
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>
</VirtualHost>

7. 使用与 Nginx 相同的过程,创建文档根目录,如果 Web 文件服务路径已更改,请使用 a2ensite 命令激活 Apache 虚拟主机并重新启动守护进程应用更改。

sudo mkdir -p /srv/www/phpsrvmon/
sudo a2ensite phpsrvmon
sudo a2ensite phpsrvmon-ssl
sudo systemctl restart httpd

要为此虚拟主机生成新的 SSL 证书和密钥,请使用 apache_gen_ssl 实用程序,将您的域名附加到证书名称上并修改 /etc/httpd/conf/sites-available/phpsrvmon-ssl.conf 文件,用新的替换旧的 SSL 证书和密钥路径和名称。

第 2 步:编辑 PHP 配置

8.为了避免一些安装错误,PHP服务器监视器在验证系统要求时会抛出异常,打开php.ini文件并进行以下调整。

sudo nano /etc/php/php.ini

如果 Nginx/Apache 文档根路径已更改(默认为 /srv/http/),请使用 [Ctrl+w] 定位 open_basedir语句并通过添加冒号前缀“ : ”来附加新路径 - 在本例中,新路径为 /srv/www/ - 如下例所示。

open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/:/srv/www/

通过取消注释(删除前面的分号)来搜索并启用 PHP pdo、mysqli 和curl 扩展。

extension=curl.so
extension=mysqli.so
extension=pdo_mysql.so

使用此页面找到时区并设置您的当地时间。

date.timezone = Continent/City

9.完成所有更改后,重新启动您的服务以应用更改。

sudo systemctl restart php-fpm
sudo systemctl restart nginx
sudo systemctl restart httpd

第3步:创建PHP服务器监控MySQL数据库

10. 要创建 PHP Server Monitor 存储信息所需的数据库,请登录 MySQL/MariaDB 数据库并使用以下命令创建一个新数据库(将数据库、用户和密码替换为您首选的凭据)。

mysql -u root -p

MariaDB > create database phpsrvmon;
MariaDB > create user phpsrvmon_user@localhost identified by "user_password";
MariaDB > grant all privileges on phpsrvmon.* to phpsrvmon_user@localhost;
MariaDB > flush privileges;
MariaDB > quit

如果您的系统上安装了 PhpMyAdmin,您可以通过从其 Web 界面访问 MySQL/MariaDB 来创建 PHP Server Monitor 数据库。

第4步:安装PHP服务器监视器

11. 在继续下载 PHP Server Monitor 工具之前,请确保您已经安装了 wget 命令。

sudo pacman -S wget

12. 要获取最新的 PHP Server Monitor 版本,请访问以下链接并下载 tar.gz 存档文件或使用下面提供的官方 Git 下载链接。

  1. http://www.phpservermonitor.org/download/
  2. https://github.com/phpservermon/phpservermon

或者,您也可以使用以下 wget 命令直接下载。

wget http://downloads.sourceforge.net/project/phpservermon/phpservermon/PHP%20Server%20Monitor%20v3.0.1/phpservermon-v3.0.1.tar.gz

13.下载最新版本后,使用tar命令解压,并使用以下命令将所有解压内容复制到Web服务器文档根路径。

tar xfvz phpservermon-v3.0.1.tar.gz
sudo cp -r phpservermon/* /srv/www/phpsrvmon/

14. 然后打开浏览器并导航到您的域名(如果您使用本教程中介绍的虚拟主机,否则使用您的服务器 IP 地址),然后在问候语页面上点击“开始”按钮。

15. 在下一个屏幕上输入您的 MySQL 数据库信息并点击保存配置

16. 如果出现错误,提示您的配置文件无法写入,请使用以下命令创建可写的 confing.php 文件,然后点击 I已保存配置

su -c “> /srv/www/phpsrvmon/config.php”
sudo chmod 777 /srv/www/phpsrvmon/config.php

17.保存配置后,为 PHP Server Monitor 创建一个管理用户,选择您的凭据并点击安装按钮。

18.安装过程完成后,点击转到您的显示器按钮,您将被重定向到登录页面。使用您的凭据登录,系统将提示您进入默认的 PHP 服务器监视器页面。同时恢复对 PHP Server Monitor config.php 文件的更改。

sudo chmod 754 /srv/www/phpsrvmon/config.php

19. 要添加新网站进行监控,请转到服务器 -> 添加新网站,用您的服务器设置填写必填字段,然后点击保存按钮。

20.要开始对所有服务器和服务进行监控,请点击更新按钮,您将被重定向到默认主页,您将在其中看到您的网站/服务状态。

21.为了让 PHP Server Monitor 定期自动检查您的服务器/服务状态,您需要在系统上安装 Cron 作业调度程序并添加监控时间cron 文件中的周期条目。

sudo pacman -S cronie
sudo systemctl start cronie
sudo systemctl enable cronie

22. 要在 cron 文件中添加每 5 分钟检查一次网站的新条目,请使用 sudo crontab –e 命令,或者更好的是,手动编辑位于 < 的根 cron 文件。 b>/var/spool/cron/ 目录,通过调整路径来匹配您的 PHP Server Monitor 安装目录。要列出所有 crontab 条目,请使用 sudo crontab -l 命令行。

sudo nano /var/spool/cron/root

添加以下条目 - 相应调整时间段和安装路径

*/5 * * * * /usr/bin/php   /srv/www/phpsrvmon/cron/status.cron.php

结论

尽管 PHP Server Monitor 的复杂性没有像 NagiosCactiZabbix 等其他监控服务那样增加,但它的资源往往非常少消耗,并且可以通过配置通过庞大的短信网关列表发送电子邮件或短信来完成监控平台的工作,以防您受监控的网站和服务遇到技术问题或出现故障。

主页:PHP服务器监视器