舟山档案培训系统搭建与部署全流程实操指南
环境准备与基础依赖安装
在开始构建舟山档案培训报名系统之前,我们需要准备一台干净的服务器环境。本指南基于 Ubuntu 20.04 LTS 编写,其他 Linux 发行版命令略有不同。执行以下命令更新系统源并安装核心依赖。
1. 更新系统并安装 Python 及 Nginx
直接在终端执行以下命令,这将安装 Python 3、pip、虚拟环境工具以及 Nginx 服务器:
```bash sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install python3 python3-pip python3-venv nginx -y ```2. 创建项目目录
为了规范管理,我们在 /var/www 下创建项目目录:
Python 虚拟环境与依赖配置
为了避免污染系统全局 Python 环境,必须使用虚拟环境来隔离项目依赖。
1. 初始化虚拟环境
在项目根目录下执行:
```bash python3 -m venv venv source venv/bin/activate ``>2. 创建 requirements.txt
使用 nano 或 vim 创建 requirements.txt 文件,并写入以下精确的依赖版本号,防止版本兼容性问题:
3. 安装依赖包
执行安装命令,确保所有包安装无误:
```bash pip install -r requirements.txt ```后端核心代码实现
我们将使用 Flask 框架构建一个轻量级的后端服务,包含数据库模型、报名接口和管理列表接口。
1. 数据库模型设计
创建 app.py 文件。首先定义数据库模型,用于存储培训学员的信息。我们将使用 SQLite 数据库,无需额外安装数据库服务,零门槛落地。
2. 路由与业务逻辑实现
继续在 app.py 中添加路由处理逻辑。我们需要三个主要路由:首页(报名表单)、提交处理页、管理列表页。
前端页面开发
创建 templates 目录存放 HTML 文件。我们需要一个简洁的报名页面和一个后台管理页面。
1. 创建目录
```bash mkdir templates ```2. 编写报名页面 (templates/index.html)
这是一个包含 Bootstrap 样式的单页应用,用于展示报名表单和提示信息。
```html舟山档案培训报名系统
{% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} {% for category, message in messages %}
3. 编写管理页面 (templates/admin.html)
用于查看已报名人员的列表。
```html舟山档案培训 - 报名名单
返回报名页| ID | 姓名 | 单位 | 电话 | 报名时间 |
|---|---|---|---|---|
| {{ trainee.id }} | {{ trainee.name }} | {{ trainee.department }} | {{ trainee.phone }} | {{ trainee.created_at.strftime('%Y-%m-%d %H:%M') }} |
生产环境部署配置
开发服务器性能不足,我们需要使用 Gunicorn 作为 WSGI 服务器,并配置 Nginx 作为反向代理。
1. 配置 Systemd 服务
创建一个 systemd 服务文件,让系统能够自动管理 Flask 应用的启动和重启。
```bash sudo nano /etc/systemd/system/zs_training.service ```在文件中写入以下内容,注意 User 和 Group 需要填写你当前服务器的用户名,WorkingDirectory 必须指向项目目录:
2. 修正文件权限并启动服务
为了防止权限问题,我们将项目所有者赋予 www-data(Nginx 运行用户),然后启动服务:
```bash sudo chown -R www-data:www-data /var/www/zs_archives_training sudo systemctl start zs_training sudo systemctl enable zs_training ```3. 配置 Nginx 反向代理
编辑 Nginx 默认配置文件,将外部请求转发给 Gunicorn:
```bash sudo nano /etc/nginx/sites-available/default ```找到 server { ... } 块,将其修改为如下配置。这里假设使用 80 端口,如果有域名,请修改 server_name:
4. 测试并重启 Nginx
检查 Nginx 配置是否有语法错误,并重启服务:
```bash sudo nginx -t sudo systemctl restart nginx ```功能验证与故障排查
至此,所有代码和配置已完成。最后一步是验证系统是否正常运行。
1. 检查服务状态
执行以下命令查看 Gunicorn 服务是否处于 active (running) 状态:
2. 访问测试
打开浏览器,访问服务器的 IP 地址。你应该能看到“舟山档案培训报名系统”的表单。尝试填写数据并提交,若提示“报名成功”,则后端逻辑正常。
3. 查看管理列表
在浏览器地址栏后追加 /admin,查看刚才提交的数据是否出现在列表中。
4. 常见故障排查
- 502 Bad Gateway:通常是 Gunicorn 未启动或端口冲突。请检查
sudo systemctl status zs_training并查看日志journalctl -u zs_training。 - 数据库锁定:SQLite 在高并发下可能锁定。本教程适用于中小规模培训(几百人并发),若规模更大,建议将数据库 URI 替换为 MySQL 或 PostgreSQL。
- 权限错误:确保
/var/www/zs_archives_training目录下的training.db文件可被 www-data 用户读写。