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 连接断开也不会影响服务。