Skip to content

安装部署

本指南介绍如何在不同环境下部署 Fastdotnet 应用。


🖥️ 开发环境部署

本地开发模式

1. 后端启动

bash
cd backend/Fastdotnet.WebApi

# 首次运行(会自动创建数据库)
dotnet run

# 或使用 watch 模式(代码修改后自动重启)
dotnet watch run

常用命令:

bash
# 清理并重新构建
dotnet clean
dotnet build

# 发布到本地文件夹
dotnet publish -c Release -o ./publish

2. 前端启动

bash
cd Web/fastdotnet-admin

# 安装依赖(首次或 package.json 变更后)
pnpm install

# 开发模式(支持热更新)
pnpm dev

# 生产构建
pnpm build

访问地址:


🐳 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 nginx

2. 安装 .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-runtimes

3. 部署后端

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.service

fastdotnet.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 -f

4. 配置 Nginx 反向代理

bash
sudo nano /etc/nginx/sites-available/fastdotnet

Nginx 配置:

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 nginx

5. 部署前端

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-admin

Nginx 配置:

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\admin

3. 配置 IIS

  1. 打开 IIS 管理器
  2. 添加网站:
    • 名称:Fastdotnet API
    • 物理路径:C:\publish\webapi
    • 端口:5000
  3. 应用程序池设置为"无托管代码"

🔒 安全配置

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 --quiet

2. 防火墙配置

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 --reload

3. 环境变量管理

创建 .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. 清除浏览器缓存(或使用版本号)

📚 下一步

Released under the MIT License.