Hướng dẫn cài đặt

3.1 Yêu cầu hệ thống

Thành phầnYêu cầu tối thiểu
Hệ điều hànhWindows Server 2019+ hoặc Windows 10/11
.NET Runtime.NET 8 ASP.NET Core Hosting Bundle
DatabaseSQL Server 2017+ (hoặc SQL Server Express)
Web ServerIIS 10+ với ASP.NET Core Module V2
RAM2 GB
Disk1 GB (chưa kể file đính kèm)

3.2 Cài đặt .NET Hosting Bundle

  1. Tải ASP.NET Core Hosting Bundle for .NET 8 tại: https://dotnet.microsoft.com/download/dotnet/8.0
  2. Cài đặt, sau đó chạy lệnh sau để IIS nhận module:
    iisreset

3.3 Chuẩn bị SQL Server

-- Tạo database
CREATE DATABASE ChecklistAppDb;

-- Tạo user (tùy chọn, hoặc dùng Windows Auth)
CREATE LOGIN checklist_user WITH PASSWORD = 'YourStrongPassword!';
USE ChecklistAppDb;
CREATE USER checklist_user FOR LOGIN checklist_user;
ALTER ROLE db_owner ADD MEMBER checklist_user;

3.4 Triển khai ứng dụng lên IIS

Bước 1 — Sao chép file:
Copy toàn bộ file chương trình vào thư mục IIS, VD: C:\inetpub\ChecklistApp\

Bước 2 — Tạo file cấu hình production:

Tạo file C:\inetpub\ChecklistApp\appsettings.Production.json với nội dung:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=YOUR_SERVER;Database=ChecklistAppDb;User Id=YOUR_USER;Password=YOUR_PASSWORD;TrustServerCertificate=True;MultipleActiveResultSets=true"
  }
}

Lưu ý: File này KHÔNG nằm trong publish output và sẽ KHÔNG bị ghi đè khi cập nhật. Giữ lại file này qua mỗi lần deploy.

Bước 3 — Tạo Application Pool trong IIS:

Thuộc tínhGiá trị
NameChecklistApp
.NET CLR VersionNo Managed Code
Managed Pipeline ModeIntegrated

Bước 4 — Tạo Website/Application trong IIS:

Thuộc tínhGiá trị
Physical PathC:\inetpub\ChecklistApp
Application PoolChecklistApp
PortTùy chọn (VD: 8082)

Bước 5 — Cấp quyền cho App Pool:

icacls "C:\inetpub\ChecklistApp" /grant "IIS AppPool\ChecklistApp:(OI)(CI)RX"
icacls "C:\inetpub\ChecklistApp\uploads" /grant "IIS AppPool\ChecklistApp:(OI)(CI)M"
icacls "C:\inetpub\ChecklistApp\DataProtection-Keys" /grant "IIS AppPool\ChecklistApp:(OI)(CI)M"

Tạo thư mục uploadsDataProtection-Keys nếu chưa có.


3.5 Cấu hình appsettings

File appsettings.json (nằm trong publish output):

{
  "BusinessTimeZone": "SE Asia Standard Time",
  "SeedAdmin": {
    "UserName": "admin",
    "Email": "[email protected]",
    "Password": "Admin@123456"
  },
  "Upload": {
    "MaxAttachmentSizeMB": "10",
    "UploadRootPath": "uploads"
  }
}
Tham sốMô tả
BusinessTimeZoneMúi giờ hiển thị. Dùng Windows Timezone ID (SE Asia Standard Time = UTC+7)
SeedAdmin.UserNameUsername tài khoản admin khởi tạo lần đầu
SeedAdmin.PasswordMật khẩu admin (đổi ngay sau lần đăng nhập đầu tiên)
Upload.MaxAttachmentSizeMBKích thước tối đa file đính kèm (MB)
Upload.UploadRootPathThư mục lưu file upload (relative = theo ContentRoot)

3.6 Khởi động lần đầu

  1. Start Application Pool ChecklistApp trong IIS Manager
  2. Truy cập http://your-server:port
  3. Ứng dụng tự động thực hiện:
    • Migration tạo toàn bộ schema database
    • Tạo 5 roles mặc định
    • Tạo tài khoản SuperAdmin theo cấu hình SeedAdmin
    • Tạo cấu hình thông báo mặc định (tắt)
  4. Đăng nhập và đổi mật khẩu admin ngay lập tức

3.7 Cài đặt SMTP (tùy chọn)

Đăng nhập → System → SMTP Settings → nhập thông tin → Save

Ví dụ với Gmail:

Host: smtp.gmail.com
Port: 587
User: [email protected]
Password: [App Password]
Enable SSL: true

Sau đó vào System → Notification Settings để bật từng loại thông báo.


3.8 Quy trình cập nhật phiên bản

  1. Stop Application Pool ChecklistApp
  2. Copy file chương trình vào C:\inetpub\ChecklistApp\, giữ lại appsettings.Production.json
  3. Start Application Pool
  4. Ứng dụng tự động chạy migration nếu có thay đổi schema