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

การติดตั้ง LEMP (Nginx, PHP, MySQL พร้อมเอ็นจิ้น MariaDB และ PhpMyAdmin) ใน Arch Linux


เนื่องจากโมเดล Rolling Release ที่ใช้ซอฟต์แวร์ล้ำสมัย Arch Linux ไม่ได้รับการออกแบบและพัฒนาให้ทำงานเป็นเซิร์ฟเวอร์เพื่อให้บริการเครือข่ายที่เชื่อถือได้ เนื่องจากต้องใช้เวลาเพิ่มเติมในการบำรุงรักษา อัปเกรดอย่างต่อเนื่อง และกำหนดค่าไฟล์ที่สมเหตุสมผล

แต่ถึงกระนั้น เนื่องจาก Arch Linux มาพร้อมกับการติดตั้งแกนซีดีพร้อมซอฟต์แวร์ที่ติดตั้งไว้ล่วงหน้าเพียงเล็กน้อย จึงสามารถใช้เป็นจุดเริ่มต้นที่มั่นคงในการติดตั้งบริการเครือข่ายยอดนิยมส่วนใหญ่ในปัจจุบัน ซึ่งรวมถึง < b>LEMP หรือ LAMP, Apache Web Server, Nginx, PHP, ฐานข้อมูล SQL, Samba, เซิร์ฟเวอร์ FTP, BIND และอื่นๆ โดยส่วนใหญ่มาจาก Arch พื้นที่เก็บข้อมูลอย่างเป็นทางการของ Linux และอื่นๆ จาก AUR

บทช่วยสอนนี้จะแนะนำขั้นตอนการติดตั้งและกำหนดค่าสแต็ก LEMP (Nginx, PHP , MySQL พร้อมกลไก MariaDB และ PhpMyAdmin) จาก SSH ที่ใช้ระยะไกล ซึ่งสามารถวางรากฐานที่แข็งแกร่งในการสร้างแอปพลิเคชันเซิร์ฟเวอร์เว็บได้

ความต้องการ

คู่มือการติดตั้ง Arch Linux ก่อนหน้า ยกเว้นส่วนสุดท้ายเกี่ยวกับเครือข่ายด้วย DHCP

ขั้นตอนที่ 1: กำหนด IP แบบคงที่บนอินเทอร์เฟซเครือข่าย

1. หลังจากการติดตั้งหลัก Arch Linux ขั้นต่ำ ให้รีบูตเซิร์ฟเวอร์ของคุณ เข้าสู่ระบบด้วยบัญชีรูทหรือบัญชี sudo การดูแลระบบที่เทียบเท่า และระบุชื่ออุปกรณ์ NIC ของระบบของคุณโดยใช้ ลิงก์ ip คำสั่ง

ip link

2. ในการกำหนดการกำหนดค่าเครือข่ายแบบคงที่ เราจะใช้แพ็คเกจ Netctl เพื่อจัดการการเชื่อมต่อเครือข่าย หลังจากที่คุณระบุชื่อ อินเทอร์เฟซเครือข่าย ของคุณสำเร็จแล้ว ให้คัดลอกเทมเพลตไฟล์ ethernet-static ไปยังเส้นทางของระบบ netctl และเปลี่ยนชื่อเป็นรูปแบบการตั้งชื่อที่สื่อความหมาย ( ลองใช้สตริง “static” รวมกับชื่อของ NIC) โดยใช้คำสั่งต่อไปนี้

cp /etc/netctl/examples/ethenet-static  /etc/netctl/static.ens33

3. ขั้นตอนต่อไปคือการแก้ไขไฟล์เทมเพลตใหม่นี้โดยการเปลี่ยนคำสั่งของไฟล์และระบุการตั้งค่าเครือข่ายจริงของคุณ (อินเทอร์เฟซ, IP/Netmask, เกตเวย์, การออกอากาศ, DNS) เช่นเดียวกับในข้อความที่ตัดตอนมาด้านล่าง

nano  /etc/netctl/static.ens33

Description='A basic static ethernet connection for ens33'
Interface=ens33
Connection=ethernet
IP=static
Address=('192.168.1.33/24')
Gateway='192.168.1.1'
Brodcast='192.168.1.255'
DNS=('192.168.1.1' '8.8.8.8')

4. ขั้นตอนต่อไปคือการเริ่มการเชื่อมต่อเครือข่ายของคุณผ่านเครื่องมือระบบ netctl และตรวจสอบการเชื่อมต่อระบบของคุณโดยออกคำสั่งต่อไปนี้

netctl start static.ens33
netctl status static.ens33

