บทนำ

LEMP เป็นตัวย่อสำหรับ Linux, Nginx, MySQL และ PHP LEMP stack เช่นเดียวกับ LAMP stack (พร้อม Apache แทน Nginx) ใช้สำหรับการพัฒนาและปรับใช้เว็บแอปพลิเคชัน Nginx ใน LEMP จัดเตรียมการร้องขอการจัดการสถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์แบบแยกส่วนโดยใช้เหตุการณ์แบบอะซิงโครนัส คุณสมบัตินี้ช่วยให้สามารถทำงานได้อย่างมีประสิทธิภาพภายใต้ภาระสูง MySQL ใช้เพื่อจัดเก็บข้อมูลของเว็บไซต์ในขณะที่ PHP ใช้สำหรับการประมวลผลเนื้อหาแบบไดนามิกของเว็บไซต์.


บทความนี้แสดงวิธีการติดตั้งสแต็ค LEMP ใน Centos 7 VPS หรือ Dedicated Server เราสาธิตการใช้ส่วนประกอบ LEMP Stack รุ่นล่าสุด ณ เวลาที่เผยแพร่ดังต่อไปนี้:

  • รุ่น Nginx 1.15.2
  • PHP-FPM เวอร์ชัน 7.2
  • ชุมชน MySQL เวอร์ชั่น 8.0

Nginx

Open Source NGINX มีให้เลือกสองประเภท:

  • การฉีด: รวมคุณสมบัติล่าสุดและการแก้ไขข้อบกพร่องและเป็นข้อมูลล่าสุดอยู่เสมอ มีความน่าเชื่อถืออย่างไรก็ตามอาจมีโมดูลทดลองและ / หรือข้อบกพร่องใหม่บางอย่าง แนะนำสำหรับเซิร์ฟเวอร์การพัฒนา.
  • มีเสถียรภาพ: รวมฟีเจอร์ล่าสุดที่มีการแก้ไขข้อบกพร่องที่สำคัญกลับเข้าพอร์ตไปยังเวอร์ชัน mainline แนะนำสำหรับเซิร์ฟเวอร์ที่ใช้งานจริง.

มีสองวิธีในการติดตั้งทั้งการฉีดหรือ Nginx ที่เสถียรดังนี้:

  • การติดตั้งแพคเกจ Nginx จาก Nginx Official Repository หรือ OS Repository อย่างเป็นทางการ: วิธีที่ง่ายที่สุดในการติดตั้ง แพคเกจประกอบด้วยโมดูล Nginx อย่างเป็นทางการเกือบทั้งหมด.
  • รวบรวมและติดตั้งจากแหล่งที่มา: วิธีการติดตั้งที่ยืดหยุ่นมากขึ้นในขณะที่คุณตัดสินใจว่าจะรวมโมดูลเฉพาะในแพ็คเกจใด.

ในกรณีนี้เราติดตั้ง Nginx – Mainline Type จากที่เก็บ Nginx อย่างเป็นทางการโดยการสร้างไฟล์ที่เก็บ yum และวางการกำหนดค่าดังนี้:

$ sudo vim /etc/yum.repos.d/nginx.repo
[Nginx]
name = nginx repo
baseurl = https: //nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck = 0
เปิดใช้งาน = 1

บันทึกไฟล์และออกจาก.

อัพเดตที่เก็บ Centos 7 ด้วยที่เก็บ nginx และติดตั้ง nginx

$ sudo yum update
$ sudo yum ติดตั้ง nginx -y

เริ่ม nginx และเปิดใช้งานเมื่อบูต

$ sudo systemctl เริ่ม nginx
$ sudo systemctl เปิดใช้งาน nginx

ตรวจสอบว่า Nginx เปิดใช้งานแล้ว

[linuxuser @ centos7-lemp ~] $ curl -I 127.0.0.1
HTTP / 1.1 200 ตกลง
เซิร์ฟเวอร์: nginx / 1.15.2
วันที่: อังคาร, 31 กรกฎาคม 2018 13:03:07 GMT
ประเภทเนื้อหา: ข้อความ / html
ความยาวเนื้อหา: 612
ปรับเปลี่ยนครั้งล่าสุด: อ., 24 ก.ค. 2018 14:05:29 GMT
การเชื่อมต่อ: Keep-alive
ETag: "5b573229-264"
ยอมรับช่วง: ไบต์

จากผลลัพธ์เรายืนยันว่าเวอร์ชั่นที่ติดตั้งคือ 1.15.2

นอกจากนี้คุณสามารถตรวจสอบผ่านเบราว์เซอร์และป้อนที่อยู่ ip หรือชื่อโดเมนของเว็บเซิร์ฟเวอร์.

http: // server_domain_name_or_public_IP /

ชุมชน MySQL

เราติดตั้งชุมชน MySQL 8.0 (เพื่อจัดการข้อมูลของเว็บไซต์) โดยใช้คำแนะนำในการสอนวิธีการติดตั้ง MYSQL 8.0 และสร้างฐานข้อมูลบน CentOS 7 Linux VPS หรือเซิร์ฟเวอร์เฉพาะ

PHP

ต้องการ PHP ใน LEMP stack เพื่อเปิดใช้งานการประมวลผลเนื้อหาแบบไดนามิกเนื่องจาก Nginx ไม่มีความสามารถในการประมวลผล PHP แบบ inbuilt เช่นเซิร์ฟเวอร์อื่น ๆ เช่น LiteSpeed ในเรื่องนี้เราติดตั้ง PHP-FPM (FastCGI Process Manager) เวอร์ชั่น 7.2 Centos 7 โดยค่าเริ่มต้นนั้นมาพร้อมกับ PHP 5.4 ซึ่งได้มาถึง EOL แล้วปัจจุบันนี้ล้าสมัยแล้วและไม่รองรับอีกต่อไป PHP 7.2 จะทำให้เว็บแอปพลิเคชันโหลดเร็วขึ้นและใช้ทรัพยากรระบบน้อยลง นอกจากนี้ยังรวมการรวมฐานข้อมูล MySQL ไว้ด้วยกันดังนั้นจึงทำงานร่วมกับ MySQL 8.0 ที่ติดตั้งได้อย่างราบรื่น.

ติดตั้งและเปิดใช้งานที่เก็บ Remi

พบแพ็คเกจ PHP-FPM ในที่เก็บ Remi.

$ sudo yum ติดตั้ง -yum-utils
$ sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
$ sudo yum-config-manager – เปิดใช้งาน remi-php72

ติดตั้ง PHP-FPM และโมดูลที่ใช้ทั่วไป

$ sudo yum ติดตั้ง -y php72 php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xml

เริ่มและเปิดใช้งาน PHP-FPM

$ sudo systemctl เริ่มต้น php72-php-fpm
$ sudo systemctl เปิดใช้งาน php72-php-fpm

ตรวจสอบเวอร์ชั่น PHP

