Ra mắt hai series mới cực hot Trí tuệ nhân tạo A đến ZPython công cụ không thể thiếu khi nghiên cứu Data science, Machine learning.

Triển khai ứng dụng Laravel trên shared hosting

Hiện nay các đơn vị cung cấp host cũng vẫn đang cung cấp các sản phẩm host dùng chung (shared hosting) bên cạnh máy chủ ảo VPS. Đặc điểm của host dùng chung là sử dụng rất đơn giản thông qua các hệ thống quản trị hosting còn gọi là control panel như CPanel, Plesk, ISPConfig... 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. Trong bài viết chúng ta sẽ cùng nhau cài đặt ứng dụng Laravel trên host dùng chung sử dụng CPanel (các nhà cung cấp host dùng chung đa phần sử dụng CPanel).

Bước 1: Chuẩn bị tên miền và shared hosting

Tên miền quốc tế .com, .net... các bạn có thể mua ở các nhà cung cấp nước ngoài. Tên miền Việt Nam như .vn, .com.vn... bắt buộc phải mua của các đơn vị cung cấp tên miền trong nước như Tenten, PA Vietnam, Matbao, Nhân hòa... Tiếp đến là lựa chọn hosting, mua hosting trong nước hay quốc tế đều có những ưu và nhược điểm: Hosting 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ác website của chúng ta thường phục vụ cho người Việt Nam, do đó khi tải trang từ máy chủ trong nước sẽ nhanh hơn, tuy nhiên không phải đơn vị cung cấp host nào trong nước cũng cam kết điều này. Thứ nữa 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.

Bước 2: Chuẩn bị source code, phần mềm FTP để truyền file lên máy chủ

Do host dùng chung không thể thực hiện được các câu lệnh kiểu dòng lệnh do đó source code cần phải lấy đầy đủ source code bao gồm cả các thư viện vendor hay các gói javascript cài đặt thông qua npm. Như vậy, bạn nén tất cả source code của ứng dụng sẽ được triển khai với định dạng file .zip (CPanel không hỗ trợ định dạng nén rar). Tiếp theo, thực hiện vào CPanel tạo tài khoản FTP và kết nối phần mềm FTP client với máy chủ qua tài khoản đó. Dùng giao thức FTP cho tốc độ nhanh vì nhiều source code rất lớn lên đến hàng GB.

Bước 3: Cài đặt ứng dụng Laravel trên shared hosting

  • 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

APP_URL=yourdomain

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...


CÁC BÀI VIẾT KHÁC

FirebirD

Đam mê Toán học, Lập trình. Sở thích chia sẻ kiến thức, Phim hài, Bóng đá, Cà phê sáng với bạn bè.

Tìm kiếm thông minh với Typeahead trong ứng dụng Laravel

Xử lý mẫu in báo cáo với Jasper report trong Laravel

