律师事务所案件管理系统部署教程

律师事务所案件管理系统是一款基于 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)。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注