Files
deploy/README.md
huanglinhuan 6a54ba34ea init commit
2026-01-15 15:38:35 +08:00

4.1 KiB
Raw Blame History

通信技术部前后端一键部署说明

本仓库包含两个子工程:

  • department-apiNode.js + Express 后端,提供 API 与静态资源
  • department-webReact 前端,构建后由后端托管

已提供一键部署脚本 deploy.sh 和 systemd 服务 department-api.service,用于实现:

  • 一键安装依赖 + 构建前端 + 安装/更新服务
  • 服务后台常驻运行
  • 开机自启与异常自动重启

环境要求

  • 操作系统:常见 Linux 发行版(支持 systemd如 Ubuntu / CentOS 7+
  • 已安装:
    • Node.js建议 16+
    • npm
    • bash
    • systemd默认存在于大多数现代 Linux
  • 拥有 sudo 权限的用户

首次部署步骤

  1. 克隆或拷贝本项目到服务器,例如:
cd /media/media_14t_sda1
git clone <your-repo> web  # 若已存在则略过
cd web
  1. 检查并按需修改 systemd 服务配置(可选但推荐):
  • 文件:department-api.service
  • 重点字段:
    • WorkingDirectory:后端目录,默认 /media/media_14t_sda1/web/department-api
    • Environment=PORT=3001:服务端口
    • Environment=JWT_SECRET=change-meJWT 密钥(生产环境务必改成强随机字符串)
  1. 运行一键部署脚本:
cd /media/media_14t_sda1/web
bash deploy.sh

脚本主要做的事情:

  • 安装后端依赖:department-api
  • 安装并构建前端:department-webdepartment-web/build
  • department-api.service 拷贝到 /etc/systemd/system/
  • 执行:
    • sudo systemctl daemon-reload
    • sudo systemctl enable department-api.service(设置开机自启)
    • sudo systemctl restart department-api.service(启动/重启服务)

运行过程中会需要输入 sudo 密码,这是正常的。

  1. 验证服务状态:
sudo systemctl status department-api.service

如果看到 Active: active (running),表示服务已在后台运行。

  1. 访问地址:
  • 前端页面与 API 统一入口:
    • http://<服务器IP>:3001
  • 常见路径:
    • 前端 SPA根路径 /
    • API/api/...
    • 静态资料:/uploads/...

日常更新代码的流程

场景一:有前端改动(推荐统一用一键脚本)

  1. 在服务器上更新代码,例如:
cd /media/media_14t_sda1/web
git pull  # 或者其他同步方式
  1. 重新一键部署(重新安装依赖 + 构建前端 + 重启服务):
cd /media/media_14t_sda1/web
bash deploy.sh

执行完成后:

  • 新版本前端构建产物会覆盖旧的 department-web/build
  • systemd 服务会自动重启,加载最新代码

场景二:仅后端小改动(无需重建前端)

如果只改了后端逻辑,且不想每次都重新 npm install / build可以

  1. 同步代码后,直接重启服务:
sudo systemctl restart department-api.service
  1. 查看状态确认:
sudo systemctl status department-api.service

查看日志与排错

查看最近 100 行日志:

sudo journalctl -u department-api.service -n 100

实时滚动查看日志:

sudo journalctl -u department-api.service -f

若服务未能启动,可重点检查:

  • Node.js 是否安装、版本是否太旧
  • department-api.service 中的 WorkingDirectory 路径是否与你实际部署路径一致
  • 端口是否被占用(如已有其他服务占用 3001
  • JWT_SECRET 是否为空或包含非法字符(推荐使用简单的字母数字组合)

停止服务与取消开机自启

  • 停止服务(临时):
sudo systemctl stop department-api.service
  • 取消开机自启:
sudo systemctl disable department-api.service

访问入口总结

  • 后端 + 前端统一服务:department-apisystemd 管理)
  • 默认端口:3001
  • 部署 / 更新统一命令:
cd /media/media_14t_sda1/web
bash deploy.sh

如果后续你调整了目录或端口,只需要同步修改:

  • department-api.service 中的 WorkingDirectoryPORT 等环境变量
  • 如有需要,也可以把服务名从 department-api.service 改成公司内部标准命名。