LÊ YẾN Travel CRM
cPanel / Hosting

Hướng dẫn cài đặt CRM

7 bước triển khai Lê Yến Travel CRM lên hosting (cPanel, aaPanel, DirectAdmin…)

Yêu cầu hosting

Hạng mụcTối thiểu
PHP8.1+ (khuyến nghị 8.2)
MySQL8.0 hoặc MariaDB 10.6+
Extension PHPpdo_mysql, mbstring, openssl, tokenizer, xml, ctype, json, bcmath, fileinfo
ComposerCó trong Terminal cPanel, hoặc upload sẵn thư mục vendor/
Node.js + npm18+ — dùng khi build CSS trên server. Nếu không có Node: build trên máy dev rồi upload thư mục public/build/
CronBắt buộc cho nhắc thu / tour sắp đi tự động
1

Upload mã nguồn & trỏ Document Root

Upload toàn bộ project (FTP / File Manager) vào ví dụ /home/user/leyentravel/

Khuyến nghị

cPanel → Domains → chỉnh Document Root thành:

/home/user/leyentravel/public

Laravel chỉ expose thư mục public/ ra internet — an toàn hơn để code ở thư mục cha.

Nếu host không cho đổi docroot: xem mục «Phương án B» cuối trang.

2

Tạo database MySQL

cPanel → MySQL Databases:

  1. Tạo database mới (vd. user_leyentravel)
  2. Tạo user + mật khẩu mạnh
  3. Gán user vào database với quyền ALL PRIVILEGES

Ghi lại: DB_HOST (thường localhost), tên DB, user, password.

3

Tạo file .env

Sao chép .env.example thành .env trên server. Không upload .env từ máy dev.

APP_NAME="Lê Yến Travel CRM"
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=https://your-domain.com

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=ten_database
DB_USERNAME=ten_user
DB_PASSWORD=mat_khau

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_CONNECTION=sync

APP_URL phải đúng domain thật (https://…). Email nhắc thu, link phiếu xác nhận khách, VietQR đều dùng domain này.

4

Chạy lệnh cài đặt (Terminal cPanel)

cPanel → Terminal hoặc SSH:

cd ~/leyentravel

composer install --no-dev --optimize-autoloader
php artisan key:generate
php artisan migrate --force
php artisan storage:link

Lệnh migrate tạo toàn bộ bảng + index hiệu năng + cột công nợ lưu sẵn trên đơn hàng. Chạy lại an toàn khi cập nhật phiên bản mới.

Nạp dữ liệu:

# Production (dữ liệu thật đã export)
php artisan db:import-production --force

# Hoặc bộ demo cho khách xem thử (10 NCC, 20 đơn, 10 tour…)
php artisan db:seed --class=DemoDataSeeder --force

Sau khi seed demo (chỉ local), bật SHOWCASE_ENABLED=true trong .env để mở /vi-du-thuc-te. Production: giữ SHOWCASE_ENABLED=false.

Tối ưu cache (sau migrate / seed):

php artisan config:cache
php artisan route:cache
php artisan view:cache
5

Build giao diện (Vite + Tailwind)

CRM không còn dùng Tailwind CDN. Thiếu bước này → trang trắng / mất style. Chọn một trong hai cách:

Cách A — Build trên server (có Node.js)

cd ~/leyentravel
npm install
npm run build

cPanel: Setup Node.js App → chọn phiên bản 18+, thư mục project → chạy lệnh trên trong Terminal.

Cách B — Build trên máy dev rồi upload

  1. Trên máy có Node 18+: npm install && npm run build
  2. Upload (FTP) thư mục public/build/ lên server — giữ nguyên cấu trúc
  3. Kiểm tra có file public/build/manifest.json

Mỗi lần cập nhật code có đổi giao diện, phải chạy lại npm run build (hoặc upload lại public/build/).

6

Phân quyền thư mục ghi

chmod -R 775 storage bootstrap/cache

Hoặc File Manager: chuột phải storage/bootstrap/cache/ → Permissions → 775.

7

Thiết lập Cron Job

cPanel → Cron Jobs → chạy mỗi phút:

* * * * * cd /home/user/leyentravel && php artisan schedule:run >> /dev/null 2>&1

Thay /home/user/leyentravel bằng đường dẫn thật trên host.

Lịch tự động trong CRM:

  • 07:00 — Thông báo tour sắp khởi hành
  • 08:00 — Nhắc thu công nợ khách (nếu bật auto SMTP)
  • 08:30 — Nhắc chi NCC (nếu bật auto SMTP)
8

Cấu hình trên giao diện & kiểm tra

Đăng nhập Admin → sidebar Cài đặt hệ thống:

Thông tin công tyTên, hotline, STK VietQR doanh nghiệp & cá nhân
Mail / SMTPGửi nhắc thu, nhắc NCC; bật gửi tự động nếu cần
AI / GeminiBóc tách khách đoàn, tạo đơn từ chat, CTV viết bài
Zalo OAToken OA (tùy chọn) — trang nhắc thu luôn có copy tin Zalo

Checklist sau deploy:

  • / — Trang chủ marketing
  • /login — Đăng nhập CRM
  • /tra-cuu-don — Khách tra cứu đơn
  • /dashboard — Tổng quan (sau login)
  • Giao diện có màu / layout đúng (đã build public/build/)

Bảo mật: Đổi mật khẩu tất cả tài khoản ngay sau khi import. Đặt APP_DEBUG=false, SHOWCASE_ENABLED=false trên production.
Cron: Thêm * * * * * php artisan schedule:run — nhắc nợ khách/NCC và tour khởi hành chạy theo lịch này.

Cập nhật phiên bản mới

Mỗi lần upload code mới lên server:

cd ~/leyentravel
composer install --no-dev --optimize-autoloader
php artisan migrate --force
npm install && npm run build
php artisan config:cache
php artisan route:cache
php artisan view:cache

Nếu host không có Node: build public/build/ trên máy dev rồi upload thay thế.

Phương án B — Không đổi được Document Root

Một số host chỉ cho public_html:

Tiếp theo: Hướng dẫn sử dụng