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

การติดตั้ง 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 ซึ่งมีชุดฟังก์ชันการทำงานของแพ็กเกจในกระบวนการคอมไพล์ โมดูลหรือการตั้งค่าที่จำเป็นสำหรับแพลตฟอร์มเว็บ จะปรับแต่งการกำหนดค่าเซิร์ฟเวอร์อย่างมาก

ความต้องการ

  1. การติดตั้ง Gentoo พร้อมโปรไฟล์เสริมสำหรับเซิร์ฟเวอร์ที่เชื่อมต่อกับอินเทอร์เน็ต - คู่มือการติดตั้ง Gentoo
  2. เครือข่ายที่กำหนดค่าด้วยที่อยู่ 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 การกำหนดค่าข้างต้นน่าจะน่าพอใจสำหรับคุณ