# 销售 CRM 阿里云 Linux 部署执行文档 适用日期:2026-07-15 适用系统:Alibaba Cloud Linux、Anolis OS、CentOS、Ubuntu 等 Linux 服务器 当前项目目录:`D:\SalesCRM` > 目标:实施人员拿到这份文档后,可以把当前本地 CRM 项目部署到阿里云 Linux ECS,并能通过公网访问。 ## 0. 当前项目说明 当前 CRM 是一个 Node.js 服务: - 前端页面:`outputs/sales_crm_full_demo.html` - 后端服务:`work/crm_full_server.js` - 数据文件:`data/crm_full_data.json` - 默认端口:`8090` - 云端启动命令:`npm start` 或 `node work/crm_full_server.js` 当前版本仍使用 JSON 文件保存数据。可以先用于内部测试上线;正式长期使用前,建议迁移到 MySQL。 ## 1. 上线前必须确认 ### 1.1 服务器信息 实施前请准备: ```text ECS 公网 IP: 服务器账号:root 或有 sudo 权限的账号 登录方式:密码 / SSH 密钥 操作系统:Alibaba Cloud Linux / Anolis OS / CentOS / Ubuntu ``` ### 1.2 阿里云安全组 在阿里云 ECS 控制台安全组放行: ```text 22 SSH 远程登录 80 HTTP 访问 443 HTTPS 访问,后续绑定证书后使用 8090 测试期可临时放行,正式建议只通过 80/443 访问 ``` 正式使用建议: - 外网只开放 `80/443` - `8090` 只在服务器本机监听或安全组不放行 - 用 Nginx 把 80 转发到 8090 ## 2. 本地打包项目 在 Windows 本地确认最新目录: ```text D:\SalesCRM ``` 上线前先备份数据: ```powershell cd /d D:\SalesCRM powershell -ExecutionPolicy Bypass -File deploy\backup_data.ps1 ``` 然后把整个目录压缩成: ```text SalesCRM.zip ``` 压缩包必须包含: ```text package.json work\crm_full_server.js outputs\sales_crm_full_demo.html data\crm_full_data.json deploy\ docs\ ``` ## 3. 上传到服务器 推荐部署目录: ```bash /opt/sales-crm ``` 可以用以下任意方式上传: - Xftp - WinSCP - 阿里云 Workbench 文件上传 - scp 命令 示例 scp: ```bash scp SalesCRM.zip root@服务器公网IP:/opt/ ``` 登录服务器: ```bash ssh root@服务器公网IP ``` 解压: ```bash cd /opt mkdir -p /opt/sales-crm unzip SalesCRM.zip -d /opt/sales-crm ``` 如果压缩包里多包了一层 `SalesCRM` 目录,请调整: ```bash mv /opt/sales-crm/SalesCRM/* /opt/sales-crm/ ``` 确认文件: ```bash ls -la /opt/sales-crm ls -la /opt/sales-crm/work ls -la /opt/sales-crm/data ``` ## 4. 安装 Node.js 进入项目目录: ```bash cd /opt/sales-crm ``` 先检查是否已有 Node: ```bash node -v npm -v ``` 如果没有 Node,执行项目自带安装脚本: ```bash bash deploy/install_node_alicloud_linux.sh ``` 要求: ```text Node.js >= 18 ``` 如果系统仓库安装的 Node 版本太低,需要改用 NodeSource 或 nvm 安装 Node 18+。 ## 5. 启动测试 在服务器上执行: ```bash cd /opt/sales-crm npm start ``` 看到类似输出: ```text Full CRM demo is running at http://127.0.0.1:8090/ ``` 另开一个 SSH 窗口测试: ```bash curl http://127.0.0.1:8090/ ``` 如果返回 HTML 内容,说明服务本机正常。 如果安全组临时开放了 `8090`,浏览器访问: ```text http://服务器公网IP:8090/ ``` ## 6. 配置 systemd 守护进程 为了让服务断开 SSH 后仍然运行,并且服务器重启后自动启动,使用 systemd。 复制服务文件: ```bash cp /opt/sales-crm/deploy/sales-crm.service /etc/systemd/system/sales-crm.service ``` 重新加载 systemd: ```bash systemctl daemon-reload ``` 启动: ```bash systemctl start sales-crm ``` 设置开机自启: ```bash systemctl enable sales-crm ``` 查看状态: ```bash systemctl status sales-crm ``` 查看日志: ```bash journalctl -u sales-crm -f ``` 常用命令: ```bash systemctl restart sales-crm systemctl stop sales-crm systemctl status sales-crm ``` ## 7. 配置 Nginx 正式建议用 Nginx 对外提供 80 端口访问,再转发到本地 8090。 安装 Nginx: Alibaba Cloud Linux / CentOS / Anolis: ```bash yum install -y nginx ``` 如果系统使用 dnf: ```bash dnf install -y nginx ``` Ubuntu: ```bash apt update apt install -y nginx ``` 复制配置: ```bash cp /opt/sales-crm/deploy/nginx_sales_crm.conf /etc/nginx/conf.d/sales-crm.conf ``` 测试配置: ```bash nginx -t ``` 启动 Nginx: ```bash systemctl start nginx systemctl enable nginx systemctl reload nginx ``` 浏览器访问: ```text http://服务器公网IP/ ``` 如果能打开登录页,Nginx 转发成功。 ## 8. 防火墙检查 不同 Linux 系统可能启用 firewalld。 查看状态: ```bash systemctl status firewalld ``` 如果启用,需要放行 HTTP: ```bash firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload ``` 测试期如需放行 8090: ```bash firewall-cmd --permanent --add-port=8090/tcp firewall-cmd --reload ``` 注意:阿里云安全组和服务器系统防火墙都要允许,公网才能访问。 ## 9. 数据备份 当前最重要的数据文件: ```bash /opt/sales-crm/data/crm_full_data.json ``` 手动备份: ```bash cd /opt/sales-crm bash deploy/backup_data_linux.sh ``` 备份会生成到: ```bash /opt/sales-crm/backups/ ``` 建议每天备份一次。可以添加定时任务: ```bash crontab -e ``` 加入: ```cron 0 2 * * * cd /opt/sales-crm && bash deploy/backup_data_linux.sh >> /opt/sales-crm/backups/backup.log 2>&1 ``` 表示每天凌晨 2 点备份。 ## 10. 更新部署流程 以后本地改完代码,再更新服务器: 1. 本地备份 `D:\SalesCRM\data\crm_full_data.json` 2. 上传新文件到服务器 3. 服务器先备份: ```bash cd /opt/sales-crm bash deploy/backup_data_linux.sh ``` 4. 覆盖程序文件 5. 重启服务: ```bash systemctl restart sales-crm ``` 6. 验证: ```bash systemctl status sales-crm curl http://127.0.0.1:8090/ ``` ## 11. 验收清单 部署完成后逐项验收: - 能打开登录页 - `admin / 123456` 能登录 - 客户列表能打开 - 新增客户能保存 - 销售订单能保存 - 销售订单能生成生产任务 - 销售订单能生成物流记录 - 销售订单能生成财务应收 - 账号权限页面能打开 - 手机浏览器能访问 - 电脑浏览器能访问 - 重启服务器后服务能自动启动 - 备份脚本能生成备份文件 ## 12. 上线后必须马上做 上线测试通过后,马上处理: - 修改 `admin` 默认密码 - 给每个员工单独账号 - 关闭或限制 8090 公网访问,只保留 80/443 - 如果绑定域名,配置 HTTPS - 每天备份数据 - 保留服务器登录账号和密码/密钥 ## 13. 常见问题 ### 页面打不开 检查: ```bash systemctl status sales-crm curl http://127.0.0.1:8090/ systemctl status nginx nginx -t ``` 再检查阿里云安全组是否开放 80 或 8090。 ### 登录后保存失败 检查数据文件是否有写入权限: ```bash ls -l /opt/sales-crm/data ``` 如果服务用 root 运行,一般不会有权限问题。后续如果改成普通用户,需要给该用户 data 目录写权限。 ### 服务器重启后服务没了 执行: ```bash systemctl enable sales-crm systemctl status sales-crm ``` ### 端口被占用 查看: ```bash ss -lntp | grep 8090 ``` 停止旧服务或修改端口。 ## 14. 正式上线前的风险提醒 当前版本适合内部测试和早期试用。正式长期生产建议继续升级: - JSON 文件存储迁移到 MySQL - 密码改成加密存储 - 增加 HTTPS - 增加附件 OSS - 增加操作日志 - 增加数据导入校验 - 增加权限到按钮级