ค้นหาเว็บไซต์

วิธีติดตั้ง LEMP บนเซิร์ฟเวอร์ Debian 10


สแต็ก “LEMP” เป็นส่วนผสมของซอฟต์แวร์โอเพ่นซอร์สที่โดยทั่วไปจะติดตั้งบนเซิร์ฟเวอร์ Linux เพื่อปรับใช้แอปพลิเคชันแบบไดนามิก คำนี้เป็นคำย่อที่แสดงถึงระบบปฏิบัติการ Linux, เว็บเซิร์ฟเวอร์ Nginx, ฐานข้อมูล MariaDB และการเขียนโปรแกรม PHP

อ่านเพิ่มเติม: วิธีติดตั้ง LAMP บนเซิร์ฟเวอร์ Debian 10

แม้ว่าสแต็ก “LEMP ” นี้โดยปกติจะมี MySQL เป็นระบบจัดการฐานข้อมูล แต่ Linux บางตัว เช่น Debian — ให้ใช้ MariaDB เป็นการแทนที่แบบดรอปอินสำหรับ MySQL

ความต้องการ

  1. วิธีการติดตั้งเซิร์ฟเวอร์ขั้นต่ำ Debian 10 (Buster)

ในบทความนี้ เราจะอธิบายวิธีการติดตั้งและตั้งค่าสภาพแวดล้อม LEMP บนเซิร์ฟเวอร์ Debian 10 โดยใช้ MariaDB ในการจัดการฐานข้อมูล แพลตฟอร์ม.

การติดตั้งเว็บเซิร์ฟเวอร์ Nginx บน Debian 10

Nginx เป็นโอเพ่นซอร์สและข้ามแพลตฟอร์ม มีน้ำหนักเบา แต่ทรงพลังและกำหนดค่า HTTP และพร็อกซีเซิร์ฟเวอร์ย้อนกลับ พร็อกซีเซิร์ฟเวอร์อีเมล และพร็อกซี TCP/UDP ทั่วไปได้อย่างง่ายดาย เซิร์ฟเวอร์ที่มีสถาปัตยกรรมแบบโมดูลาร์

คุณสมบัติพื้นฐานบางอย่างรวมถึงการให้บริการไฟล์คงที่และดัชนี การสนับสนุนที่รวดเร็วยิ่งขึ้นด้วยแคชเซิร์ฟเวอร์ FastCGI, uwsgi, SCGI และ Memcached, การปรับสมดุลโหลดและความทนทานต่อข้อผิดพลาด, SSL และการสนับสนุน TLS SNI ซึ่งสนับสนุน HTTP/2 พร้อมการจัดลำดับความสำคัญแบบถ่วงน้ำหนักและอิงตามการพึ่งพา

หากต้องการติดตั้งแพ็คเกจ Nginx ให้ใช้ตัวจัดการแพ็คเกจ apt ของ Debian ดังที่แสดง

apt update 
apt install nginx 

เมื่อการติดตั้ง Nginx เสร็จสมบูรณ์ โปรแกรมติดตั้งจะเปิดใช้งาน systemd เพื่อเริ่มบริการ Nginx ในตอนนี้ และเปิดใช้งานให้เริ่มโดยอัตโนมัติเมื่อบูตระบบ คุณสามารถตรวจสอบสถานะของ Nginx ได้โดยใช้คำสั่ง systemctl ต่อไปนี้

systemctl status nginx

คุณยังสามารถใช้คำสั่งสำคัญต่อไปนี้เพื่อเริ่ม รีสตาร์ท หยุด และโหลดการกำหนดค่าของบริการ Nginx ภายใต้ systemd อีกครั้ง

systemctl start nginx
systemctl restart nginx 
systemctl stop nginx
systemctl reload nginx 
systemctl status nginx 

ถัดไป หากคุณมีไฟร์วอลล์ UFW ทำงานอยู่ (โดยปกติจะถูกปิดใช้งานโดยค่าเริ่มต้น) คุณจะต้องเปิดพอร์ต 80 (HTTP) และ 443 (HTTPS) เพื่ออนุญาตการรับส่งข้อมูลขาเข้า บน Nginx

