การติดตั้ง LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM และ PhpMyAdmin) ใน Gentoo Linux
Gentoo เป็นหนึ่งในการกระจาย Linux ที่เร็วที่สุดเนื่องจากสร้างจากการวางแนวแหล่งที่มาและให้บริการโดยโปรแกรมการจัดการซอฟต์แวร์ - Portage - เครื่องมือบางอย่างที่จำเป็นในการสร้างแพลตฟอร์มนักพัฒนาเว็บที่สมบูรณ์ซึ่ง ดำเนินการและทำงานได้รวดเร็วมากและยังมีการปรับแต่งในระดับสูงอีกด้วย
หัวข้อนี้จะนำคุณไปสู่กระบวนการติดตั้งทีละขั้นตอนสำหรับการสร้างแพลตฟอร์มสภาพแวดล้อมเว็บที่สมบูรณ์ด้วย LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin) และด้วยความช่วยเหลือบน แฟล็ก USE จัดทำโดย Portage Package Management ซึ่งมีชุดฟังก์ชันการทำงานของแพ็กเกจในกระบวนการคอมไพล์ โมดูลหรือการตั้งค่าที่จำเป็นสำหรับแพลตฟอร์มเว็บ จะปรับแต่งการกำหนดค่าเซิร์ฟเวอร์อย่างมาก
ความต้องการ
- การติดตั้ง Gentoo พร้อมโปรไฟล์เสริมสำหรับเซิร์ฟเวอร์ที่เชื่อมต่อกับอินเทอร์เน็ต - คู่มือการติดตั้ง Gentoo
- เครือข่ายที่กำหนดค่าด้วยที่อยู่ IP แบบคงที่
ขั้นตอนที่ 1: ติดตั้งเว็บเซิร์ฟเวอร์ Nginx
1. ก่อนที่จะพยายามดำเนินการติดตั้ง Nginx โปรดตรวจสอบให้แน่ใจว่า NIC ของคุณได้รับการกำหนดค่าด้วยที่อยู่ IP แบบคงที่ และตรวจสอบให้แน่ใจว่าแหล่งที่มาของ Portage และระบบของคุณเป็นปัจจุบัน
sudo su -
emerge --sync
emerge --update --deep --with-bdeps=y @world
2. หลังจากกระบวนการอัปเดตเสร็จสิ้น ให้ดำเนินการติดตั้ง Nginx โดยเลือกการตั้งค่าและโมดูลที่ต้องการโดยสะท้อน การตั้งค่าสถานะ Nginx ไปยังไฟล์ Portage make.conf . ขั้นแรกให้แสดงรายการโมดูลการติดตั้งเริ่มต้นของ Nginx โดยการรันคำสั่งต่อไปนี้
emerge -pv nginx
สำหรับข้อมูลโมดูลโดยละเอียด (ใช้แฟล็กสำหรับแพ็คเกจ) ให้ใช้คำสั่ง equery
equery uses nginx
จากนั้นติดตั้ง Nginx ด้วยคำสั่งต่อไปนี้
emerge --ask nginx
หากคุณต้องการโมดูลเพิ่มเติม (WebDAV, fancyindex, GeoIP ฯลฯ) นอกเหนือจากโมดูลเริ่มต้นที่ Nginx จะคอมไพล์ด้วย ให้ผนวกโมดูลเหล่านั้นทั้งหมดในบรรทัดเดียวบนไฟล์ Portage make.conf ด้วย NGINX_MODULES_HTTP คำสั่ง จากนั้นคอมไพล์ Nginx ใหม่ด้วยโมดูลใหม่
echo 'NGINX_MODULES_HTTP="dav auth_pam fancyindex geoip fastcgi uwsgi gzip rewrite"' >> /etc/portage/make.conf
emerge --ask nginx
3. หลังจาก Portage เสร็จสิ้น Nginx ที่เกิดขึ้นใหม่ ให้เริ่ม http daemon และยืนยันโดยกำหนดเบราว์เซอร์ของคุณไปที่ http://localhost
ขั้นตอนที่ 2: ติดตั้ง PHP
4. หากต้องการใช้ภาษาการเขียนโปรแกรมเว็บไดนามิก PHP กับเซิร์ฟเวอร์ Nginx ให้ติดตั้ง PHP-FastCGI Process Manager (FPM) โดยต่อท้าย fpm และส่วนขยาย PHP ที่สำคัญอื่นๆ บนแฟล็ก Portage USE และอย่าลืมลบส่วนขยาย Apache ออก
emerge -pv php
equery uses php
echo " dev-lang/php fpm cgi curl gd imap mysql mysqli pdo zip json xcache apc zlib zip truetype -apache2 " >> /etc/portage/package.use
emerge --ask php
5. ก่อนที่จะเริ่ม PHP-FPM การเปลี่ยนแปลงบางอย่างจะต้องนำไปใช้กับไฟล์การกำหนดค่าบริการ เปิดไฟล์การกำหนดค่า php-fpm และทำการเปลี่ยนแปลงต่อไปนี้
nano /etc/php/fpm-php5.5/php-fpm.conf
ค้นหาและไม่แสดงข้อคิดเห็นคำสั่งต่อไปนี้เพื่อให้มีลักษณะเช่นนี้
error_log = /var/log/php-fpm.log
listen = 127.0.0.1:9000 ## Here you can use any HTTP socket (IP-PORT combination ) you want ##
pm.start_servers = 20
6. หลังจากแก้ไขไฟล์การกำหนดค่า PHP-FPM แล้ว ให้เปลี่ยนสิทธิ์ของไฟล์บันทึก PHP-FPM และเริ่มบริการ
chmod 755 /var/log/php-fpm.log
/etc/init.d/php-fpm start
แม้ว่าบริการ PHP-FPM จะเริ่มทำงานแล้ว แต่ Nginx ก็ไม่สามารถสื่อสารกับเกตเวย์ PHP ได้ ดังนั้นจึงจำเป็นต้องทำการเปลี่ยนแปลงบางอย่างในไฟล์การกำหนดค่า Nginx
ขั้นตอนที่ 3: แก้ไขการกำหนดค่า Nginx
7. ไฟล์การกำหนดค่าเทมเพลตเริ่มต้นของ Nginx มีเพียงซ็อกเก็ต HTTP พื้นฐานสำหรับโลคัลโฮสต์เท่านั้น หากต้องการเปลี่ยนพฤติกรรมนี้และเปิดใช้งาน Virtual Hosts ให้เปิดไฟล์ nginx.conf ที่อยู่บนเส้นทาง /etc/nginx/ และทำการกำหนดค่าต่อไปนี้
nano /etc/nginx/nginx.conf
ค้นหาบล็อก เซิร์ฟเวอร์ แรกที่สอดคล้องกับ localhost และรับฟังที่อยู่ IP 127.0.0.1 และแนะนำให้คำสั่งทั้งหมดมีลักษณะเหมือนในภาพหน้าจอด้านล่าง
อย่าเพิ่งปิดไฟล์และย้ายไปที่ด้านล่างสุดและเพิ่มข้อความต่อไปนี้ก่อนวงเล็บปีกกาปิดครั้งสุดท้าย “ } “
Include /etc/nginx/sites-enabled/*.conf;
8. ถัดไปสร้าง ที่เปิดใช้งานไซต์ และ ไซต์ที่พร้อมใช้งาน (สำหรับโฮสต์เสมือนที่ไม่ได้ใช้) ไดเร็กทอรี Nginx และไฟล์การกำหนดค่าสำหรับ localhost บนโปรโตคอล HTTP และ HTTPS .
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
สร้างการกำหนดค่าไฟล์ต่อไปนี้สำหรับ localhost
nano /etc/nginx/sites-available/localhost.conf
เพิ่มเนื้อหาไฟล์ต่อไปนี้
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost_access_log main;
error_log /var/log/nginx/localhost_error_log info;
root /var/www/localhost/htdocs;
location / {
index index.html index.htm index.php;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
location ~ \.php$ {
# Test for non-existent scripts or throw a 404 error
# Without this line, nginx will blindly send any request ending in .php to php-fpm
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass 127.0.0.1:9000; ## Make sure the socket corresponds with PHP-FPM conf file
}
}
สำหรับ localhost ที่มี SSL ให้สร้างไฟล์การกำหนดค่าต่อไปนี้
nano /etc/nginx/sites-available/localhost-ssl.conf
เพิ่มเนื้อหาไฟล์ต่อไปนี้
server {
listen 443 ssl;
server_name localhost;
ssl on;
ssl_certificate /etc/ssl/nginx/nginx.pem;
ssl_certificate_key /etc/ssl/nginx/nginx.key;
access_log /var/log/nginx/localhost.ssl_access_log main;
error_log /var/log/nginx/localhost.ssl_error_log info;
root /var/www/localhost/htdocs;
location / {
index index.html index.htm index.php;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
location ~ \.php$ {
# Test for non-existent scripts or throw a 404 error
# Without this line, nginx will blindly send any request ending in .php to php-fpm
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
}
}
9. ตอนนี้ถึงเวลาสร้างสคริปต์สองตัวบนพาธปฏิบัติการของระบบ (` ตัวแปรเชลล์ PATH) ซึ่งทำหน้าที่เป็นคำสั่งในการเปิดใช้งานหรือปิดใช้งาน Nginx Virtual Hosts
สร้างสคริปต์ Bash ตัวแรกชื่อ n2ensite ที่จะเปิดใช้งานไฟล์การกำหนดค่า Virtual Hosts โดยการสร้างลิงก์สัญลักษณ์ระหว่างโฮสต์ที่ระบุจาก sites-available ถึง sites-enabled.
nano /usr/local/bin/n2eniste
เพิ่มเนื้อหาไฟล์ต่อไปนี้
#!/bin/bash
if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled ; then
echo "-----------------------------------------------"
else
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
fi
avail=/etc/nginx/sites-available/$1.conf
enabled=/etc/nginx/sites-enabled/
site=`ls /etc/nginx/sites-available/`
if [ "$#" != "1" ]; then
echo "Use script: n2ensite virtual_site"
echo -e "\nAvailable virtual hosts:\n$site"
exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart nginx server: sudo /etc/init.d/ nginx restart"
else
echo -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi
10. จากนั้นสร้างสคริปต์ตัวที่สองชื่อ n2dissite ซึ่งจะลบ Virtual Hosts ที่ใช้งานอยู่ที่ระบุออกจากพาธ Nginx ที่เปิดใช้งานไซต์ ด้วยเนื้อหาต่อไปนี้
nano /usr/local/bin/n2dissite
เพิ่มเนื้อหาต่อไปนี้
#!/bin/bash
avail=/etc/nginx/sites-enabled/$1.conf
enabled=/etc/nginx/sites-enabled
site=`ls /etc/nginx/sites-available/`
if [ "$#" != "1" ]; then
echo "Use script: n2dissite virtual_site"
echo -e "\nAvailable virtual hosts: \n$site"
exit 0
else
if test -e $avail; then
sudo rm $avail
else
echo -e "$avail virtual host does not exist! Exiting!"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo -e "Success! $avail has been removed!\nPlease restart Nginx: sudo /etc/init.d/nginx restart"
exit 0
fi
fi
11. หลังจากแก้ไขสคริปต์ Bash เสร็จแล้ว ให้เพิ่มสิทธิ์ในการดำเนินการต่อท้ายและเปิดใช้งาน Localhost Virtual Hosts – ใช้ชื่อไฟล์การกำหนดค่า Virtual Host โดยไม่มีนามสกุล .conf จากนั้นรีสตาร์ทบริการ Nginx และ PHP-FPM เพื่อใช้การเปลี่ยนแปลง
chmod +x /usr/local/bin/n2dissite
chmod +x /usr/local/bin/n2ensite
n2ensite localhost
n2ensite localhost-ssl
service nginx restart
service php-fpm restart
12. เพื่อทดสอบการกำหนดค่า ให้สร้างไฟล์ข้อมูล PHP บนเส้นทางรูทเริ่มต้นของ localhost สำหรับไฟล์เว็บ (/var/www/localhost/htdocs) และเปลี่ยนเส้นทางเบราว์เซอร์ของคุณบน https://localhost/info.php หรือ http://localhost/info.php
echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.php
การใช้ไฟล์การกำหนดค่า localhost Virtual Hosts เป็นเทมเพลตและ Nginx n2enmod และ n2dismod คุณสามารถเพิ่มเว็บไซต์ได้มากเท่าที่คุณต้องการ แต่รับรองว่าคุณมีพอยน์เตอร์ DNS ที่ถูกต้องสำหรับอินเทอร์เน็ต - เผชิญกับเว็บเซิร์ฟเวอร์หรือใช้รายการในเครื่องบนไฟล์โฮสต์ของระบบ
ขั้นตอนที่ 4: ติดตั้ง MySQL/MariaDB + PhpMyAdmin
ในการติดตั้งฐานข้อมูล MySQL และเว็บอินเตอร์เฟส PhpMyAdmin สำหรับ MySQL ให้ใช้ขั้นตอนเดียวกับที่แสดงในการติดตั้ง LAMP บน Gentoo
13. ในทางกลับกัน หากคุณต้องการใช้ MariaDB ซึ่งเป็นการแทนที่ MySQL แบบดรอปอิน ให้ใช้คำสั่งต่อไปนี้เพื่อรับ USE flags และติดตั้ง
emerge -pv mariadb
emerge --ask mariadb
ในกรณีที่คุณได้รับข้อขัดแย้งระหว่างแพ็คเกจกับ MySQL ให้เพิ่มบรรทัดต่อไปนี้ใน Portage package.accept.keywords
echo “=dev-db/mariadb-5.5.37-r1 ~amd64” >> /etc/portage/package.accept.keywords
echo “=virtual/mysql-5.5 ~amd64” >> /etc/portage/package.accept.keywords
emerge --ask mariadb
14. หลังจากติดตั้งฐานข้อมูล MySQL แล้ว ให้เริ่มบริการและรักษาความปลอดภัยโดยใช้ mysql_secure_installation (เปลี่ยนรหัสผ่านรูท ปิดการใช้งานการล็อกอินรูทภายนอกโลคัลโฮสต์ ลบผู้ใช้ที่ไม่ระบุชื่อ/ฐานข้อมูลทดสอบ)
service mysql start
mysql_secure_installation
15. เข้าสู่ฐานข้อมูล MySQL โดยใช้คำสั่ง mysql -u root -p เพื่อทดสอบการทำงานและปล่อยไว้ด้วยคำสั่ง exit
mysql -u root -p
MariaDB > show databases;
MariaDB > exit;
16. หากคุณไม่เก่งกับบรรทัดคำสั่ง MySQL ติดตั้ง PhpMyAdmin Web frontend โดยดำเนินการคำสั่งต่อไปนี้
emerge -pv dev-db/phpmyadmin
echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use
emerge --ask dev-db/phpmyadmin
17. หลังจาก PhpMyAdmin เสร็จสิ้นการติดตั้ง ให้สร้างไฟล์การกำหนดค่าตามไฟล์ปรับแต่งตัวอย่าง เปลี่ยนข้อความรหัสผ่าน blowfish_secret ด้วยสตริงแบบสุ่ม จากนั้นสร้างลิงก์สัญลักษณ์จาก /usr /share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ ไปยังพาธรูทเอกสารของ Virtual Hosts ที่คุณต้องการเข้าถึงเว็บอินเตอร์เฟส PhpMyAdmin
cd /usr/share/webapps/phpmyadmin/4.2.2/htdocs/
cp config.sample.inc.php config.inc.php
nano config.inc.php
ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/ /var/www/localhost/htdocs/phpmyadmin
18. หากต้องการเข้าถึงฐานข้อมูล MySQL ผ่านเว็บอินเทอร์เฟซ PhpMyAdmin ให้เปิดเบราว์เซอร์และใช้ที่อยู่ URL ต่อไปนี้ https://localhost/phpmyadmin
19. ขั้นตอนสุดท้ายคือการเปิดใช้งานบริการทั่วทั้งระบบ เพื่อเริ่มต้นโดยอัตโนมัติหลังจากรีบูต
rc-update add nginx default
rc-update add php-fpm default
rc-update add mysql default
ขณะนี้ เรามีการตั้งค่าสภาพแวดล้อมขั้นต่ำสำหรับเว็บโฮสติ้ง และหากคุณใช้เฉพาะหน้าเว็บที่สร้างแบบไดนามิก HTML, JavaScript และ PHP เท่านั้น และคุณไม่จำเป็นต้องมีเว็บไซต์ SSL การกำหนดค่าข้างต้นน่าจะน่าพอใจสำหรับคุณ