دليل نشر 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.