Đồ án tốt nghiệp - Xây dựng hệ thống khảo sát trực tuyến sử dụng Laravel Framework.
- Quản lý Khảo sát Động: Dễ dàng tạo, sửa, xóa, và sao chép các mẫu khảo sát.
- Quản lý Đợt khảo sát: Lên lịch và quản lý các đợt khảo sát theo thời gian.
Xác thực người tham gia: Hỗ trợ import danh sách (Excel) để giới hạn người được phép làm khảo sát.- Báo cáo & Thống kê: Giao diện báo cáo trực quan với biểu đồ, bảng biểu và chức năng xuất file Excel/PDF.
- Phân tích nâng cao: Hỗ trợ phân tích chéo (cross-tabulation) để tìm ra mối liên hệ giữa các câu trả lời.
- Bảo mật: Tích hợp Google reCAPTCHA v2 để chống spam và bot.
- Ghi log hoạt động: Theo dõi mọi thay đổi quan trọng trong hệ thống.
Bạn có thể cài đặt hệ thống theo 2 cách:
- Cách truyền thống (thủ công) với PHP/Composer
- Cách sử dụng Docker (khuyên dùng cho môi trường production hoặc muốn setup nhanh)
- Git
- Web Server: Apache/Nginx (XAMPP, Laragon, WAMP được hỗ trợ)
- PHP:
8.1trở lên - Composer:
2.xtrở lên - Database: MySQL hoặc MariaDB
Trước khi cài đặt, bạn cần đảm bảo môi trường PHP đã được cấu hình đúng.
-
Tìm file
php.ini: Mở Terminal (hoặc Command Prompt) và chạy lệnh:php --ini
Lệnh này sẽ hiển thị đường dẫn đến file
php.iniđang được sử dụng (ví dụ:C:\xampp\php\php.ini). -
Kích hoạt các extension cần thiết: Mở file
php.inivà tìm các dòng sau, sau đó xóa dấu chấm phẩy (;) ở đầu mỗi dòng để kích hoạt chúng:;extension=curl ;extension=fileinfo ;extension=gd ;extension=intl ;extension=mbstring ;extension=openssl ;extension=pdo_mysql
Sau khi sửa, chúng sẽ trở thành:
extension=curl extension=fileinfo extension=gd extension=intl extension=mbstring extension=openssl extension=pdo_mysql
-
(Quan trọng) Cấu hình chứng chỉ SSL (cacert): Để khắc phục lỗi
cURL error 60: SSL certificate problem, bạn cần chỉ cho PHP biết nơi lưu trữ file chứng chỉ gốc.- Tải file
cacert.pemmới nhất từ trang chính thức của cURL: https://curl.se/docs/caextract.html - Lưu file này vào một vị trí cố định, ví dụ:
C:\xampp\php\extras\ssl\cacert.pem(tự tạo thư mụcextras\sslnếu chưa có). - Trong file
php.ini, tìm và sửa 2 dòng sau (bỏ dấu;và thêm đường dẫn):curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem" openssl.cafile= "C:\xampp\php\extras\ssl\cacert.pem"
- Tải file
-
Khởi động lại Web Server: Sau khi lưu file
php.ini, hãy khởi động lại Apache trong XAMPP/Laragon/WAMP để áp dụng các thay đổi.
-
Clone repository:
git clone https://github.com/tho493/khao_sat.git he-thong-khao-sat cd he-thong-khao-sat -
Cài đặt các thư viện (dependencies):
composer install
-
Tạo file môi trường
.env: Sao chép file.env.examplethành.env, sau đó tạo khóa ứng dụng.copy .env.example .env php artisan key:generate
-
Cấu hình Database: Mở file
.envvà chỉnh sửa các thông tin kết nối database cho phù hợp:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=khao_sat_db DB_USERNAME=root DB_PASSWORD=
-
Import & Seed Database:
-
Tạo một database rỗng với tên bạn đã khai báo trong
.env(ví dụ:khao_sat_db). -
Import file
khao_sat_db.sqlđược cung cấp vào database vừa tạo. -
Chạy seeder để tạo tài khoản admin mặc định (option):
php artisan db:seed --class=DatabaseSeeder
- Tài khoản mặc định:
tho493/tho493
- Tài khoản mặc định:
-
Hệ thống sử dụng Google reCAPTCHA v2 để bảo mật.
- Đăng ký website:
- Truy cập Google reCAPTCHA Admin Console.
- Đăng ký một site mới với các thông tin sau:
- Label: Tên dự án (VD: Hệ thống Khảo Sát SDU)
- reCAPTCHA type: Chọn "Challenge (v2)" -> "I'm not a robot" Checkbox.
- Domains: Thêm
localhostvà127.0.0.1(để phát triển) và tên miền thật khi deploy.
- Lấy khóa: Sau khi đăng ký, bạn sẽ nhận được Site Key và Secret Key.
- Cập nhật file
.env: Mở file.envvà thêm 2 khóa này vào:RECAPTCHA_SITE_KEY=YOUR_SITE_KEY_HERE RECAPTCHA_SECRET_KEY=YOUR_SECRET_KEY_HERE
- Đăng ký website:
- Truy cập Google AI Studio.
- Nhấn nút
Get API keyvà làm theo hướng dẫn để lấy key api.
- Cập nhật file
.env: Mở file.envvà thêm khóa này vào:GEMINI_API_KEY="YOUR_GEMINI_API_KEY_HERE"
-
Dọn dẹp cache và link storage (quan trọng):
php artisan migrate php artisan optimize:clear php artisan storage:link
-
Khởi chạy server phát triển:
php artisan serve
-
Chạy lệnh cập nhật trạng thái đợt khảo sát: (Quan trọng, nó giúp bạn tự động cập nhật trạng thái dựa theo giờ bắt đầu của khảo sát)
php artisan schedule:work
- Nếu bạn muốn chạy server trên môi trường production, hãy thay
servebằngserve --port=80.
- Nếu bạn muốn chạy server trên môi trường production, hãy thay
-
Truy cập vào địa chỉ được cung cấp (thường là
http://127.0.0.1:8000).
- Docker và Docker Compose (tải tại https://docs.docker.com/get-docker/)
- Tối thiểu 4GB RAM, 10GB dung lượng trống
Bạn có thể cài đặt theo 2 cách:
-
Cách 1: Build từ source
- Xem hướng dẫn chi tiết trong file
DOCKER_README.mdđi kèm repo để biết cách clone, build, cấu hình môi trường, khởi tạo database và chạy ứng dụng. - Một số lệnh phổ biến:
docker-compose up -d --build— Khởi động và build containersdocker-compose exec app php artisan migrate— Chạy migrationsdocker-compose logs -f— Xem logs real-timedocker-compose down— Dừng toàn bộ dịch vụ
- Xem hướng dẫn chi tiết trong file
-
Cách 2: Sử dụng image có sẵn
-
Bạn có thể pull image đã build sẵn từ Docker Hub:
docker pull tho493/khao-sat:latest
-
Copy file
.env.docker.examplethành.envvà chỉnh sửa lạiGEMINI_API_KEY,RECAPTCHA_SITE_KEY,RECAPTCHA_SECRET_KEY,APP_URL. -
Sau đó khởi chạy các image cần thiết:
docker compose up -d
Lưu ý: Bạn cần chỉnh sửa file
.env(hoặcenv.docker.example) trước khi chạy lần đầu để cấu hình các API key và thông tin kết nối database. Bạn hãy đổi port 8080 và 8081 sang port khác nếu bạn đã có dịch vụ chạy trên port 8080 hoặc 8081. -
- Để biết chi tiết về backup, restore, production, SSL, monitoring... hãy đọc file
DOCKER_README.mdtrong repo.
Lưu ý: Nếu gặp lỗi 500 khi truy cập ứng dụng, hãy thử khởi động lại MySQL và chạy lệnh
php artisan optimize:cleartrong để xóa cache Laravel.
- Sinh viên thực hiện: Nguyễn Chí Thọ
- Email: chitho040903@gmail.com
- Facebook: @tho493
- Giáo viên hướng dẫn: ThS. Phạm Văn Kiên
- Phần mềm là sản phẩm thử nghiệm.












