การติดตั้งเครื่องมือ "PHP Server Monitor" โดยใช้ LEMP หรือ LAMP Stack ใน Arch Linux
PHP Server Monitor เป็นเครื่องมือตรวจสอบส่วนหน้าของเว็บแบบโอเพ่นซอร์สที่เขียนด้วย PHP ซึ่งสามารถตรวจสอบว่าเซิร์ฟเวอร์ของคุณ (IP, โดเมน) หรือบริการต่างๆ ทำงานอยู่หรือไม่ และสามารถส่งการแจ้งเตือนถึงคุณผ่านบริการอีเมลหรือ SMS หากเกิดปัญหากับบริการหรือพอร์ตที่ได้รับการตรวจสอบ ตรวจสอบเว็บไซต์โดยใช้รหัสสถานะ HTTP สามารถแสดงกราฟประวัติสถานะการออนไลน์และเวลาแฝง และสามารถใช้การรับรองความถูกต้องได้สองระดับ (ผู้ดูแลระบบและผู้ใช้ทั่วไป)
บทช่วยสอนนี้นำเสนอวิธีที่คุณสามารถติดตั้ง PHP Server Monitor ในสภาพแวดล้อมเซิร์ฟเวอร์ Arch Linux โดยใช้ Apache เป็นเซิร์ฟเวอร์หรือเว็บเซิร์ฟเวอร์ Nginx คุณจึงสามารถเลือกขั้นตอนการติดตั้งที่เหมาะกับคุณที่สุดได้
ข้อกำหนดการตรวจสอบเซิร์ฟเวอร์ PHP
ตามข้อกำหนดทั่วไปในการติดตั้งและตั้งค่า PHP Server Monitor สำหรับแพลตฟอร์ม Linux อื่นๆ เซิร์ฟเวอร์ของคุณจำเป็นต้องติดตั้งแพ็คเกจต่อไปนี้
- PHP 5.3.7+
- แพ็คเกจ PHP: cURL, MySQL
- ฐานข้อมูล MySQL
- เว็บเซิร์ฟเวอร์ Nginx หรือ Apache
ความต้องการของระบบ
หากต้องการติดตั้ง PHP Server Monitor ด้วย Nginx ให้ใช้บทช่วยสอนต่อไปนี้เป็นแนวทางในการตั้งค่า LEMP stack และ Virtual Hosts บน Arch
- ติดตั้ง LEMP (Linux, Nginx, MySQL, PHP) ใน Arch Linux
- สร้างโฮสต์เสมือน Nginx ใน Arch Linux
หากต้องการติดตั้ง PHP Server Monitor ด้วย Apache ให้ใช้คำแนะนำต่อไปนี้เพื่อตั้งค่า LAMP stack บน Arch Linux
- ติดตั้ง LAMP (Linux, Apache, MySQL, PHP) ใน Arch Linux
ขั้นตอนที่ 1: กำหนดค่าเว็บเซิร์ฟเวอร์ Nginx/Apache
1. ก่อนที่เราจะเริ่ม หากการตั้งค่าของคุณใช้โฮสติ้งเสมือน คุณต้องแน่ใจว่าคุณมีรายการ DNS ที่ถูกต้องซึ่งชี้ไปยังโดเมนของคุณ หรือใช้ไฟล์ โฮสต์ ในเครื่องในกรณีที่คุณไม่' ไม่มีเซิร์ฟเวอร์ DNS บทช่วยสอนนี้ใช้โฮสติ้งเสมือนกับทั้งเว็บเซิร์ฟเวอร์ (Nginx และ Apache) ที่กำหนดค่าด้วยโดเมนท้องถิ่นปลอม – phpsrvmon.lan – ถึง /etc/hosts ไฟล์
สร้างไฟล์การกำหนดค่าโฮสต์เสมือน Nginx
2. หากต้องการเพิ่ม Nginx Virtual Host ใหม่ ให้สร้างไฟล์การกำหนดค่าใหม่บน /etc/nginx/sites-available/ ด้วย phpsrvmon.conf ตั้งชื่อและใช้เทมเพลตต่อไปนี้เป็นตัวอย่างการกำหนดค่า
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. หากคุณต้องการเข้าถึง PHP Sever Monitor ผ่านโปรโตคอล HTTP ที่ปลอดภัย ให้สร้างไฟล์การกำหนดค่าที่เทียบเท่ากับ 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 แล้ว ให้สร้างพาธ Document Root ในกรณีที่คุณเปลี่ยนดังนี้เป็น /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 เป็นเว็บเซิร์ฟเวอร์ ให้สร้างไฟล์การกำหนดค่า Virtual Host ใหม่บน /etc/httpd/conf/sites-available/ ด้วย phpsrvmon 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. หากคุณต้องการการเข้าถึง PHP Server Monitor บนโปรโตคอล HTTPS ให้สร้างไฟล์การกำหนดค่า Virtual Host 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 สร้างไดเร็กทอรี Document Root ในกรณีที่เส้นทางการให้บริการไฟล์เว็บมีการเปลี่ยนแปลง ให้เปิดใช้งาน Apache Virtual Hosts โดยใช้คำสั่ง a2ensite และรีสตาร์ท daemon ไปที่ ใช้การเปลี่ยนแปลง
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 Server Monitor นั้นจะโยนทิ้งเมื่อตรวจสอบความต้องการของระบบที่เปิดไฟล์ 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: สร้างฐานข้อมูล MySQL ตรวจสอบเซิร์ฟเวอร์ PHP
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 บนระบบของคุณ คุณสามารถสร้างฐานข้อมูล PHP Server Monitor ได้โดยการเข้าถึง MySQL/MariaDB จากเว็บอินเตอร์เฟส
ขั้นตอนที่ 4: ติดตั้ง PHP Server Monitor
11. ก่อนดำเนินการดาวน์โหลดเครื่องมือ PHP Server Monitor ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งคำสั่ง wget แล้ว
sudo pacman -S wget
12. หากต้องการรับ PHP Server Monitor เวอร์ชันล่าสุด โปรดไปที่ลิงก์ต่อไปนี้และดาวน์โหลดไฟล์เก็บถาวร 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.gz
13. หลังจากดาวน์โหลดเวอร์ชันล่าสุด ให้แตกไฟล์ด้วยคำสั่ง tar และคัดลอกเนื้อหาที่แตกออกมาทั้งหมดไปยังพาธรูทของเอกสารเซิร์ฟเวอร์เว็บโดยใช้คำสั่งต่อไปนี้
tar xfvz phpservermon-v3.0.1.tar.gz
sudo cp -r phpservermon/* /srv/www/phpsrvmon/
14. จากนั้นเปิดเบราว์เซอร์และไปที่ชื่อโดเมนของคุณ (ในกรณีที่คุณใช้โฮสต์เสมือนตามที่แสดงในบทช่วยสอนนี้ มิฉะนั้นให้ใช้ที่อยู่ IP ของเซิร์ฟเวอร์ของคุณ ) และบนหน้าทักทาย ให้กดปุ่ม Let’s go
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 Server Monitor เริ่มต้น คืนค่าการเปลี่ยนแปลงไปยังไฟล์ config.php ของ PHP Server Monitor ด้วย
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 หรือ ดีกว่านั้น แก้ไขไฟล์ root 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 จะไม่มีความซับซ้อนเพิ่มขึ้นเหมือนกับบริการตรวจสอบอื่นๆ เช่น Nagios, Cacti หรือ Zabbix แต่มีแนวโน้มที่จะใช้ทรัพยากรเพียงเล็กน้อย และสามารถตอบสนองงานในฐานะแพลตฟอร์มการตรวจสอบโดยการกำหนดค่าให้ส่งอีเมลหรือข้อความ SMS ผ่านรายการเกตเวย์ SMS ขนาดใหญ่ ในกรณีที่เว็บไซต์และบริการที่ได้รับการตรวจสอบของคุณประสบปัญหาทางเทคนิคหรือล่ม
หน้าแรก: การตรวจสอบเซิร์ฟเวอร์ PHP