Thứ ba, 21/04/2020 | 00:00 GMT+7

Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP) trên CentOS 7

Phần mềm LEMP là một group phần mềm nguồn mở thường được cài đặt cùng nhau để cho phép server lưu trữ các trang web động và ứng dụng web. Thuật ngữ này thực sự là một từ viết tắt đại diện cho hệ điều hành L inux, với web server E Nginx (thay thế thành phần Apache của LAMP ). Dữ liệu trang web được lưu trữ trong database dựa trên M ySQL và nội dung động được xử lý bởi P HP.

Trong hướng dẫn này, ta sẽ nhận được một LEMP với PHP 7.4 được cài đặt trên server CentOS 7, sử dụng MariaDB làm hệ thống quản lý database . MariaDB hoạt động như một bản thay thế cho server MySQL ban đầu, trong thực tế, điều này nghĩa là bạn có thể chuyển sang MariaDB mà không cần phải thực hiện bất kỳ thay đổi cấu hình hoặc mã nào trong ứng dụng của bạn .

Yêu cầu

Trước khi bắt đầu với hướng dẫn này, bạn nên cài đặt một account user riêng, không phải root trên server của bạn . Bạn có thể xem cách thực hiện việc này bằng cách hoàn tất các bước 1-4 trong cài đặt server ban đầu cho CentOS 7 .

Bước 1 - Cài đặt Nginx

Để hiển thị các trang web cho khách truy cập trang web của ta , ta sẽ sử dụng Nginx, một web server hiệu suất cao. Để tải version Nginx mới nhất, trước tiên ta sẽ cài đặt kho EPEL, nơi chứa phần mềm bổ sung cho hệ điều hành CentOS 7.

Để thêm repository CentOS 7 EPEL, hãy chạy lệnh sau:

  • sudo yum install epel-release

Vì ta đang sử dụng sudo , các thao tác này được thực thi với các quyền của root. Nó sẽ yêu cầu bạn nhập password của regular user của bạn để xác minh bạn có quyền chạy các lệnh với quyền root. Bạn cũng sẽ được yêu cầu xác nhận cài đặt, vì vậy hãy nhấn Y để tiếp tục.

Như vậy, kho EPEL đã được cài đặt trên server của bạn, hãy cài đặt Nginx bằng lệnh yum sau:

  • sudo yum install nginx

Sau khi cài đặt xong, hãy khởi động dịch vụ Nginx với:

  • sudo systemctl start nginx

Bạn có thể thực hiện kiểm tra tại chỗ ngay lập tức để xác minh mọi thứ đã diễn ra như kế hoạch bằng cách truy cập địa chỉ IP công cộng của server trong trình duyệt web (xem ghi chú dưới tiêu đề tiếp theo để tìm hiểu địa chỉ IP công cộng của bạn là gì nếu không có ):

Open in a web browser:
http://server_domain_name_or_IP/

Bạn sẽ thấy trang web CentOS 7 Nginx mặc định, trang này dành cho mục đích thông tin và thử nghiệm. Nó trông giống như sau :

CentOS 7 Nginx Mặc định

Nếu bạn thấy trang này, thì web server của bạn hiện đã được cài đặt chính xác.

Để cho phép Nginx bắt đầu khi server khởi động , hãy chạy lệnh sau:

  • sudo systemctl enable nginx

Cách tìm địa chỉ IP công cộng của server của bạn

Nếu bạn không biết địa chỉ IP công cộng của server của bạn là gì, bạn có thể tìm thấy nó bằng một số cách. Thông thường, đây là địa chỉ bạn sử dụng để kết nối với server của bạn thông qua SSH.

Từ dòng lệnh, bạn có thể tìm thấy điều này theo một số cách. Đầu tiên, bạn có thể sử dụng các công cụ iproute2 để lấy địa chỉ của bạn bằng lệnh :

  • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Điều này sẽ trả lại cho bạn một hoặc hai dòng. Cả hai đều là địa chỉ chính xác, nhưng máy tính của bạn có thể chỉ sử dụng được một trong số chúng, vì vậy hãy thử từng địa chỉ.

Một phương pháp thay thế là sử dụng một bên ngoài để cho bạn biết cách nhìn thấy server của bạn. Bạn có thể thực hiện việc này bằng cách hỏi một server cụ thể xem địa chỉ IP của bạn là gì:

  • curl http://icanhazip.com