[linuxuser @ centos7-lemp ~] $ php72 -v
PHP 7.2.8 (cli) (สร้าง: 17 ก.ค. 2018 08:41:40) (NTS)
ลิขสิทธิ์ (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, ลิขสิทธิ์ (c) 1998-2018 เทคโนโลยี Zend
กับ Zend OPcache v7.2.8 ลิขสิทธิ์ (c) 1999-2018 โดย Zend Technologies

การกำหนดค่าความปลอดภัย PHP ขั้นพื้นฐาน

แก้ไขไฟล์ php.ini และค้นหาพารามิเตอร์ cgi.fix_pathinfo โดยไม่ใส่เครื่องหมายข้อคิดเห็นและตั้งค่าเป็น 0 ตามค่าเริ่มต้นการตั้งค่านี้จะอนุญาตให้ PHP เรียกใช้ไฟล์ที่ใกล้เคียงที่สุดหากไม่พบไฟล์ PHP ที่ตรงกันทั้งหมด ดังนั้นผู้ใช้สามารถสร้างคำขอ PHP ที่เป็นอันตรายซึ่ง PHP จะประมวลผลได้อย่างง่ายดาย.

$ sudo vim /etc/opt/remi/php72/php.ini

แก้ไขดังต่อไปนี้:

; cgi.fix_pathinfo ให้การสนับสนุน * จริง * PATH_INFO / PATH_TRANSLATED สำหรับ CGI ของ PHP
; พฤติกรรมก่อนหน้านี้คือการตั้งค่า PATH_TRANSLATED เป็น SCRIPT_FILENAME และไม่ใช่ grok
; PATH_INFO คืออะไร สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ PATH_INFO ดู cgi รายละเอียด การตั้งค่า
; สิ่งนี้เป็น 1 จะทำให้ PHP CGI แก้ไขพา ธ เพื่อให้สอดคล้องกับข้อมูลจำเพาะ การตั้งค่า
; of zero ทำให้ PHP ทำงานเหมือนเดิม ค่าเริ่มต้นคือ 1 คุณควรแก้ไขสคริปต์ของคุณ
; เพื่อใช้ SCRIPT_FILENAME แทนที่จะเป็น PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo = 0

กำหนดค่า PHP-FPM เพื่อทำงานกับ Nginx

แก้ไขไฟล์กำหนดค่า php-fpm ดังนี้

$ sudo vim /etc/opt/remi/php72/php-fpm.d/www.conf
; เพิ่มผู้ใช้ Nginx
; ผู้ใช้ Unix / กลุ่มของกระบวนการ
; หมายเหตุ: ผู้ใช้มีผลบังคับใช้ หากกลุ่มไม่ได้ตั้งค่ากลุ่มผู้ใช้เริ่มต้น
; จะถูกนำไปใช้.
; RPM: ผู้ใช้ Apache เลือกที่จะให้การเข้าถึงไดเรกทอรีเดียวกันกับ httpd
user = nginx

; RPM: อนุญาตให้กลุ่มเขียน log dir.
group = nginx

; ที่อยู่ที่รับคำขอ FastCGI.
; ไวยากรณ์ที่ถูกต้องคือ:
; ‘ip.add.re.ss: พอร์ต’ – เพื่อฟังบนซ็อกเก็ต TCP ไปยังที่อยู่ IPv4 ที่ระบุ
; พอร์ตเฉพาะ
; ‘[ip: 6: addr: ess]: port’ – เพื่อฟังบนซ็อกเก็ต TCP ไปยังที่อยู่ IPv6 เฉพาะ
; พอร์ตเฉพาะ
; ‘พอร์ต’ – เพื่อฟังบนซ็อกเก็ต TCP ไปยังที่อยู่ทั้งหมด
; (IPv6 และ IPv4-mapped) บนพอร์ตเฉพาะ
; ‘/ path / to / unix / socket’ – เพื่อฟังบนซ็อกเก็ต unix.
; หมายเหตุ: ค่านี้มีผลบังคับใช้.
Listen = 127.0.0.1:9000

เริ่มบริการ php-fpm ใหม่เพื่อให้การเปลี่ยนแปลงการกำหนดค่ามีผล

$ sudo systemctl รีสตาร์ท php72-php-fpm

แก้ไขไฟล์กำหนดค่า Nginx

$ sudo vim /etc/nginx/sites-enabled/default.conf

หลังจากทำการเปลี่ยนแปลงไฟล์ควรเป็นดังนี้:

เซิร์ฟเวอร์ {
ฟัง 80;
ชื่อเซิร์ฟเวอร์ ;

#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;

ตำแหน่ง / {
รูท / usr / share / nginx / html;
index index.php index.html index.htm;
}

error_page 404 /404.html;

# หน้าเซิร์ฟเวอร์ข้อผิดพลาดเปลี่ยนเส้นทางไปยังหน้าแบบคงที่ /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
รูท / usr / share / nginx / html;
}

# พร็อกซีสคริปต์ PHP เพื่อ Apache ฟังบน 127.0.0.1:80
#
#location ~ \ .php $ {
# proxy_pass http://127.0.0.1;
#}

# ส่งสคริปต์ PHP ไปที่เซิร์ฟเวอร์ FastCGI ที่ฟังใน 127.0.0.1:9,000
#
ตำแหน่ง ~ \ .php $ {
รูท / usr / share / nginx / html;
fastcgi_pass 127.0.0.1:9,000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
รวม fastcgi_params;
}

# ปฏิเสธการเข้าถึงไฟล์. htaccess หากรูทเอกสารของ Apache
# concurs กับ nginx’s one
#
#location ~ /\.ht {
# ปฏิเสธทั้งหมด
#}
}

