Loading...

تعلّم / النشر

كيف تنشر تطبيق Laravel على cdn.com.tr

انقل تطبيق Laravel إلى الإنتاج دون استئجار خادم وترقيعه. مساران: بيئة تشغيل PHP مُدارة بالكامل، أو حاويتك الخاصة المنشورة من Git — كلاهما خلف حافة CDN مع قاعدة بيانات مُدارة، وHTTPS تلقائي، وWAF.

قراءة 9 دقائق متوسط Updated

كيف تنشر تطبيق Laravel على cdn.com.tr

طريقتان للنشر

تحتاج إلى تطبيق Laravel، ومستودع Git، وحساب على cdn.com.tr. هناك مساران ويمكنك اختيار أيّهما. تشغّل منصّة PHP المُدارة تطبيق Laravel على بيئة تشغيل PHP 8 حديثة مع قاعدة بيانات مُدارة، وRedis، وSSL تلقائي، وWAF — دون كتابة Dockerfile. ويمنحك مسار الحاوية تحكّمًا كاملًا: تقدّم Dockerfile، وتبنيه المنصّة وتشغّله كتطبيق حاوية مُدار. وكلاهما يقع خلف حافة CDN. يغطّي هذا الدليل مسار الحاوية بالتفصيل ويشير إلى المنصّة المُدارة حيثما كانت أبسط.

كيف تنشر تطبيق Laravel على cdn.com.tr — طريقتان للنشر
المنصّات المُدارة وحاويات container apps على cdn.com.tr.

الإعدادات والأسرار

لا تُضمّن ملف .env داخل الصورة أبدًا ولا تودِع الأسرار في Git. بل اضبط إعدادات Laravel كمتغيّرات بيئة (وأسرار) على المنصّة، لتعمل الصورة نفسها بأمان في الإنتاج. وكحدّ أدنى ستضبط مفتاح التطبيق، والبيئة، واتصالات قاعدة البيانات وRedis المُدارتين.

قيم البيئة التي تُضبط على المنصّة

APP_ENV=production
APP_KEY=base64:...        # php artisan key:generate --show
APP_DEBUG=false
APP_URL=https://app.example.com

DB_CONNECTION=mysql
DB_HOST=<managed-db-host>
DB_DATABASE=<db>
DB_USERNAME=<user>
DB_PASSWORD=<secret>

CACHE_STORE=redis
SESSION_DRIVER=redis
REDIS_HOST=<managed-redis-host>

أضِف Dockerfile

أضِف Dockerfile إلى جذر مستودعك. يثبّت هذا المثال اعتماديات Composer ويخدم التطبيق على المنفذ 8000. ويُبقي خادم Laravel المدمج المثالَ بسيطًا؛ وللزيارات الكثيفة، بدّل السطر الأخير إلى Laravel Octane (FrankenPHP أو Swoole) أو استخدم منصّة PHP المُدارة بدلًا من ذلك.

Dockerfile

FROM php:8.2-cli

# PHP extensions Laravel commonly needs
RUN apt-get update && apt-get install -y libzip-dev \
 && docker-php-ext-install pdo_mysql zip opcache

# Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

WORKDIR /app
COPY . .
RUN composer install --no-dev --optimize-autoloader --no-interaction

EXPOSE 8000
CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]

انشر من Git

من لوحة cdn.com.tr، أنشئ تطبيق حاوية واربط مستودع Git الخاص بك. تقرأ المنصّة ملف Dockerfile، وتبني الصورة، وتشغّل الحاوية. بعد ذلك، يصبح النشر مجرّد دفعٍ إلى فرعك — فكل دفعة تبني صورة جديدة وتطرحها دون أيّ توقّف.

أصدِر تغييرًا

git add .
git commit -m "Add invoices page"
git push origin main
# cdn.com.tr builds the image and rolls it out automatically

قاعدة البيانات المُدارة وRedis وعمليات الترحيل

أرفِق قاعدة بيانات مُدارة وRedis بأمر cdnctl واحد لكلٍّ منهما — فتوصّلان الاتصال إلى تطبيقك كمتغيّرات بيئة، فتُضبَط لك قيم .env من الخطوة 2. يمنح Redis لـ Laravel تخزينًا مؤقتًا سريعًا ومخزنًا للجلسات؛ وتكون قاعدة البيانات المُدارة محفوظة بنسخ احتياطية ويمكن الوصول إليها من التطبيق. ثم شغّل عمليات الترحيل عليها ضمن عملية النشر ليبقى المخطّط (schema) متزامنًا.

cdnctl — أضِف قاعدة بيانات وRedis، ثم رحّل
cdnctl accounts use <account_uuid>

cdnctl container addons enable-database --app <app_uuid> --url-scheme mysql
cdnctl container addons enable-redis    --app <app_uuid> --env-prefix REDIS

# run migrations against the managed database
php artisan migrate --force

النطاق وHTTPS والحافة

وجّه نطاقك إلى التطبيق، ويُصدِر cdn.com.tr شهادة SSL ويجدّدها تلقائيًا. يعمل تطبيق Laravel الآن خلف حافة CDN: تُخزَّن الأصول الثابتة مؤقتًا وتُخدَم قريبًا من الزوّار، ويرشّح WAF الزيارات الضارة، وتُمتَص موجات الذروة عند الحافة. وإن كنت تفضّل ألّا تدير Dockerfile إطلاقًا، فمنصّة PHP المُدارة تمنحك النتيجة نفسها — بيئة تشغيل PHP 8، وقاعدة بيانات وRedis مُدارتين، وHTTPS تلقائي وWAF — دون بناء صورة.

أين يناسب أكثر

تطبيقات SaaS والويب

شغّل Laravel مع قاعدة بيانات وRedis مُدارتين، وHTTPS تلقائي، وWAF، منشورًا مباشرةً من Git.

تحديث تطبيقات PHP القديمة

انقل تطبيق PHP قديمًا إلى PHP 8 على المنصّة المُدارة، خلف CDN وWAF، دون إعادة هندسته.

واجهات API والخلفيات

قدّم مسارات Laravel API كحاوية مُدارة مع فحوص صحّة، وأسرار، وتوجيه عند الحافة أمامها.

الأسئلة الشائعة حول نشر Laravel

هل أحتاج إلى Docker، أم يمكنني استخدام المنصّة المُدارة؟

أيّهما شئت. تشغّل منصّة PHP المُدارة Laravel دون Dockerfile — فتحصل على بيئة تشغيل PHP 8 مع قاعدة بيانات مُدارة، وRedis، وHTTPS، وWAF. أما مسار الحاوية فهو للفرق التي تريد تحكّمًا كاملًا في الصورة؛ وكلاهما يعمل خلف الحافة.

أين تعمل الطوابير والمجدوِل؟

شغّل مجدوِل Laravel وعمّال الطوابير كمهام مجدولة أو طويلة الأمد إلى جانب التطبيق، موجّهة إلى قاعدة البيانات/Redis المُدارة نفسها. وأبقِ الأسرار في متغيّرات البيئة لتتشارك كل عملية إعدادًا واحدًا.

كيف تعمل عمليات ترحيل قاعدة البيانات عند النشر؟

شغّل "php artisan migrate --force" على قاعدة البيانات المُدارة ضمن عملية النشر. ولأن البناء الفاشل يُبقي النسخة السابقة تخدم الزوّار، فإنك تتقدّم بأمان ويبقى مخطّطك متزامنًا مع الشيفرة.