كل ما تحتاج معرفته عن Drush: أداة سطر الأوامر لإدارة مواقع Drupal ؟

التكنولوجيا و الانترنيت

في عالم إدارة مواقع Drupal، هناك أداة واحدة تُعتبر السحر الحقيقي الذي يوفر الجهد والوقت: إنها Drush، اختصار لـ "Drupal Shell". إذا كنت تعمل على تطوير أو إدارة موقع مبني على Drupal، فإنك حتمًا ستحتاج إلى Drush لتسريع المهام وتفادي التكرار اليدوي.

Drush هي أداة تعتمد على سطر الأوامر (Terminal) وتتيح لك تنفيذ الكثير من المهام الإدارية بسرعة هائلة: من تثبيت الموقع، وتحديث القاعدة، وتفريغ الكاش، وتفعيل الوحدات، إلى استيراد وتصدير الإعدادات، والمزيد.

في هذا الدليل، سنشرح خطوة بخطوة كيفية تثبيت Drush، أهم أوامره مع شرح مفصل، وكيفية استخدامه في تطوير مواقع احترافية بـ Drupal.

أولاً: تثبيت Drush

1. عبر Composer داخل مشروع Drupal

composer require drush/drush

بعد ذلك، يمكنك استخدام Drush من المسار التالي:

./vendor/bin/drush

2. تثبيت كلي (اختياري)

composer global require drush/drush

ثم تأكد من إضافة مجلد ~/.composer/vendor/bin إلى متغير PATH.

ثانياً: أوامر Drush الأكثر استخداماً

1. تثبيت الموقع

drush site:install

يبدأ معالج التثبيت، ويطلب منك إدخال بيانات قاعدة البيانات وغيرها.

2. رابط الدخول كمدير

drush uli

يعطيك رابط لتسجيل الدخول مباشرة إلى لوحة تحكم Drupal.

3. تفريغ الكاش

drush cr

يرمز إلى "cache-rebuild" ويُستخدم كثيراً بعد تغيير الإعدادات أو تركيب الوحدات.

4. تفعيل وحدة

drush en pathauto

لتفعيل وحدة معينة مثل "pathauto".

5. تعطيل وحدة

drush pmu module_name

6. تحديث قاعدة البيانات

drush updb

يطبق أي تغييرات جديدة في قاعدة البيانات بعد تحديث الكود أو تركيب وحدات.

7. إنشاء مستخدم جديد

drush user:create ali --mail="ali@example.com" --password="123456"

8. تغيير كلمة مرور مستخدم

drush user:password admin "newpass123"

9. مشاهدة حالة الموقع

drush status

10. إدارة التكوين (Configuration)

  • drush cex: لتصدير الإعدادات إلى ملفات التكوين.
  • drush cim: لاستيراد الإعدادات.
  • drush config:edit system.site: لتعديل الإعدادات من الطرفية.

ثالثاً: العمل مع قواعد البيانات باستخدام Drush

1. نسخة احتياطية لقاعدة البيانات

drush sql:dump > db_backup.sql

2. استيراد نسخة من قاعدة البيانات

drush sql:query < db_backup.sql

3. الدخول إلى MySQL عبر Drush

drush sql:cli

رابعاً: تنظيف الموقع وصيانته

  • drush watchdog:show: عرض آخر السجلات في سجل النظام.
  • drush watchdog:delete all: مسح كل السجلات.
  • drush queue:run: تنفيذ طوابير العمل (queues).
  • drush entity:delete node: حذف كل المقالات (nodes).

خامساً: Drush مع Multisite

يمكنك تحديد الموقع عبر:

drush @mysite status

أو عبر:

drush --uri=https://example.com status

أهم أوامر Drush مصنفة الى مجموعات

في مايلي مجموعة من أوامر Drush قمنا بتصنيفها الى  عدة مجموعة حتى يسهل عليك ايجادها ثم استعمالها في موقعك. 

1. تثبيت الموقع وإعداده

  1. drush site:install - تثبيت موقع دروبال.
  2. drush site:install --existing-config - التثبيت باستخدام الإعدادات الحالية.
  3. drush si minimal - التثبيت باستخدام ملف تعريف "minimal".
  4. drush si standard --account-name=admin --account-pass=123 - التثبيت باستخدام بيانات اعتماد المسؤول.
  5. drush site:status - التحقق من حالة تثبيت دروبال.
  6. drush config:status - عرض حالة التكوينات الحالية.
  7. drush config:import - استيراد التكوينات من ملفات YAML.
  8. drush config:export - تصدير التكوينات إلى ملفات YAML.
  9. drush sql:cli - فتح سطر أوامر قاعدة البيانات مباشرة من خلال دروش.
  10. drush sql-dump --ordered-dump - إنشاء نسخة احتياطية من قاعدة البيانات مع الحفاظ على ترتيب البيانات.

