这篇文章专门用来记录多人协同富文本编辑器开发过程中遇到的问题,用来给后来者一些建议,也能够少走一些弯路
服务器选择:
本项目部署在 阿里云服务器 上,阿里云提供两类选择:轻量服务器 和 ECS(弹性计算服务)。轻量服务器适合个人开发,购买后配置固定,不支持修改;而 ECS 则支持灵活扩展和调整资源,适合对性能和可扩展性有更高要求的项目。操作系统方面,可以根据个人习惯选择,例如 Ubuntu 或 CentOS,本项目选择了 CentOS 7。在实际使用过程中,CentOS 7 存在一些小问题,后文将具体说明。
网站部署
在 CentOS 上,官方仓库提供的 Node.js 版本通常较旧,稳定支持的版本主要是 v16 或 v18。虽然可以手动安装 Node.js v20,但可能会遇到系统依赖或兼容性问题。虽然可以使用 NVM 快速切换 Node 版本,但在作为全局服务运行时,需要额外配置环境变量,使用起来不够方便。为了解决这些问题,我采用了 Docker 容器化技术,通过容器完全隔离不同 Node 版本和依赖环境,这样既保证了应用运行的稳定性,也方便在不同服务器之间进行一致部署。
项目Docker部署
本项目采用 Monorepo 结构 管理整个代码库,以便于集中管理前端、解析器和后端三个子项目。前端主要使用 React,其中部分模块由实验室同学使用 Vue 实现;后端采用 Node.js + TypeScript 开发。为了保证代码规范性,项目在 Git 提交环节集成了 ESLint,确保团队协作和代码质量。
在部署方面,前端和后端均独立编写了 Dockerfile,在主目录下使用 docker-compose.yml 统一管理和初始化前后端服务,同时部署 MySQL 与 Redis,实现一键启动和整体环境隔离,保证项目的集成能力与可维护性。
# 1. 先停止并删除旧容器(释放资源)
sudo docker rm -f markdown-api
# 2. 重新启动后端容器(加载最新dist+完整.env,加了启动命令和网络)
sudo docker run -d \
--name markdown-api \
-p 3003:3003 \
-v /opt/markdown-project/apps/markdown2html-server:/app \
--env-file /opt/markdown-project/apps/markdown2html-server/.env \
markdown-api:v1 \
npm run start # 必须加!之前就是漏了这个偶尔启动失败
步骤 2:重启前端容器(补充 HTTPS 端口和网络,和后端连通)
# 1. 停止并删除旧前端容器
sudo docker rm -f markdown-web
# 2. 重新启动前端容器(加载最新dist,补了HTTPS和网络)
sudo docker run -d \
--name markdown-web \
--link markdown-api:markdown-api \ # 加这个让前端能找到后端,WebSocket才通
-p 80:80 \
-p 443:443 \ # 保留HTTPS访问
-v /opt/markdown-project/apps/markdown2html/dist:/usr/share/nginx/html \
-v /opt/markdown-project/apps/markdown2html/nginx.conf:/etc/nginx/conf.d/default.conf \
-v /opt/markdown-project/cert:/etc/nginx/cert \ # 挂载HTTPS证书
markdown-web:v1


