- vừa được xem lúc

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

0 0 57

Người đăng: Nguyễn Khánh

Theo Viblo Asia

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 _@.com

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 === _@.com 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/

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 358

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 449

- vừa được xem lúc

Sử dụng Swagger để xây dựng API documentation

Giới thiệu về Swagger. RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế Web services) để tiện cho việc quản lý các resource.

0 0 1k

- vừa được xem lúc

Ví dụ CRUD với Laravel và Vuejs.

1. Cài đặt Laravel. composer create-project --prefer-dist laravel/laravel vuelaravelcrud. .

0 0 160

- vừa được xem lúc

Một số tips khi dùng laravel (Part 1)

1. Show database query in raw SQL format. DB::enableQueryLog(); // Bật tính năng query logging. DB::table('users')->get(); // Chạy truy vấn bạn muốn ghi log.

0 0 84

- vừa được xem lúc

Inertiajs - Xây dựng Single Page App không cần API

Tiêu đề là mình lấy từ trang chủ của https://inertiajs.com/ chứ không phải mình tự nghĩ ra đâu nhé :v. Lâu lâu rồi chưa động tới Laravel (dự án cuối cùng mình code là ở ver 5.8), thế nên một ngày đẹp trời lượn vào đọc docs ver 8.

0 0 242