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

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