2. إدارة ذاكرة التخزين المؤقت

  1. drush cr - مسح جميع ذاكرة التخزين المؤقت (إعادة الإنشاء).
  2. drush cache:rebuild - نفس drush cr.
  3. drush cache:clear bin=render - مسح ذاكرة التخزين المؤقت للعرض.
  4. drush cache:clear bin=page - مسح ذاكرة التخزين المؤقت للصفحة.
  5. drush cache:clear bin=dynamic_page_cache - مسح ذاكرة التخزين المؤقت للصفحة الديناميكية.
  6. drush cache:clear bin=config - مسح ذاكرة التخزين المؤقت الخاصة بالتكوينات.
  7. drush cache:clear bin=discovery - مسح ذاكرة التخزين المؤقت لاكتشاف الإضافات والخدمات.
  8. drush cache:clear bin=bootstrap - مسح ذاكرة التمهيد (bootstrap).
  9. drush cache:list - عرض جميع أنواع ذاكرة التخزين المؤقت المتوفرة.
  10. drush help cache:clear - عرض معلومات مساعدة حول مسح ذاكرة التخزين المؤقت.

3. إدارة الوحدات والقوالب

  1. drush pm:list - عرض جميع الوحدات/القوالب.
  2. drush pm:enable modulename - تفعيل وحدة.
  3. drush pm:uninstall modulename - إلغاء تثبيت وحدة.
  4. drush theme:enable themename - تفعيل قالب.
  5. drush theme:default themename - تعيين قالب افتراضي.
  6. drush pm:download modulename - تنزيل وحدة.
  7. drush pm:update - التحقق من تحديثات الوحدات.
  8. drush pm:updatecode - تحديث الوحدات (Drupal 7).
  9. drush pm:update-status - عرض حالة التحديث.
  10. drush pm:security - التحقق من وجود تحديثات أمنية.
  11. drush theme:uninstall themename - إزالة قالب.
  12. drush pm:list --type=theme - عرض جميع القوالب فقط.
  13. drush pm:list --status=enabled - عرض الوحدات أو القوالب المفعّلة فقط.

4. إدارة التكوين

  1. drush cex - تصدير التكوين إلى دليل المزامنة.
  2. drush cim - استيراد التكوين من دليل المزامنة.
  3. drush config:status - التحقق من تغييرات التكوين.
  4. drush config:get config.name - عرض قيمة التكوين.
  5. drush config:set config.name key value - تعديل التكوين.
  6. drush config:delete config.name - حذف التكوين.
  7. drush config:override - تجاوز ملف التكوين مؤقتًا.
  8. drush config:validate - التحقق من صحة ملفات التكوين.
  9. drush config:edit config.name - تعديل التكوين باستخدام محرر داخلي.
  10. drush config:diff - عرض الفرق بين التكوين الحالي والمخزن.

5. قاعدة البيانات والتحديثات

  1. drush updatedb - تشغيل تحديثات قاعدة البيانات.
  2. drush updatedb:status - التحقق من التحديثات المعلقة.
  3. drush sql:dump - تصدير قاعدة البيانات إلى ملف.
  4. drush sql:cli - فتح سطر أوامر SQL (MySQL/PostgreSQL).
  5. drush sql:sync @source @destination - مزامنة قواعد البيانات بين المواقع.
  6. drush sql:query "SELECT * FROM users" - تشغيل استعلام SQL.
  7. drush sql:connect - عرض تفاصيل الاتصال بقاعدة البيانات.
  8. drush sql:drop - حذف جميع جداول قاعدة البيانات (يُستخدم بحذر!).
  9. drush entity:updates - تطبيق التغييرات في الكيانات إلى قاعدة البيانات.

6. إدارة المستخدمين

  1. drush user:create username - إنشاء مستخدم جديد.
  2. drush user:password admin 123 - تغيير كلمة مرور المستخدم.
  3. drush user:block username - حظر مستخدم.
  4. drush user:unblock username - رفع حظر مستخدم.
  5. drush user:role:add administrator username - إضافة دور للمستخدم.
  6. drush user:role:remove anonymous username - إزالة دور.
  7. drush user:login - الحصول على رابط تسجيل دخول لمرة واحدة.
  8. drush user:information username - عرض تفاصيل المستخدم.
  9. drush user:cancel username - إلغاء حساب مستخدم.
  10. drush user:login --name=username - تسجيل دخول مباشر باسم مستخدم معين.
  11. drush user:add-role role username - اختصار لإضافة دور.
  12. drush user:remove-role role username - اختصار لإزالة دور.

7. Cron وقائمة الانتظار

  1. drush cron - تشغيل Cron يدويًا.
  2. drush queue:list - عرض جميع قوائم الانتظار.
  3. drush queue:run queue_name - معالجة قائمة انتظار محددة.
  4. drush queue:delete queue_name - حذف قائمة انتظار.
  5. drush state:set system.cron_last --value=0 - إعادة تعيين وقت آخر تشغيل لـ Cron.

8. Composer والتبعيات

  1. drush composer:update - تحديث التبعيات عبر Composer.
  2. drush composer:validate - التحقق من صحة ملف composer.json.
  3. drush pm:refresh - تحديث معلومات الحزمة.
  4. composer require drupal/modulename - تثبيت وحدة جديدة باستخدام Composer.
  5. composer remove drupal/modulename - إزالة وحدة من المشروع.
  6. composer show - عرض قائمة بجميع الحزم المثبتة.

9. المواقع المتعددة والأسماء المستعارة

  1. drush sa - عرض جميع الأسماء المستعارة للمواقع.
  2. drush @alias cr - تشغيل الأوامر على موقع محدد.
  3. drush rsync @source @destination - مزامنة الملفات بين المواقع.
  4. drush site:alias --convert - تحويل الأسماء المستعارة القديمة إلى صيغة جديدة.
  5. drush sql:sync @live @dev - مزامنة قاعدة بيانات من الموقع الحي إلى موقع التطوير.
  6. drush rsync @dev:%files/ @stage:%files - مزامنة ملفات المواقع بين بيئتين.

10. وضع الصيانة

  1. drush state:set system.maintenance_mode 1 - تفعيل وضع الصيانة.
  2. drush state:set system.maintenance_mode 0 - تعطيل وضع الصيانة.
  3. drush sset system.maintenance_mode TRUE - نسخة مختصرة (D8+).
  4. drush config:set system.site maintenance_mode TRUE - تعيين الصيانة عبر التكوين.
  5. drush cr - بعد تفعيل أو تعطيل الصيانة يجب إعادة بناء الكاش.

11. السجلات وتصحيح الأخطاء

  1. drush watchdog:show - عرض السجلات الحديثة.
  2. drush watchdog:tail - سجلات المتابعة في الوقت الفعلي.
  3. drush watchdog:delete all - مسح جميع السجلات.
  4. drush ws --severity=Error - تصفية السجلات حسب درجة الخطورة.
  5. drush watchdog:show --type=php - عرض سجلات أخطاء PHP فقط.
  6. drush watchdog:list - عرض أنواع السجلات المتاحة.
  7. drush debug:config - تصحيح أخطاء نظام التكوين.
  8. drush debug:container - تصحيح أخطاء حاوية الخدمة.

12. إدارة الملفات

  1. drush files:list - عرض الملفات العامة.
  2. drush files:delete path - حذف ملف.
  3. drush files:repair - إصلاح أذونات الملفات.
  4. drush rsync @self:%files/ ./local-backup - نسخ الملفات من الموقع إلى مجلد محلي.
  5. drush ev "file_usage_delete(file_load($fid))" - حذف استخدامات ملف معين (بحذر).

13. البحث والفهرسة

  1. drush search:status - التحقق من حالة فهرس البحث.
  2. drush search:index - فهرسة العناصر المتبقية.
  3. drush search:reset - إعادة تعيين فهرس البحث.
  4. drush search-api:index - إعادة فهرسة باستخدام Search API (إذا كانت مثبتة).
  5. drush search-api:clear - مسح بيانات الفهرس في Search API.
  6. drush entity:queue index search_index_name - طابور الفهرسة اليدوي.

14. الترجمة والإعدادات المحلية

  1. drush locale:check - التحقق من الترجمات.
  2. drush locale:update - تحديث الترجمات.
  3. drush language:add fr - إضافة لغة.
  4. drush language:enable fr - تفعيل لغة.
  5. drush config:set system.site default_langcode fr - تغيير اللغة الافتراضية للموقع.
  6. drush config:set language.content fr - تعيين اللغة الافتراضية للمحتوى.
  7. drush language:delete es - حذف لغة.
  8. drush locale:import fr translations-fr.po - استيراد ملف ترجمة.

