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

วิธีการติดตั้ง LEMP (Linux, Nginx, MariaDB, PHP-FPM) บน Debian 9 Stretch


เนื่องจาก Debian ขับเคลื่อนเว็บเซิร์ฟเวอร์จำนวนมากทั่วโลก ในบทความนี้ เราจะอธิบายวิธีการติดตั้ง LEMP (Linux + Nginx + MariaDB + PHP-FPM) ซ้อนกันบน Debian 9 Stretch เป็นทางเลือกแทน LAMP (ใช้คำแนะนำนี้เพื่อ ติดตั้ง LAMP บน Debian 9)

นอกจากนี้ เราจะแสดงวิธีการกำหนดค่า Nginx/PHP-FPM ขั้นต่ำ เพื่อให้แม้แต่ผู้ดูแลระบบใหม่ก็สามารถตั้งค่าเว็บเซิร์ฟเวอร์ใหม่เพื่อตั้งค่าเพจไดนามิกได้

เพื่อที่จะทำสิ่งนี้ เราจะใช้ประโยชน์จากการอัปเดตล่าสุดไปยังคลังเก็บอย่างเป็นทางการของการจัดจำหน่าย ถือว่าคุณได้ติดตั้ง Debian 9 บน Bare Metal, Virtual Machine หรือ VPS หรืออัปเกรดจาก Jessie

การติดตั้ง LEMP ใน Debian 9 Stretch

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

ด้วยเหตุนี้ PHP-FPM (Fast Process Manager) จึงถูกใช้เพื่อจัดการคำขอสำหรับหน้า PHP คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ PHP-FPM ได้จากเว็บไซต์อย่างเป็นทางการของ PHP

เวอร์ชันเริ่มต้นที่ให้ไว้ในที่เก็บ Debian php7.0-fpm ดังที่คุณอาจเดาได้จากชื่อแพ็คเกจ เวอร์ชันนี้สามารถรองรับคำขอไปยังเพจต่างๆ รวมถึงโค้ด PHP 7 ได้ด้วย

หมายเหตุ: หากมีการติดตั้ง Apache ในกล่องเดียวกันก่อนหน้านี้ ตรวจสอบให้แน่ใจว่าได้หยุดและปิดใช้งานแล้วก่อนดำเนินการต่อ

จากที่กล่าวมา มาติดตั้งส่วนประกอบของสแต็ก LEMP ดังต่อไปนี้:

aptitude update 
aptitude install nginx mariadb-server mariadb-client php-mysqli php7.0-fpm

เมื่อการติดตั้งเสร็จสมบูรณ์ ขั้นแรกตรวจสอบให้แน่ใจว่า Nginx และ PHP-FPM กำลังทำงานและเปิดใช้งานเพื่อเริ่มต้นการบูต:

systemctl status nginx php7.0-fpm

หากระบุว่าบริการหนึ่งหรือทั้งสองบริการไม่ทำงาน ให้ทำ

systemctl start nginx php7.0-fpm
systemctl enable nginx php7.0-fpm

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

mysql_secure_installation

หากคุณไม่ทราบวิธีดำเนินการ โปรดดูขั้นตอน #4 ในวิธีการติดตั้ง MariaDB 10 บน Debian และ Ubuntu

การกำหนดค่า Nginx เพื่อใช้ PHP-FPM บน Debian 9

ไฟล์การกำหนดค่าหลักของ Nginx คือ /etc/nginx/sites-available/default ซึ่งเราจะต้องทำการเปลี่ยนแปลงต่อไปนี้ภายในบล็อกเซิร์ฟเวอร์:

  • ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานบล็อก ตำแหน่ง ที่จัดการคำขอ PHP แล้ว ยกเว้นบล็อกที่คำสั่ง fastcgi_pass ชี้ไปที่ NIC แบบวนกลับ
  • เพิ่ม index.php หลังคำสั่ง index เพื่อระบุว่าหากพบ ควรแสดงโดยค่าเริ่มต้นก่อน index.html หรือไฟล์อื่นๆ
  • เพิ่มคำสั่ง server_name ที่ชี้ไปยังที่อยู่ IP หรือชื่อโฮสต์ของเซิร์ฟเวอร์ของคุณ นี่จะเป็น 192.168.0.35 ในกรณีของเรา
  • นอกจากนี้ ตรวจสอบให้แน่ใจว่าคำสั่ง root ชี้ไปยังตำแหน่งที่จะจัดเก็บไฟล์ .php ของคุณ (/var/www/html เป็นค่าเริ่มต้น) .

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

nginx -t 

ณ จุดนี้ /etc/nginx/sites-available/default ของคุณควรมีลักษณะดังนี้ โดยที่ตัวเลขอ้างอิงถึงการกำหนดค่าแสดงถึงรายการด้านบน:

grep -Ev '#' /etc/nginx/sites-available/default

ทดสอบ Nginx และ PHP-FPM บน Debian 9

เพื่อให้แน่ใจว่าตอนนี้เราใช้ Nginx เป็นเว็บเซิร์ฟเวอร์ของเรา เรามาสร้างไฟล์ชื่อ info.php ภายใน /var/www/html ด้วย เนื้อหาต่อไปนี้:

<?php
	phpinfo();
?>

จากนั้นไปที่ http://192.168.0.35/info.php และตรวจสอบที่ด้านบนของหน้าที่คุณควรเห็นสิ่งนี้:

สุดท้ายนี้ ให้ชี้เบราว์เซอร์ของเราไปที่ไฟล์ booksandauthors.php ที่เราสร้างขึ้นใน Install LAMP (Linux, Apache, MariaDB หรือ MySQL และ PHP) Stack บน Debian 9

ดังที่คุณเห็นในภาพต่อไปนี้ ไฟล์นี้กำลังให้บริการโดย Nginx:

หมายเหตุ: หากคุณสังเกตเห็นว่า Nginx ให้บริการไฟล์ .php ในรูปแบบการดาวน์โหลดแทนที่จะดำเนินการ ให้ล้างแคชของเบราว์เซอร์ของคุณหรือลองใช้เบราว์เซอร์อื่น . โดยเฉพาะอย่างยิ่ง หากคุณใช้ Chrome คุณอาจต้องการทดสอบด้วยโหมดไม่ระบุตัวตน

สรุป

ในบทความนี้ เราได้อธิบายวิธีการติดตั้งและกำหนดค่า Nginx เพื่อให้บริการหน้า .php แบบไดนามิก สิ่งสำคัญคือต้องทราบว่าหลังจากการตั้งค่าเริ่มต้นนี้ มีการตั้งค่าที่ควรนำมาพิจารณาเพื่อรักษาความปลอดภัยของเว็บเซิร์ฟเวอร์

คุณอาจพบข้อมูลสรุปพื้นฐานได้ใน The Ultimate Guide to Secure, Harden และปรับปรุงประสิทธิภาพของ Nginx Web Server

หากคุณกำลังมองหาโฮสติ้งเสมือนบน Nginx โปรดอ่านวิธีตั้งค่าโฮสต์เสมือนตามชื่อและ IP บน NGINX

และเช่นเคย อย่าลังเลที่จะแจ้งให้เราทราบหากคุณมีคำถามหรือความคิดเห็นเกี่ยวกับบทความนี้