วิธีการติดตั้ง 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
และเช่นเคย อย่าลังเลที่จะแจ้งให้เราทราบหากคุณมีคำถามหรือความคิดเห็นเกี่ยวกับบทความนี้