ทดสอบว่าการตั้งค่านั้นโอเคหรือไม่

[linuxuser @ centos7-lemp ~] $ sudo nginx -t
nginx: ไฟล์การกำหนดค่า /etc/nginx/nginx.conf ไวยากรณ์ใช้ได้
การทดสอบ nginx: ไฟล์การกำหนดค่า /etc/nginx/nginx.conf สำเร็จ

รีสตาร์ท nginx เพื่อให้การเปลี่ยนแปลงมีผล

$ sudo systemctl รีสตาร์ท nginx

ทดสอบ PHP

สร้างไฟล์ ข้อมูล.php ดังต่อไปนี้และวางไว้ในไดเรกทอรีเว็บ Nginx

$ sudo vim /usr/share/nginx/html/info.php
<?php phpinfo (); ?>

บันทึกและออกจากไฟล์.

จากนั้นไปที่ที่อยู่เบราว์เซอร์ – http: //your_domain_or_server_public_IP/info.php

หน้าเว็บจะแสดงข้อมูล PHP เกี่ยวกับเซิร์ฟเวอร์ นี่เป็นการยืนยันว่า Nginx ทำงานอย่างถูกต้องกับ PHP เพื่อความปลอดภัยคุณควรดำเนินการลบไฟล์ info.php ในไดเรกทอรีเว็บรูท.

ข้อสรุป

ตอนนี้คุณได้ติดตั้ง LEMP สแต็กเรียบร้อยแล้วคุณสามารถโฮสต์เว็บไซต์ธุรกิจหรือเว็บแอปพลิเคชันที่ยอดเยี่ยมในไดเรกทอรีราก / usr / share / nginx / html และให้บริการลูกค้าที่มีศักยภาพของคุณ มันง่ายมากแน่นอน!

ตรวจสอบบริการโฮสติ้ง MySQL 3 อันดับแรกเหล่านี้:

A2 โฮสติ้ง

ราคาเริ่มต้น:
$ 3.92


ความเชื่อถือได้
9.3


การตั้งราคา
9.0


เป็นมิตรกับผู้ใช้
9.3


สนับสนุน
9.3


คุณสมบัติ
9.3

อ่านความคิดเห็น

เยี่ยมชม A2 Hosting

FastComet

ราคาเริ่มต้น:
$ 2.95


ความเชื่อถือได้
9.7


การตั้งราคา
9.5


เป็นมิตรกับผู้ใช้
9.7


สนับสนุน
9.7


คุณสมบัติ
9.6

อ่านความคิดเห็น

เยี่ยมชม FastComet

Hostinger

ราคาเริ่มต้น:
$ 0.99


ความเชื่อถือได้
9.3


การตั้งราคา
9.3


เป็นมิตรกับผู้ใช้
9.4


สนับสนุน
9.4


คุณสมบัติ
9.2

อ่านความคิดเห็น

เยี่ยมชม Hostinger

บทความเชิงปฏิบัติที่เกี่ยวข้อง

  • วิธีการติดตั้งสแต็ค LEMP (Linux, Nginx, MySQL, PHP) บน Ubuntu 18.04 VPS หรือเซิร์ฟเวอร์เฉพาะ
    สื่อกลาง
  • วิธีการติดตั้ง MYSQL 8.0 และสร้างฐานข้อมูลบน CentOS 7 Linux VPS หรือเซิร์ฟเวอร์เฉพาะ
    สื่อกลาง
  • วิธีการติดตั้ง phpMyAdmin บน CentOS 7 VPS หรือเซิร์ฟเวอร์เฉพาะ
    สื่อกลาง
  • วิธีการปรับแต่งและปรับแต่งประสิทธิภาพของ MySQL 8.0 บนเซิร์ฟเวอร์ CentOS 7
    ผู้เชี่ยวชาญ
  • วิธีการติดตั้ง CachetHQ บน CentOS 7 VPS หรือเซิร์ฟเวอร์เฉพาะ
    สื่อกลาง
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me