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 بالعنوان الفعلي)
scp -r /c:/Users/PC/Desktop/claudecode.blueshirtmap.com_eN7Pt/* root@your-server-ip:/www/wwwroot/claudecode/

2.2 استخدام Git Clone (إذا كان لديك مستودع 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

# اختبار عن بُعد (استبدل بالعنوان الفعلي)
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',  // استخدام جميع نوى المعالج
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.