Skip to content

Claude Code 云服务器部署指南

本指南详细介绍如何在云服务器上部署 VitePress 项目,使用 PM2 管理进程,确保 SSH 连接断开后服务仍然运行。

🛠 环境要求

  • 操作系统: Linux (Ubuntu/CentOS)
  • Node.js: v22.11.0 (已安装在 /www/server/nodejs/v22.11.0/bin)
  • PM2: 进程管理器
  • 内存: 至少 512MB
  • 存储: 至少 1GB 可用空间

📋 部署步骤

1. 服务器环境配置

1.1 配置 Node.js 环境变量

bash
# 添加到 ~/.bashrc 或 ~/.profile
echo 'export PATH=$PATH:/www/server/nodejs/v22.11.0/bin' >> ~/.bashrc
source ~/.bashrc

# 验证 Node.js 版本
node --version
npm --version

1.2 创建项目目录

bash
# 创建项目目录
mkdir -p /www/wwwroot/claudecode
cd /www/wwwroot/claudecode

2. 上传项目文件

2.1 使用 SCP 上传(推荐)

bash
# 在本地执行(替换 your-server-ip 为实际IP)
scp -r /c:/Users/PC/Desktop/claudecode.blueshirtmap.com_eN7Pt/* root@your-server-ip:/www/wwwroot/claudecode/

2.2 使用 Git 克隆(如果有Git仓库)

bash
# 在服务器执行
git clone https://github.com/your-username/claudecode.git .

3. 安装项目依赖

bash
# 进入项目目录
cd /www/wwwroot/claudecode

# 安装项目依赖
npm install

# 如果遇到权限问题,使用以下命令
npm install --unsafe-perm

4. 构建生产版本

bash
# 构建项目
npm run docs:build

# 验证构建结果
ls -la .vitepress/dist/

5. 安装和配置 PM2

5.1 全局安装 PM2

bash
npm install -g pm2

# 验证安装
pm2 --version

5.2 创建 PM2 配置文件

bash
# 创建 PM2 配置文件
cat > ecosystem.config.js << 'EOF'
module.exports = {
  apps: [
    {
      name: 'claudecode-docs',
      script: 'npm',
      args: 'run docs:preview',
      cwd: '/www/wwwroot/claudecode',
      instances: 1,
      exec_mode: 'fork',
      env: {
        NODE_ENV: 'production',
        PORT: 4173
      },
      error_file: '/www/wwwroot/claudecode/logs/err.log',
      out_file: '/www/wwwroot/claudecode/logs/out.log',
      log_file: '/www/wwwroot/claudecode/logs/combined.log',
      time: true,
      restart_delay: 1000,
      max_restarts: 5,
      min_uptime: '10s',
      max_memory_restart: '1G',
      watch: false,
      ignore_watch: ['node_modules', 'logs', '.git']
    }
  ]
}
EOF

5.3 创建日志目录

bash
mkdir -p /www/wwwroot/claudecode/logs

6. 启动服务

6.1 使用 PM2 启动项目

bash
# 启动服务
pm2 start ecosystem.config.js

# 查看服务状态
pm2 status

# 查看日志
pm2 logs claudecode-docs

6.2 设置 PM2 开机自启

bash
# 保存 PM2 配置
pm2 save

# 设置开机自启
pm2 startup
# 执行上述命令输出的命令(通常是 sudo 命令)

7. 配置反向代理(可选)

如果需要使用域名访问,可以配置 Nginx 反向代理:

7.1 Nginx 配置示例

nginx
server {
    listen 80;
    server_name claudecode.blueshirtmap.com;
    
    location / {
        proxy_pass http://localhost:4173;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # 静态文件缓存
        location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
            expires 1y;
            add_header Cache-Control "public, immutable";
            proxy_pass http://localhost:4173;
        }
    }
}

8. 验证部署

8.1 检查服务状态

bash
# 查看 PM2 状态
pm2 status

# 查看进程详情
pm2 show claudecode-docs

# 查看实时日志
pm2 logs claudecode-docs --lines 50

8.2 测试网站访问

bash
# 本地测试
curl -I http://localhost:4173

# 远程测试(替换为实际IP)
curl -I http://your-server-ip:4173

🔧 常用 PM2 管理命令

基础命令

bash
# 查看所有进程
pm2 list

# 重启服务
pm2 restart claudecode-docs

# 停止服务
pm2 stop claudecode-docs

# 删除服务
pm2 delete claudecode-docs

# 重新加载配置
pm2 reload claudecode-docs

日志管理

bash
# 查看日志
pm2 logs claudecode-docs

# 清空日志
pm2 flush claudecode-docs

# 实时日志
pm2 logs claudecode-docs --lines 100 -f

监控命令

bash
# 实时监控
pm2 monit

# 查看内存使用
pm2 show claudecode-docs

🚀 性能优化建议

1. 静态文件部署(推荐)

bash
# 如果使用 Nginx,可以直接部署静态文件
cp -r .vitepress/dist/* /www/wwwroot/claudecode-static/

2. 启用 Gzip 压缩

nginx
# 在 Nginx 配置中添加
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;

3. 调整 PM2 配置

javascript
// 根据服务器性能调整
instances: 'max',  // 使用所有CPU核心
max_memory_restart: '500M',  // 根据可用内存调整

🛡️ 安全配置

1. 防火墙配置

bash
# 开放必要端口
ufw allow 22    # SSH
ufw allow 80    # HTTP
ufw allow 443   # HTTPS
ufw allow 4173  # VitePress (如果直接访问)

2. 进程权限

bash
# 创建专用用户(可选)
useradd -m -s /bin/bash claudecode
chown -R claudecode:claudecode /www/wwwroot/claudecode

📊 监控和维护

1. 定期备份

bash
# 创建备份脚本
cat > /root/backup-claudecode.sh << 'EOF'
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
tar -czf /backup/claudecode_$DATE.tar.gz /www/wwwroot/claudecode
find /backup -name "claudecode_*.tar.gz" -mtime +7 -delete
EOF

chmod +x /root/backup-claudecode.sh

# 添加到定时任务
crontab -e
# 添加: 0 2 * * * /root/backup-claudecode.sh

2. 日志轮转

bash
# 配置 logrotate
cat > /etc/logrotate.d/claudecode << 'EOF'
/www/wwwroot/claudecode/logs/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    postrotate
        pm2 reloadLogs
    endscript
}
EOF

🐛 常见问题解决

1. 端口占用

bash
# 查看端口占用
netstat -tlnp | grep 4173
lsof -i :4173

# 杀死占用进程
kill -9 <PID>

2. 权限问题

bash
# 修复权限
chown -R $USER:$USER /www/wwwroot/claudecode
chmod -R 755 /www/wwwroot/claudecode

3. 内存不足

bash
# 检查内存使用
free -h
pm2 show claudecode-docs

# 重启服务释放内存
pm2 restart claudecode-docs

4. 构建失败

bash
# 清理缓存重新构建
rm -rf node_modules package-lock.json
npm cache clean --force
npm install
npm run docs:build

📞 部署后验证清单

  • [ ] ✅ Node.js 环境正确配置
  • [ ] ✅ 项目文件成功上传
  • [ ] ✅ 依赖安装完成
  • [ ] ✅ 项目构建成功
  • [ ] ✅ PM2 正常运行
  • [ ] ✅ 服务可正常访问
  • [ ] ✅ 日志输出正常
  • [ ] ✅ 开机自启设置
  • [ ] ✅ 反向代理配置(如需要)
  • [ ] ✅ 防火墙和安全配置

完成以上步骤后,您的 Claude Code 文档网站将在云服务器上稳定运行,即使 SSH 连接断开也不会影响服务。