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

168 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 通信技术部前后端一键部署说明
本仓库包含两个子工程:
- `department-api`Node.js + Express 后端,提供 API 与静态资源
- `department-web`React 前端,构建后由后端托管
已提供一键部署脚本 `deploy.sh` 和 systemd 服务 `department-api.service`,用于实现:
- 一键安装依赖 + 构建前端 + 安装/更新服务
- 服务后台常驻运行
- 开机自启与异常自动重启
## 环境要求
- 操作系统:常见 Linux 发行版(支持 systemd如 Ubuntu / CentOS 7+
- 已安装:
- Node.js建议 16+
- npm
- bash
- systemd默认存在于大多数现代 Linux
- 拥有 sudo 权限的用户
## 首次部署步骤
1. 克隆或拷贝本项目到服务器,例如:
```bash
cd /media/media_14t_sda1
git clone <your-repo> web # 若已存在则略过
cd web
```
2. 检查并按需修改 systemd 服务配置(可选但推荐):
- 文件:`department-api.service`
- 重点字段:
- `WorkingDirectory`:后端目录,默认 `/media/media_14t_sda1/web/department-api`
- `Environment=PORT=3001`:服务端口
- `Environment=JWT_SECRET=change-me`JWT 密钥(生产环境务必改成强随机字符串)
3. 运行一键部署脚本:
```bash
cd /media/media_14t_sda1/web
bash deploy.sh
```
脚本主要做的事情:
- 安装后端依赖:`department-api`
- 安装并构建前端:`department-web``department-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 密码,这是正常的。
4. 验证服务状态:
```bash
sudo systemctl status department-api.service
```
如果看到 `Active: active (running)`,表示服务已在后台运行。
5. 访问地址:
- 前端页面与 API 统一入口:
- `http://<服务器IP>:3001`
- 常见路径:
- 前端 SPA根路径 `/`
- API`/api/...`
- 静态资料:`/uploads/...`
## 日常更新代码的流程
### 场景一:有前端改动(推荐统一用一键脚本)
1. 在服务器上更新代码,例如:
```bash
cd /media/media_14t_sda1/web
git pull # 或者其他同步方式
```
2. 重新一键部署(重新安装依赖 + 构建前端 + 重启服务):
```bash
cd /media/media_14t_sda1/web
bash deploy.sh
```
执行完成后:
- 新版本前端构建产物会覆盖旧的 `department-web/build`
- systemd 服务会自动重启,加载最新代码
### 场景二:仅后端小改动(无需重建前端)
如果只改了后端逻辑,且不想每次都重新 npm install / build可以
1. 同步代码后,直接重启服务:
```bash
sudo systemctl restart department-api.service
```
2. 查看状态确认:
```bash
sudo systemctl status department-api.service
```
## 查看日志与排错
查看最近 100 行日志:
```bash
sudo journalctl -u department-api.service -n 100
```
实时滚动查看日志:
```bash
sudo journalctl -u department-api.service -f
```
若服务未能启动,可重点检查:
- Node.js 是否安装、版本是否太旧
- `department-api.service` 中的 `WorkingDirectory` 路径是否与你实际部署路径一致
- 端口是否被占用(如已有其他服务占用 3001
- `JWT_SECRET` 是否为空或包含非法字符(推荐使用简单的字母数字组合)
## 停止服务与取消开机自启
- 停止服务(临时):
```bash
sudo systemctl stop department-api.service
```
- 取消开机自启:
```bash
sudo systemctl disable department-api.service
```
## 访问入口总结
- 后端 + 前端统一服务:`department-api`systemd 管理)
- 默认端口:`3001`
- 部署 / 更新统一命令:
```bash
cd /media/media_14t_sda1/web
bash deploy.sh
```
如果后续你调整了目录或端口,只需要同步修改:
- `department-api.service` 中的 `WorkingDirectory``PORT` 等环境变量
- 如有需要,也可以把服务名从 `department-api.service` 改成公司内部标准命名。