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

วิธีการติดตั้ง Laravel PHP Framework ด้วย Nginx บน CentOS 8


Laravel เป็นเฟรมเวิร์กเว็บที่ใช้ PHP แบบโอเพ่นซอร์ส เป็นที่รู้จักและทันสมัย พร้อมด้วยไวยากรณ์ที่ชัดเจน สวยงาม และเข้าใจง่าย ซึ่งทำให้ง่ายต่อการสร้างเว็บแอปพลิเคชันขนาดใหญ่และมีประสิทธิภาพ

คุณสมบัติหลัก ได้แก่ เอ็นจิ้นการกำหนดเส้นทางที่ง่ายและรวดเร็ว คอนเทนเนอร์การฉีดการขึ้นต่อกันที่ทรงพลัง แบ็กเอนด์หลายรายการสำหรับเซสชันและการจัดเก็บแคช ORM ฐานข้อมูลที่ชัดเจนและใช้งานง่าย (การแมปเชิงวัตถุ) การประมวลผลงานเบื้องหลังที่แข็งแกร่ง และการออกอากาศเหตุการณ์แบบเรียลไทม์

นอกจากนี้ยังใช้เครื่องมือต่างๆ เช่น Composer ซึ่งเป็นตัวจัดการแพ็คเกจ PHP สำหรับจัดการการขึ้นต่อกันและ Artisan ซึ่งเป็นอินเทอร์เฟซบรรทัดคำสั่งสำหรับการสร้างและจัดการเว็บแอปพลิเคชัน

ในบทความนี้ คุณจะได้เรียนรู้วิธีติดตั้งเวอร์ชันล่าสุดของเว็บเฟรมเวิร์ก Laravel PHP บนการกระจาย CentOS 8 Linux

ข้อกำหนดของเซิร์ฟเวอร์

กรอบงาน Laravel มีข้อกำหนดดังต่อไปนี้:

  • PHP >= 7.2.5 พร้อมด้วยส่วนขยาย PHP เหล่านี้ OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype และ JSON
  • ผู้แต่ง – สำหรับการติดตั้งและจัดการการอ้างอิง

ขั้นตอนที่ 1: การติดตั้ง LEMP Stack ใน CentOS 8

1. ในการเริ่มต้น ให้อัปเดตแพ็คเกจซอฟต์แวร์ระบบและติดตั้ง LEMP stack (Linux, Nginx, MariaDB/MySQL และ PHP) โดยใช้คำสั่ง dnf ต่อไปนี้

dnf update
dnf install nginx php php-fpm php-common php-xml php-mbstring php-json php-zip mariadb-server php-mysqlnd

2. เมื่อการติดตั้ง LEMP เสร็จสิ้น คุณจะต้องเริ่มต้น PHP-PFM, Nginx และ MariaDB โดยใช้คำสั่ง systemctl ต่อไปนี้

systemctl start php-fpm nginx mariadb
systemctl enable php-fpm nginx mariadb
systemctl status php-fpm nginx mariadb

3. ถัดไป คุณต้องรักษาความปลอดภัยและทำให้กลไกฐานข้อมูล MariaDB แข็งแกร่งขึ้นโดยใช้สคริปต์ความปลอดภัยดังที่แสดง

mysql_secure_installation

ตอบคำถามต่อไปนี้เพื่อความปลอดภัยในการติดตั้งเซิร์ฟเวอร์

Enter current password for root (enter for none): Enter Set root password? [Y/n] y #set new root password Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y

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

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload

5. สุดท้าย คุณสามารถยืนยันได้ว่าสแต็ก LEMP ของคุณกำลังทำงานโดยใช้เบราว์เซอร์ที่ที่อยู่ IP ของระบบของคุณ

http://server-IP

ขั้นตอนที่ 2: การกำหนดค่าและการรักษาความปลอดภัย PHP-FPM และ Nginx

6. ในการประมวลผลคำขอจากเว็บเซิร์ฟเวอร์ Nginx PHP-FPM สามารถรับฟังบนซ็อกเก็ต Unix หรือซ็อกเก็ต TCP และสิ่งนี้ถูกกำหนดโดย พารามิเตอร์ listen ในไฟล์การกำหนดค่า /etc/php-fpm.d/www.conf

vi /etc/php-fpm.d/www.conf

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

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

listen.owner = nginx
listen.group = nginx
listen.mode = 066

8. ถัดไป ให้ตั้งค่าโซนเวลาทั้งระบบในไฟล์การกำหนดค่า /etc/php.ini

vi /etc/php.ini

มองหาบรรทัด “;date.timezone ” แล้วยกเลิกการใส่เครื่องหมายข้อคิดเห็น จากนั้นตั้งค่าตามที่แสดงในภาพหน้าจอ (ใช้ค่าที่ใช้กับภูมิภาค/ทวีปและประเทศของคุณ)

 
date.timezone = Africa/Kampala

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

cgi.fix_pathinfo=1

10. ในส่วนที่เกี่ยวข้องกับจุดก่อนหน้า ให้ยกเลิกหมายเหตุพารามิเตอร์ต่อไปนี้ในไฟล์ /etc/php-fpm.d/www.conf ด้วย อ่านความคิดเห็นเพื่อดูคำอธิบายเพิ่มเติม

security.limit_extensions = .php .php3 .php4 .php5 .php7

