Hướng dẫn cài đặt
3.1 Yêu cầu hệ thống
| Thành phần | Yêu cầu tối thiểu |
|---|---|
| Hệ điều hành | Windows Server 2019+ hoặc Windows 10/11 |
| .NET Runtime | .NET 8 ASP.NET Core Hosting Bundle |
| Database | SQL Server 2017+ (hoặc SQL Server Express) |
| Web Server | IIS 10+ với ASP.NET Core Module V2 |
| RAM | 2 GB |
| Disk | 1 GB (chưa kể file đính kèm) |
3.2 Cài đặt .NET Hosting Bundle
- Tải ASP.NET Core Hosting Bundle for .NET 8 tại:
https://dotnet.microsoft.com/download/dotnet/8.0 - 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ính | Giá trị |
|---|---|
| Name | ChecklistApp |
| .NET CLR Version | No Managed Code |
| Managed Pipeline Mode | Integrated |
Bước 4 — Tạo Website/Application trong IIS:
| Thuộc tính | Giá trị |
|---|---|
| Physical Path | C:\inetpub\ChecklistApp |
| Application Pool | ChecklistApp |
| Port | Tù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
uploadsvàDataProtection-Keysnế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ả |
|---|---|
BusinessTimeZone | Múi giờ hiển thị. Dùng Windows Timezone ID (SE Asia Standard Time = UTC+7) |
SeedAdmin.UserName | Username tài khoản admin khởi tạo lần đầu |
SeedAdmin.Password | Mật khẩu admin (đổi ngay sau lần đăng nhập đầu tiên) |
Upload.MaxAttachmentSizeMB | Kích thước tối đa file đính kèm (MB) |
Upload.UploadRootPath | Thư mục lưu file upload (relative = theo ContentRoot) |
3.6 Khởi động lần đầu
- Start Application Pool
ChecklistApptrong IIS Manager - Truy cập
http://your-server:port - Ứ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)
- Đă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
- Stop Application Pool
ChecklistApp - Copy file chương trình vào
C:\inetpub\ChecklistApp\, giữ lạiappsettings.Production.json - Start Application Pool
- Ứng dụng tự động chạy migration nếu có thay đổi schema