5. หากคุณได้รับสถานะทางออกสีเขียวที่ใช้งานอยู่ แสดงว่าคุณกำหนดค่า อินเทอร์เฟซเครือข่าย สำเร็จแล้ว และถึงเวลาเปิดใช้งานโดยอัตโนมัติในบริการทั่วทั้งระบบ ทดสอบเครือข่ายของคุณด้วยการรันคำสั่ง ping กับชื่อโดเมนและติดตั้งแพ็คเกจ net-tools (คุณลักษณะที่รู้จักกันดีที่สุดของแพ็คเกจนี้คือคำสั่ง ifconfig ซึ่ง Arch นักพัฒนาซอฟต์แวร์ถือว่าเลิกใช้แล้วและแทนที่ด้วย iproute2)

เปิดใช้งานการกำหนดค่าของ NIC ทั่วทั้งระบบ
netctl enable static.ens33
ติดตั้งแพ็คเกจ net-tools
pacman -S net-tools

6. ตอนนี้คุณสามารถเรียกใช้คำสั่ง ifconfig เพื่อตรวจสอบการตั้งค่า อินเทอร์เฟซเครือข่าย ของคุณและตรวจสอบว่าทุกอย่างถูกต้องหรือไม่ จากนั้น รีบูต b> ระบบของคุณเพื่อให้แน่ใจว่าทุกอย่างอยู่ในตำแหน่งและกำหนดค่าอย่างเหมาะสม

ping linux-console.net

ขั้นตอนที่ 2: ติดตั้งซอฟต์แวร์ LEMP

ตามที่ระบุไว้ในบทนำของบทความนี้ LEMP ย่อมาจาก Linux+Nginx+PHP/PhpMyAdmin+MySQL/MariaDB ซึ่งเป็นหนึ่งในแพลตฟอร์มแอปพลิเคชันเว็บที่แพร่หลายมากที่สุดในปัจจุบันรองจาก LAMP ( สแต็กเดียวกันกับ Apache ในสมการ)

7. ก่อนที่จะติดตั้ง LEMP สแต็กจริง เราจำเป็นต้องอัปเดตระบบ จากนั้นจึงได้รับการควบคุมระยะไกลไปยังเซิร์ฟเวอร์ Arch Linux ดังที่คุณคงทราบแล้วว่า OpenSSH เป็นตัวเลือกหลักสำหรับงานนี้ ดังนั้นโปรดดำเนินการติดตั้ง เริ่ม SSH daemon และเปิดใช้งานทั่วทั้งระบบ

sudo pacman -Syu
sudo pacman –S openssh

sudo systemctl start sshd
sudo systemctl status sshd
sudo systemctl enable sshd

ตอนนี้ถึงเวลาดำเนินการติดตั้ง LEMP แล้ว เนื่องจากบทช่วยสอนนี้มีไว้เพื่อเป็นแนวทางที่ครอบคลุม ฉันจะแบ่งการติดตั้งสแต็ก LEMP ออกเป็นชิ้นเล็กๆ ทีละขั้นตอน

8. ขั้นแรกให้ติดตั้ง Nginx Web Server จากนั้นเริ่มต้นและตรวจสอบสถานะโดยใช้คำสั่งต่อไปนี้

sudo pacman -S nginx
sudo systemctl start nginx
sudo systemctl status nginx

9. บริการต่อไปที่จะติดตั้งคือฐานข้อมูล MySQL ออกคำสั่งต่อไปนี้เพื่อติดตั้งเซิร์ฟเวอร์ฐานข้อมูล MySQL และเลือกกลไก MariaDB จากนั้นเริ่มและตรวจสอบสถานะ daemon

sudo pacman -S mysql
sudo systemctl start mysqld
sudo systemctl status mysqld

10. ขั้นตอนต่อไปคือการจัดเตรียมสภาพแวดล้อมที่ปลอดภัยสูงสำหรับฐานข้อมูล MySQL โดยการให้รหัสผ่านสำหรับบัญชีรูท MySQL ลบบัญชีผู้ใช้ที่ไม่ระบุชื่อ ลบฐานข้อมูลทดสอบและบัญชีรูทที่สามารถเข้าถึงได้จากภายนอกโฮสต์ท้องถิ่น เรียกใช้คำสั่งต่อไปนี้เพื่อปรับปรุงความปลอดภัยของ MySQL กด [Enter] เพื่อดูรหัสผ่านบัญชีรูทปัจจุบัน จากนั้นตอบ ใช่ สำหรับคำถามทั้งหมด (ตั้งค่ารหัสผ่านบัญชีรูทของคุณด้วย)

sudo mysql_secure_installation

หมายเหตุ: ไม่ว่าจะด้วยวิธีใดก็ตาม อย่าสับสนระหว่างบัญชีรูทของ MySQL กับบัญชีรูทของระบบ Linux ทั้งสองสิ่งต่างกัน ไม่แตกต่างกันมากแต่ทำงานในระดับที่แตกต่างกัน

หากต้องการตรวจสอบความปลอดภัยของ MySQL การเข้าสู่ระบบฐานข้อมูลโดยใช้ไวยากรณ์คำสั่ง mysql -u root -p ให้ระบุรหัสผ่านรูทของคุณ จากนั้นปล่อยให้ฐานข้อมูลใช้คำสั่ง exit;

