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

# Добавить в задания cron
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 соединения не повлияет на работу сервиса.