البرمجة

نشر تطبيق Laravel على Heroku

نشر تطبيقات Laravel على منصة Heroku: دليل شامل وموسع

تعد منصة Heroku واحدة من أشهر وأبسط منصات الحوسبة السحابية التي تتيح للمطورين نشر تطبيقاتهم بسهولة ومرونة دون الحاجة إلى إدارة الخوادم والبنية التحتية بشكل مباشر. بالنسبة لمطوري Laravel، وهي واحدة من أشهر أُطُر تطوير تطبيقات PHP، فإن نشر التطبيقات على Heroku يوفر بيئة جاهزة ومتوافقة مع احتياجات التطبيق مع دعم متعدد للغات ولأدوات التطوير المختلفة. هذا المقال يقدم شرحًا مفصلًا وشاملاً لكيفية نشر تطبيقات Laravel على منصة Heroku، بدءًا من التحضيرات المطلوبة وصولًا إلى إدارة التطبيق ونصائح هامة لضمان الأداء المثالي.


مقدمة حول Laravel وHeroku

Laravel: إطار عمل PHP المتطور

Laravel هو إطار عمل برمجي مفتوح المصدر بلغة PHP يتميز بتوفير بنية متماسكة وأدوات قوية لتطوير تطبيقات الويب الحديثة. يعتمد Laravel على نمط التصميم MVC (Model-View-Controller) ويوفر ميزات متقدمة مثل نظام التوجيه (Routing)، إدارة قواعد البيانات عبر ORM يدعى Eloquent، أنظمة التحقق من المستخدمين، وجدولة المهام، وغيرها الكثير.

منصة Heroku: السحابة في متناول يدك

Heroku هي منصة خدمة سحابية تقدم حلاً متكاملاً لنشر التطبيقات البرمجية دون الحاجة للقلق بشأن تفاصيل البنية التحتية. توفر Heroku دعمًا للغات برمجة متعددة منها PHP، وتعمل بنظام dynos (وحدات تشغيل) التي تدير تطبيقك بشكل ديناميكي. تُعد Heroku خيارًا ممتازًا لنشر تطبيقات Laravel بسبب بساطتها وسرعة الانتقال من بيئة التطوير إلى بيئة الإنتاج.


المتطلبات الأساسية قبل النشر

قبل البدء في نشر تطبيق Laravel على Heroku، يجب التأكد من توافر عدد من المتطلبات الأساسية:

  • حساب على Heroku: يمكن إنشاء حساب مجاني بسهولة عبر الموقع الرسمي.

  • Git: يعتبر Git هو الأداة الرئيسية المستخدمة في رفع المشروع إلى Heroku.

  • Heroku CLI (Command Line Interface): أداة سطر الأوامر الخاصة بمنصة Heroku لإدارة التطبيقات من جهاز المطور.

  • بيئة Laravel جاهزة: مشروع Laravel مكتمل وجاهز للنشر.

  • Composer: لإدارة حزم PHP داخل المشروع.

  • قاعدة بيانات (عادة PostgreSQL على Heroku): يجب تهيئة التطبيق للعمل مع قاعدة بيانات متوافقة.


خطوات نشر تطبيق Laravel على Heroku

1. إعداد مشروع Laravel محليًا

قبل رفع المشروع إلى Heroku، يجب التأكد من عمل المشروع محليًا بدون مشاكل. يفضل تحديث كافة الحزم بواسطة الأمر:

bash
composer install

ويُفضّل التأكد من أن ملف .env يحتوي على إعدادات قاعدة البيانات ومفاتيح التطبيق بشكل صحيح في بيئة التطوير.

2. إنشاء تطبيق جديد على منصة Heroku

يمكن إنشاء تطبيق جديد عبر واجهة الويب أو عبر سطر الأوامر باستخدام Heroku CLI:

bash
heroku create your-app-name

هذا الأمر سينشئ تطبيقًا جديدًا على Heroku مع عنوان URL خاص به.

3. إعداد قاعدة البيانات PostgreSQL

