律师事务所案件管理系统是一款基于 WEB 的案件管理系统,本系统只专注案件管理一条主线,辅以简单律师管理和财务数据,通过案件审核、合同审核、结案审核和已结案几个关键状态来控制案件流程。详细介绍请参看《我开发了一个律师事务所案件管理系统》。
我将采用业内最标准的轻量级高可用架构:Nginx(反向代理与静态资源服务器) + Gunicorn/Uvicorn(后端进程守护) + PostgreSQL,将系统部署在阿里云(点击去购买)或腾讯云(点击去购买)上,云服务器系统选择 Debian 13。
一、系统部署环境准备
本系统部署环境包含服务器基础环境和安装依赖环境两部分,需要在正式安装前部署好环境。
1.需要安装的依赖环境
fastapi==0.136.0
uvicorn[standard]>=0.30.0
sqlalchemy==2.0.49
psycopg2-binary>=2.9.9
pydantic>=2.7.0
pydantic-settings>=2.2.0
passlib[bcrypt]>=1.7.4
python-jose[cryptography]>=3.3.0
python-multipart>=0.0.9
pandas==3.0.0
bcrypt==4.0.1
2.服务器基础环境准备
python3
python3-venv
python3-pip
postgresql
postgresql-contrib
nginx
3.部署前的本地代码的“生产化”改造
3.1 修改前端 API 请求基地址
打开 frontend/src/utils/request.js,将 localhost 替换为相对路径。
// 修改前:
const service = axios.create({
baseURL: 'http://localhost:8000/api', // 本地环境路径
timeout: 10000
})
// 修改后:
const service = axios.create({
baseURL: '/api', // 生产环境路径
timeout: 10000
})
3.2 修改后端 JWT 密钥与数据库连接
打开 backend/auth.py,设置超长随机复杂生产密钥。
// 修改前:
SECRET_KEY = "TEST_KEY_FOR_LOCAL_DEV"
// 修改后:
SECRET_KEY = "自行设置超长随机复杂生产密钥"
打开 backend/database.py,确保里面的密码与您等下在云服务器上设置的 PostgreSQL 密码一致。
二、云服务器上部署案件管理系统
首先,确保自己已经购买了云服务器,且可以正常通过 SSH 登录到您的云服务器。
1. 更新系统包
sudo apt update && sudo apt upgrade -y
2. 安装 Python3、虚拟环境、PostgreSQL 和 Nginx
sudo apt install -y python3 python3-venv python3-pip postgresql postgresql-contrib nginx
3. 云服务器配置 PostgreSQL
sudo -u postgres psql
在 SQL 命令行中执行以下指令:
CREATE USER law_user WITH PASSWORD '你的生产环境强密码';
CREATE DATABASE law_db OWNER law_user;
GRANT ALL PRIVILEGES ON DATABASE law_db TO law_user;
\q
4. 后端部署与进程守护 (Systemd)
4.1 创建目录并赋权
sudo mkdir -p /var/www/lawfirm
sudo chown -R $USER:$USER /var/www/lawfirm
cd /var/www/lawfirm
4.2 创建并激活虚拟环境
python3 -m venv venv
source venv/bin/activate
4.3 安装依赖
pip install -r backend/requirements.txt
4.4 生产环境需要额外安装 gunicorn
pip install gunicorn
4.5 运行 Seeder 初始化数据库表结构和字典数据
python -m backend.seeder
4.6 配置 Systemd 守护进程
sudo nano /etc/systemd/system/lawfirm-backend.service
写入以下内容:
[Unit]
Description=Gunicorn instance to serve Law Firm FastAPI Backend
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/var/www/lawfirm
Environment=”PATH=/var/www/lawfirm/venv/bin”
ExecStart=/var/www/lawfirm/venv/bin/gunicorn backend.main:app -w 4 -k uvicorn.workers.UvicornWorker -b 127.0.0.1:8000
[Install]
WantedBy=multi-user.target
保存并退出后,启动并设置开机自启:
sudo systemctl daemon-reload
sudo systemctl start lawfirm-backend
sudo systemctl enable lawfirm-backend
4.7 检查运行状态,绿色的 active (running)为正常
sudo systemctl status lawfirm-backend
5. 前端部署与 Nginx 配置
5.1 上传 dist 文件夹内容至云服务器
在本地 frontend 目录下执行 npm run build 生成的 dist 文件夹,再将 dist 文件夹内容上传至 var/www/lawfirm/frontend 目录下,最终服务器目录结构应该如下:
├── backend/ (后端代码)
├── frontend/ (原 dist 文件夹里的编译后文件)
├── uploads/ (附件上传目录)
└── venv/ (Python 虚拟环境)
赋予 uploads 文件夹写权限
sudo chmod -R 777 /var/www/lawfirm/uploads
5.2 配置 Nginx
新建 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/lawfirm
写入以下核心配置(如果暂时没有域名,server_name 可以填服务器公网 IP):
server {
listen 80;
server_name 你的域名或公网IP;
location / {
root /var/www/lawfirm/frontend;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://127.0.0.1:8000/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /uploads/ {
alias /var/www/lawfirm/uploads/;
client_max_body_size 50M;
}
}
5.2 激活 Nginx 配置
建立软链接
sudo ln -s /etc/nginx/sites-available/lawfirm /etc/nginx/sites-enabled/
测试 Nginx 配置语法是否正确
sudo nginx -t
重启 Nginx
sudo systemctl restart nginx
至此,律师事务所案件管理系统部署已经完成。特别提醒:请确保您的云服务器控制台(如阿里云/腾讯云)安全组已经放行了 80端口 (HTTP),如果是强安全需求,后期建议配置 SSL 证书并放行 443端口 (HTTPS)。