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ớiapp, routes,...
) - Chỉnh file
index.php
:
Sửa lại thành:require __DIR__.'/../vendor/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php';
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
storage
vàbootstrap/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.