Heroku تستخدم بشكل افتراضي قاعدة بيانات PostgreSQL، لذلك يجب إضافة إضافة PostgreSQL إلى التطبيق:

bash
heroku addons:create heroku-postgresql:hobby-dev

بعد ذلك، يمكن الحصول على رابط الاتصال بقاعدة البيانات عبر:

bash
heroku config:get DATABASE_URL

ويجب استخدام هذا الرابط في إعدادات التطبيق بدلًا من الإعدادات المحلية.

4. تهيئة إعدادات Laravel للعمل على Heroku

تعديل ملف config/database.php

لضمان توافق التطبيق مع قاعدة بيانات PostgreSQL على Heroku، يمكن تعديل الإعدادات كما يلي:

php
'pgsql' => [ 'driver' => 'pgsql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '5432'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', 'sslmode' => 'prefer', ],

تعديل ملف .env

في بيئة Heroku، يتم تعريف متغير البيئة DATABASE_URL، لذلك يمكن استخدام حزمة PHP مثل vlucas/phpdotenv أو إعداد ملف config/database.php ليقوم بتحليل الرابط DATABASE_URL تلقائيًا، أو ببساطة يمكن إعداد المتغيرات يدويًا إذا تم تحويل الرابط إلى أجزاء منفصلة.

تهيئة التخزين المؤقت والـ Cache

Heroku لا يدعم التخزين المؤقت في النظام المحلي لأنه يعمل على بيئة ephemeral filesystem. لذلك من الأفضل استخدام حلول التخزين المؤقت الخارجية مثل Redis أو Memcached، أو الاعتماد فقط على قواعد البيانات.

5. إنشاء ملف Procfile

ملف Procfile هو ملف خاص بمنصة Heroku يُستخدم لتعريف كيف يجب تشغيل التطبيق. في حالة Laravel، يمكن تعريفه كالتالي:

swift
web: vendor/bin/heroku-php-apache2 public/

هذا يخبر Heroku باستخدام خادم Apache لتشغيل تطبيق Laravel الموجود في مجلد public.

6. إعداد ملف composer.json

يجب التأكد من وجود إعدادات PHP الضرورية في ملف composer.json، مثل نسخة PHP المطلوبة وإضافة امتدادات ضرورية (مثل pdo, pgsql).

مثال على جزء من composer.json:

json
"require": { "php": "^8.0", "ext-pdo": "*", "ext-pgsql": "*", ... },

7. إدارة الجلسات (Sessions)

يمكن تخزين الجلسات في قاعدة البيانات أو باستخدام Redis لتجنب مشاكل التخزين على النظام المؤقت.

8. رفع التطبيق إلى Heroku باستخدام Git

يتم ربط المستودع المحلي بمستودع Heroku عبر:

bash
git init heroku git:remote -a your-app-name

ثم رفع التغييرات:

bash
git add . git commit -m "Prepare app for Heroku deployment" git push heroku master

أو في حال استخدام الفرع main:

bash
git push heroku main

9. تشغيل أوامر التهيئة بعد النشر

بعد رفع التطبيق، يجب تنفيذ أوامر Laravel الأساسية مثل التهيئة وترحيل قواعد البيانات:

bash
heroku run php artisan migrate --force

وأيضًا يمكن تنفيذ:

bash
heroku run php artisan config:cache heroku run php artisan route:cache heroku run php artisan view:cache

لزيادة سرعة التطبيق في بيئة الإنتاج.


إدارة البيئة والإعدادات على Heroku

تعيين متغيرات البيئة

يتم تعيين متغيرات البيئة عبر سطر الأوامر أو عبر واجهة المستخدم في Heroku. على سبيل المثال:

bash
heroku config:set APP_KEY=your-app-key heroku config:set APP_ENV=production heroku config:set APP_DEBUG=false heroku config:set DB_CONNECTION=pgsql heroku config:set DB_HOST=your-db-host heroku config:set DB_PORT=5432 heroku config:set DB_DATABASE=your-db-name heroku config:set DB_USERNAME=your-db-user heroku config:set DB_PASSWORD=your-db-password

توليد مفتاح التطبيق (APP_KEY)

