วิธีติดตั้ง Nginx 1.15, MariaDB 10 และ PHP 7 บน CentOS 7
ในบทความนี้ เราจะอธิบายวิธีการติดตั้งสแต็ก LEMP (Linux, Nginx, MariaDB, PHP) พร้อมด้วย PHP-FPM บนเซิร์ฟเวอร์ RHEL/CentOS 7/6 และ Fedora 26-29 ที่ใช้แพ็คเกจ yum และ dnf ผู้จัดการ.
ในระหว่างกระบวนการนี้ เราจะติดตั้งและเปิดใช้งานพื้นที่เก็บข้อมูล Epel, Remi, Nginx และ MariaDB เพื่อให้สามารถ ติดตั้งแพ็คเกจเหล่านี้เวอร์ชันล่าสุด
อ่านเพิ่มเติม: ติดตั้ง Apache, MySQL 8 หรือ MariaDB 10 และ PHP 7 บน CentOS 7
ขั้นตอนที่ 1: การติดตั้ง EPEL และ Remi Repository
EPEL (แพ็คเกจพิเศษสำหรับ Enterprise Linux) คือพื้นที่เก็บข้อมูลในชุมชนที่นำเสนอแพ็คเกจซอฟต์แวร์เสริมสำหรับการแจกจ่าย Linux ที่ใช้ RHEL
Remi คือพื้นที่เก็บข้อมูลที่คุณสามารถค้นหาเวอร์ชันล่าสุดของสแต็ก PHP (คุณลักษณะครบถ้วน) สำหรับการติดตั้งใน Fedora และ Enterprise Linux
บน RHEL/CentOS 7
yum update && yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
------ For RHEL 7 Only ------
subscription-manager repos --enable=rhel-7-server-optional-rpms
บน RHEL/CentOS 6
yum update && yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
------ For RHEL 6 Only ------
subscription-manager repos --enable=rhel-6-server-optional-rpms
ใน Fedora 24-29
rpm -Uvh http://rpms.remirepo.net/fedora/remi-release-29.rpm [On Fedora 29]
rpm -Uvh http://rpms.remirepo.net/fedora/remi-release-28.rpm [On Fedora 28]
rpm -Uvh http://rpms.remirepo.net/fedora/remi-release-27.rpm [On Fedora 27]
rpm -Uvh http://rpms.remirepo.net/fedora/remi-release-26.rpm [On Fedora 26]
rpm -Uvh http://rpms.remirepo.net/fedora/remi-release-25.rpm [On Fedora 25]
rpm -Uvh http://rpms.remirepo.net/fedora/remi-release-24.rpm [On Fedora 24]
ขั้นตอนที่ 2: การติดตั้งที่เก็บ Nginx และ MariaDB
พื้นที่เก็บข้อมูล Nginx จำเป็นเฉพาะในการกระจาย RHEL และ CentOS เท่านั้น สร้างไฟล์ชื่อ /etc/yum.repos.d/nginx.repo และเพิ่มบรรทัดต่อไปนี้ลงไป
สำหรับ RHEL 7/6:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/
gpgcheck=0
enabled=1
สำหรับ CentOS 7/6:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
หากต้องการเปิดใช้งานพื้นที่เก็บข้อมูล MariaDB ให้สร้างไฟล์ชื่อ /etc/yum.repos.d/mariadb.repo โดยมีเนื้อหาดังต่อไปนี้:
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
ขั้นตอนที่ 4: การติดตั้ง Ngnix และ MariaDB
Nginx (Engine X) เป็นเว็บเซิร์ฟเวอร์แบบโอเพ่นซอร์ส แข็งแกร่ง น้ำหนักเบา และมีประสิทธิภาพสูง เซิร์ฟเวอร์พร็อกซีย้อนกลับ และพร็อกซีเซิร์ฟเวอร์เมลสำหรับโปรโตคอล HTTP, SMTP, POP3 และ IMAP สำหรับรายละเอียดเพิ่มเติม โปรดไปที่ http://wiki.nginx.org/Overview
MariaDB เป็นทางแยกของ MySQL ที่รู้จักกันดี ซึ่งเป็นหนึ่งในระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ที่ได้รับความนิยมมากที่สุดในโลก ได้รับการพัฒนาโดยชุมชนทั้งหมด และด้วยเหตุนี้จึงมีจุดมุ่งหมายที่จะคง FOSS และเข้ากันได้กับ GPL
หากต้องการติดตั้ง Ngnix และ MariaDB ให้รันคำสั่งต่อไปนี้
----------- Installing on RHEL/CentOS 7/6 -----------
yum --enablerepo=remi install nginx MariaDB-client MariaDB-server php php-common php-fpm
----------- Installing on Fedora -----------
dnf --enablerepo=remi install nginx MariaDB-client MariaDB-server php php-common php-fpm
ขั้นตอนที่ 3: การติดตั้ง PHP โดยใช้ Remi Repository
PHP (Hypertext Preprocessor) เป็นภาษาสคริปต์ฝั่งเซิร์ฟเวอร์แบบโอเพ่นซอร์สและฟรีซึ่งเหมาะที่สุดสำหรับการพัฒนาเว็บ สามารถใช้เพื่อสร้างเว็บเพจแบบไดนามิกสำหรับเว็บไซต์ และพบได้บ่อยที่สุดในเซิร์ฟเวอร์ *nix ข้อดีอย่างหนึ่งของ PHP ก็คือสามารถขยายได้อย่างง่ายดายผ่านการใช้โมดูลที่หลากหลาย
หากต้องการติดตั้ง PHP ขั้นแรกคุณต้องเปิดใช้งานพื้นที่เก็บข้อมูล Remi โดยการติดตั้ง yum-utils
ซึ่งเป็นชุดของโปรแกรมที่มีประโยชน์สำหรับการจัดการพื้นที่เก็บข้อมูลและแพ็กเกจ yum
yum install yum-utils
เมื่อติดตั้งแล้ว คุณสามารถใช้ yum-config-manager ที่ได้รับจาก yum-utils
เพื่อเปิดใช้งานพื้นที่เก็บข้อมูล Remi เป็นพื้นที่เก็บข้อมูลเริ่มต้นสำหรับการติดตั้ง PHP เวอร์ชันต่างๆ ดังที่แสดง
ตัวอย่างเช่น หากต้องการติดตั้งเวอร์ชัน PHP 7.x ให้ใช้คำสั่งต่อไปนี้
------------- On CentOS & RHEL -------------
yum-config-manager --enable remi-php70 && yum install php [Install PHP 7.0]
yum-config-manager --enable remi-php71 && yum install php [Install PHP 7.1]
yum-config-manager --enable remi-php72 && yum install php [Install PHP 7.2]
yum-config-manager --enable remi-php73 && yum install php [Install PHP 7.3]
------------- On Fedora -------------
dnf --enablerepo=remi install php70 [Install PHP 7.0]
dnf --enablerepo=remi install php71 [Install PHP 7.1]
dnf --enablerepo=remi install php72 [Install PHP 7.2]
dnf --enablerepo=remi install php73 [Install PHP 7.3]
ต่อไปเราจะติดตั้งโมดูล PHP ต่อไปนี้ทั้งหมด
------ On RHEL/CentOS 7/6 ------
yum --enablerepo=remi install php-mysqlnd php-pgsql php-fpm php-pecl-mongo php-pdo php-pecl-memcache php-pecl-memcached php-gd php-xml php-mbstring php-mcrypt php-pecl-apcu php-cli php-pear
------ On Fedora ------
dnf --enablerepo=remi install php-mysqlnd php-pgsql php-fpm php-pecl-mongo php-pdo php-pecl-memcache php-pecl-memcached php-gd php-xml php-mbstring php-mcrypt php-pecl-apcu php-cli php-pear
ขั้นตอนที่ 6: การหยุดและปิดใช้งานบริการ Apache
ตามค่าเริ่มต้น Apache และ Nginx จะรับฟังในพอร์ตเดียวกัน (TCP 80) ด้วยเหตุผลดังกล่าว หากมีการติดตั้ง Apache ในเซิร์ฟเวอร์ของคุณ คุณจะต้องหยุดและปิดการใช้งาน/ปิดบังมัน (การปิดการใช้งานเวอร์ชันที่แรงกว่าซึ่งเชื่อมโยงบริการกับ /dev/null) เพื่อที่จะใช้ Nginx หรือคุณสามารถลบออกได้หากคุณไม่ต้องการใช้อีกต่อไป
systemctl stop httpd
systemctl disable httpd
or
systemctl mask httpd
ขั้นตอนที่ 7: การเริ่ม/หยุด Nginx, MariaDB และ PHP-FPM
----------- Enable Nginx, MariaDB and PHP-FPM on Boot -----------
systemctl enable nginx
systemctl enable mariadb
systemctl enable php-fpm
----------- Start Nginx, MariaDB and PHP-FPM -----------
systemctl start nginx
systemctl start mariadb
systemctl start php-fpm
ขั้นตอนที่ 8: การกำหนดค่า Nginx และ PHP-FPM
ตอนนี้ให้เราสร้างโครงสร้างไดเร็กทอรีสำหรับเว็บไซต์ของคุณ (โฮสต์เสมือนหรือบล็อกเซิร์ฟเวอร์ตามที่เรียกว่าใน Nginx) ภายใต้ /srv/www/ ในตัวอย่างนี้ เราจะใช้ linux-console.net
แต่คุณสามารถเลือกโดเมนและไดเร็กทอรีหลักอื่นได้ตามต้องการ
mkdir -p /srv/www/tecmint/public_html
mkdir /srv/www/tecmint/logs
chown -R nginx:nginx /srv/www/tecmint
ขั้นตอนที่ 9: การกำหนดค่าไดเรกทอรีโฮสต์เสมือน Nginx
ดังที่คุณทราบ ความสามารถในการใช้งานหลายไซต์จากเครื่องเดียวกันเป็นหนึ่งในคุณสมบัติที่โดดเด่นของเว็บเซิร์ฟเวอร์หลัก ๆ ให้เราดำเนินการสร้างไดเรกทอรีเพื่อจัดเก็บบล็อกเซิร์ฟเวอร์ของเรา (เรียกว่าโฮสต์เสมือนใน Apache) ภายใต้ /etc/nginx
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
บรรทัดโค้ดต่อไปนี้ ซึ่งจะต้องแทรกก่อนที่จะปิดบล็อก http ใน /etc/nginx/nginx.conf จะทำให้แน่ใจได้ว่าไฟล์การกำหนดค่าภายใน /etc/nginx/sites-enabled ไดเรกทอรีจะถูกนำมาพิจารณาเมื่อ Nginx กำลังทำงาน:
## Load virtual host conf files. ##
include /etc/nginx/sites-enabled/*;
หากต้องการสร้างบล็อกเซิร์ฟเวอร์สำหรับ linux-console.net
ให้เพิ่มบรรทัดโค้ดต่อไปนี้ใน /etc/nginx/sites-available/tecmint (ไฟล์นี้จะถูกสร้างขึ้นเมื่อคุณป้อน เส้นทางแบบเต็มเพื่อเริ่มโปรแกรมแก้ไขข้อความที่คุณต้องการ) นี่คือไฟล์กำหนดค่าโฮสต์เสมือนพื้นฐาน
server {
listen 80 default;
server_name tecmint;
access_log /srv/www/tecmint/logs/access.log;
error_log /srv/www/tecmint/logs/error.log;
root /srv/www/tecmint/public_html;
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
กระบวนการ “เปิดใช้งาน” โฮสต์เสมือนประกอบด้วยการสร้างลิงก์สัญลักษณ์จากคำจำกัดความของโฮสต์เสมือน tecmint
ไปจนถึง /etc/nginx/sites-enabled< /แข็งแกร่ง>.
ln -s /etc/nginx/sites-available/tecmint /etc/nginx/sites-enabled/tecmint
เพื่อที่จะใช้การเปลี่ยนแปลงที่เราทำอยู่จริง ตอนนี้เราต้องรีสตาร์ท Nginx บางครั้งการตรวจสอบไฟล์การกำหนดค่าเพื่อหาข้อผิดพลาดทางไวยากรณ์ก่อนที่จะดำเนินการดังกล่าวจะเป็นประโยชน์:
nginx -t
systemctl restart nginx
systemctl status nginx
หากต้องการเข้าถึงโฮสต์เสมือนที่สร้างขึ้นใหม่ คุณต้องเพิ่มบรรทัดต่อไปนี้ใน /etc/hosts เป็นวิธีพื้นฐานในการแก้ปัญหาชื่อโดเมน
192.168.0.18 linux-console.net linux-console.net
ขั้นตอนที่ 10: ทดสอบ Nginx, MySQL, PHP และ PHP-FPM
มาดูวิธีทดสอบ PHP แบบคลาสสิกกันดีกว่า สร้างไฟล์ชื่อ test.php
ใต้ /srv/www/tecmint/public_html/ และเพิ่มบรรทัดโค้ดต่อไปนี้ลงไป
ฟังก์ชัน phpinfo()
แสดงข้อมูลมากมายเกี่ยวกับการติดตั้ง PHP ในปัจจุบัน:
<?php
phpinfo();
?>
ตอนนี้ให้ชี้เว็บเบราว์เซอร์ของคุณไปที่ http://tecmint/test.php
และตรวจสอบว่ามีโมดูลที่ติดตั้งและซอฟต์แวร์เพิ่มเติมอยู่หรือไม่:
ยินดีด้วย! ขณะนี้คุณมีการติดตั้งสแต็ก LEMP ที่ใช้งานได้แล้ว หากมีบางอย่างไม่เป็นไปตามที่คาดไว้ โปรดติดต่อเราโดยใช้แบบฟอร์มด้านล่าง ยินดีต้อนรับคำถามและข้อเสนอแนะ