Cấu hình PHP 8.3 ‘chuẩn chỉnh’ trên Ubuntu 24.04: Đừng để Server chạy như rùa

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

Sai lầm phổ biến: Cài PHP theo kiểu ‘mì ăn liền’

Bạn gõ lệnh sudo apt install php rồi ung dung ngồi chờ? Rất có thể bạn đang tự làm khó mình. Cách này thường cài bản PHP cũ từ kho mặc định, đi kèm mod_php – một ‘di sản’ khiến Web Server ngốn RAM khủng khiếp vì phải tải toàn bộ nhân PHP vào mỗi process của Apache.

Mình từng xử lý một ca VPS 4GB RAM nhưng cứ có 20 người truy cập cùng lúc là treo cứng. Nguyên nhân không nằm ở code, mà do PHP chạy ở chế độ mặc định, không có bộ nhớ đệm và quản lý tiến trình (process) cực kỳ sơ sài. Sau khi chuyển sang PHP-FPM và tối ưu lại, server đó đã chịu tải gấp 5 lần mà CPU vẫn ‘mát mẻ’.

Tại sao Server của bạn chạy chậm?

Có ba ‘sát thủ’ thầm lặng đang bào mòn hiệu suất hệ thống của bạn:

  • Cơ chế xử lý cũ: Chạy PHP như một module đi kèm thay vì tách riêng thành dịch vụ PHP-FPM chuyên nghiệp.
  • Lãng phí tài nguyên CPU: PHP là ngôn ngữ thông dịch. Nếu không có OPcache, server phải biên dịch lại code cho mỗi request, gây lãng phí khoảng 30-50% sức mạnh xử lý.
  • Xung đột môi trường: Cài đặt Composer sai cách dẫn đến lỗi phân quyền (permission denied) liên tục khi cập nhật thư viện.

Lựa chọn Repository: Đừng dùng hàng mặc định

Trên Ubuntu 24.04, bạn có hai hướng đi chính:

  1. Repo mặc định: Ổn định nhưng nghèo nàn về phiên bản và cập nhật chậm.
  2. PPA của Ondřej Surý: Đây là lựa chọn bắt buộc của dân chuyên nghiệp. Ondřej là người trực tiếp duy trì các gói PHP cho Debian. Sử dụng PPA này giúp bạn cài từ PHP 5.6 đến 8.3 chỉ với một câu lệnh.

Quy trình cài đặt PHP 8.3 tối ưu cho Production

Dưới đây là các bước mình thực hiện để xây dựng môi trường chạy Laravel, WordPress hoặc Symfony đạt hiệu suất cao nhất.

Bước 1: Thêm PPA Ondřej Surý

Đầu tiên, hãy cập nhật hệ thống và thêm kho lưu trữ để lấy bản PHP 8.3 mới nhất.

sudo apt update && sudo apt upgrade -y
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

Bước 2: Cài đặt PHP 8.3 và các Extension thiết yếu

Đừng cài gói php chung chung. Hãy cài đích danh php8.3-fpm để tách biệt xử lý PHP khỏi Web Server.

sudo apt install -y php8.3-fpm php8.3-cli php8.3-mysql php8.3-zip php8.3-gd php8.3-mbstring php8.3-curl php8.3-xml php8.3-bcmath php8.3-intl

Lưu ý: Extension bcmathintl là bắt buộc nếu bạn làm việc với Laravel hoặc các hệ thống thanh toán cần độ chính xác số học cao.

Bước 3: Tinh chỉnh PHP-FPM để gánh tải

Cấu hình mặc định thường rất ‘nhát tay’. Để tận dụng RAM, bạn hãy mở file cấu hình pool:

sudo nano /etc/php/8.3/fpm/pool.d/www.conf

Với VPS có khoảng 2GB – 4GB RAM, bạn có thể tham khảo thông số sau:

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 500

Kinh nghiệm: Mỗi process PHP-FPM thường ngốn khoảng 30-50MB RAM. Công thức tính max_children an toàn là: (Tổng RAM – 1GB cho hệ thống) / 50MB.

Bước 4: Kích hoạt OPcache – ‘Tăng lực’ cho tốc độ phản hồi

Đây là bước quan trọng nhất để giảm TTFB (Time to First Byte). Mở file php.ini:

sudo nano /etc/php/8.3/fpm/php.ini

Tìm và sửa các thông số trong mục [opcache] (nhớ xóa dấu ; ở đầu dòng):

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # Set thành 1 nếu bạn đang ở môi trường dev

Sau đó, khởi động lại dịch vụ để áp dụng:

sudo systemctl restart php8.3-fpm

Bước 5: Cài đặt Composer 2.x chuẩn xác

Quên lệnh apt install composer đi vì nó thường cài bản cũ rích. Hãy dùng script chính thức để luôn có bản 2.x mới nhất với tốc độ tải thư viện nhanh gấp 3 lần bản cũ.

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

Gia cố bảo mật sau khi cài đặt

Đừng bỏ qua hai việc nhỏ nhưng cực kỳ quan trọng này:

  1. Chặn rò rỉ thông tin: Sửa expose_php = On thành Off trong php.ini. Hacker sẽ không biết bạn đang chạy phiên bản PHP cụ thể nào để khai thác lỗi.
  2. Phân quyền chặt chẽ: Đảm bảo PHP-FPM chỉ chạy dưới user www-data. Tuyệt đối không chạy PHP dưới quyền root.

Việc tối ưu PHP không chỉ giúp website chạy mượt hơn mà còn tiết kiệm kha khá tiền thuê VPS hàng tháng. Nếu bạn gặp lỗi 502 Bad Gateway sau khi cấu hình, hãy kiểm tra lại file log trong /var/log/php8.3-fpm.log. Chúc các bạn thành công!

Share: