استكشاف الأخطاء وإصلاحها
المشاكل الشائعة وحلولها. عند الشك، ابدأ بتشغيل rdc doctor لإجراء فحص تشخيصي شامل.
فشل اتصال SSH
- تحقق من إمكانية الاتصال يدوياً:
ssh -i ~/.ssh/id_ed25519 deploy@203.0.113.50 - شغّل
rdc config machine scan-keys server-1لتحديث مفاتيح المضيف - تأكد من تطابق منفذ SSH:
--port 22 - اختبر بأمر بسيط:
rdc term connect -m server-1 -c "hostname"
عدم تطابق مفتاح المضيف
إذا تمت إعادة تثبيت الخادم أو تغيّرت مفاتيح SSH الخاصة به، سترى “host key verification failed”:
rdc config machine scan-keys -m server-1
يقوم هذا الأمر بجلب مفاتيح المضيف الجديدة وتحديث إعداداتك.
فشل إعداد الجهاز
- تأكد من أن مستخدم SSH لديه صلاحيات sudo بدون كلمة مرور، أو قم بتكوين
NOPASSWDللأوامر المطلوبة - تحقق من مساحة القرص المتوفرة على الخادم
- شغّل مع
--debugللحصول على مخرجات مفصّلة:rdc config machine setup server-1 --debug
فشل إنشاء المستودع
- تحقق من اكتمال الإعداد: يجب أن يكون مجلد مخزن البيانات موجوداً
- تحقق من مساحة القرص على الخادم
- تأكد من تثبيت ملف renet الثنائي (أعد تشغيل الإعداد إذا لزم الأمر)
فشل بدء تشغيل الخدمات
- تحقق من صياغة Rediaccfile: يجب أن يكون Bash صالحاً
- تأكد من أن Rediaccfile يستخدم
renet compose --(وليسdocker compose) - تحقق من إمكانية الوصول إلى صور Docker (فكّر في تشغيل
renet compose -- pullفيup()) - تحقق من سجلات الحاوية باستخدام مقبس Docker الخاص بالمستودع:
rdc term connect -m server-1 -r my-app -c "docker logs <container-name>"
أو عرض جميع الحاويات:
rdc machine containers server-1
أخطاء رفض الصلاحيات
- عمليات المستودع تتطلب صلاحيات root على الخادم (renet يعمل عبر
sudo) - تحقق من أن مستخدم SSH الخاص بك في مجموعة
sudo - تأكد من أن مجلد مخزن البيانات لديه الصلاحيات الصحيحة
مشاكل مقبس Docker
كل مستودع لديه Docker daemon خاص به. عند تشغيل أوامر Docker يدوياً، يجب تحديد المقبس الصحيح:
# باستخدام rdc term (مُعدّ تلقائياً):
rdc term connect -m server-1 -r my-app -c "docker ps"
# أو يدوياً مع المقبس:
docker -H unix:///var/run/rediacc/docker-2816.sock ps
استبدل 2816 بمعرّف الشبكة الخاص بمستودعك (يوجد في rediacc.json أو rdc repo status).
إنشاء الحاويات على Docker Daemon خاطئ
إذا ظهرت حاوياتك على Docker daemon الخاص بالنظام المضيف بدلاً من daemon المستودع المعزول، فالسبب الأكثر شيوعاً هو استخدام sudo docker داخل Rediaccfile.
يقوم sudo بإعادة تعيين متغيرات البيئة، لذلك يُفقد DOCKER_HOST ويعود Docker إلى مقبس النظام (/var/run/docker.sock). يحظر Rediacc هذا تلقائياً، ولكن إذا واجهته:
- استخدم
dockerمباشرة, وظائف Rediaccfile تعمل بالفعل بصلاحيات كافية - إذا كنت مضطراً لاستخدام sudo، استخدم
sudo -E dockerللحفاظ على متغيرات البيئة - تحقق من Rediaccfile الخاص بك بحثاً عن أي أوامر
sudo dockerوأزلsudo
الطرفية لا تعمل
إذا فشل rdc term في فتح نافذة الطرفية:
- استخدم الوضع المضمّن مع
-cلتشغيل الأوامر مباشرة:rdc term connect -m server-1 -c "ls -la"مرجع CLI: rdc term connect - أجبر الطرفية الخارجية باستخدام
--externalإذا كان الوضع المضمّن يواجه مشاكل - على Linux، تأكد من تثبيت
gnome-terminalأوxtermأو محاكي طرفية آخر
تشغيل التشخيصات
rdc doctor
يتحقق هذا الأمر من بيئتك وتثبيت renet وإعدادات الإعداد وحالة المصادقة. يُبلِغ كل فحص بحالة OK أو Warning أو Error مع شرح مختصر.