Hướng dẫn cài đặt LEMP stack trên Ubuntu 22.04 với PHP 8.1

Tác giả: 17/11/2023

Cài đặt LEMP trên Ubuntu 22 – LEMP là viết tắt của Linux, Nginx (Engine-X), MariaDB/MySQL và PHP, tất cả đều là phần mềm miễn phí. Đây là những phần mềm phổ biến nhất cung cấp môi trường hoạt động cho các trang web.

Trong bài viết này Nhân Hòa sẽ hướng dẫn các bạn cài đặt LEMP trên Ubuntu 22.04 với PHP 8.1.

1. Cài đặt Nginx

Cài đặt Nginx:

apt update  apt -y install nginx

Trên Ubuntu 22.04, Nginx được cấu hình bắt đầu chạy khi cài đặt.

Nếu tường lửa ufw đang chạy, thì bạn cần phải cho phép kết nối với Nginx. Nginx tự đăng ký với ufw khi cài đặt. Do đó việc thực hiện trở nên đơn giản hơn.

Cho phép lưu lượng truy cập trên cổng 80.

ufw allow 'Nginx HTTP'

Kiểm tra phiên bản nginx:

nginx -v  nginx version: nginx/1.18.10 (Ubuntu)

Truy cập IP máy chủ trên trình duyệt ta sẽ thấy như sau:

2. Cài đặt hệ quản trị cơ sở dữ liệu

Trên thực tế với LEMP, bạn có thể sử dụng mysql hoặc mariadb đều được, bài này mình sẽ hướng dẫn với mariadb.

Trước khi cài đặt, ta sẽ gỡ phiên bản hiện tại của MariaDB trên máy để cài đặt mới.

Gỡ MariaDB hiện tại trên Ubuntu:

apt-get remove mariadb-server

Cài đặt mới MariaDB

apt -y install mariadb-server

Dịch vụ MariaDB sẽ tự động khởi chạy. Kiểm tra trạng thái:

systemctl status mariadb

Kiểm tra version của MariaDB:

mariadb -V  mariadb  Ver 15.1 Distrib 10.6.12-MariaDB, for debian-linux-gnu (x86_64) using  EditLine wrapper

Cài đặt một số thông tin ban đầu:

mysql_secure_installation
  • Cài lại mật khẩu cho quyền root của cơ sở dữ liệu:Enter currret password for root (enter for none):
  • Bước này yêu cầu bạn nhập mật khẩu gần đây cho root. Nếu bạn mới cài lần đầu thì nhấn Enter để tiếp tục.Set root password? (Y/n)
  • Nếu bạn cài lần đầu, hệ thống sẽ hỏi bạn muốn cài password cho quyền root không. Bạn gõ Y -> Enter, sau đó nhập mật khẩu và xác thực mật khẩu.
  • Với những máy mới cài mariadb lần đầu, hệ thống yêu cầu thêm một số thiết lập như sau:
    • Xoá bỏ các user khác.
    • Không cho phép root đăng nhập từ xa.
    • Xoá bỏ databases test.
    • Khởi chạy lại bảng Privilege (bảng phân quyền).
  • Bạn chỉ cần gõ Y cho những yêu cầu đó.

3. Cài đặt PHP

Không giống với Apache, Nginx không tích hợp hỗ trợ xử lý các tệp PHP. Vì vậy, ta cài đặt một ứng dụng riêng biệt để xử lý các tệp PHP. Chẳng hạn như PHP FPM (fastCGI process manager)

Cài đặt module php-fpm và php-mysql

sudo apt install php8.1-fpm php-mysql

Kiểm tra phiên bản php

php -v

Ta sẽ thấy phiên bản php sau khi cài là 8.1.2

Bây giờ ta đã cài đặt đủ các thành phần của LEMP stack. Nhưng vẫn cần phải thực hiện một số thay đổi về cấu hình để yêu cầu Nginx sử dụng PHP để xử lý nội dung.

Mở thư mục: /etc/nginx/sites-available/. Trong ví dụ này, tên máy chủ được đặt là cloud365.vn (Bạn có thể đặt bất kì tên bạn muốn). Tạo file cloud365.vn

vi /etc/nginx/sites-available/cloud365.vn

Thêm nội dung sau:

server {
    listen 80;
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    server_name cloud365.vn;

    location / {
            try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }

    location ~ /\.ht {
            deny all;
    }
}

Trong đó:

  • listen : Xác định cổng Nginx lắng nghe. Trong trường hợp này là cổng 80 (mặc định của HTTP)
  • root : Xác định gốc lưu trữ các tệp của trang web
  • index : thứ tự ưu tiên các file cấu hình, nếu chúng tồn tại
  • server_name : Xác định khối máy chủ nào được sử dụng. Nó trỏ đến tên miền hoặc IP public của bạn
  • location / : Kiểm tra sự tồn tại của các tệp khớp với uri. Nếu nginx không thể tìm thấy tệp thích hợp, nó sẽ trả về 404
  • location ~ \.php$ : Khai báo nơi xử lý PHP bằng cách trỏ Nginx vào tệp cấu hình fastcgi-php.conf và tệp php8.1-fpm.sock
  • location ~ /\.ht : Xử lí các tệp .htaccess mà Nginx không xử lí. Bằng cách deny all chỉ thị, nếu bất kì tệp .htaccess xảy ra để tìm đường vào tài liệu gốc thì chúng sẽ không được phục vụ cho khách truy cập.

Tạo liên kết tượng trưng từ file cấu hình server ở trên (trong thư mục /etc/nginx/sites-available/) tới thư mục /etc/nginx/sites-enabled/

ln -s /etc/nginx/sites-available/cloud365.vn /etc/nginx/sites-enabled/

Hủy liên kết file cấu hình mặc định khỏi thư mục /sites-enabled/:

unlink /etc/nginx/sites-enabled/default

Lưu ý: Nếu bạn cần khôi phục cấu hình mặc định, bạn có thể tạo liên kết lại với file mặc định:

ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

Kiểm tra xem file cấu hình mới có lỗi gì không:

nginx -t
  • Nếu không có lỗi gì sẽ có thông báo tương tự như sau
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
  • Nếu có lỗi thì sẽ có thông báo lỗi

Reload Nginx:

systemctl reload nginx

Tạo file /var/www/html/info.php

vi /var/www/html/info.php

Thêm vào nội dung sau:

<?php
phpinfo();

Dùng trình duyệt gõ vào thanh URL

<địa chỉ ip>/info.php

Khi xuất hiện màn hình tương tự như hình có nghĩa là đã cài PHP thành công.

Sau khi cài đặt xong, bạn nên xóa file info.php, vì nó có thể cho người dùng trái phép một số gợi ý về cấu hình của trang web và giúp họ cố gắng đột nhập.

rm /var/www/html/info.php

Kết luận

Như vậy Cloud365 đã hướng dẫn xong cho bạn cách cài đặt LEMP stack trên hệ điều hành Ubuntu 22.04 với PHP 8.1

Chúc các bạn thành công!