Deploy app Laravel App lên Heroku có kết nối Database

Trong bài hôm nay, thì mình sẽ giới thiệu cho các bạn cách để deploy một app Laravel lên Heroku bằng git và Heroku CLI. Heroku là nền tảng đám mây cho phép các lập trình viên xây dựng, triển khai, quản lý và mở rộng ứng dụng, nó rất linh hoạt và dễ sử dụng, cung cấp cho một con đường đơn giản nhất để đưa sản phẩm tiếp cận người dùng.

Tuy nhiên, Heroku chỉ phù hợp với những app đơn giản, cơ sở dữ liệu không quá phức tạp, ít người dùng và cho các bạn dùng để test. Nếu bạn muốn xây dựng những app lớn và người dùng sẽ có trải nghiệm tốt thì nên deploy lên những Hosting tốt hơn nhé.

Bắt đầu thôi nào!

1. Cài đặt Heroku CLI

Heroku CLI (Command Line Interface) là cách đơn giản để chúng ra tạo và quản lý các apps Heroku của bạn thông qua terminal. Dưới đây mình sẽ cài đặt Heroku CLI cho Ubuntu 16+, nếu bạn sử dụng hệ điều hành khác thì có thể tham khảo tại đây

sudo snap install --classic heroku

Sau khi cài đặt thì kiểm tra xem Heroku đã được cài đặt thành công hay chưa

heroku --version

2. Cài đặt app Laravel

Vẫn là câu command quen thuộc mà những người học Laravel đều biết (nhưng chưa chắc nhớ 😅)

composer create-project --prefer-dist laravel/laravel deploy_heroku "5.8.*"

Ở đây mình cài bản 5.8 vì thấy nó khá là ổn định, ít có những lối lặt vặt về version

3. Tạo Procfile

Tại folder root của laravel app, tạo một file Procfile. Trong file Procfile chúng ta sẽ chỉ định command được thực thi bởi app khi khởi chạy.

web: vendor/bin/heroku-php-apache2 public/

4. Cài đặt git và thực hiện commit cho app

git init

git add .

git commit -m 'Deploy App Heroku'

5. Login Heroku thông qua Heroku CLI

Để thực hiện bước này, bạn phải có 1 tài khoản Heroku. Nếu chưa có hãy đăng ký thôi nào https://signup.heroku.com/. Sau khi đã có tài khoản thì thực hiện command

heroku login

Sau khi nhập thì sẽ xuất hiện câu hỏi: heroku: Press any key to open up the browser to login or q to exit: nhấn một từ bất kỳ rồi enter để tiếp tục. Khi trình duyệt được mở lên thì nhấn Log in.

Đây là kết quả sau khi login Heroku bằng CLI

Logging in... done
Logged in as [email protected]

6. Tạo app trên Heroku

Sau khi đã login thành công thì chúng ta thực hiện tạo app Heroku bằng CLI

heroku create

Một repository được tạo thành công

Creating app... done, ⬢ cryptic-stream-28489
https://cryptic-stream-28489.herokuapp.com/ | https://git.heroku.com/cryptic-stream-28489.git

Khi kiểm tra git remote -v thì thấy remote heroku đã được tạo trong app

$ git remote -v
heroku	https://git.heroku.com/cryptic-stream-28489.git (fetch)
heroku	https://git.heroku.com/cryptic-stream-28489.git (push)

7. Deploy code lên repo vừa tạo được

Bây giờ chỉ cần push code lên repo vừa tạo bằng command

git push heroku master

App đã được release thành công

8. Cấu hình env cho project trên Heroku

Phần này bạn có thể vào phần settings của app bạn vừa tạo trên Dashboard Heroku . Tạo phần Config Vars bạn thêm các key cho app Laravel

Trên Terminal thực hiện command heroku open để mở app, và dưới đây là kết quả sau khi chúng ta deploy

9. Cấu hình Https cho app

Sau khi lượn 1 lượt các page của app thì mình thấy chỉ có trang root là được https còn lại đều là http , vậy nên chúng ta sẽ cấu hình lại để tất cả chuyển sang https nhé

Trong file AppServiceProvider.php chúng ra sẽ thêm vào function register() như bên dưới

public function register()
{
    if (env('APP_ENV') == 'Production') {
        URL::forceScheme('https');
    }
}

Sau khi thay đổi code thì bạn cũng phải thực hiện commit và push code lên lại như phần trước nhé!

git add .
git commit -m 'message'
git push heroku master

Và config cho app trong phần settings APP_ENV bằng Production luôn. Reopen lại app để test nhé !

Thực hiện kết nối SQL cho app

Chắc chắn là app động thì phải có Database rồi, dưới đây là các bước để kết nối Database trên Heroku

Thực hiện cài Heroku Postgres và cấu hình lại cho App

Tại phần resources, chúng ta tìm Heroku Postgres và thực hiện cài đặt vào app

Sau khi đã cài xong thì click vào package đó. Vào phần SettingsView Database Credentials để biết được thông tin Database rồi cấu hình vào env app.

Chú ý, ở phần DB_CONNECTION sẽ là pgsql, không phải là mysql nhé

Thực hiện migration

Command heroku apps để kiểm tra những apps trên Heroku của bạn

$ heroku apps 
=== [email protected] Apps
cryptic-stream-28489

Command heroku run bash --app name-your-app để thực hiện truy cập vào app thông qua CLI

$ heroku run bash --app cryptic-stream-28489
Running bash on ⬢ cryptic-stream-28489... up, run.6492 (Free)

Bây giờ bạn có thể thực hiện các command của Laravel ngay trên Heriku CLI

Và đây là kết quả 😍

Tổng kết

Trên đây là các bước để deploy một app Laravel lên Heroku của mình, bài viết còn sơ sài nên mong mọi người có thể góp ý để mình phát triển hoàn thiện hơn. Cảm ơn mọi người đã theo dõi bài biết, chúc mọi người thành công 👍

Đây là link trang web mà mình đã deploy lên Heroku, các bạn có thể tham khảo: https://shielded-stream-69901.herokuapp.com/


All Rights Reserved