mysql -u root -p

11. ตอนนี้ถึงเวลาที่จะติดตั้งภาษาสคริปต์ฝั่งเซิร์ฟเวอร์ PHP เพื่อให้สามารถพัฒนาและเรียกใช้แอปพลิเคชันเว็บไดนามิกที่ซับซ้อน ไม่ใช่แค่ให้บริการ HTML/CSS ข> รหัส

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

ออกบรรทัดคำสั่งต่อไปนี้เพื่อติดตั้งบริการ PHP-FPM จากนั้นเริ่ม daemon และตรวจสอบสถานะ

sudo pacman –S php php-fpm
sudo systemctl start php-fpm
sudo systemctl status php-fpm

หากต้องการแสดงรายการ โมดูล PHP ที่มีอยู่ทั้งหมด ให้ทำตามคำสั่งต่อไปนี้

sudo pacman –S php[TAB]
sudo pacman –Ss | grep php

12. หนึ่งในขั้นตอนสุดท้ายคือการติดตั้ง PhpMyAdmin Web Interface สำหรับฐานข้อมูล MySQL ออกคำสั่งต่อไปนี้เพื่อติดตั้ง PhpMyAdmin พร้อมกับโมดูล PHP ที่จำเป็น จากนั้นสร้างลิงก์สัญลักษณ์สำหรับเส้นทางระบบ PhpMyaAdmin ไปยังเส้นทางรูทเริ่มต้นของ Nginx

pacman -S phpmyadmin php-mcrypt
sudo ln -s /usr/share/webapps/phpMyAdmin   /usr/share/nginx/html

13. จากนั้นกำหนดค่าไฟล์ php.ini เพื่อรวมส่วนขยายที่จำเป็นสำหรับแอปพลิเคชัน PhpMyAdmin

sudo nano /etc/php/php.ini

ค้นหาด้วยปุ่ม [CTRL+W] และไม่ใส่เครื่องหมายข้อคิดเห็น (ลบ ; ที่จุดเริ่มต้นของบรรทัด) บรรทัดต่อไปนี้

extension=mysqli.so
extension=mysql.so
extension=mcrypt.so
mysqli.allow_local_infile = On

ในไฟล์เดียวกัน ให้ค้นหาและ แก้ไข open_basedir คำสั่งให้คล้ายกับไดเร็กทอรีที่รวมไว้ต่อไปนี้

open_basedir= /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/

14. ขั้นตอนต่อไปคือการเปิดใช้งาน PHP-FPM FastCGI บนคำสั่ง Nginx ของโฮสต์ท้องถิ่น ออกคำสั่งถัดไปเพื่อสำรองข้อมูลการกำหนดค่าไฟล์เว็บเซิร์ฟเวอร์ nginx.conf จากนั้นแทนที่ด้วยเนื้อหาต่อไปนี้

sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sudo nano /etc/nginx/nginx.conf

เพิ่มเนื้อหาต่อไปนี้ทั้งหมดบน nginx.conf

#user html;
worker_processes  2;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    gzip  on;

    server {
        listen       80;
        server_name  localhost;
            root   /usr/share/nginx/html;
        charset koi8-r;
        location / {
        index  index.php index.html index.htm;
                                autoindex on;
                                autoindex_exact_size off;
                                autoindex_localtime on;
        }

                                location /phpmyadmin {
        rewrite ^/* /phpMyAdmin last;
    }

 error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

    location ~ \.php$ {
        #fastcgi_pass 127.0.0.1:9000; (depending on your php-fpm socket configuration)
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }

        location ~ /\.ht {
            deny  all;
        }
    }         
}

15. หลังจากทำการกำหนดค่าไฟล์ทั้งหมดแล้ว สิ่งที่คุณต้องทำคือรีสตาร์ทบริการ Nginx และ PHP-FPM และชี้เบราว์เซอร์ของคุณไปที่ http://localhost/phpmyadmin URL จากโหนดในเครื่องหรือ http://arch_IP/phpmyadmin สร้างคอมพิวเตอร์เครื่องอื่น

sudo systemctl restart php-fpm
sudo systemctl restart nginx

16. หากทุกอย่างทำงานตามที่ตั้งใจไว้ ขั้นตอนสุดท้ายคือการเปิดใช้งาน LEMP ทั้งระบบด้วยคำสั่งต่อไปนี้

sudo systemctl enable php-fpm
sudo systemctl enable nginx
sudo systemctl enable mysqld

ขอแสดงความยินดี! คุณได้ติดตั้งและกำหนดค่า LEMP บน Arch Linux และตอนนี้ คุณมีอินเทอร์เฟซแบบไดนามิกเต็มรูปแบบเพื่อเริ่มต้นและพัฒนาเว็บแอปพลิเคชัน

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