الموقع حالياً تحت التطوير (Beta) 🚀. قد تلاحظ بعض التغييرات أو مميزات قيد العمل.
DevOps درس تعليمي

نشر تطبيقات لارافيل على السحابة: دليل تقني شامل

Admin User
Admin User
May 17, 2026
9 دقيقة قراءة

Key Takeaways

  • # نشر تطبيقات لارافيل على السحابة: دليل تقني شامل
  • قد يبدو نشر تطبيق لارافيل على السحابة مهمة شاقة، لكنه يفتح آفاقًا واسعة من قابلية التوسع والموثوقية وفعالية ا...

نشر تطبيقات لارافيل على السحابة: دليل تقني شامل

قد يبدو نشر تطبيق لارافيل على السحابة مهمة شاقة، لكنه يفتح آفاقًا واسعة من قابلية التوسع والموثوقية وفعالية التكلفة. سيرشدك هذا الدليل الشامل عبر نماذج النشر السحابي المختلفة ومقدمي الخدمات السحابية الشائعة والخطوات العملية لتشغيل تطبيق لارافيل الخاص بك بسلاسة في السحابة.

لماذا ننشر لارافيل على السحابة؟ #

قبل الغوص في "كيف"، دعنا نفهم "لماذا":

  • قابلية التوسع (Scalability): التعامل بسهولة مع زيادات حركة المرور عن طريق توسيع الموارد أو تقليصها حسب الحاجة.
  • الموثوقية والتوافر العالي (Reliability & High Availability): توزيع تطبيقك عبر مناطق توافر متعددة لتقليل وقت التوقف عن العمل.
  • فعالية التكلفة (Cost-Efficiency): الدفع فقط مقابل الموارد التي تستهلكها، مما يحسن من إنفاقك على البنية التحتية.
  • الوصول العالمي (Global Reach): النشر بالقرب من المستخدمين لتقليل زمن الاستجابة (latency).
  • الخدمات المدارة (Managed Services): إسناد مهام إدارة البنية التحتية إلى مزودي الخدمات السحابية، مما يتيح لك التركيز على التطوير.

فهم نماذج النشر السحابي لتطبيقات لارافيل #

عند النشر على السحابة، ستصادف نماذج خدمة مختلفة، لكل منها مقايضاته الخاصة.

1. البنية التحتية كخدمة (Infrastructure as a Service - IaaS) #

توفر IaaS موارد حوسبة افتراضية عبر الإنترنت. أنت تدير نظام التشغيل والتطبيقات والبرمجيات الوسيطة، بينما يدير مزود السحابة الأجهزة الأساسية. يوفر هذا النموذج أكبر قدر من التحكم ولكنه يتطلب إدارة يدوية أكبر للخادم.

  • أمثلة: AWS EC2، Google Compute Engine، Azure Virtual Machines، DigitalOcean Droplets، Vultr Instances.
  • حالة استخدام لارافيل: تقوم بتوفير جهاز افتراضي، وتثبيت نظام تشغيل (مثل Ubuntu)، وخادم ويب (Nginx/Apache)، وPHP، وقاعدة بيانات (MySQL/PostgreSQL)، ثم تنشر تطبيق لارافيل الخاص بك عليه مباشرة.

2. المنصة كخدمة (Platform as a Service - PaaS) #

توفر PaaS بيئة تطوير ونشر كاملة، وتجرد البنية التحتية الأساسية. تركز أنت على الكود الخاص بك، وتتولى المنصة إدارة الخوادم وأنظمة التشغيل وقواعد البيانات والتوسع.

  • أمثلة: Laravel Forge، AWS Elastic Beanstalk، Google App Engine، Azure App Service، Heroku.
  • حالة استخدام لارافيل: باستخدام Laravel Forge، تربط مستودع Git الخاص بك، ويقوم Forge بتوفير وتكوين الخوادم (من مزودي IaaS مثل DigitalOcean) لتطبيق لارافيل الخاص بك، ويتعامل مع Nginx وPHP-FPM وإعداد قاعدة البيانات وعمليات النشر تلقائيًا.

3. بلا خادم (Serverless / الوظيفة كخدمة - FaaS) #

تتيح لك البنية بلا خادم تشغيل الكود دون توفير أو إدارة خوادم. يتم تقسيم تطبيقك إلى وظائف تعمل استجابة لأحداث معينة، وتدفع فقط مقابل وقت الحوسبة المستهلك. التوسع تلقائي.

  • أمثلة: AWS Lambda، Google Cloud Functions، Azure Functions، Laravel Vapor.
  • حالة استخدام لارافيل: يقوم Laravel Vapor بنشر تطبيق لارافيل الخاص بك كمجموعة من وظائف AWS Lambda، وS3 للأصول، وDynamoDB لذاكرات التخزين المؤقت، مما يوفر قابلية توسع لا تصدق ونموذج دفع مقابل الاستخدام.