ufw allow 80
ufw allow 443
ufw status

ณ จุดนี้ คุณต้องทดสอบว่า Nginx ได้รับการติดตั้งอย่างถูกต้องหรือไม่ ไม่ว่าจะทำงานอยู่และสามารถให้บริการหน้าเว็บได้หรือไม่ ในการทำเช่นนั้น ให้เปิดเว็บเบราว์เซอร์แล้วชี้ไปที่ URL ต่อไปนี้เพื่อเข้าถึงหน้าเว็บ ค่าเริ่มต้น Nginx Debian

http://SERVER_IP/
OR
http://localhost/

การติดตั้ง MariaDB บน Debian 10

ถัดไป คุณต้องติดตั้งระบบฐานข้อมูลเพื่อให้สามารถจัดเก็บและจัดการข้อมูลสำหรับเว็บไซต์หรือเว็บแอปของคุณได้ Debian 10 รองรับ MariaDB ตามค่าเริ่มต้น โดยเป็นการแทนที่ MySQL แบบดรอปอิน

หากต้องการติดตั้ง MariaDB ให้รันคำสั่งต่อไปนี้

apt install mariadb-server

จากนั้น ตรวจสอบสถานะบริการ MariaDB เนื่องจากบริการเริ่มทำงานโดยอัตโนมัติโดย systemd และเปิดใช้งานเพื่อเริ่มต้นเมื่อบูตระบบ เพื่อให้แน่ใจว่าบริการพร้อมใช้งาน ให้ใช้คำสั่งต่อไปนี้

systemctl status mariadb

ในการจัดการ (เริ่ม รีสตาร์ท หยุดและโหลดซ้ำ) บริการ MariaDB ภายใต้ systemd คุณสามารถใช้คำสั่งต่อไปนี้

systemctl start mariadb
systemctl restart mariadb
systemctl stop mariadb
systemctl reload mariadb

ถัดไป การใช้งาน MariaDB จะไม่ปลอดภัยตามค่าเริ่มต้น คุณต้องเรียกใช้เชลล์สคริปต์ที่มาพร้อมกับแพ็คเกจ เพื่อให้คุณสามารถปรับปรุงความปลอดภัยของฐานข้อมูลได้

mysql_secure_installation

หลังจากรันสคริปต์แล้ว ระบบจะนำคุณไปสู่ชุดคำถามต่อไปนี้เพื่อแก้ไขการตั้งค่าเริ่มต้นของการติดตั้ง MariaDB ดังที่แสดงในภาพหน้าจอต่อไปนี้

การติดตั้ง PHP-FPM (Fast Process Manager) บน Debian 10

ต่างจาก Apache และเว็บเซิร์ฟเวอร์อื่นๆ Nginx ไม่ได้ให้การสนับสนุนดั้งเดิมสำหรับ PHP เนื่องจากใช้ PHP-FPM เพื่อจัดการคำขอสำหรับหน้า PHP PHP-FPM เป็น FastCGI daemon อีกทางเลือกหนึ่งสำหรับ PHP ที่ช่วยให้เว็บไซต์สามารถรองรับการโหลดจำนวนมากได้ โดยใช้กระบวนการของผู้ปฏิบัติงานเพื่อจัดการกับคำขอ

หากต้องการติดตั้ง PHP-FPM เวอร์ชัน 7.3 และโมดูล PHP เพื่อสื่อสารกับระบบฐานข้อมูล MariaDB/MySQL ให้เรียกใช้คำสั่งต่อไปนี้

apt install php-fpm php-mysqli

หลังจากติดตั้ง PHP-FPM แล้ว โปรแกรมติดตั้งจะเปิดใช้งาน systemd เพื่อเริ่มบริการ PHP-FPM ในตอนนี้ และเปิดใช้งานให้เริ่มอัตโนมัติเมื่อบูตระบบ หากต้องการตรวจสอบว่ามีการใช้งานอยู่หรือไม่ ให้ออกคำสั่งต่อไปนี้

