Có rất nhiều bạn lập trình PHP Framework laravel xong không biết cách triển khai ứng dụng (deploy) lên các host mua của các nhà cung cấp Nhân Hòa, Mắt bão có hệ thống quản lý CPanel, Plesk, ISPConfig.. hoặc trên các VPS, Các ứng dụng Laravel không được thiết kế để sử dụng luôn cho host dùng chung, các ứng dụng có điểm xuất phát đều từ file index.php nằm trong thư mục public. Do đó khi triển khai lên các host dùng chung sẽ phải có một số điều chỉnh. bài này mình sẽ hướng dẫn cách triển khai ứng dụng laravel sau khi thiết kế xong lên host để chạy cho domain.
1. Chuẩn bị tên miền và host
Tên miền và host các bạn thường mua và sử dụng của PA, Mắt bão, Nhân Hòa … hoặc các bạn có thể mua domain và host quốc tế của godady, google, …
(*) Ưu nhược điểm host trong nước (viết ở khía cạnh mua của nhà cung cấp uy tín nhé)
– Cho tốc độ load tốt hơn
– Có người việt support
– Một số hạn chế: băng thông giới hạn, tài khoản ftp, database cũng bị giới hạn.
(*) Ưu nhược điểm host quốc tế:
– Giá rẻ hơn hẳn trong nước, khoảng 4$/ tháng tương đương với gói khoảng 200k/ tháng của các nhà cung cấp trong nước…
– Tài nguyên dùng thoải mái hơn, không giới hạn về dung lượng, băng thông, số lượng database…
– Nhược điểm là cá mập cũng rất thích cắn cáp quang làm đường truyền ra quốc tế thỉnh thoảng cũng bị gián đoạn và thường tốc độ thấp hơn host trong nước.
2. Chuẩn bị source code và phần mềm Ftp
– Phần này chúng ta chắc chắn không thể thiếu rồi, sử dụng phần mềm FTP để tải file lên server nhanh hơn. Thông thường nếu file không nặng, các bạn có thể sử dụng trực tiếp thông qua trình duyệt để tải lên host. Nhưng mình khuyên các bạn nên sử dụng FTP để tải file lên sẽ chủ động hơn nếu file nặng hoặc chỉnh sửa file. Phần mềm FTP thường sử dụng: FileZilla Client,WinSCP, FTP Cute … mình đang sử dụng 2 cái đầu.
3. Cài đặt ứng dụng Laravel lên host
Bước này là bước quan trọng nhất của bài viết này.
- Giải nén file zip ra thư mục gốc thường là public_html.
- Copy toàn bộ file trong thư mục public ra thư mục gốc public_html.
- Chỉnh sửa file index.php trong thư mục gốc (đây chính là file được chuyển từ thư mục public ra thư mục gốc).
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
thành
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
- Chỉnh sửa file server.php nằm trong thư mục gốc dự án từ:
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
return false;
}
require_once __DIR__.'/public/index.php';
thành
if ($uri !== '/' && file_exists(__DIR__.'/'.$uri)) {
return false;
}
require_once __DIR__.'/index.php';
- Mở file .htaccess và thay đổi nội dung như sau để mọi request đến sẽ trỏ về file index.php ở thư mục gốc.
DirectoryIndex index.php
Options -MultiViews
RedirectMatch 404 /\.git
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^index\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/index.php [L]
- Mở file .env và thay đổi một số thông số
APP_URL=http://localhost
thành domain của bạn, vidu của mình là http://ictsharing.com
APP_URL=ictsharing.com
Như vậy, chúng ta đã thiết lập xong ứng dụng Laravel để có thể chạy trên host dùng chung. Các bước thực hiện có ảnh hưởng nhiều đến source code do đó không chuẩn tắc. Nếu bạn có ý định triển khai một ứng dụng Laravel thì tốt nhất nên nghĩ đến máy chủ ảo VPS, sẽ phức tạp hơn khi chúng ta phải tự cài webserver như apache hoặc nginx, cơ sở dữ liệu mysql và một số các ứng dụng khác cho cache…