يجب التأكد من وجود مفتاح التطبيق APP_KEY في متغيرات البيئة، والذي يمكن توليده محليًا عبر:

bash
php artisan key:generate --show

ثم نسخه إلى متغير البيئة على Heroku.


التعامل مع ملفات التخزين (Storage)

يجب مراعاة أن Heroku يستخدم نظام ملفات مؤقت غير دائم، لذلك لا يُنصح بتخزين الملفات أو الوسائط داخل مجلد storage بشكل دائم. بدلاً من ذلك، من الأفضل ربط التطبيق مع خدمات خارجية لتخزين الملفات مثل Amazon S3 أو Google Cloud Storage.


مراقبة الأداء وإدارة Dynos

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

يجب مراقبة استهلاك الموارد وأداء التطبيق باستخدام أدوات Heroku المدمجة، أو ربط التطبيق بأدوات خارجية مثل New Relic.


مزايا استخدام Heroku مع Laravel

  • سهولة النشر: عبر خطوات بسيطة باستخدام Git.

  • دعم قواعد بيانات متكامل: PostgreSQL، Redis، وغيرها.

  • إدارة المتغيرات البيئية بسهولة.

  • دعم متكامل للغات PHP وبيئات Laravel.

  • تكامل مع أدوات CI/CD.

  • دعم التوسع والمرونة حسب الحاجة.


جدول مقارنة بين Heroku وطرق النشر التقليدية لتطبيقات Laravel

المعيار النشر على Heroku النشر على خادم VPS أو سيرفر مخصص
سهولة الإعداد عالية، مع أدوات مساعدة وسطر أوامر مخصص منخفضة، يحتاج إعداد يدوي وإدارة خوادم
تكاليف التشغيل تبدأ مجانًا مع خطط مدفوعة قابلة للتوسع متغيرة بناءً على مواصفات الخادم
إدارة البنية التحتية غير مطلوبة، تدار من قبل Heroku مطلوبة بالكامل من قبل المطور أو الفريق
التوسع والمرونة ديناميكية وسهلة الإضافة أو التقليل (Scaling) تتطلب إعداد يدوي وإعادة تكوين
دعم قواعد البيانات مدمج ومتوافق مع PostgreSQL و Redis يمكن اختيار قواعد البيانات بحرية
التحديث والصيانة سهلة عبر Git وHeroku CLI تعتمد على أدوات الإدارة الخاصة بالخادم
استمرارية الخدمة مرتفعة مع دعم Heroku للأعطال والتكرار تعتمد على إعدادات الخادم واحتياطات الصيانة

نصائح مهمة لضمان نجاح نشر تطبيق Laravel على Heroku

  • التأكد من إعداد ملف .env بشكل صحيح وعدم رفعه إلى المستودع.

  • الاستفادة من أدوات الـ Cache والـ Queue في Laravel لتحسين الأداء.

  • مراقبة استهلاك الموارد وتنفيذ عمليات ترحيل قواعد البيانات بحذر.

  • الاعتماد على خدمات تخزين الملفات السحابية الخارجية لتجنب فقدان البيانات.

  • تأكيد تحديث المفتاح السري APP_KEY وعدم استخدام قيم تجريبية.

  • اختبار التطبيق جيدًا في بيئة Heroku قبل إتاحة الوصول للجمهور.


خلاصة

نشر تطبيقات Laravel على منصة Heroku يعد خيارًا ممتازًا يجمع بين سهولة الاستخدام، ومرونة التوسع، ودعم البنية التحتية الحديثة، مع توفير أدوات متقدمة لإدارة قواعد البيانات، والتخزين، ومراقبة الأداء. من خلال اتباع الخطوات التفصيلية السابقة والالتزام بالإعدادات الموصى بها، يمكن لأي مطور Laravel الوصول إلى بيئة إنتاجية مستقرة وفعالة بسرعة وبدون تعقيدات إدارة الخوادم التقليدية.


المصادر والمراجع

  1. دليل Laravel الرسمي – النشر على Heroku

  2. وثائق منصة Heroku – PHP Support