Dù phương pháp bạn sử dụng để lấy địa chỉ IP của bạn , bạn có thể nhập nó vào thanh địa chỉ của trình duyệt web để truy cập server của bạn.

Bước 2 - Cài đặt MariaDB

Bây giờ ta đã cài đặt và chạy web server của bạn , đã đến lúc cài đặt MariaDB, một trình thay thế MySQL drop-in. MariaDB là một nhánh của hệ quản trị database quan hệ MySQL do cộng đồng phát triển.

, ta có thể sử dụng yum để cài đặt phần mềm của bạn . Lần này, ta cũng sẽ cài đặt một số gói trợ giúp khác sẽ hỗ trợ ta làm cho các thành phần của ta giao tiếp với nhau:

  • sudo yum install mariadb-server mariadb

Khi quá trình cài đặt hoàn tất, ta cần khởi động MariaDB bằng lệnh sau:

  • sudo systemctl start mariadb

Bây giờ database MariaDB của ta đang chạy, ta muốn chạy một tập lệnh bảo mật sẽ loại bỏ một số mặc định nguy hiểm và khóa quyền truy cập vào database của ta . Bắt đầu tập lệnh tương tác bằng lệnh:

  • sudo mysql_secure_installation

Dấu nhắc sẽ yêu cầu bạn nhập password MariaDB root hiện tại của bạn. Vì bạn vừa cài đặt MariaDB, rất có thể bạn sẽ không có, vì vậy hãy để trống bằng cách nhấn enter. Sau đó, dấu nhắc sẽ hỏi bạn có muốn đặt password root . Tiếp tục và nhập Y , và làm theo hướng dẫn:

mysql_secure_installation prompts:
Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success!

Đối với các câu hỏi còn lại, bạn nên nhấn phím "ENTER" qua mỗi dấu nhắc để chấp nhận các giá trị mặc định. Thao tác này sẽ xóa một số user và database mẫu, vô hiệu hóa đăng nhập root từ xa và tải các luật mới này để MySQL áp dụng ngay những thay đổi mà ta đã thực hiện.

Điều cuối cùng bạn cần làm là kích hoạt MariaDB để bắt đầu khi server khởi động . Sử dụng lệnh sau để thực hiện :

  • sudo systemctl enable mariadb

Đến đây, hệ thống database của bạn đã được cài đặt xong và ta có thể tiếp tục.

Bước 3 - Cài đặt PHP

PHP là thành phần cài đặt của ta sẽ xử lý mã để hiển thị nội dung động. Nó có thể chạy các tập lệnh, kết nối với database MySQL của ta để lấy thông tin và chuyển giao nội dung đã xử lý cho web server của ta để hiển thị.

Phiên bản PHP có sẵn theo mặc định trong các server CentOS 7 đã lỗi thời và vì lý do đó, ta cần cài đặt repository của bên thứ ba để download PHP 7+ và cài đặt nó trên server CentOS 7 của bạn. Remi là một repository phổ biến cung cấp các bản phát hành PHP cập nhật nhất cho các server CentOS.

Để cài đặt repository Remi cho CentOS 7, hãy chạy:

  • sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Sau khi cài đặt xong, bạn cần chạy lệnh để kích hoạt kho chứa version PHP bạn muốn . Để kiểm tra bản phát hành PHP 7+ nào có sẵn trong repository lưu trữ Remi, hãy chạy:

  • yum --disablerepo="*" --enablerepo="remi-safe" list php[7-9][0-9].x86_64

Bạn sẽ thấy kết quả như thế này:

Output
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * remi-safe: mirrors.ukfast.co.uk Available Packages php70.x86_64 2.0-1.el7.remi remi-safe php71.x86_64 2.0-1.el7.remi remi-safe php72.x86_64 2.0-1.el7.remi remi-safe php73.x86_64 2.0-1.el7.remi remi-safe php74.x86_64 1.0-3.el7.remi remi-safe php80.x86_64 1.0-3.el7.remi remi-safe

Trong hướng dẫn này, ta sẽ cài đặt PHP 7.4, hiện là version PHP ổn định được cập nhật nhiều nhất. Để kích hoạt gói Remi chính xác để cài đặt PHP 7.4, hãy chạy:

  • sudo yum-config-manager --enable remi-php74

Bây giờ ta có thể tiến hành sử dụng yum để cài đặt PHP như bình thường. Lệnh sau sẽ cài đặt tất cả các gói cần thiết để cài đặt PHP 7.4 trong Nginx và cho phép nó kết nối với database dựa trên MySQL:

  • sudo yum install php php-mysqlnd php-fpm

Để xác nhận PHP có sẵn dưới dạng version bạn đã chọn, hãy chạy:

  • php --version

Bạn sẽ thấy kết quả như thế này:

Output
PHP 7.4.5 (cli) (built: Apr 14 2020 12:54:33) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies

PHP hiện đã được cài đặt thành công trên hệ thống. Tiếp theo, ta cần thực hiện một vài điều chỉnh đối với cấu hình mặc định. Để tạo điều kiện chỉnh sửa file trên CentOS, trước tiên ta sẽ cài đặt nano , một editor thân thiện với user hơn vi :

  • sudo yum install nano

Mở file cấu hình /etc/php-fpm.d/www.conf bằng nano hoặc editor mà bạn chọn:

  • sudo nano /etc/php-fpm.d/www.conf

Bây giờ hãy tìm chỉ thị usergroup . Nếu bạn đang sử dụng nano , bạn có thể nhấn CTRL + W để tìm kiếm các cụm từ này bên trong file đang mở.

/etc/php-fpm.d/www.conf
… ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ;       will be used. ; RPM: apache user chosen to provide access to the same directories as httpd user = apache ; RPM: Keep a group allowed to write in log dir. group = apache

Bạn sẽ nhận thấy rằng cả biến usergroup đều được đặt thành apache . Ta cần thay đổi những điều này thành nginx :

/etc/php-fpm.d/www.conf
… ; RPM: apache user chosen to provide access to the same directories as httpd user = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx

Tiếp theo, định vị chỉ thị listen . Theo mặc định, php-fpm sẽ lắng nghe trên một server và cổng cụ thể qua TCP. Ta muốn thay đổi cài đặt này để nó lắng nghe trên file socket local , vì điều này cải thiện hiệu suất tổng thể của server .
Thay đổi dòng có chứa chỉ thị listen thành sau:

/etc/php-fpm.d/www.conf
listen = /var/run/php-fpm/php-fpm.sock; 

Cuối cùng, ta cần thay đổi cài đặt chủ sở hữu và group cho file socket mà ta vừa xác định trong chỉ thị listen . Xác định vị trí listen.owner , listen.grouplisten.mode chỉ thị. Những dòng này được comment theo mặc định. Bỏ ghi chú bằng cách xóa phần trước ; ký tên ở đầu dòng. Sau đó, thay đổi chủ sở hữu và group thành nginx :

/etc/php-fpm.d/www.conf
listen.owner = nginx listen.group = nginx listen.mode = 0660 

Lưu file khi bạn chỉnh sửa xong. Nếu bạn đang sử dụng nano , hãy làm như vậy bằng cách nhấn CTRL + X , sau đó nhấn YENTER .

Để bật và khởi động dịch vụ php-fpm , hãy chạy:

  • sudo systemctl start php-fpm

Môi trường PHP của bạn hiện đã sẵn sàng. Tiếp theo, ta sẽ cấu hình Nginx để nó gửi tất cả các yêu cầu cho các tập lệnh PHP để được xử lý bởi php-fpm .

Bước 4 - Cấu hình Nginx để xử lý các trang PHP

Bây giờ, ta đã cài đặt tất cả các thành phần cần thiết. Thay đổi cấu hình duy nhất mà ta vẫn cần làm là yêu cầu Nginx sử dụng PHP processor của ta cho nội dung động.

Nginx có một folder chuyên dụng, nơi ta có thể xác định mỗi trang web được lưu trữ dưới dạng file cấu hình riêng biệt, sử dụng khối server . Điều này tương tự với các server ảo của Apache.

Tuy nhiên, với cài đặt mặc định, folder này trống. Ta sẽ tạo một file mới để làm trang web PHP mặc định trên server này, file này sẽ overrides khối server mặc định được xác định trong file /etc/nginx/nginx.conf .

Đầu tiên, mở một file mới trong folder /etc/nginx/conf.d :

  • sudo nano /etc/nginx/conf.d/default.conf

Sao chép khối định nghĩa server PHP sau vào file cấu hình của bạn và đừng quên thay thế lệnh server_name để nó trỏ đến domain hoặc địa chỉ IP của server của bạn:

/etc/nginx/conf.d/default.conf
server {     listen       80;     server_name  server_domain_or_IP;      root   /usr/share/nginx/html;     index index.php index.html index.htm;      location / {         try_files $uri $uri/ =404;     }     error_page 404 /404.html;     error_page 500 502 503 504 /50x.html;      location = /50x.html {         root /usr/share/nginx/html;     }      location ~ \.php$ {         try_files $uri =404;         fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;         fastcgi_index index.php;         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;         include fastcgi_params;     } } 

Lưu file khi bạn hoàn tất.

Tiếp theo, khởi động lại Nginx để áp dụng các thay đổi:

  • sudo systemctl restart nginx

Web server của bạn hiện đã được cài đặt đầy đủ. Trong bước tiếp theo, ta sẽ kiểm tra việc tích hợp PHP với Nginx.

Bước 5 - Kiểm tra PHP processor trên Server Web của bạn

Bây giờ web server của bạn đã được cài đặt , ta có thể tạo một tập lệnh PHP thử nghiệm đảm bảo Nginx đang xử lý chính xác các tập lệnh .php với sự trợ giúp của php-fpm .

Trước khi tạo tập lệnh của ta , ta sẽ thực hiện thay đổi đối với cài đặt quyền sở hữu mặc định trên root tài liệu của Nginx, để user sudo thông thường của ta có thể tạo file ở vị trí đó.

Lệnh sau sẽ thay đổi quyền sở hữu của root tài liệu Nginx mặc định thành user và group được gọi là sammy , vì vậy hãy đảm bảo thay thế tên user và group được đánh dấu trong lệnh này để phản ánh tên user và group của hệ thống.

  • sudo chown -R sammy.sammy /usr/share/nginx/html/

Bây giờ ta sẽ tạo một trang PHP thử nghiệm đảm bảo web server hoạt động như mong đợi.

Tạo một file PHP mới có tên là info.php tại folder /usr/share/nginx/html :

  • nano /usr/share/nginx/html/info.php

Đoạn mã PHP sau sẽ hiển thị thông tin về môi trường PHP hiện tại đang chạy trên server :

/usr/share/nginx/html/info.php
<?php  phpinfo(); 

Khi bạn hoàn tất, hãy lưu file .

Bây giờ ta có thể kiểm tra xem web server của ta có thể hiển thị chính xác nội dung được tạo bởi tập lệnh PHP hay không. Truy cập trình duyệt của bạn và truy cập tên server hoặc địa chỉ IP của server , theo sau là /info.php :

http://server_host_or_IP/info.php 

Bạn sẽ thấy một trang tương tự như sau:

Thông tin về CentOS 7 PHP 7.4

Sau khi kiểm tra thông tin liên quan về server PHP của bạn thông qua trang đó, tốt nhất là xóa file bạn đã tạo vì nó chứa thông tin nhạy cảm về môi trường PHP và server CentOS của bạn. Bạn có thể sử dụng rm để xóa file đó:

  • rm /usr/share/nginx/html/info.php

Bạn luôn có thể tạo lại file này nếu sau này bạn cần.

Kết luận

Trong hướng dẫn này, bạn đã xây dựng một nền tảng linh hoạt để cung cấp các trang web và ứng dụng PHP cho khách truy cập của bạn , sử dụng Nginx làm web server và version phát hành PHP mới nhất. Bạn đã cài đặt Nginx để xử lý các yêu cầu PHP thông qua php-fpm và bạn cũng cài đặt database MariaDB để lưu trữ dữ liệu trang web của bạn .


Tags:

Các tin trước

Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP) trên CentOS 8 [Quickstart] 2020-04-16
Cách cài đặt Linux, Apache, MariaDB, PHP (LAMP) trên CentOS 8 [Quickstart] 2020-04-16
Cách cài đặt Linux, Apache, MariaDB, PHP (LAMP) trên CentOS 8 2020-04-07
Cách cài đặt Linux, Nginx, MariaDB, PHP ( LEMP) trên Debian 10 2020-03-30
Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP) trên CentOS 8 2020-02-24
Cách cài đặt Linux, Apache, MariaDB, PHP (LAMP) trên Debian 10 2019-07-15
Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Debian 8 2018-10-18
Cách cài đặt Linux, Nginx, MySQL, PHP ( LEMP) trên Debian 9 2018-09-13
Cách cài đặt Linux, Apache, MariaDB, PHP (LAMP) trên Debian 9 2018-09-04
Cách cài đặt Linux, Nginx, MySQL, PHP ( LEMP) trên Ubuntu 18.04 2018-05-23