systemctl status php-fpm

คุณยังสามารถเริ่ม รีสตาร์ทหยุด และโหลดการกำหนดค่าของบริการ PHP-FPM ภายใต้ systemd อีกครั้งได้ดังต่อไปนี้

systemctl start php-fpm
systemctl restart php-fpm
systemctl stop php-fpm
systemctl reload php-fpm
systemctl status php-fpm

ถัดไป คุณต้องรักษาความปลอดภัย PHP-FPM โดยทำการเปลี่ยนแปลงบางอย่างในไฟล์การกำหนดค่า /etc/php/7.3/fpm/php.ini ดังต่อไปนี้

vi /etc/php/7.3/fpm/php.ini

มองหา ;cgi.fix_pathinfo=1 uncomment โดยลบอักขระ ; ที่จุดเริ่มต้น ตั้งค่าเป็น 0 สิ่งนี้จะป้องกันไม่ให้ Nginx อนุญาตให้เรียกใช้ไฟล์ที่ไม่ใช่ PHP เป็น PHP

cgi.fix_pathinfo=0

ตามค่าเริ่มต้น PHP-FPM ได้รับการกำหนดค่าให้ฟังบน UNIX soxket, /run/php/php7.3-fpm.sock ตามที่กำหนดไว้ใน /etc /php/7.3/fpm/pool.d/www.conf ไฟล์การกำหนดค่า คุณต้องกำหนดค่าบล็อกเซิร์ฟเวอร์ทั้งหมดของคุณ (หรือ โฮสต์เสมือน) เพื่อใช้ซ็อกเก็ตนี้หากต้องการประมวลผลและให้บริการหน้า PHP

คุณสามารถใช้ไฟล์การกำหนดค่าบล็อกเซิร์ฟเวอร์เริ่มต้นของ Nginx /etc/nginx/sites-available/default เพื่อทดสอบ

vi /etc/nginx/sites-available/default 

มองหาส่วนต่อไปนี้และยกเลิกการใส่เครื่องหมายข้อคิดเห็นเพื่อส่งสคริปต์ PHP ไปยังเซิร์ฟเวอร์ FastCGI ดังที่แสดงในภาพหน้าจอ

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

จากนั้น ทดสอบว่าโครงสร้างการกำหนดค่า Nginx ตกลง หรือไม่ โดยใช้คำสั่งต่อไปนี้

nginx -t

หากการกำหนดค่า Nginx ตกลง หากต้องการใช้การเปลี่ยนแปลงที่เพิ่งทำ ให้รีสตาร์ทบริการ php7.3-fpm และ nginx ดังนี้

systemctl restart php7.2-fpm
systemctl restart nginx

ทดสอบการประมวลผล PHP-FPM บน Nginx

หลังจากกำหนดค่า PHP-FPM และ Nginx ให้ทำงานร่วมกันแล้ว คุณต้องทดสอบว่าบริการทั้งสองสามารถประมวลผลและให้บริการหน้า PHP แก่ลูกค้าได้หรือไม่ ในการทำเช่นนั้น ให้สร้างสคริปต์ PHP อย่างง่ายในเว็บ DocumentRoot ของคุณดังนี้

echo “<?php phpinfo(); ?>”  | tee /var/www/html/info.php

สุดท้าย เปิดเบราว์เซอร์และพิมพ์ที่อยู่ต่อไปนี้เพื่อดูการกำหนดค่า PHP บนระบบที่สร้างโดยฟังก์ชัน phpinfo()

http://SERVER_IP/info.php
OR
http://localhost/info.php

บทสรุป

ในบทความนี้ เราได้แสดงวิธีการติดตั้งและกำหนดค่าสแต็ก LEMP ใน Debian 10 หากคุณมีคำถามหรือข้อเสนอแนะ โปรดติดต่อเราและแจ้งให้เราทราบผ่านแบบฟอร์มความคิดเห็นด้านล่าง