Arch LinuxにLEMPまたはLAMPスタックを使用して「PHPサーバーモニター」ツールをインストールする
PHPサーバーモニターは、PHPで書かれたオープンソースのウェブフロントエンド監視ツールで、サーバー(IP、ドメイン)やサービスが稼働しているかどうかを確認し、監視対象のサービスやポートに問題が発生した場合にメールサービスやSMSを通じて通知を送信することができます。HTTPステータスコードを使用してウェブサイトをチェックし、稼働時間やレイテンシの履歴グラフを表示でき、二段階の認証(管理者と一般ユーザー)を使用することも可能です。
このチュートリアルでは、Apacheをサーバーとして使用するか、Nginxウェブサーバーを使用するかに関係なく、Arch Linuxサーバー環境にPHP Server Monitorをインストールする方法を紹介しますので、自分に最適なインストールプロセスを選択できます。
PHPサーバーモニターの要件
PHPサーバーモニターを他のLinuxプラットフォームにインストールして設定するための一般的な要件として、サーバーには以下のパッケージがインストールされている必要があります。
- PHP 5.3.7+
- PHP パッケージ: cURL, MySQL
- MySQLデータベース
- NginxまたはApacheウェブサーバー
システム要件
NginxでPHPサーバーモニターをインストールするには、LEMPスタックとArchのバーチャルホストを設定するためのガイドとして以下のチュートリアルを使用してください。
- Arch LinuxにLEMP(Linux、Nginx、MySQL、PHP)をインストールする
- Arch LinuxでNginxのバーチャルホストを作成する
Arch LinuxにLAMPスタックを設定するための次のガイドを使用して、ApacheでPHP Server Monitorをインストールします。
- Arch LinuxにLAMP(Linux、Apache、MySQL、PHP)をインストールする
ステップ 1: Nginx/Apache ウェブサーバーを構成する
1. 始める前に、使用しているセットアップが仮想ホスティングの場合、有効なDNSエントリがドメインを指していることを確認するか、DNSサーバーがない場合はローカルhostsファイルを使用する必要があります。このチュートリアルでは、ローカルドメインの偽名phpsrvmon.lanを/etc/hostsファイルを介して設定された両方のウェブサーバー(NginxとApache)を使用した仮想ホスティングを扱っています。
Nginxバーチャルホスト設定ファイルを作成する
2. 新しいNginx仮想ホストを追加するには、/etc/nginx/sites-available/にphpsrvmon.confという名前の新しい設定ファイルを作成し、次のテンプレートを設定の例として使用してください。
$ sudo nano /etc/nginx/sites-available/phpsrvmon.confphpsrvmon.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サーバーモニタにアクセスしたい場合は、そのSSL相当の構成ファイルを作成してください。
$ sudo nano /etc/nginx/sites-available/phpsrvmon-ssl.confphpsrvmon-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の設定ファイルを編集した後、もしここで/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をウェブサーバーとして使用する場合、/etc/httpd/conf/sites-available/にphpsrvmon.confという名前の新しいバーチャルホスト設定ファイルを作成し、次のファイル定義をテンプレートとして使用してください。
$ sudo nano /etc/httpd/conf/sites-available/phpsrvmon.confphpsrvmon.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と同じ手順を使用して、ウェブファイルの提供パスが変更された場合に備えてドキュメントルートディレクトリを作成し、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.iniNginx/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すべての変更が完了したら、変更を適用するためにサービスを再起動してください。
$ sudo systemctl restart php-fpm
sudo systemctl restart nginx
sudo systemctl restart httpdステップ3: PHPサーバーモニターMySQLデータベースを作成する
10. PHPサーバーモニターが情報を保存するために必要なデータベースを作成するには、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サーバーモニターデータベースを作成できます。
ステップ4:PHPサーバーモニターをインストールする
11. PHPサーバーモニターツールをダウンロードする前に、wgetコマンドがインストールされていることを確認してください。
$ sudo pacman -S wget12. 最新のPHPサーバーモニターのバージョンを取得するには、以下のリンクにアクセスしてtar.gzアーカイブファイルをダウンロードするか、以下に記載されている公式Gitダウンロードリンクを使用してください。
- http://www.phpservermonitor.org/download/
- 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.gz13. 最新版をダウンロードしたら、tar コマンドで展開し、以下のコマンドを使用してすべての展開されたコンテンツをWebサーバーのドキュメントルートパスにコピーしてください。
$ tar xfvz phpservermon-v3.0.1.tar.gz
sudo cp -r phpservermon/* /srv/www/phpsrvmon/14. それからブラウザを開いて、ドメイン名に移動してください(このチュートリアルで提示されているように仮想ホストを使用している場合、それ以外の場合はサーバーのIPアドレスを使用してください)そして挨拶ページで「始めましょう」ボタンを押してください。
15. 次の画面で、MySQLデータベースの情報を入力し、設定を保存をクリックしてください。
16. 設定ファイルが書き込めないというエラーが表示された場合は、以下のコマンドを使用して書き込み可能なconfig.phpファイルを作成し、設定を保存しましたをクリックしてください。
$ su -c “> /srv/www/phpsrvmon/config.php”
sudo chmod 777 /srv/www/phpsrvmon/config.php17. 設定を保存した後、PHPサーバーモニターの管理ユーザーを作成し、自分の資格情報を選択してインストールボタンをクリックします。
18. インストールプロセスが完了したら、モニターに移動ボタンをクリックし、ログインページにリダイレクトされます。資格情報を使用してログインし、デフォルトのPHPサーバーモニターページが表示されます。また、PHPサーバーモニターのconfig.phpファイルに対する変更を元に戻してください。
$ sudo chmod 754 /srv/www/phpsrvmon/config.php19. 監視用に新しいウェブサイトを追加するには、サーバー -> 新規追加 に移動し、必要なフィールドにサーバー設定を入力して、保存 ボタンをクリックします。
20. すべてのサーバーとサービスの監視プロセスを開始するには、更新ボタンを押して、デフォルトのホームページにリダイレクトされ、あなたのウェブサイト/サービスの状態が表示されます。
21. PHPサーバーモニターが定期的にサーバー/サービスのステータスを自動でチェックするためには、システムにCronジョブスケジューラーをインストールし、cronファイルに監視の時間間隔のエントリを追加する必要があります。
$ sudo pacman -S cronie
sudo systemctl start cronie
sudo systemctl enable cronie22. ウェブサイトを5分ごとにチェックする新しいエントリをcronファイルに追加するには、sudo crontab –e コマンドを使用するか、または、/var/spool/cron/ ディレクトリにあるルートcronファイルを手動で編集して、PHPサーバーモニターのインストールディレクトリに合わせてパスを調整します。すべてのcrontabエントリを表示するには、sudo crontab -lコマンドラインを使用します。
$ sudo nano /var/spool/cron/root次のエントリを追加します - 時間帯とインストールパスを適宜調整してください。
*/5 * * * * /usr/bin/php /srv/www/phpsrvmon/cron/status.cron.php結論
PHPサーバーモニターは、Nagios、Cacti、またはZabbixのような他の監視サービスほど複雑さが増すわけではありませんが、リソース消費が非常に軽く、監視対象のウェブサイトやサービスが技術的な問題を抱えたりダウンしている場合に、膨大なSMSゲートウェイリストを通じてメールやSMSを送信するように設定することで、監視プラットフォームとしての役割を果たすことができます。
ホームページ: PHPサーバーモニター






















