5 bước deploy ASP.NET Core app lên Azure
Giới thiệu
Đa số các bài trên mạng hướng dẫn deploy ứng dụng ASP.NET MVC hoặc ASP.NET Core lên Azure đều dùng Windows + Visual Studio.
Nên mình sẽ viết một bài hướng dẫn deploy dùng Macbook, cách setup Github để sử dụng Continuous Integration với Azure nhé. Stay tuned!
Bước 1: Chuẩn bị source code
Tưởng có vẻ đơn giản, nhưng nhớ chạy dưới local xem có lỗi gì không trước đã nhé, có gì debug cho tiện luôn. Chứ đừng để deploy rồi mới biết có bug.
Lúc trước mình hay dùng SQLite dưới local để dev. Lúc deploy thì trên production lại dùng SQL Server. Lúc đó thì dưới local chạy ok hết nhưng lên production sẽ bị lỗi như khoá ngoại duplicate, bla bla.
Mình đã chuẩn bị một app nhỏ là web api có 1 api lấy email subscription. App này để xây dựng trang khoá học trực tuyến sắp tới của tụi mình luôn đó.
Chuẩn bị ứng dụng để deploy nào!
Bước 2: Tìm hiểu Azure và các khái niệm cơ bản
Các bạn nhớ đăng ký Azure nhé. Nếu bạn là sinh viên có thể đăng ký Azure for Students sẽ được miễn phí sử dụng, và miễ phí luôn key bên Pluralsight.
Sau khi đăng nhập xong sẽ có giao diện như vầy:
Giao diện Azure
Các khái niệm cơ bản
Resource Group: Là một nhóm các dịch khác nhau để dễ quản lý. Có thể dễ hiểu là mỗi ứng dụng bạn tạo mới 1 cái group này. Ví dụ khách hàng A có 1 web app hoá đơn điện tử, mình tạo 1 Resource Group riêng cho anh ấy. Chị B thuê mình làm ứng dụng rao vặt, thì mình tạo Resource Group riêng cho chị.
App Services: "Azure App Service is a service for hosting web applications, REST APIs, and mobile back ends. You can develop in your favorite language, be it .NET, .NET Core, Java, Ruby, Node.js, PHP, or Python". Ở dưới localhost, bạn dùng máy tính của bạn, thì coi như bạn trả cho Azure một khoảng tiền để mua cái App Services này. App Services giống như 1 cái hosting nhưng có nhiều tính năng hơn như load balancing, autoscaling, hỗ trợ continuous deployment qua Github, Azure DevOps
App Services Plan: Chi tiết cấu hình và giá mà bạn muốn cho cái App Services ở trên. Ví dụ như Ram mấy GB, CPU mấy core, máy chủ được đặt ở đâu, vv
SQL Server (SQL Logic Server): Là "logical grouping of multiple Azure SQL Databases". Mình cũng không biết dịch tiếng Việt là gì. Nhưng một SQL Server sẽ có nhiều SQL Database con. Các SQL database con này sẽ dùng chung Server Admin username và password. Azure sẽ không tính phí khi tạo SQL Server vì mức phí sẽ quy định khi tạo SQL Database con.
1 SQL Server có nhiều SQL Database
SQL Database: Cơ sở dữ liệu của bạn. Mức giá được tính theo storage size và DTU (Database Transaction Unit)
Vậy để deploy một ứng dụng cơ bản, ta cần làm các bước sau:
Tạo Resource Group
Tạo App Services Plan
Tạo App Services
Tạo SQL Server
Tạo SQL Database
Config các kiểu
Push code lên App Services
Bước 3: Khởi tạo các dịch vụ cần thiết
Lưu ý nếu dashboard của bạn không hiển thị dịch vụ nào ở trên thì bạn dùng tính năng search của Azure cho nhanh nhé.
Tạo Resource Group
Tạo App Service Plan
Tạo App Service
Tạo SQL Server
Tạo SQL Database
Bước 4: Config
Tiếp theo chúng ta cần config một số thứ nữa để có thể deploy được.
Set các biến và Connection String
Bạn vào App service mới tạo -> Application settings (Classic) và set các biến cần thiết cũng như connection string tới SQL Database mới tạo ở bước trên nhé.
Với một ứng dụng ASP.NET Core, thì mình set 2 biến này là đủ
ASPNETCORE_ENVIRONMENT = Production
ASPNETCORE_DETAILEDERRORS = true
Ngoài ra, mình dùng Entity Framework nên cần chạy lệnh dotnet ef database update từ local. Nên cần cho phép địa chỉ IP máy mình truy cập được SQL Server. Bạn vào SQL Server -> Firewalls and virtual networks để thêm địa chỉ IP máy local của bạn nếu cần nhé.
Bước 5: Continuous Integration với Github Repo
Bạn push source code của mình lên Github sau đó vào phần App Service -> Deployment Center nhé
Sau đó bạn uỷ quyền Github cho Azure, chọn Repo và nhánh muốn liên kết. Sau này mỗi khi branch mà bạn đã chọn có thay đổi gì thì App Server tự pull code về để deploy và thông báo kết quả cho bạn luôn.
Sau có thông báo Success, bạn vào url của App Service để kiểm tra nhé!
Kết
Bài viết đã giới thiệu sơ lược về các dịch vụ cơ bản của Azure cũng như cách deploy một ứng dụng ASP.NET Core. Mọi thắc mắc hay đóng góp mọi người để dưới phần bình luận nhé
Link thao khảo: