Руководство по развертыванию 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 соединения не повлияет на работу сервиса.