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