安装部署
本指南介绍如何在不同环境下部署 Fastdotnet 应用。
🖥️ 开发环境部署
本地开发模式
1. 后端启动
bash
cd backend/Fastdotnet.WebApi
# 首次运行(会自动创建数据库)
dotnet run
# 或使用 watch 模式(代码修改后自动重启)
dotnet watch run常用命令:
bash
# 清理并重新构建
dotnet clean
dotnet build
# 发布到本地文件夹
dotnet publish -c Release -o ./publish2. 前端启动
bash
cd Web/fastdotnet-admin
# 安装依赖(首次或 package.json 变更后)
pnpm install
# 开发模式(支持热更新)
pnpm dev
# 生产构建
pnpm build访问地址:
- 前端管理端:http://localhost:18888
- 前端应用端:http://localhost:18887
- 后端 API:http://localhost:18889
- Swagger:http://localhost:18889/swagger
🐳 Docker 部署(推荐)
Docker 部署是最简单的方式,适合快速体验和测试。
前置要求
- 安装 Docker Desktop
- 安装 Docker Compose
一键启动
bash
# 进入 docker 目录
cd docker
# 查看所有可用的配置文件
ls docker-compose*.yml
# 使用 SQLite(最简单,无需外部数据库)
docker-compose -f docker-compose.sqlite.yml up -d
# 或使用 PostgreSQL
docker-compose -f docker-compose.pgsql.yml up -d
# 或使用 SQL Server
docker-compose -f docker-compose.yml up -d查看日志
bash
# 查看所有服务日志
docker-compose logs -f
# 查看特定服务日志
docker-compose logs -f webapi
docker-compose logs -f admin停止服务
bash
# 停止所有服务
docker-compose down
# 停止并删除数据卷(会清空数据库)
docker-compose down -v自定义配置
编辑 docker-compose.yml 文件:
yaml
services:
webapi:
environment:
- ConnectionStrings__DefaultConnection=Server=db;Database=Fastdotnet;...
- JwtSettings__SecretKey=your-secret-key
ports:
- "5000:8080" # 映射端口🌐 生产环境部署
方案 1:Linux 服务器部署
1. 准备服务器
推荐使用 Ubuntu 20.04+ 或 CentOS 8+
bash
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装必要工具
sudo apt install -y curl wget git nginx2. 安装 .NET Runtime
bash
# 添加 Microsoft 包源
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
# 安装 ASP.NET Core Runtime
sudo apt-get update
sudo apt-get install -y aspnetcore-runtime-10.0
# 验证安装
dotnet --list-runtimes3. 部署后端
bash
# 创建应用目录
sudo mkdir -p /var/www/fastdotnet
cd /var/www/fastdotnet
# 上传发布文件(从本地)
# 本地执行:dotnet publish -c Release -o ./publish
# 然后上传 publish 文件夹内容到服务器
# 设置权限
sudo chown -R www-data:www-data /var/www/fastdotnet
# 创建 systemd 服务
sudo nano /etc/systemd/system/fastdotnet.servicefastdotnet.service 内容:
ini
[Unit]
Description=Fastdotnet Web API
After=network.target
[Service]
WorkingDirectory=/var/www/fastdotnet
ExecStart=/usr/bin/dotnet /var/www/fastdotnet/Fastdotnet.WebApi.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=fastdotnet
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target启动服务:
bash
# 重载 systemd
sudo systemctl daemon-reload
# 启用并启动服务
sudo systemctl enable fastdotnet
sudo systemctl start fastdotnet
# 查看状态
sudo systemctl status fastdotnet
# 查看日志
sudo journalctl -u fastdotnet -f4. 配置 Nginx 反向代理
bash
sudo nano /etc/nginx/sites-available/fastdotnetNginx 配置:
nginx
server {
listen 80;
server_name api.yourdomain.com;
location / {
proxy_pass http://localhost:18889;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}启用配置:
bash
sudo ln -s /etc/nginx/sites-available/fastdotnet /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx5. 部署前端
bash
# 本地构建
cd Web/fastdotnet-admin
pnpm build
# 上传 dist 目录到服务器
scp -r dist/* user@server:/var/www/fastdotnet-admin/
# 配置 Nginx
sudo nano /etc/nginx/sites-available/fastdotnet-adminNginx 配置:
nginx
server {
listen 80;
server_name admin.yourdomain.com;
root /var/www/fastdotnet-admin;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://localhost:18889/api/;
}
}方案 2:Windows IIS 部署
1. 安装 IIS 和 ASP.NET Core Module
- 打开"控制面板" → "程序和功能" → "启用或关闭 Windows 功能"
- 勾选:
- ✅ Internet Information Services
- ✅ ASP.NET Core Hosting Bundle
下载 Hosting Bundle:https://dotnet.microsoft.com/download/dotnet/10.0
2. 发布应用
bash
# 后端
cd backend/Fastdotnet.WebApi
dotnet publish -c Release -o C:\publish\webapi
# 前端
cd Web/fastdotnet-admin
pnpm build
# 将 dist 目录复制到 C:\inetpub\wwwroot\admin3. 配置 IIS
- 打开 IIS 管理器
- 添加网站:
- 名称:Fastdotnet API
- 物理路径:
C:\publish\webapi - 端口:5000
- 应用程序池设置为"无托管代码"
🔒 安全配置
1. HTTPS 配置
使用 Let's Encrypt 免费证书:
bash
# 安装 Certbot
sudo apt install certbot python3-certbot-nginx
# 获取证书
sudo certbot --nginx -d api.yourdomain.com -d admin.yourdomain.com
# 自动续期
sudo crontab -e
# 添加:0 0 1 * * certbot renew --quiet2. 防火墙配置
bash
# Ubuntu (UFW)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
# CentOS (firewalld)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload3. 环境变量管理
创建 .env 文件(不要提交到 Git):
env
# 数据库连接
DB_CONNECTION=Server=localhost;Database=Fastdotnet;...
# JWT 密钥
JWT_SECRET=your-super-secret-key-here
# 其他敏感配置
REDIS_PASSWORD=redis-password在 appsettings.json 中引用:
json
{
"ConnectionStrings": {
"DefaultConnection": "${DB_CONNECTION}"
}
}📊 监控和日志
1. 应用日志
日志文件位置:
- Linux:
/var/log/fastdotnet/ - Windows:
%APPDATA%\Fastdotnet\logs\
2. 性能监控
推荐使用:
- Application Insights(Azure)
- Prometheus + Grafana(自建)
- ELK Stack(日志分析)
🔄 更新部署
后端更新
bash
# 1. 拉取最新代码
git pull
# 2. 重新发布
dotnet publish -c Release -o ./publish
# 3. 重启服务
sudo systemctl restart fastdotnet
# 4. 查看日志确认启动成功
sudo journalctl -u fastdotnet -f前端更新
bash
# 1. 拉取最新代码
git pull
# 2. 重新构建
pnpm install
pnpm build
# 3. 上传到服务器
scp -r dist/* user@server:/var/www/fastdotnet-admin/
# 4. 清除浏览器缓存(或使用版本号)