4. الحاويات (Docker & Kubernetes) #

تقوم الحاويات بتجميع تطبيقك وجميع تبعياته في وحدة واحدة معزولة. ثم يقوم Kubernetes بتنسيق هذه الحاويات عبر مجموعة من الأجهزة، وإدارة النشر والتوسع والشبكات.

  • أمثلة: AWS ECS/EKS، Google Kubernetes Engine (GKE)، Azure Kubernetes Service (AKS).
  • حالة استخدام لارافيل: تقوم بحوكمة تطبيق لارافيل الخاص بك باستخدام Docker، ثم تنشره وتديره باستخدام Kubernetes للحصول على توسع متقدم وبنية خدمات مصغرة. هذا عادة ما يكون للتطبيقات الأكبر والأكثر تعقيدًا.

مزودو الخدمات السحابية الشائعون لتطبيقات لارافيل #

يلبي العديد من مزودي الخدمات السحابية احتياجات لارافيل، ولكل منهم نقاط قوة فريدة.

  • AWS (خدمات الويب من أمازون): المجموعة الأكثر شمولاً من الخدمات. ممتاز لعمليات النشر واسعة النطاق والمعقدة. خدمات مثل EC2 (IaaS)، RDS (قاعدة بيانات مُدارة)، S3 (التخزين)، SQS (قوائم الانتظار)، Elastic Beanstalk (PaaS)، وLambda (بلا خادم عبر Vapor) شائعة الاستخدام.
  • Google Cloud Platform (GCP): قوي في تحليلات البيانات والتعلم الآلي. يقدم Compute Engine (IaaS)، Cloud SQL (قاعدة بيانات مُدارة)، Cloud Storage (التخزين)، App Engine (PaaS)، وCloud Run (بلا خادم يعتمد على الحاويات).
  • Microsoft Azure: يتكامل بشكل جيد مع نظام Microsoft البيئي. يقدم Azure Virtual Machines (IaaS)، Azure SQL Database (قاعدة بيانات مُدارة)، Blob Storage (التخزين)، App Service (PaaS)، وAzure Functions (بلا خادم).
  • DigitalOcean/Vultr: مزودو IaaS أبسط وسهل الاستخدام للمطورين، يقدمون خوادم افتراضية خاصة (Droplets/Instances) بأسعار تنافسية. مثالي لعمليات نشر الأجهزة الافتراضية المباشرة، وغالبًا ما يتم دمجها مع Laravel Forge.

مثال نشر خطوة بخطوة: Laravel Forge على DigitalOcean (هجين PaaS/IaaS) #

يبسط Laravel Forge نشر تطبيقات لارافيل على مختلف مزودي IaaS. يركز هذا المثال على DigitalOcean.

المتطلبات الأساسية: #

  • تطبيق لارافيل جاهز للنشر (تحت التحكم في الإصدار، على سبيل المثال على GitHub/GitLab).
  • حسابات على Laravel Forge وDigitalOcean.

1. إعداد تطبيق لارافيل الخاص بك للإنتاج #

تأكد من إعداد ملف .env الخاص بك للإنتاج. تشمل الجوانب الحاسمة:

APP_ENV=production
APP_DEBUG=false
APP_URL=https://your-domain.com

DB_CONNECTION=mysql
DB_HOST=127.0.0.1 # أو مضيف قاعدة البيانات المُدارة الخاصة بك
DB_PORT=3306
DB_DATABASE=your_database
DB_USERNAME=your_username
DB_PASSWORD=your_password

# تكوين برامج تشغيل البريد وذاكرة التخزين المؤقت وقائمة الانتظار للإنتاج
MAIL_MAILER=smtp
CACHE_DRIVER=redis # أو memcached
QUEUE_CONNECTION=redis # أو database
SESSION_DRIVER=redis # أو database
BROADCAST_DRIVER=pusher

قم بتشغيل أوامر التحسين محليًا قبل النشر أو تأكد من أن مسار CI/CD الخاص بك يقوم بذلك:

php artisan config:cache
php artisan route:cache
php artisan view:cache
composer install --optimize-autoloader --no-dev
npm install && npm run prod # إذا كان لديك أصول واجهة أمامية

2. توفير خادم باستخدام Laravel Forge #

  1. ربط Forge بـ DigitalOcean: في Forge، انتقل إلى "Cloud Providers" واربط حساب DigitalOcean الخاص بك. سيتم تفويض Forge بعد ذلك لإنشاء Droplets نيابة عنك.
  2. إنشاء خادم جديد: في Forge، انقر على "Servers" -> "Create Server".
    • حدد "DigitalOcean" كمزود.
    • اختر المنطقة والحجم ونظام التشغيل المطلوب (مثل Ubuntu 22.04 LTS).
    • سيقوم Forge بتوفير الخادم، وتثبيت Nginx وPHP وComposer وMySQL والضروريات الأخرى.

