Hướng dẫn cài đặt Nginx, PHP, MySQL (LEMP) stack trên CentOS 7

1. Giới thiệu

Trong bài hướng dẫn này, chúng ta sẽ cài đặt LEMP stack với PHP phiên bản 7.4 trên server chạy hệ điều hành CentOS 7 và sử dụng MariaDB.
LEMP stack là một nhóm các phần mềm mã nguồn mở được cài chung với nhau cho phép server có thể host websites và web apps. LEMP là kết hợp của các chữ cái đầu của hệ điều hành Linux, ENginx web server, MySQL-based database và PHP.

2. Cài đặt Nginx

Trước khi cài đặt Nginx phiên bản mới nhất, chúng ta cần cài đặt EPEL repository bao gồm các ứng dụng hỗ trợ dành cho CentOS 7.
Để thêm EPEL repository cho CentOS 7 ta chạy câu lệnh sau:

sudo yum install epel-release

Sau khi EPEL repository đã được cài đặt, cài đặt Nginx sử dụng lệnh sau:

yum install nginx

Sau khi cài đặt hoàn tất, chạy Nginx với câu lệnh:

systemctl start nginx

Ta có thể kiểm tra nginx đã chạy hay chưa bằng câu lệnh:

systemctl status nginx
Centos 7

Hoặc ta có thể kiểm tra bằng cách truy cập đường dẫn sau trên trình duyệt, thay “IP-hoac-domain” bằng IP hoặc domain của bạn:

http://IP-hoac-domain/

Đây là giao diện Nginx mặc định của Nginx web server trên CentOS 7, nếu bạn thấy được trang này thì Nginx đã được cài đặt đúng.

Để Nginx tự chạy khi boot, chạy câu lệnh sau:

systemctl enable nginx

3. Cài đặt MariaDB

Sau khi web server đã hoạt động, kế tiếp ta cần cài đặt MariaDB. Ta chạy lệnh sau để cài đặt MariaDB:

yum install mariadb-server mariadb

Sau khi cài đặt hoàn tất ta chạy MariaDB bằng dòng lệnh sau:

systemctl start mariadb

Sau khi MariaDB đã chạy, ta chạy đoạn script sau để xóa một số giá trị mặc định có thế chặn quyền truy cập của người dùng đến với cơ sở dữ liệu

mysql_secure_installation

Đầu tiên bạn cần thiết lập password cho MariaDB, nhấn enter sau đó chọn Y, các mục phía sau nhấn enter để sử dụng giá trị mặc định (Y) hoặc có thể chọn n tùy mục đích sử dụng:

Để chạy MariaDB tự động khi boot ta chạy dòng lệnh sau:

systemctl enable mariadb

4. Cài đặt PHP

Phiên bản sẵn có của PHP trên server CentOS 7 hiện tại đã cũ, vì thế ta cần cài đặt gói repository của bên thứ 3 để cài đặt PHP 7+ trên CentOS 7. Remi là gói repository cung cấp phiên bản PHP mới nhất trên server CentOS.
Để cài đặt Remi repository trên CentOS 7 ta chạy lệnh sau:

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

Sau khi cài Remi repository, để kiểm tra các phiên bản PHP 7+ Remi đang có ta chạy lệnh sau:

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

Kết quả thu được như sau:

Như đã nói ở trên, trong bài hướng dẫn này ta sẽ cài đặt PHP 7.4, để chọn gói PHP phiên bản 7.4 từ Remi repository ta chạy lệnh sau:

yum-config-manager --enable remi-php74

Sau khi chạy lệnh trên ta có thể cài đặt PHP 7.4 với lệnh sau:

yum install php php-mysqlnd php-fpm

Sau khi cài đặt PHP ta kiểm tra lại phiên bản đã đúng hay chưa bằng lệnh:

php --version

PHP đã hoạt động. Kế đến ta cần điều chỉnh một sốt thông số mặc định để PHP có thể kết hợp với Nginx. Ta có thể dùng các công cụ chỉnh sửa file như vi/vim/nano, trong bài viết sử dụng nano vì nano dễ sử dụng.
Mở file /etc/php-fpm.d/www.conf:

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

Thay thế giá trị mặc định apache trong “user = apache” và “group = apache” bằng nginx.

Thay thế giá trị “listen = /var/run/php-fpm/php-fpm.sock;” và các giá trị “listen.owner = nginx”, “listen.group = nginx”, “listen.mode = 0660”

Sau khi điều chỉnh các giá trị trên ta lưu lại và chạy php-fpm bằng lệnh sau:

systemctl start php-fpm

5. Cấu hình Nginx để chạy PHP

Ta cần tạo một file conf riêng cho PHP, file này sẽ chạy thay thế cho /etc/nginx/nginx.conf mặc định
Đầu tiên ta mở một file mới tại đường dẫn /etc/nginx/conf.d:

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

Copy đoạn sau vào file vừa mới mở, thay “domain_or_IP” bằng domain hoặc IP của bạn sau đó lưu lại:

server {
    listen       80;
    server_name  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;
    }
}

Restart Nginx để áp dụng những thay đổi:

systemctl restart nginx

6. Kiểm tra PHP trên web server

Trước tiên ta cần cấp quyền cho user, thay “user” và “group” phù hợp với bạn:

chown -R user.group /usr/share/nginx/html/

Tiếp tục ta tạo một trang PHP để test tại đường dẫn /usr/share/nginx/html:

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

Ta copy đoạn code sau vào file vừa mới tạo sau đó lưu lại:

<?php
phpinfo();
phpinfo(INFO_MODULES);
?>

Bây giờ ta có thể kiểm tra web server có xử lý được thông tin được tạo ra bằng PHP script không bằng cách truy cập vào đường dẫn sau:

http://domain_or_IP/info.php

Nếu hoạt động bạn sẽ thấy trang tương tự như sau:

7. Tổng kết

Trong bài hướng dẫn này, chúng ta đã xây dựng được Nginx web server và PHP phiên bản mới nhất. Ta đã cấu hình Nginx để xử lý được các yêu cầu từ PHP thông qua php-fpm, và ta cũng đã cấu hình cơ sở dữ liệu MariaDB để lưu trữ dữ liệu của website.

Xem thêm nhiều bài hướng dẫn khác tại: https://howto.nsupport.asia
Tham khảo thêm nhiều dịch vụ khác tại: https://vhost.vn

Was this article helpful?

Related Articles

Leave A Comment?