本指南介绍如何使用宝塔面板部署"录用通知-自助系统"的前后端服务。
📋 目录
- 什么是宝塔面板
- 宝塔面板的优势
- 安装宝塔面板
- 步骤一:安装运行环境
- 步骤二:创建数据库
- 步骤三:部署后端服务
- 步骤四:部署前端服务
- 步骤五:配置网站和反向代理
- [步骤六:配置 SSL 证书](#步骤六:配置 SSL 证书)
- [步骤七:配置 PM2 守护进程](#步骤七:配置 PM2 守护进程)
- 常见问题
- 维护管理
什么是宝塔面板
宝塔面板是一款服务器管理软件,支持 Linux 和 Windows 系统,可以通过 Web 界面轻松管理服务器,无需编写复杂的命令。
宝塔面板的优势
| 优势 | 说明 |
|---|---|
| 🎨 可视化界面 | 无需 SSH,浏览器即可管理 |
| 📦 一键安装 | 一键安装 Nginx、MySQL、PHP 等 |
| 🔄 文件管理 | 在线文件编辑器,方便修改代码 |
| 📊 资源监控 | 实时查看 CPU、内存、磁盘使用情况 |
| 🔐 安全管理 | 防火墙、SSL 证书图形化配置 |
| 📝 日志查看 | 图形化查看各种日志 |
| 🚀 PM2 管理 | 内置 Node.js 项目管理功能 |
安装宝塔面板
1.1 连接服务器
使用 SSH 连接到你的服务器:
bash
ssh root@你的服务器IP
1.2 安装宝塔面板
Ubuntu/Debian 系统:
bash
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
CentOS 系统:
bash
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh
安装完成后会显示以下信息:
==================================================================
Congratulations! Installed successfully!
==================================================================
外网面板地址: http://你的服务器IP:8888/xxxxxxxx
内网面板地址: http://内网IP:8888/xxxxxxxx
username: xxxxxxxx
password: xxxxxxxx
==================================================================
⚠️ 重要:请保存好面板地址、用户名和密码!
1.3 登录宝塔面板
- 在浏览器中访问面板地址
- 输入用户名和密码登录
- 首次登录会提示安装"套件"
- 推荐安装 Nginx(暂不安装 MySQL,我们将使用 PostgreSQL)
步骤一:安装运行环境
1.1 安装 Node.js
- 登录宝塔面板
- 点击左侧菜单 【软件商店】
- 搜索 "Node.js"
- 选择 Node.js 版本管理器
- 点击 【安装】
- 安装完成后,点击 【设置】
- 安装 Node.js 18.x 版本(推荐)

1.2 安装 PostgreSQL 数据库
- 点击左侧菜单 【软件商店】
- 搜索 "PostgreSQL"
- 选择 PostgreSQL 14 或更高版本
- 点击 【安装】
1.3 安装 PM2 管理器
- 点击左侧菜单 【软件商店】
- 搜索 "PM2管理器"
- 点击 【安装】
步骤二:创建数据库
2.1 配置 PostgreSQL
- 点击左侧菜单 【软件商店】
- 找到已安装的 PostgreSQL ,点击 【设置】
- 点击 【服务】 确保服务正在运行
- 点击 【root密码】 设置数据库 root 密码
2.2 创建数据库和用户
- 点击 【PostgreSQL 设置】 → 【数据库】
- 点击 【添加数据库】
- 填写以下信息:
| 配置项 | 填写内容 |
|---|---|
| 数据库名 | acceptance_notices |
| 用户名 | notice_user |
| 密码 | 自定义强密码(请记住!) |
| 访问权限 | 本地服务器 |
- 点击 【提交】
步骤三:部署后端服务
3.1 上传代码到服务器
方式一:使用宝塔文件管理器(推荐)
- 点击左侧菜单 【文件】
- 进入
/www/wwwroot/目录 - 点击 【新建目录】 ,命名为
acceptance-notice - 进入
acceptance-notice目录 - 点击 【上传】 ,上传你的项目代码
- 上传整个
backend文件夹 - 上传整个
frontend文件夹
- 上传整个
方式二:使用 Git(推荐)
- 进入 【终端】(宝塔面板左侧菜单)
- 执行以下命令:
bash
cd /www/wwwroot
git clone https://你的仓库地址.git acceptance-notice
3.2 安装后端依赖
- 点击左侧菜单 【终端】
- 执行以下命令:
bash
cd /www/wwwroot/acceptance-notice/backend
npm install
3.3 配置后端环境变量
- 在 【文件】 菜单中进入
/www/wwwroot/acceptance-notice/backend - 新建文件
.env - 点击 【编辑】,填入以下内容:
env
# 服务器端口
PORT=4000
# 数据库连接(修改密码为刚才设置的密码)
DATABASE_URL=postgresql://notice_user:你的数据库密码@localhost:5432/acceptance_notices
# JWT 密钥(请修改为随机字符串)
JWT_SECRET=your_very_secure_random_jwt_secret_key_here
# 文件存储路径
STORAGE_ROOT=./storage
# 默认管理员账户(请修改)
ADMIN_DEFAULT_USERNAME=admin
ADMIN_DEFAULT_PASSWORD=your_secure_admin_password
# 字体配置
FONT_PATH=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
FONT_FAMILY_DEFAULT=DejaVu Sans
FONT_FAMILY_TITLE=DejaVu Sans
# 百度 OCR API 配置(需要去百度智能云申请)
BAIDU_APP_ID=your_baidu_app_id
BAIDU_API_KEY=your_baidu_api_key
BAIDU_SECRET_KEY=your_baidu_secret_key
# Nutrient SDK 配置(需要去 Nutrient 官网申请)
NUTRIENT_API_URL=https://api.nutrient.io
NUTRIENT_API_KEY=your_nutrient_api_key
NUTRIENT_DWS_VIEWER_API_URL=https://api.nutrient.io
NUTRIENT_DWS_VIEWER_API_KEY=your_nutrient_viewer_api_key
NUTRIENT_DWS_VIEWER_BASE_URL=https://cdn.nutrient.io/viewer/latest/
NUTRIENT_DWS_VIEWER_SCRIPT_URL=https://cdn.nutrient.io/viewer/latest/nutrient-viewer.js
- 保存文件
3.4 运行数据库迁移
- 在 【终端】 中执行:
bash
cd /www/wwwroot/acceptance-notice/backend
npm run migrate
3.5 创建存储目录
- 在 【文件】 中进入
/www/wwwroot/acceptance-notice/backend - 新建以下目录:
storage/templatesstorage/generatedstorage/temp
步骤四:部署前端服务
4.1 安装前端依赖
- 在 【终端】 中执行:
bash
cd /www/wwwroot/acceptance-notice/frontend
npm install
4.2 修改前端 API 配置
检查前端代码中的 API 地址配置,如果有 localhost:4000 需要修改为实际的服务器地址。
通常在以下文件中:
src/api/index.jssrc/config.jsvite.config.js
注意 :如果使用 Nginx 反向代理(推荐),前端可以保持使用相对路径 /api,不需要修改。
4.3 构建前端
- 在 【终端】 中执行:
bash
cd /www/wwwroot/acceptance-notice/frontend
npm run build
构建完成后,会生成 dist 目录。
步骤五:配置网站和反向代理
5.1 创建网站
- 点击左侧菜单 【网站】
- 点击 【添加站点】
- 填写以下信息:
| 配置项 | 填写内容 |
|---|---|
| 域名 | 你的域名(如 example.com)或服务器 IP |
| 备注 | 录用通知系统前端 |
| 根目录 | /www/wwwroot/acceptance-notice/frontend/dist |
| PHP 版本 | 纯静态 |
| 创建数据库 | 不创建 |
- 点击 【提交】
5.2 配置前端网站
- 在网站列表中,找到刚创建的站点,点击 【设置】
- 点击 【配置文件】
- 修改配置如下(添加前端路由支持和静态资源缓存):
nginx
location / {
try_files $uri $uri/ /index.html;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
- 点击 【保存】
5.3 创建后端 API 网站
- 点击左侧菜单 【网站】
- 点击 【添加站点】
- 填写以下信息:
| 配置项 | 填写内容 |
|---|---|
| 域名 | api.你的域名 或使用同一个域名 |
| 备注 | 录用通知系统后端 |
| 根目录 | /www/wwwroot/acceptance-notice/backend |
| PHP 版本 | 纯静态 |
| 创建数据库 | 不创建 |
- 点击 【提交】
5.4 配置后端反向代理
- 在网站列表中找到后端站点,点击 【设置】
- 点击 【反向代理】
- 点击 【添加反向代理】
- 填写以下信息:
| 配置项 | 填写内容 |
|---|---|
| 代理名称 | acceptance-backend |
| 目标 URL | http://127.0.0.1:4000 |
| 发送域名 | $host |
- 点击 【提交】
5.5 配置反向代理高级选项
- 在刚创建的反向代理列表中,点击 【配置】
- 替换为以下配置:
nginx
# PROXY-START/
location /
{
proxy_pass http://127.0.0.1:4000;
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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
# proxy_hide_header Upgrade;
add_header X-Cache $upstream_cache_status;
}
# PROXY-END/
# 静态文件直接提供
location /files/ {
alias /www/wwwroot/acceptance-notice/backend/storage/;
expires 30d;
add_header Cache-Control "public, immutable";
}
- 点击 【保存】
5.6 修改上传大小限制
- 在后端站点设置中,点击 【配置文件】
- 在
server块中添加:
nginx
client_max_body_size 50M;
- 点击 【保存】
步骤六:配置 SSL 证书
6.1 使用 Let's Encrypt 免费证书(推荐)
- 在站点设置中,点击 【SSL】
- 选择 【Let's Encrypt】 选项卡
- 填写邮箱地址
- 勾选需要申请证书的域名
- 点击 【申请】
- 等待证书申请完成
- 开启 【强制 HTTPS】
6.2 手动上传证书(如有自己的证书)
- 在站点设置中,点击 【SSL】
- 选择 【其他证书】 选项卡
- 填写证书内容和密钥
- 点击 【保存】
步骤七:配置 PM2 守护进程
7.1 添加后端项目
- 点击左侧菜单 【软件商店】
- 找到 PM2管理器 ,点击 【设置】
- 点击 【添加项目】
- 填写以下信息:
| 配置项 | 填写内容 |
|---|---|
| 项目名称 | acceptance-backend |
| 运行目录 | /www/wwwroot/acceptance-notice/backend |
| 启动文件 | src/server.js |
| 项目端口 | 4000 |
| 运行模式 | production |
| 开机启动 | 勾选 |
- 点击 【提交】
7.2 添加前端项目(可选)
如果需要 PM2 管理 serve 静态文件服务:
- 在 PM2 管理器中,点击 【添加项目】
- 填写以下信息:
| 配置项 | 填写内容 |
|---|---|
| 项目名称 | acceptance-frontend |
| 运行目录 | /www/wwwroot/acceptance-notice/frontend |
| 启动文件 | /www/wwwroot/acceptance-notice/node_modules/serve/bin/serve.js |
| 启动参数 | -s -l 3000 dist |
| 项目端口 | 3000 |
| 运行模式 | production |
| 开机启动 | 勾选 |
- 点击 【提交】
注意:如果使用 Nginx 直接托管静态文件,可以不添加前端 PM2 项目。
7.3 查看 PM2 状态
- 在 PM2 管理器中,可以看到所有项目的运行状态
- 可以进行 【重启】 、【停止】 、【删除】 等操作
- 点击 【日志】 查看运行日志
常见问题
Q1: PM2 项目启动失败?
解决方法:
- 检查 Node.js 版本是否正确
- 检查
.env文件是否存在且配置正确 - 检查端口 4000 是否被占用
- 查看 PM2 日志:在 PM2 管理器中点击 【日志】
Q2: 前端页面 404?
解决方法:
- 检查前端是否已构建:
ls /www/wwwroot/acceptance-notice/frontend/dist - 检查网站根目录是否正确
- 检查 Nginx 配置中的
try_files规则
Q3: API 请求失败?
解决方法:
- 检查后端 PM2 项目是否正在运行
- 检查反向代理配置是否正确
- 查看 Nginx 错误日志:网站设置 → 【日志】
- 检查防火墙是否开放了相关端口
Q4: 数据库连接失败?
解决方法:
- 检查 PostgreSQL 服务是否运行
- 检查
.env文件中的数据库连接字符串 - 确认数据库用户名和密码正确
- 确认数据库已创建
Q5: 上传文件失败?
解决方法:
- 检查 Nginx 的
client_max_body_size配置 - 检查存储目录权限:在宝塔文件管理器中,右键 storage 目录 → 【权限】 → 设置为
755 - 检查磁盘空间是否充足
Q6: SSL 证书申请失败?
解决方法:
- 确保域名已正确解析到服务器 IP
- 确保防火墙开放了 80 和 443 端口
- 检查域名 DNS 配置是否正确
- 等待 DNS 生效(可能需要几分钟到几小时)
维护管理
日常操作
查看 PM2 项目状态
- 点击左侧菜单 【软件商店】
- 找到 PM2管理器 ,点击 【设置】
- 查看所有项目的运行状态
重启服务
方式一:在 PM2 管理器中操作
- 找到对应项目
- 点击 【重启】
方式二:使用终端
bash
pm2 restart acceptance-backend
pm2 restart acceptance-frontend
查看日志
方式一:在 PM2 管理器中
- 找到对应项目
- 点击 【日志】
方式二:使用终端
bash
pm2 logs acceptance-backend
pm2 logs acceptance-frontend
更新代码
- 在 【文件】 中更新代码文件
- 或在 【终端】 中执行
git pull - 如果更新了后端代码,需要重新安装依赖:
bash
cd /www/wwwroot/acceptance-notice/backend
npm install
pm2 restart acceptance-backend
- 如果更新了前端代码,需要重新构建:
bash
cd /www/wwwroot/acceptance-notice/frontend
npm install
npm run build
备份数据
使用宝塔自动备份
- 点击左侧菜单 【计划任务】
- 添加备份数据库任务
- 添加备份网站任务
手动备份数据库
在 【终端】 中执行:
bash
pg_dump -U notice_user acceptance_notices > backup_$(date +%Y%m%d).sql
手动恢复数据库
bash
psql -U notice_user acceptance_notices < backup_20260120.sql
监控资源
- 点击左侧菜单 【监控】
- 查看系统资源使用情况
- 设置告警通知(可选)
宝塔面板常用功能
文件管理
- 路径 : 左侧菜单 → 【文件】
- 功能: 上传、下载、编辑、删除文件
- 快捷键: 支持在线代码编辑器
终端
- 路径 : 左侧菜单 → 【终端】
- 功能: 执行 Linux 命令
- 无需 SSH: 直接在浏览器中使用终端
防火墙
- 路径 : 左侧菜单 → 【安全】
- 功能: 配置防火墙规则
- 建议开放端口: 22(SSH)、80(HTTP)、443(HTTPS)、8888(宝塔)
计划任务
- 路径 : 左侧菜单 → 【计划任务】
- 功能: 定时执行脚本、备份数据等
- 示例:每天凌晨 2 点备份数据库
部署检查清单
部署完成后,请检查以下项目:
- 宝塔面板已安装并可以访问
- Node.js 18.x 已安装
- PostgreSQL 已安装并运行
- PM2 管理器已安装
- 数据库已创建
- 后端代码已上传并安装依赖
- 后端
.env文件已配置 - 数据库迁移已执行
- 前端代码已上传并构建
- 前端网站已创建(Nginx)
- 后端反向代理已配置
- PM2 项目已添加并运行
- SSL 证书已申请(生产环境)
- 可以通过浏览器访问前端
- API 请求正常工作
- 文件上传功能正常
- 数据库读写正常
安全建议
- 修改宝塔面板端口:默认 8888,建议修改为其他端口
- 绑定访问 IP:限制只能从特定 IP 访问面板
- 开启面板 SSL:使用 HTTPS 访问宝塔面板
- 定期备份数据:使用计划任务自动备份
- 更新系统和软件:保持软件为最新版本
- 监控资源使用:避免资源耗尽导致服务不可用
- 配置告警通知:在服务异常时及时收到通知
快速命令参考
虽然使用宝塔面板可以图形化操作,但了解一些常用命令也很有帮助:
bash
# 查看 PM2 状态
pm2 status
# 重启所有 PM2 项目
pm2 restart all
# 查看 PM2 日志
pm2 logs
# 进入 PostgreSQL
sudo -u postgres psql
# 查看磁盘使用
df -h
# 查看内存使用
free -h
# 查看 Nginx 状态
systemctl status nginx
# 重启 Nginx
systemctl restart nginx
# 查看 Nginx 错误日志
tail -f /www/server/nginx/logs/error.log
获取帮助
- 宝塔官方文档: https://www.bt.cn/bbs/forum-1-1.html
- 宝塔论坛: https://www.bt.cn/bbs/
- 宝塔客服: 宝塔面板内 → 帮助 → 在线客服
宝塔部署指南版本: 1.0
最后更新: 2026-01-20