3. إنشاء موقع على Forge #

بمجرد أن يصبح الخادم جاهزًا (قد يستغرق هذا من 5 إلى 10 دقائق):

  1. إضافة موقع جديد: في صفحة تفاصيل الخادم في Forge، انقر على "Add Site".
    • أدخل نطاقك (على سبيل المثال، your-domain.com).
    • حدد مزود مستودع Git الخاص بك (على سبيل المثال، GitHub) والمستودع الذي يحتوي على تطبيق لارافيل الخاص بك.
    • اختر الفرع المراد نشره (على سبيل المثال، main أو master).
    • سيقوم Forge باستنساخ مستودعك وتثبيت التبعيات وتكوين Nginx.

4. تكوين متغيرات البيئة وقاعدة البيانات #

  1. متغيرات البيئة (Environment Variables): في Forge، انتقل إلى موقعك، ثم إلى علامة التبويب "Environment". الصق محتوى ملف .env الخاص بالإنتاج هنا. تأكد من تخزين المفاتيح الحساسة بشكل آمن.
  2. قاعدة البيانات (Database): يقوم Forge تلقائيًا بإعداد قاعدة بيانات MySQL على الخادم الخاص بك. احصل على بيانات الاعتماد من علامة التبويب "Databases" في الخادم. إذا كنت تستخدم قاعدة بيانات مُدارة (على سبيل المثال، DigitalOcean Managed Database)، فقم بتحديث ملف .env الخاص بك بمضيفها واسم المستخدم وكلمة المرور.
    • تشغيل الترحيلات: في Forge، انتقل إلى علامة التبويب "App" لموقعك وانقر على "Run Migrations". سيؤدي هذا إلى تنفيذ php artisan migrate --force.

5. إعداد معالجات قوائم الانتظار (Queue Workers) (اختياري ولكن موصى به) #

للمهام الخلفية (مثل إرسال رسائل البريد الإلكتروني، معالجة الصور)، تعد قوائم انتظار لارافيل ضرورية.

  1. Supervisor: في Forge، انتقل إلى علامة التبويب "Daemons" في الخادم الخاص بك. انقر على "Add Daemon".
    • الأمر (Command): php /home/forge/your-domain.com/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600 (اضبط redis ليتناسب مع QUEUE_CONNECTION من .env).
    • المستخدم (User): forge
    • الدليل (Directory): /home/forge/your-domain.com
    • ابدأ المعالج.

6. تكوين التخزين (يوصى بـ S3) #

بالنسبة للملفات التي يرفعها المستخدمون، يوصى بشدة باستخدام تخزين الكائنات مثل AWS S3 لقابلية التوسع والموثوقية.

  1. تثبيت حزمة AWS S3: composer require league/flysystem-aws-s3-v3
  2. تكوين config/filesystems.php: قم بتعيين AWS_BUCKET، AWS_ACCESS_KEY_ID، AWS_SECRET_ACCESS_KEY، AWS_DEFAULT_REGION في ملف .env الخاص بك.
  3. تحديث config/filesystems.php لاستخدام s3 كقرص افتراضي أو قرص محدد لعمليات الرفع.

7. التكامل المستمر/النشر المستمر (CI/CD) #

يتكامل Forge مباشرة مع Git لعمليات النشر. ستؤدي أي عملية دفع إلى الفرع المكون إلى تشغيل عملية نشر.

  1. في إعدادات موقع Forge الخاص بك، ضمن علامة التبويب "Git"، قم بتمكين "Quick Deploy".
  2. يمكنك أيضًا تخصيص برنامج نصي النشر الخاص بك ليشمل عمليات بناء npm، وترحيلات قاعدة البيانات، وأوامر التخزين المؤقت، وما إلى ذلك.

8. المراقبة والتسجيل (Monitoring and Logging) #

  • Forge: يوفر مراقبة أساسية لموارد الخادم. يمكنك دمج أدوات أكثر تقدمًا.
  • مزود السحابة: يقدم DigitalOcean وAWS وGCP جميعًا خدمات المراقبة والتسجيل الخاصة بهم (على سبيل المثال، DigitalOcean Monitoring، AWS CloudWatch، Google Cloud Monitoring).
  • جهة خارجية: أدوات مثل Sentry لتتبع الأخطاء، DataDog لمراقبة البنية التحتية، أو Logtail للتسجيل المركزي.

Laravel Vapor: نشر بلا خادم على AWS #

يوفر Laravel Vapor تجربة نشر مبسطة وبلا خادم لتطبيقات لارافيل على AWS Lambda. يتعامل مع التوفير والتوسع وإدارة البنية التحتية الأساسية تلقائيًا.

الفوائد الرئيسية لـ Vapor: #

  • قابلية توسع لا نهائية (Infinite Scalability): يتوسع تلقائيًا للتعامل مع أي حجم من حركة المرور.
  • الدفع مقابل الاستخدام (Pay-per-execution): تدفع فقط عندما يكون تطبيقك قيد التشغيل فعليًا.
  • إدارة خادم صفرية (Zero Server Management): لا توجد خوادم لتوفيرها أو تصحيحها أو توسيعها يدويًا.
  • دعم من الطرف الأول (First-Party Support): تم بناؤه بواسطة فريق لارافيل، مما يضمن تكاملاً عميقًا.

البدء باستخدام Vapor: #

  1. تثبيت Vapor CLI: composer global require laravel/vapor-cli
  2. تكوين AWS: تأكد من إعداد بيانات اعتماد AWS الخاصة بك (~/.aws/credentials).
  3. تثبيت Vapor Core: composer require laravel/vapor-core في مشروعك.
  4. vapor.yml: قم بتكوين مشروعك باستخدام ملف vapor.yml، مع تحديد البيئات والنطاقات وقواعد البيانات والمزيد.
    id: 12345 # معرف مشروع Vapor الخاص بك
    name: your-project-name
    
    

environments: production: memory: 1024 timeout: 60 runtime: php-8.2 database: your-production-database cache: your-production-cache storage: your-production-storage domain: your-domain.com staging: memory: 512 timeout: 30 runtime: php-8.2 database: your-staging-database cache: your-staging-cache storage: your-staging-storage domain: staging.your-domain.com ``` 5. النشر: vapor deploy production

يتعامل Vapor أيضًا مع الترحيلات ومعالجات قوائم الانتظار ومتغيرات البيئة بسلاسة.

الخلاصة #

يعتمد اختيار استراتيجية النشر السحابي المناسبة لتطبيق لارافيل الخاص بك على احتياجاتك وميزانيتك ومستوى التحكم المطلوب. سواء اخترت التحكم المباشر في IaaS، أو راحة PaaS مثل Forge، أو قابلية التوسع التي لا مثيل لها بلا خادم باستخدام Vapor، فإن فهم هذه الخيارات هو مفتاح بناء تطبيقات لارافيل قوية وعالية الأداء في السحابة. تبنى مبادئ DevOps، وأتمتة عمليات النشر الخاصة بك، وراقب تطبيقاتك عن كثب لضمان تجربة مستخدم سلسة وموثوقة.

FAQs

ما هو الفرق الرئيسي بين IaaS و PaaS والخدمات بلا خادم لنشر لارافيل؟
توفر IaaS (مثل AWS EC2) تحكمًا كاملاً في نظام تشغيل الخادم والبرامج، مما يتطلب إدارة أكبر. تجرد PaaS (مثل Laravel Forge) إدارة الخادم، مما يتيح لك التركيز على الكود. تشغل الخدمات بلا خادم (مثل Laravel Vapor) الكود الخاص بك دون توفير خادم، وتتوسع تلقائيًا وتفرض رسومًا على كل عملية تنفيذ، مما يوفر أقصى قدر من التجريد وقابلية التوسع.
هل Laravel Vapor مناسب لجميع تطبيقات لارافيل؟
Laravel Vapor ممتاز للتطبيقات القابلة للتوسع بشكل كبير والتي تعتمد على الأحداث، ويوفر فوائد هائلة في التكلفة وقابلية التوسع للعديد من حالات الاستخدام. ومع ذلك، قد لا يكون مثاليًا للتطبيقات التي تتطلب أوقات بدء تشغيل باردة منخفضة للغاية أو تكوينات خادم قديمة محددة جدًا يصعب تكييفها مع بيئة بلا خادم.
كيف يمكنني إدارة متغيرات البيئة بأمان في السحابة؟
يقدم مزودو الخدمات السحابية طرقًا آمنة لإدارة متغيرات البيئة. تسمح لك خدمات مثل Laravel Forge بتعيينها في واجهة مستخدم مخصصة. بالنسبة لـ Vapor، يتم إدارتها عبر لوحة تحكم Vapor. بالنسبة لـ IaaS، فكر في استخدام أدوات مثل AWS Systems Manager Parameter Store أو HashiCorp Vault لمركزة وتأمين بيانات الاعتماد الحساسة.

Want more content like this?

Explore more tutorials in the DevOps section.

Explore DevOps

You might also like