Deploy project Laravel hoàn chỉnh lên Heroku

1. Giới thiệu Đối với lập trình viên khi làm xong project ta muốn gắn vào CV hay trang cá nhân của mình để mọi người có thể xem được thì đều cần deploy lên một server nào đó với tên miền. Tuy nhiên không phải ai cũng có điều kiện để mua riêng một

1. Giới thiệu

Đối với lập trình viên khi làm xong project ta muốn gắn vào CV hay trang cá nhân của mình để mọi người có thể xem được thì đều cần deploy lên một server nào đó với tên miền. Tuy nhiên không phải ai cũng có điều kiện để mua riêng một host và một tên miền để làm việc đó nhất là các bạn sinh viên. Hôm nay mình xin hướng dẫn anh em deploy một project Laravel hoàn chỉnh lên Heroku. Hi vọng bài viết này sẽ giúp ích được cho anh em.

2. Mở đầu

Để chuẩn bị cho việc deploy anh em cần chuẩn bị các bước sau đây

  1. Đăng ký tài khoản trên heroku(nếu chưa có) link đăng ký https://dashboard.heroku.com/
  2. Chuẩn bị project Laravel cần deploy

3. Tạo app trên heroku

Sau khi đã chuẩn bị được các bước trên các bạn đăng nhập vào heroku của mình. Ở trang Dashboard bạn chọn NewCreate new app

Sau đó ta sẽ cần chọn tên của app và chọn region. Có 2 region là USA và Europe. Mình hay chọn USA

Sau khi tạo app thành công Heroku sẽ redirect bạn về trang quản trị của app đó.

Đến đây là ta đã tạo app thành công và chuẩn bị deploy project của mình.

4. Thêm cơ sở dữ liệu.

Đối với mỗi project không thể thiếu sự góp mặt của CSDL. Heroku cung cấp cho bạn CSDL miễn phí gọi là Heroku Postgres. Không những thế Heroku còn cung cấp cho bạn rất nhiều add-ons khác cho project của bạn như Mysql, MongoDb, Redis… Tuy nhiên không phải các add-ons này đều miễn phí. Một số add-ons có sẵn Free nhưng bạn vẫn cần đăng ký với thẻ Visa trước để sử dụng. Nếu có thẻ visa bạn có thể yên tâm cung cấp vì chỉ khi bạn vượt quá giới hạn của Free plan mới bị tính phí và trước khi vượt quá Heroku sẽ gửi thông báo cho bạn. Bạn có thể xem các add-ons mà Heroku hỗ trợ ở đây.
Quay lại với việc tạo CSDL. Ở đây mình dùng Heroku Postgres. Khi bạn nhập chữ P sẽ gợi ý cho bạn

Một popup sẽ hiện ra bạn nhấn Submit Order Form để xác nhận.

Màn hình quản trị của DB Postgres hiện ra bạn click vào Heroku Postgres để xem chi tiết thông tin DB của bạn. Màn hình này sẽ hiện thị các thông tin

  • Plan đang sử dụng
  • Số bảng trong CSDL
  • Số record
  • Số connections đến CSDL, …

    Tiếp theo bạn sẽ cần lấy thông tin của Postgres để cấu hình như bạn cấu hình trong file .env. Chọn Settings và click vào View Crendetials. Một màn hình hiện ra gồm các thông tin cấu hình DB. Ta sẽ cần dùng cấu hình này để config trên server của heroku. Bước tiếp theo mình sẽ chỉ rõ hơn

5. Cài đặt Heroku CLI

Để có thể deploy ở trên máy của bạn cần cài thêm Heroku CLI. Link cài đặt ở đây. Tùy thuộc vào hệ điều hành mà bạn đang sử dụng, bạn hãy chọn bản tương ứng.

6. Deploy project lên Heroku

Như các bạn đã biết trong Laravel các biến môi trường của chúng ta thường được lưu trong file .env. Tuy nhiên file này chứa các thông tin nhạy cảm nên thường được đưa vào igrnore khỏi git trong suốt quá trình làm việc. Heroku giúp chúng ta có thể cấu hình các biến môi trường này. Các bước thực hiện sẽ như sau. Các bạn quay trở lại màn hình quản lý dashboard app của mình và chọn settings

Tiếp đó chọn Reveal Configs Vars tại đây các bạn cấu hình tương tự như config trong file .env của bạn.

Sau khi đã tạo xong biến môi trường nhiệm vụ tiếp theo cần làm là tạo config cho Heroku. File này giống như file Config để Heroku có thể biết được vị trí file index.php trong ứng dụng của bạn. Các bạn tạo file có tên Procfile trong ứng dụng cùng cấp với thư mục app với nội dung như sau.

Heroku cho phép bạn deploy trực tiếp project hoặc bạn có thể deploy qua github. Ở đây mình xin hướng dẫn các bạn deploy trực tiếp.
Nếu project của bạn chưa thực hiện init repository thì bạn cần thực hiện init trước.

$ git init

Tiếp đến ta cần add link repo trên heroku

$ heroku git:remote add laravel-demo-deploy-heroku

Sau đó ta tiến hành add và commit các thay đổi đã thực hiện bằng các lệnh:

$ git add .
$ git commit -m "Deploy"

Cuối cùng ta tiến hành deploy bằng câu lệnh

$ git push heroku master

Trong trường hợp bạn không push từ nhánh master thì cần dùng lệnh:

$ git push heroku <your-branch>:master
// Với your-branch là  nhánh hiện tại của bạn

Không giống như việc push lên github việc deploy lên Heroku sẽ phải đợi một lúc. Và nếu thành công sẽ hiển thị như sau

.
Các bạn cũng có thể xem log trên trang quản trị của Heroku.

7. Chạy command

Laravel cung cấp cho chúng ta công cụ artisan mạnh mẽ để chạy command. Heroku cũng hỗ trợ việc này. Tại dashboard app của bạn click chọn More run Console

Chúng ta tiến hành tạo bảng bằng lệnh

Ta cũng có thể chạy trực tiếp trên terminal của máy bằng câu lệnh

$ heroku run php artisan migrate

Project của mình sau khi thực hiện nó sẽ trông như thế này. Các bạn có thể tham khảo project của mình tại đây

8. Một số lỗi hay gặp

8.1 Lỗi không nhận HTTP

Có 2 cách giải quyết như sau

  • Cách 1: Bạn có thể sửa toàn bộ link về HTTPS 😃.
  • Cách 2: bạn cần force project của mình sử dụng HTTPS bằng cách khai báo code sau trong function boot() của AppServiceProvider
use URL;
//
public function boot()
{
    URL::forceScheme('https');
}

8.2 Lỗi không chạy được script

Trong project của bạn có thể sẽ cần sử dụng một số câu lệnh của bower hay npm mix để render css, js ra ngoài public. Hay một số câu lệnh của php để render code ra public trong quá trình build như php artisan vendor:publish. Để thực hiện việc này các bạn cần khai báo trong postinstall như sau trong packages.json

9. Kết thúc

Hi vọng qua bài viết của mình các bạn có thể dễ dàng deploy project Laravel của mình lên Heroku một cách dễ dàng. Nếu có thắc mắc gì hãy comment bên dưới mình sẵn sàng trả lời. Cám ơn các bạn đã xem bài viết của mình.

10. Tham khảo

https://viblo.asia/p/huong-dan-deploy-project-laravel-cua-ban-len-heroku-maGK7WRbKj2

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