Hướng Dẫn Cài Đặt & Cấu Hình Máy Chủ
Tài liệu này hướng dẫn các bước cần thiết để cài đặt môi trường máy chủ (Ubuntu, aaPanel) nhằm đảm bảo các tính năng AI và tự động hóa của hệ thống LXI Education hoạt động chính xác.
Mục lục
1. 🏛️ Tổng quan kiến trúc
Hệ thống LXI bao gồm các thành phần chính tương tác với nhau:
- Web Server (Apache/Nginx): Phục vụ các trang web cho người dùng.
- PHP: Xử lý logic chính của ứng dụng web.
- Python: Được PHP gọi để thực thi các tác vụ nặng về AI như nhận dạng hình ảnh (OCR) và xử lý tài liệu.
- MariaDB/MySQL: Cơ sở dữ liệu để lưu trữ mọi thông tin.
- Cron Jobs: Các kịch bản chạy nền tự động để xử lý hàng đợi, tính toán thống kê và giao bài.
Việc cài đặt đúng tất cả các thành phần này là rất quan trọng để hệ thống hoạt động ổn định.
2. Panel Cài đặt ban đầu trên aaPanel
Sau khi cài đặt aaPanel, hãy đảm bảo bạn đã cài đặt bộ **LNMP** (Linux, Nginx, MySQL, PHP) hoặc **LAMP** (Linux, Apache, MySQL, PHP).
2.1. Yêu cầu phiên bản
- Hệ điều hành: Ubuntu 20.04 LTS hoặc 22.04 LTS.
- PHP: Phiên bản **8.0** trở lên.
- MySQL: Phiên bản **5.7** trở lên, hoặc MariaDB **10.2** trở lên.
2.2. Cài đặt Extension cho PHP
Các extension này là bắt buộc để PHP có thể hoạt động đúng.
- 1Trong aaPanel → App Store → tìm phiên bản PHP đang dùng và nhấp vào Settings.
- 2Chuyển qua tab Install extensions.
- 3Tìm và cài đặt các extension sau:
mysqli(thường đã được cài sẵn)gdcurlmbstringfileinfozip
3. 🛠️ Cài đặt các Gói Hệ thống (qua SSH)
Đây là những công cụ nền tảng cần được cài đặt trên máy chủ Ubuntu thông qua SSH với quyền root hoặc sudo.
3.1. Cập nhật hệ thống
sudo apt update -y && sudo apt upgrade -y
3.2. Cài đặt công cụ xử lý tệp
Các công cụ này là cốt lõi cho việc nhận dạng ký tự (OCR), xử lý ảnh và PDF.
# Cài đặt Tesseract OCR và các gói ngôn ngữ cần thiết
sudo apt install -y tesseract-ocr tesseract-ocr-vie tesseract-ocr-eng
# Cài đặt Ghostscript (bắt buộc để chuyển đổi PDF sang ảnh)
sudo apt install -y ghostscript
# Cài đặt Poppler-utils (bắt buộc cho thư viện pdf2image của Python)
sudo apt install -y poppler-utils
# Cài đặt ImageMagick (hỗ trợ xử lý ảnh)
sudo apt install -y imagemagick
# Cài đặt các công cụ hữu ích khác
sudo apt install -y unzip jq mysql-client
4. 🐍 Cài đặt Môi trường Python (qua SSH)
4.1. Cài đặt Pip (trình quản lý gói của Python)
sudo apt install -y python3-pip
4.2. Cài đặt các thư viện Python
Cài đặt các thư viện cần thiết cho việc xử lý tài liệu và AI.
pip3 install numpy
pip3 install --upgrade "pix2text[multilingual]" opencv-python pdf2image
5. 📦 Cài đặt Thư viện PHP (qua SSH)
Các lệnh này phải được chạy từ thư mục gốc của website (ví dụ: /www/wwwroot/lxi.edu.vn) qua SSH.
5.1. Cài đặt Composer (Nếu chưa có)
# Tải trình cài đặt
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# Chạy trình cài đặt (thay 83 bằng phiên bản PHP của bạn, ví dụ: 74, 80, 81...)
/www/server/php/83/bin/php composer-setup.php
# Xóa file cài đặt
php -r "unlink('composer-setup.php');"
5.2. Cài đặt các gói thư viện
Sử dụng đúng đường dẫn PHP CLI của bạn để chạy lệnh composer install. Lệnh này sẽ tự động đọc file composer.json và cài đặt tất cả các thư viện cần thiết.
# Ví dụ cho PHP 8.3
/www/server/php/83/bin/php composer.phar install
Sau khi chạy xong, bạn sẽ thấy một thư mục vendor được tạo ra trong website của mình.
6. ☁️ Cài đặt Node.js & Wrangler (cho Cloudflare R2)
Các bước này cần thiết cho tính năng tự động tải ảnh lên Cloudflare R2.
6.1. Cài đặt Node.js
# Tải về kịch bản cài đặt Node.js phiên bản 20.x (LTS)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
# Cài đặt Node.js
sudo apt-get install -y nodejs
6.2. Cài đặt Wrangler
npm install -g wrangler
7. ⚙️ Cấu hình chi tiết aaPanel
7.1. Cấu hình PHP
- 1Đăng nhập vào aaPanel → App Store → tìm phiên bản PHP đang dùng và nhấp vào Settings.
- 2Tab Configuration: Tăng
max_execution_timelên600vàmemory_limitlên512M. - 3Tab Disable functions: Tìm và xóa các hàm
shell_exec,exec,proc_openkhỏi danh sách. - 4Tab Site directory: Tìm mục
open_basedir, nhấn Edit và thêm các đường dẫn sau vào cuối danh sách (cách nhau bởi dấu:):/usr/bin/và/usr/local/bin/.Tại sao? Điều này cho phép PHP gọi các lệnh hệ thống như
python3,tesseract,gs(Ghostscript) đã được cài đặt ở các bước trên. - 5Nhấn Save và qua tab Service để Restart hoặc Reload PHP.
7.2. Cấu hình Web Server (Apache/Nginx)
Hệ thống sử dụng các quy tắc trong file .htaccess để hoạt động. Bạn cần đảm bảo web server cho phép điều này.
- Đối với Apache: Đảm bảo module
mod_rewritevàmod_headersđã được bật. - Đối với Nginx: Bạn cần chuyển đổi các quy tắc trong file
.htaccesssang cấu hình của Nginx.
7.3. Cài đặt Cron Job (Tác vụ tự động)
- 1Vào mục Cron trong aaPanel và nhấn Add Cron task.
- 2Type of task: Chọn
Shell Script. - 3Thiết lập các tác vụ sau đây (thay
83bằng phiên bản PHP của bạn và đường dẫn cho đúng):
- Xử lý hàng đợi file AI: Mỗi 5 phút -
/www/server/php/83/bin/php /www/wwwroot/lxi.edu.vn/cron_process_queue.php - Tự động giao bài: Mỗi ngày lúc 02:00 -
/www/server/php/83/bin/php /www/wwwroot/lxi.edu.vn/cron_auto_assign.php - Tính toán Xếp hạng Học sinh: Mỗi ngày lúc 03:00 -
/www/server/php/83/bin/php /www/wwwroot/lxi.edu.vn/cron_calculate_rankings.php - Tính toán Xếp hạng Lớp học: Mỗi ngày lúc 04:00 -
/www/server/php/83/bin/php /www/wwwroot/lxi.edu.vn/cron_calculate_class_rankings.php - Upload ảnh lên Cloudflare R2: Mỗi 10 phút. (Lưu ý: Chạy lệnh
chmod +x /www/wwwroot/lxi.edu.vn/upload_to_r2.shtrước)/bin/bash /www/wwwroot/lxi.edu.vn/upload_to_r2.sh
8. 🚀 Các bước Triển khai Cuối cùng
- 1Tải mã nguồn & Phân quyền: Upload toàn bộ tệp và thư mục của dự án. Sau đó vào Files trong aaPanel, đặt Owner của thư mục website là
wwwvà Permission là755, áp dụng cho tất cả file và thư mục con. - 2Tạo Database: Trong Databases, tạo một CSDL mới, người dùng và mật khẩu. Import tệp
.sqldo LXI cung cấp. - 3Cấu hình kết nối: Đặt tệp
banquyen.keyvào thư mục gốc của website. Hệ thống sẽ tự động dùng key này để tải về file cấu hình chứa thông tin kết nối CSDL và lưu vào cache.
9. ✅ Kiểm tra và Gỡ lỗi (Verification)
Sau khi cài đặt, hãy truy cập các đường dẫn sau trên trình duyệt để đảm bảo mọi thứ hoạt động:
- Kiểm tra kết nối CSDL:
https://your_domain.com/check.php - Kiểm tra quyền ghi file:
https://your_domain.com/debug_permissions.php - Kiểm tra OCR (Ảnh): Tải lên một file ảnh có tên
22.jpg, sau đó truy cậphttps://your_domain.com/debug_ocr.php. - Kiểm tra xử lý PDF: Tải lên một file PDF có tên
test.pdf, sau đó truy cậphttps://your_domain.com/debug_pdf_ocr.php. - Kiểm tra toàn diện (Python Script): Truy cập
https://your_domain.com/debug_final_check.phpvà tải lên một tệp bất kỳ. Đây là bài kiểm tra cuối cùng và quan trọng nhất.