Hướng dẫn chi tiết cài đặt và cấu hình PHP 7.4 trên aaPanel với Apache: Giải pháp tối ưu cho Ubuntu 24.04
Việc vận hành các hệ thống website cũ chạy trên nền tảng PHP 7.4 ngày càng trở nên thách thức khi các hệ điều hành hiện đại như Ubuntu 24.04 ra đời. Ubuntu 24.04 (Noble Numbat) mang đến nhiều cải tiến về bảo mật và hiệu suất, nhưng đồng thời cũng loại bỏ các thư viện cũ mà PHP 7.4 cần để hoạt động. Bài viết này sẽ đi sâu vào cách giải quyết các vấn đề kỹ thuật phức tạp nhất khi sử dụng aaPanel, từ việc cài đặt dependency đến cấu hình tối ưu cho Apache và xử lý lỗi redirect loop.

1. Tại sao PHP 7.4 lại khó cài đặt trên Ubuntu 24.04?
Lý do chính nằm ở sự thay đổi của thư viện OpenSSL. Ubuntu 24.04 sử dụng OpenSSL 3.0, trong khi PHP 7.4 được thiết kế để tương thích với OpenSSL 1.1. Ngoài ra, các kho phần mềm mặc định của Ubuntu mới cũng không còn hỗ trợ các phiên bản PHP đã kết thúc vòng đời (EOL) như 7.4. Để vượt qua rào cản này, chúng ta không thể sử dụng phương thức cài đặt “Fast” (cài đặt từ gói binary có sẵn) trong aaPanel vì các gói này thường không tương thích với cấu trúc thư viện mới của Ubuntu 24.04.
Môi trường aaPanel cung cấp hai cách để cài đặt phần mềm: Fast (RPM/DEB) và Compiled (Biên dịch từ mã nguồn). Với PHP 7.4 trên Ubuntu 24.04, lựa chọn duy nhất là Compiled. Khi biên dịch, hệ thống sẽ tự động tìm kiếm các header file và thư viện có sẵn trên máy chủ để tạo khách bản thực thi phù hợp nhất. Điều này giúp loại bỏ các lỗi liên quan đến “shared library not found” thường thấy khi sử dụng bản build sẵn.
2. Bước 1: Cài đặt thư viện di sản (Legacy Dependencies)
Trước khi bắt đầu cài đặt PHP trong giao diện aaPanel, bạn phải chuẩn bị môi trường cho hệ thống. Thư viện quan trọng nhất là libssl1.1. Hãy làm theo các lệnh sau để tải và cài đặt thủ công từ kho bảo mật của Ubuntu Focal (phiên bản cũ hơn nhưng vẫn tương thích an toàn):
# Tải gói libssl1.1
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.24_amd64.deb
# Cài đặt gói vào hệ thống
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.24_amd64.debViệc cài đặt libssl1.1 là hoàn toàn an toàn và không gây xung đột với OpenSSL 3.0 hiện có. Hai thư viện này tồn tại độc lập dưới dạng các tệp tin `.so` khác nhau (libssl.so.1.1 và libssl.so.3). Các ứng dụng hệ thống hiện đại sẽ tiếp tục sử dụng bản 3.0, trong khi PHP 7.4 sẽ tìm thấy bản 1.1 mà nó cần.
Bên cạnh đó, việc cài đặt các công cụ biên dịch cũng là bắt buộc để aaPanel có thể xây dựng PHP từ mã nguồn:
sudo apt update
sudo apt install -y build-essential libxml2-dev libssl-dev libsqlite3-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libonig-dev libzip-dev3. Bước 2: Cài đặt PHP 7.4 từ aaPanel App Store
Khi đã có các thư viện cần thiết, bạn truy cập vào App Store của aaPanel. Tìm kiếm PHP 7.4 và nhấn Install. Lúc này, một cửa sổ popup sẽ hiện ra yêu cầu bạn chọn phương thức cài đặt. Hãy chọn “Compiled” thay vì “Fast”.
Quá trình biên dịch sẽ diễn ra trong khoảng 15-30 phút tùy thuộc vào sức mạnh CPU của máy chủ. Phương pháp này đảm bảo rằng PHP sẽ tự động liên kết với các thư viện hiện có trên Ubuntu 24.04 của bạn một cách chính xác nhất. Đừng quên mở task manager (biểu tượng mũi tên xoay ở góc trên bên phải) để theo dõi tiến trình.
4. Cấu hình .htaccess chuyên sâu cho WordPress thư mục con
Nhiều người dùng gặp lỗi 500 (Internal Server Error) khi chạy WordPress trong thư mục con trên Apache. Điều này thường do file .htaccess thiếu tham số RewriteBase. Apache cần biết đường dẫn gốc của thư mục con để xử lý các yêu cầu URL. Nếu không có cấu hình này, Apache sẽ cố gắng tìm tệp tin index.php ở thư mục gốc của tên miền, gây ra lỗi không tìm thấy hoặc lỗi vòng lặp nội bộ.
Dưới đây là mẫu cấu hình tối ưu cho một thư mục con:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /ten-thu-muc-cua-ban/
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /ten-thu-muc-cua-ban/index.php [L]
</IfModule>
# END WordPressLưu ý quan trọng: Bạn phải thay /ten-thu-muc-cua-ban/ bằng tên thư mục thực tế mà bạn đã cài đặt WordPress (ví dụ: /bikipthandong/). Ngoài ra, hãy đảm bảo rằng quyền sở hữu của thư mục (Owner) được đặt là www và quyền truy cập là 755 để Apache có thể đọc tệp tin.
5. Giải quyết lỗi ERR_TOO_MANY_REDIRECTS
Lỗi này thường xảy ra nhất trong mô hình “Multi Webserver” đặc trưng của aaPanel (Nginx frontend đóng vai trò Reverse Proxy và Apache backend). Nginx nhận kết nối HTTPS từ trình duyệt người dùng, sau đó chuyển tiếp yêu cầu đến Apache qua giao thức HTTP (cổng 80 hoặc cổng nội bộ). WordPress ở backend không nhận diện được kết nối ban đầu là HTTPS, dẫn đến việc nó liên tiếp gửi lệnh chuyển hướng về HTTPS, tạo ra một vòng lặp vô tận khiến trình duyệt báo lỗi `Too Many Redirects`.
Để khắc phục triệt để, bạn cần thực hiện “ép buộc” nhận diện giao thức trong file cấu hình WordPress. Hãy mở file wp-config.php trong thư mục cài đặt của bạn và chèn đoạn mã nhận diện Header X-Forwarded-Proto sau đây (đặt ngay trên dòng `/* That’s all, stop editing! */`):
/* Nhận diện HTTPS từ Reverse Proxy (Nginx) */
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
/* Ép buộc URL chính xác để tránh vòng lặp */
define('WP_HOME', 'https://yourdomain.com/subfolder');
define('WP_SITEURL', 'https://yourdomain.com/subfolder');使用说明 define('WP_HOME', ...) 和 define('WP_SITEURL', ...) trong file config có mức độ ưu tiên cao hơn cài đặt trong cơ sở dữ liệu, giúp giải quyết nhanh các lỗi liên quan đến cấu hình URL sai lệch mà bạn không thể truy cập vào trang Admin để sửa.
6. Kết luận và lời khuyên
Dù PHP 7.4 đã chính thức kết thúc vòng đời bảo mật, nhưng nhu cầu duy trì các ứng dụng WordPress cũ vẫn rất lớn. Bằng cách sử dụng aaPanel trên Ubuntu 24.04 kết hợp với kỹ thuật biên dịch Apache và cấu hình Proxy Header, bạn hoàn toàn có thể tạo ra một môi trường vận hành ổn định và chuyên nghiệp. Tuy nhiên, hãy luôn có kế hoạch nâng cấp ứng dụng của bạn lên các phiên bản PHP mới hơn (như 8.1 hoặc 8.3) trong tương lai gần để đảm bảo an toàn tối đa.
Chúc các bạn thành công trong việc làm chủ máy chủ của mình!

