一、环境准备与服务器初始化
1.1 云服务器基础配置
建议选择具备公网IP的虚拟服务器实例,配置建议为2核4G内存起步。操作系统需选择Debian 11或更高版本,确保获得最新的软件包支持。通过SSH连接服务器后,首先执行系统更新:
sudo apt update && sudo apt upgrade -y
1.2 防火墙规则配置
使用ufw工具配置基础防火墙规则,开放HTTP/HTTPS服务端口:
sudo ufw allow 80/tcpsudo ufw allow 443/tcpsudo ufw enable
对于需要SSH远程管理的场景,建议修改默认SSH端口并限制访问IP:
# 编辑配置文件sudo nano /etc/ssh/sshd_config# 修改Port为非标准端口# 添加AllowUsers限制登录用户sudo systemctl restart sshd
二、Docusaurus环境依赖部署
2.1 Node.js环境搭建
推荐使用nvm管理多版本Node.js环境:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bashsource ~/.bashrcnvm install --ltsnvm use --lts
验证安装结果:
node -vnpm -v
2.2 项目基础目录结构
建议采用标准化目录布局:
/opt/docusaurus/├── src/ # 项目源代码├── builds/ # 构建产物├── logs/ # 运行日志└── scripts/ # 部署脚本
创建目录并设置权限:
sudo mkdir -p /opt/docusaurus/{src,builds,logs,scripts}sudo chown -R $USER:$USER /opt/docusaurus
三、CI/CD流水线构建
3.1 Git仓库初始化
在项目目录初始化Git仓库并设置基础配置:
cd /opt/docusaurus/srcgit initgit config core.ignorecase falsegit config receive.denyCurrentBranch ignore
3.2 Webhook自动触发配置
通过nginx反向代理实现Git仓库的Webhook接收:
server {listen 80;server_name git.yourdomain.com;location /hooks {proxy_pass http://localhost:3000;proxy_set_header Host $host;}}
3.3 自动化部署脚本
创建deploy.sh脚本实现完整部署流程:
#!/bin/bash# 定义关键变量PROJECT_DIR="/opt/docusaurus/src"BUILD_DIR="/opt/docusaurus/builds"LOG_FILE="/opt/docusaurus/logs/deploy.log"# 日志记录函数log() {echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a $LOG_FILE}# 主部署流程log "=== 开始部署 ==="cd $PROJECT_DIR || exit 1log "拉取最新代码..."git pull origin main || { log "代码拉取失败"; exit 1; }log "安装依赖..."npm install --production || { log "依赖安装失败"; exit 1; }log "执行构建..."npm run build || { log "构建失败"; exit 1; }log "同步构建文件..."rsync -av --delete $PROJECT_DIR/build/ $BUILD_DIR/ || { log "文件同步失败"; exit 1; }log "=== 部署完成 ==="
设置脚本执行权限:
chmod +x /opt/docusaurus/scripts/deploy.sh
四、HTTPS证书配置
4.1 Let’s Encrypt证书申请
使用Certbot工具自动申请证书:
sudo apt install certbot python3-certbot-nginxsudo certbot certonly --nginx -d yourdomain.com -d www.yourdomain.com
4.2 自动续期配置
创建证书续期脚本:
#!/bin/bashcertbot renew --quiet --no-self-upgradesystemctl reload nginx
添加到crontab实现每月自动续期:
(crontab -l 2>/dev/null; echo "0 3 1 * * /opt/docusaurus/scripts/renew_cert.sh") | crontab -
五、监控与告警系统
5.1 日志轮转配置
编辑/etc/logrotate.d/docusaurus配置文件:
/opt/docusaurus/logs/*.log {dailymissingokrotate 7compressdelaycompressnotifemptycreate 644 root root}
5.2 基础监控方案
使用systemd服务监控部署进程:
# /etc/systemd/system/docusaurus-deploy.service[Unit]Description=Docusaurus Deployment ServiceAfter=network.target[Service]Type=simpleUser=deployWorkingDirectory=/opt/docusaurus/scriptsExecStart=/bin/bash /opt/docusaurus/scripts/deploy.shRestart=on-failureRestartSec=30s[Install]WantedBy=multi-user.target
六、高级部署优化
6.1 多环境部署策略
建议采用分支对应环境策略:
- main分支 → 生产环境
- develop分支 → 预发布环境
- feature/*分支 → 测试环境
6.2 蓝绿部署实现
通过nginx配置实现无缝切换:
upstream docusaurus {server 127.0.0.1:3000 weight=90; # 当前生产环境server 127.0.0.1:3001 weight=10; # 新版本环境}
6.3 性能优化建议
- 启用gzip压缩:在nginx配置中添加gzip相关指令
- 配置浏览器缓存:设置合理的Cache-Control头
- 使用CDN加速:配置静态资源CDN分发
七、常见问题处理
7.1 构建失败排查
检查依赖版本冲突:
npm ls | grep -i "UNMET PEER DEPENDENCY"
7.2 权限问题处理
建议创建专用部署用户:
sudo adduser --system --group deploysudo usermod -aG www-data deploy
7.3 网络问题诊断
使用curl测试服务可达性:
curl -I http://localhost:3000curl -I https://yourdomain.com
本方案通过标准化流程设计和自动化工具集成,实现了Docusaurus项目的可靠部署。实际实施时,建议先在测试环境验证完整流程,再逐步推广到生产环境。对于大型项目,可考虑引入容器化部署方案进一步提升环境一致性。