15 Bình luận trong "Triển khai ứng dụng Laravel trên shared hosting"

  1. tuandz

    4 years ago

    Phản hồi
    cảm ơn rất nhiều
  2. Huy

    4 years ago

    Phản hồi
    Cám ơn nhiều nhé, bài viết hữu ích quá. Đã tìm rất nhiều nhưng tới đây mới khắc phục được.
  3. Huy

    4 years ago

    Phản hồi
    Cám ơn rất rất nhiều, đã tìm nhiều cách rồi tới đây mới thấy OK.
  4. Nguyễn Thanh Hòa

    4 years ago

    Phản hồi
    Cho mình hỏi cái nhé, mình muốn chạy upload ứng dụng laravel+vuejs lên hosting được không, dưới máy tính mình chạy server, nếu mình muốn chạy laravel +vuejs trên hosting thì, hosting cần phải hổ trợ server phải không bạn
    1. FirebirD

      4 years ago

      Phản hồi
      chạy được bạn nhé, triển khai trên hosting có lỗi gì vất vào đây ae hỗ trợ
  5. hai

    4 years ago

    Phản hồi
    Mọi người cho hỏi đã làm mọi thứ chuẩn như hướng dẫn nhưng vẫn bị lỗi mình phát hiện lỗi do mình truyền biến vào masterpage qua file app/Providers/AppServiceProvider.php public function boot() { Schema::defaultStringLength(191); $cate['cate_parents'] = CaloteryModel::Where('cate_level',0)->orderby('cate_id','asc')->get(); $cate['cate_childrens'] = CaloteryModel::Where('cate_main','children')->orderby('cate_id','asc')->get(); view()->share($cate); } nhưng chạy trên xampp mọi thứ đều oke có ai có cách khắc phục không ạ ?
  6. Oliver Russell

    4 years ago

    Phản hồi
    Thay vì chia sẻ lưu trữ, tôi sẽ khuyên bạn nên lưu trữ đám mây. Chia sẻ lưu trữ không phải là một lựa chọn tốt cho việc triển khai laravel vì các máy chủ chia sẻ không an toàn và không đủ nhanh. Mặt khác, trong đám mây lưu trữ bạn nhận được các máy chủ chuyên dụng. Nếu bạn không muốn quản lý các máy chủ đám mây của mình theo cách thủ công, bạn có thể sử dụng lưu trữ trên máy chủ Cloudways. Với nền tảng này, bạn có thể khởi chạy máy chủ laravel chỉ bằng một cú nhấp chuột và bạn cũng sẽ không phải quản lý máy chủ của mình theo cách thủ công. Họ là giá cả phải chăng và có hỗ trợ khách hàng tốt 24/7.
  7. Tín Lâm

    4 years ago

    Phản hồi
    Trước tiên thì rất cảm ơn thông tin mà bạn FirebirD chia sẽ. Tuy nhiên, tôi hơi bị shock khi đọc được một trang tiếng Anh về vấn đề hack trang laravel. Cụ thể là file .env sẽ lộ hết ra cho người xem. vậy nên, copy thêm một ít code nữa vào phần cuối cho file htaccess sẽ an toàn cho trang hơn. --------------------- # Disable index view Options -Indexes # Hide a specific file Order allow,deny Deny from all ---------------------- Vui lòng tham khảo thêm nguồn https://medium.com/@Bohr/can-laravel-be-hacked-47ca5165d357
    1. FirebirD

      4 years ago

      Phản hồi
      Thank Tín Lâm, một thông tin rất quan trọng mà ít ai để ý.
  8. Ngôn

    4 years ago

    Phản hồi
    Hosting free năm ngoái của em chạy laravel bình thường. giờ vô lại web đó thì không được. là bị lỗi gì ạ?? có phải lỗi phiên bản PHP ko ạ??/
  9. Tuấn

    4 years ago

    Phản hồi
    Nếu thay đổi cấu trúc source code của nó có an toàn ko a
  10. Oliver Russell

    4 years ago

    Phản hồi
    Installing Laravel on shared hosting is little tricky because of lack of ssh access. This is why I suggest to use other options like a vps or a cloud server where you have ssh access.
  11. TamNguyen

    3 years ago

    Phản hồi

    Mình đàn chạy http://localhost/laravel55 // Working Nhưng khi test domain.dev ở local thì nó không chạy, mặc dù đã làm các bước như Admin chỉ dẫn ở trên.

    1. FirebirD

      3 years ago

      Phản hồi

      Nếu bạn chỉ chạy ở local thì dùng Laragon nhé, tham khảo ở bài này https://allaravel.com/blog/cai-dat-laravel-de-dang-voi-laragon

  12. Phương

    3 years ago

    Phản hồi

    Thay đổi cấu trúc source là rất nguy hiểm, đặc biệt việc chuyển toàn bộ thư mục trong public ra thư mục gốc public_html. Cách tốt nhất là dùng htaccess điều hướng vào thư mục public

Thêm bình luận