Bài hướng dẫn này được thực hiện bởi ChatGPT - giúp tôi triển khai thành công một dự án Laravel trên hosting DirectAdmin.

1. Chuẩn bị

  • Dự án Laravel đã hoàn thiện (trên máy tính)
  • Tài khoản hosting DirectAdmin
  • Truy cập được phpMyAdmin

2. Các bước upload Laravel lên hosting

Bước 1: Build assets frontend

Trên máy local, chạy:

npm install
npm run build

Thư mục public/build sẽ được tạo ra. Hãy đảm bảo có file manifest.json bên trong.

Bước 2: Nén project

  • Xóa các thư mục không cần thiết như node_modules, vendor (để giảm dung lượng)
  • Nén toàn bộ project Laravel (trừ 2 thư mục trên) thành file .zip

Bước 3: Upload và giải nén

  • Truy cập File Manager trong DirectAdmin
  • Upload file zip vào thư mục domains/ten-mien-cua-ban/public_html
  • Giải nén tại đó

Bước 4: Cấu hình lại thư mục public

Laravel cần chạy thư mục public thay vì gốc, ta cần chỉnh như sau:

  • Di chuyển toàn bộ nội dung trong public ra ngoài thư mục gốc (cùng cấp với app, routes,...)
  • Chỉnh file index.php:
    
    require __DIR__.'/../vendor/autoload.php';
    $app = require_once __DIR__.'/../bootstrap/app.php';
                
    Sửa lại thành:
    
    require __DIR__.'/vendor/autoload.php';
    $app = require_once __DIR__.'/bootstrap/app.php';
                

Bước 5: Tạo database

  • Vào MySQL Management trên DirectAdmin
  • Tạo database, user và gán quyền

Bước 6: Cập nhật file .env

Chỉnh các thông số trong file .env:


APP_URL=https://tenmiencuaban.com
DB_DATABASE=ten_db
DB_USERNAME=ten_user
DB_PASSWORD=mat_khau
    

Bước 7: Cài lại các thư viện PHP

Vào File Manager → mở Terminal (hoặc SSH nếu hosting hỗ trợ), chạy:

composer install --no-dev --optimize-autoloader

Sau đó:

php artisan config:cache
php artisan migrate --force
php artisan storage:link

**Nếu không có SSH/Terminal**, bạn có thể chạy migrate thủ công trên phpMyAdmin.

Bước 8: Quyền thư mục

  • Chmod thư mục storagebootstrap/cache thành 775 hoặc 777 nếu cần

Bước 9: Fix lỗi manifest

Nếu gặp lỗi như:

Vite manifest not found at: .../public/build/manifest.json

→ Do bạn chưa chạy npm run build hoặc quên upload thư mục public/build.

3. Một số lỗi thường gặp

Lỗi: Field 'id' doesn't have a default value

Do cột id trong MySQL không có AUTO_INCREMENT. Fix bằng câu lệnh:

ALTER TABLE xien_categories MODIFY id INT UNSIGNED NOT NULL AUTO_INCREMENT;

4. Tổng kết

Trên đây là toàn bộ quá trình tôi đã triển khai thành công Laravel lên DirectAdmin nhờ hướng dẫn từ ChatGPT. Nếu bạn thấy hữu ích, hãy lưu lại hoặc chia sẻ cho cộng đồng.

Bản quyền bài viết thuộc về người dùng và ChatGPT (OpenAI), bạn có thể trích dẫn lại kèm nguồn.