15. عمليات الترحيل

  1. drush migrate:status - عرض عمليات الترحيل.
  2. drush migrate:import migration_name - تشغيل عملية ترحيل.
  3. drush migrate:rollback migration_name - التراجع عن عملية ترحيل.
  4. drush migrate:reset migration_name - إعادة تعيين حالة الترحيل.
  5. drush migrate:stop migration_name - إيقاف عملية ترحيل جارية.
  6. drush migrate:messages migration_name - عرض رسائل الخطأ المتعلقة بالترحيل.
  7. drush migrate:fields migration_name - عرض الحقول المتاحة في الترحيل.
  8. drush migrate:setup migration_name - إعداد عملية الترحيل (إن وُجد).

16. الأداء والتحسين

  1. drush image:flush - مسح أنماط الصور.
  2. drush css:gzip - ضغط ملفات CSS.
  3. drush js:gzip - ضغط ملفات JS.
  4. drush cr - إعادة بناء الكاش لتحسين الأداء.
  5. drush cache:rebuild - أمر بديل لإعادة بناء الكاش.
  6. drush cache:clear all - مسح جميع أنواع الكاش.
  7. drush config:export --remove-uuid --remove-config-hash - تصدير نظيف للتكوين لتحسين الأداء في البيئات.

17. الأمان والتطهير

  1. drush user:login:reset - إعادة تعيين جميع كلمات مرور المستخدمين.
  2. drush site:security-review - إجراء فحوصات الأمان.
  3. drush php:eval "print drupal_get_hash_salt();" - الحصول على قيمة التجزئة.
  4. drush user:cancel 1 - حذف أو إلغاء حساب مستخدم (مثلاً ID 1).
  5. drush state:get system.cron_last - معرفة آخر وقت تشغيل لـ Cron.
  6. drush config:set system.logging error_level verbose - تفعيل تسجيل الأخطاء التفصيلي.
  7. drush pm:security --format=table - عرض الثغرات الأمنية بشكل جدول.

18. التخصيص والتطوير

  1. drush php:eval "print 'Hello';" - تشغيل أكواد PHP.
  2. drush generate:module - إنشاء وحدة (لوحة تحكم دروبال).
  3. drush generate:controller - إنشاء وحدة تحكم.
  4. drush generate:entity:content - إنشاء كيان محتوى.
  5. drush devel:token - إنشاء رمز مميز (في حال تفعيل وحدة التطوير).
  6. drush devel:services - عرض الخدمات (وحدة التطوير).
  7. drush devel:entity:load 1 - تحميل كيان (وحدة التطوير).
  8. drush php:cli - تشغيل واجهة سطر أوامر تفاعلية PHP داخل بيئة دروبال.
  9. drush generate:plugin:block - إنشاء Block مخصص.
  10. drush generate:form - توليد نموذج (Form API).

19. النسخ الاحتياطي والاستعادة

  1. drush archive:dump - إنشاء نسخة احتياطية للموقع.
  2. drush archive:restore /path/to/backup - استعادة نسخة احتياطية.
  3. drush sql:dump --result-file=backup.sql - تصدير قاعدة البيانات إلى ملف.
  4. drush sql:sync @live @dev - مزامنة قاعدة بيانات من بيئة إلى أخرى.
  5. drush sql:cli - الدخول إلى سطر أوامر MySQL داخل بيئة دروبال.
  6. drush config:export - تصدير إعدادات التكوين (نسخة احتياطية للتكوين).
  7. drush config:import - استيراد التكوين من نسخة سابقة.

20. الدفعات والبرمجة النصية

  1. drush php:script script.php - تشغيل سكربت PHP.
  2. drush batch:process - معالجة عملية دفعية.
  3. drush script --script-path=/path - تشغيل سكربت Drush.
  4. drush queue:run batch - تشغيل قائمة انتظار الدُفعات يدويًا.
  5. drush php:eval "batch_process();" - تنفيذ الدفعات يدويًا عبر PHP.
  6. drush state:get batch.processing - التحقق من حالة دفعة جارية.

21. متفرقات

  1. drush core:requirements - التحقق من متطلبات النظام.
  2. drush topic - عرض وثائق Drush.
  3. drush version - التحقق من إصدار Drush.
  4. drush help - عرض مساعدة Drush.
  5. drush self:update - تحديث Drush نفسه.
  6. drush status - عرض حالة الموقع الحالية.
  7. drush core:init - تهيئة ملفات Drush في المشروع.
  8. drush about - عرض معلومات عن بيئة التشغيل.

Drush هي أداة لا تقدر بثمن لمطوري Drupal. بمجرد أن تبدأ باستخدامها، ستدرك أنها توفر ساعات من العمل اليدوي، وتمنحك تحكماً كاملاً في إدارة الموقع من خلال سطر الأوامر. سواء كنت تقوم بتحديث، تثبيت، تصدير إعدادات، أو صيانة الموقع، فإن Drush هو مساعدك المثالي.