ขั้นตอนที่ 3: การติดตั้ง Composer และ Laravel PHP Framework

11. จากนั้น ติดตั้งแพ็คเกจ Composer โดยรันคำสั่งต่อไปนี้ คำสั่งแรกจะดาวน์โหลดตัวติดตั้ง จากนั้นรันโดยใช้ PHP

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer

12. เมื่อติดตั้ง Composer แล้ว ให้ใช้เพื่อติดตั้งไฟล์ Laravel และการอ้างอิงดังต่อไปนี้ แทนที่ mysite.com ด้วยชื่อของไดเรกทอรีที่จะจัดเก็บไฟล์ Laravel เส้นทางที่แน่นอน (หรือเส้นทางรูทในไฟล์การกำหนดค่า Nginx) จะเป็น /var/www/html/mysite .com.

cd /var/www/html/
composer create-project --prefer-dist laravel/laravel mysite.com

หากทุกอย่างเป็นไปด้วยดีในระหว่างกระบวนการ ควรติดตั้งแอปพลิเคชันให้สำเร็จ และควรสร้างคีย์ตามที่แสดงในภาพหน้าจอต่อไปนี้

13. ในระหว่างกระบวนการติดตั้ง ไฟล์สภาพแวดล้อม .env ถูกสร้างขึ้นและแอปพลิเคชันที่จำเป็นก็ถูกสร้างขึ้นด้วย ดังนั้นคุณไม่จำเป็นต้องสร้างด้วยตนเองเหมือนเมื่อก่อน เพื่อยืนยันสิ่งนี้ ให้รันรายการไดเรกทอรีราก laravel แบบยาวโดยใช้คำสั่ง ls

ls -la mysite.com/

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

chown -R :nginx /var/www/html/mysite.com/storage/
chown -R :nginx /var/www/html/mysite.com/bootstrap/cache/
chmod -R 0777 /var/www/html/mysite.com/storage/
chmod -R 0775 /var/www/html/mysite.com/bootstrap/cache/

15. หากเปิดใช้งาน SELinux บนเซิร์ฟเวอร์ของคุณ คุณควรอัปเดตบริบทความปลอดภัยของที่เก็บข้อมูลและbootstrap/cache ไดเรกทอรี

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/mysite.com/storage(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/mysite.com/bootstrap/cache(/.*)?'
restorecon -Rv '/var/www/html/mysite.com'

ขั้นตอนที่ 4: กำหนดค่าบล็อกเซิร์ฟเวอร์ Nginx สำหรับ Laravel

16. เพื่อให้ Nginx เริ่มให้บริการเว็บไซต์หรือแอปพลิเคชันของคุณ คุณต้องสร้างบล็อกเซิร์ฟเวอร์ในไฟล์ .conf ภายใต้ /etc/nginx/conf.d/ ดังที่แสดง

vi /etc/nginx/conf.d/mysite.com.conf

คัดลอกและวางการกำหนดค่าต่อไปนี้ลงในไฟล์ จดบันทึกรูทและพารามิเตอร์ fastcgi_pass

server {
	listen      80;
       server_name mysite.com;
       root        /var/www/html/mysite.com/public;
       index       index.php;

       charset utf-8;
       gzip on;
	gzip_types text/css application/javascript text/javascript application/x-javascript  image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
        location / {
        	try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ \.php {
                include fastcgi.conf;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/run/php-fpm/www.sock;
        }
        location ~ /\.ht {
                deny all;
        }
}

17. บันทึกไฟล์และตรวจสอบว่าไวยากรณ์การกำหนดค่า Nginx ถูกต้องหรือไม่โดยการรัน

nginx -t

18. จากนั้นรีสตาร์ทบริการ PHP-FPM และ Nginx เพื่อให้การเปลี่ยนแปลงล่าสุดมีผล

systemctl restart php-fpm
systemctl restart Nginx

ขั้นตอนที่ 5: การเข้าถึงเว็บไซต์ Laravel จากเว็บเบราว์เซอร์

19. เพื่อเข้าถึงเว็บไซต์ Laravel ที่ mysite.com ซึ่งไม่ใช่ชื่อโดเมนแบบเต็ม (FQDN) และไม่ได้จดทะเบียน (ใช้เพื่อการทดสอบเท่านั้น) เราจะใช้ไฟล์ /etc/hosts บนเครื่องของคุณเพื่อสร้าง DNS ในเครื่อง

เรียกใช้คำสั่งต่อไปนี้เพื่อเพิ่มที่อยู่ IP ของเซิร์ฟเวอร์และโดเมนในไฟล์ที่ต้องการ (แทนที่ค่าตามการตั้งค่าของคุณ)

ip add		#get remote server IP
echo "10.42.0.21  mysite.com" | sudo tee -a /etc/hosts

20. จากนั้น เปิดเว็บเบราว์เซอร์บนเครื่องท้องถิ่นและใช้ที่อยู่ต่อไปนี้เพื่อนำทาง

http://mysite.com

คุณปรับใช้ Laravel บน CentOS 8 สำเร็จแล้ว ตอนนี้คุณสามารถเริ่มพัฒนาเว็บไซต์หรือเว็บแอปพลิเคชันของคุณโดยใช้ Laravel ได้แล้ว สำหรับข้อมูลเพิ่มเติม โปรดดูคู่มือการเริ่มต้นใช้งาน Laravel