تشغيل Drupal 8 على Pivotal Cloud Foundry
سيساعدك هذا الدليل على تشغيل Drupal 8 على Pivotal Cloud Foundry (PCF). PCF هو أداة تساعدك على تشغيل التكامل المستمر على سحابتك الخاصة. باستخدام PCF، يمكنك بسهولة بدء بيئات التطوير الجديدة والمشاريع الجديدة من خلال استخدام واجهة المستخدم الرسومية القوية.
هذا مثال على تطبيق Drupal 8 الذي يمكن تشغيله على Pivotal Cloud Foundry باستخدام PHP Build Pack. يعتمد تثبيت Drupal على قالب Composer لمشاريع Drupal. يمكن العثور على وثائق البناء الرسمية في http://docs.cloudfoundry.org/buildpacks/php/index.html
قالب PCF لـ DRUPAL 8
الخطوة الأولى ستكون استنساخ قالبنا لتطبيق Drupal 8 مع Composer من الرابط التالي: https://github.com/softescu/pcf-drupal-8
git clone git@github.com:softescu/pcf-drupal-8.git pcf-drupal-8
القالب يحتوي على الدلائل التالية:
- .bp-config يحتوي على تكوين PHP و Httpd
- .extensions يحتوي على امتدادات غير أساسية (MySQL و Drush)
- drush هذا المجلد مطلوب لتثبيت امتداد Drush
- htdocs هذا المجلد سيكون دليل الويب للتطبيق، يحتوي على: وحدات مخصصة، موضوعات مخصصة، ملفات تعريف مخصصة، الخ.
- mysql هذا المجلد مطلوب لتثبيت امتداد MySQL
- scripts يحتوي على فئة قابلة للتحميل التلقائي لـ composer
ميزات القالب
في وقت كتابة هذا المنشور، يوفر قالب PCF Drupal 8 الميزات التالية:
- PHP الإصدار 7.0.26
- Drush الإصدار 8.1.15
- MySQL Client الإصدار 5.7.20
- Drupal الإصدار 8.4.3
- Drupal Simple OAuth الإصدار 3.0
- Drupal s3fs الإصدار ^3.0@alpha
- استخدام S3 bucket لتخزين الملفات
- تثبيت OAuth في Drupal
PHP الامتدادات والوحدات:
- OP Cache
- Gzip output
- MySQLnd (MySQL Native Driver)
- MySQLi (MySQL Improved Extension)
- PDO
- PDO_MYSQL (MySQL Functions)
- Session
- cURL
- MbString (Multibyte String)
- ImageMagick (Image Processing)
كيفية نشر DRUPAL 8 إلى PCF؟
يفترض هذا الدليل أنك قد قمت بالفعل بتثبيت Pivotal Cloud Foundry وتشغيله. الخطوة الأولى ستكون استنساخ قالبنا لتطبيق Drupal 8 مع Composer بواسطة:
git clone git@github.com:softescu/pcf-drupal-8.git pcf-drupal-8
تحتاج إلى إنشاء مثيل خدمة MySQL في PCF.
cf create-service p-mysql <plan name> drupal-8-pcf-db
قم بدفعه إلى CloudFoundry.
cf push
تكوين DRUPAL 8
بمجرد انتهاء الأمر “cf push”، يتم دفع مستودعك إلى تطبيق PCF المستهدف. يتم تثبيت الاعتمادات اللازمة لـ Drupal تلقائيًا مع Composer.
يمكنك معرفة المزيد حول كيفية إدارة الاعتمادات composer داخل حاوية PCF linux من هنا.
سيتم تثبيت Drupal داخل دليل الويب الخاص بك htdocs. سيتم وضع وحدات Contrib (الحزم من نوع drupal-module) في htdocs/modules/contrib/. سيتم وضع موضوع Contrib (الحزم من نوع drupal-theme) في htdocs/themes/contrib/. سيتم وضع ملفات تعريف Contrib (الحزم من نوع drupal-profile) في htdocs/profiles/contrib/. يتم إنشاء دليل htdocs/sites/default/files تلقائيًا.
بمجرد انتهاء الدفع الأولي، يجب أن تستمر وتنهي تثبيت Drupal عن طريق الوصول إلى اسم نطاق التطبيق الخاص بك واتباع معالج تثبيت D8.
تكوين SIMPLE OAUTH
قالبنا يحتوي بالفعل على الوحدات اللازمة لتشغيل OAuth مع D8.
انتقل إلى /admin/config/people/simple_oauth واحفظ المسار إلى مفاتيحك. يتم إنشاء المفاتيح تلقائيًا في هذا الموقع /home/vcap/app/cert بواسطة امتداد oauth .extensions/oauth
يمكنك قراءة المزيد من المعلومات حول كيفية تكوين Simple OAuth.
تكوين نظام الملفات DRUPAL مع S3
يجب تخزين نظام الملفات في خدمة تخزين سحابة أمازون البسيطة (S3). يجب أن لا تكتب التطبيقات التي تعمل على Cloud Foundry الملفات إلى نظام الملفات المحلي للسبب التالي:
تخزين نظام الملفات المحلي قصير الأمد. عندما تتعطل نسخة التطبيق أو تتوقف، يستعيد النظام الموارد المخصصة لتلك النسخة بما في ذلك أي تغييرات في القرص المحلي تمت منذ بدء التطبيق. عند إعادة تشغيل النسخة، سيبدأ التطبيق بصورة قرص جديدة. على الرغم من أن التطبيق يمكنه كتابة ملفات محلية أثناء تشغيله، ستختفي الملفات بعد إعادة تشغيل التطبيق.
نظام الملفات Drupal S3 (s3fs) يوفر نظام ملفات إضافي لموقعك drupal، يخزن الملفات في خدمة التخزين البسيطة لأمازون (S3) أو أي خدمة تخزين متوافقة مع S3.
لتكوين وحدة Drupal s3fs، تحتاج إلى التفاصيل التالية حول خدمة AWS S3:
- مفتاح الوصول إلى خدمة الويب أمازون
- مفتاح السر لخدمة الويب أمازون
- اسم S3 Bucket
- منطقة S3
خطوات الإعداد:
- قم بإعداد بيانات الاعتماد الخاصة بك في صفحة تكوين Drupal لوحدة s3fs
/admin/config/media/s3fs
- قم بتكوين وجهة نظام الملفات Drupal في صفحة تكوين نظام الملفات
/admin/config/media/file-system
عن طريق اختيار خيار "خدمة التخزين البسيطة أمازون".
تكوين قاعدة بيانات DRUPAL لخدمة PCF MYSQL
يضيف Cloud Foundry تفاصيل الاتصال إلى متغير البيئة VCAP_SERVICES عند إعادة تشغيل التطبيق الخاص بك، بعد ربط نسخة الخدمة بتطبيقك. يتم إرجاع النتائج كمستند JSON يحتوي على كائن لكل خدمة يتم ربط واحدة أو أكثر من النسخ بها.
يمكن قراءة بيانات الاعتماد لقاعدة البيانات عن طريق تحليل كائن JSON المخزن في متغير البيئة VCAP_SERVICES.
مثال:
$services = getenv("VCAP_SERVICES"); $services_json = json_decode($services,true); $mysql_config = $services_json["p-mysql"][0]["credentials"];
لتوصيل تطبيق Drupal 8 الخاص بك، لقد قمنا بالفعل بالإعدادات في settings.php.
خيارات متقدمة لقالب PCF DRUPAL 8
تخصيص خصائص التطبيق
يوفر القالب العديد من الخيارات لتخصيص التطبيق الخاص بك مع ملف التكوين الظاهري: manifest.yml
name
سمة لتحديد الاسم لنسخة التطبيق الخاصة بكbuildpack
سمة لتحديد عنوان Github URL لـ PHP buildpackdisk_quota
سمة لتحديد مساحة القرص لنسخة التطبيق الخاصة بكmemory
سمة لتحديد الحد الأقصى للذاكرة لنسخة التطبيق الخاصة بكservices
سمة لتحديد قائمة الخدمات لنسخة التطبيق الخاصة بك
إضافة امتداد لـ PHP BUILDPACK
في CloudFoundry، الامتداد هو مجموعة من طرق Python التي سيتم استدعاؤها أثناء عملية التجهيز وسيتم تثبيت الحزم المعدة مسبقًا. لإنشاء امتداد، ما عليك سوى إنشاء مجلد في المجلد .extensions.
سيكون اسم المجلد هو اسم الامتداد. داخل المجلد الذي تم إنشاؤه حديثًا، أنشئ ملفًا يُسمى extension.py. سيحتوي هذا الملف على الكود الخاص بك. داخل هذا الملف، ضع طرق الامتداد الخاصة بك وأي كود مطلوب إضافي.
الامتدادات التالية موجودة بالفعل في ملف القالب الخاص بنا.
.extensions/drush
تثبيت وتكوين Drush داخل حاوية cflinuxfs2 Linux.extensions/mysql
تثبيت MySQL Client داخل حاوية cflinuxfs2 Linux.extensions/oauth
تثبيت أزواج المفاتيح المطلوبة لوحدة Simple OAuth Drupal
تكوينات PHP BUILDPACK المتقدمة
يمكن قراءة وثائق Pivotal Cloud Foundry (PCF) في تكوين PHP Buildpack من هنا. يقوم البناء بتجاوز ملف options.json الافتراضي بأي تكوين يجده في ملف .bp-config/options.json الخاص بالتطبيق.
سيضيف البناء أي ملفات .bp-config/php/fpm.d
يجدها في التطبيق إلى تكوين PHP-FPM. يمكن استخدام هذا لتغيير أي قيمة مقبولة لـ php-fpm.ini
سيضيف البناء أي ملفات .bp-config/php/php.ini.d/<file>.ini
يجدها في التطبيق إلى تكوين PHP. على سبيل المثال، يمكن استخدام هذا لتمكين امتدادات PHP أو ZEND
تكوين PHP لـ DRUPAL 8
يمكن العثور على قائمة بالإصدارات والامتدادات والوحدات المتاحة لـ PHP هنا.
بشكل افتراضي، يحتوي قالب Drupal 8 الخاص بنا في .bp-config/options.json
على الخيارات التالية:
- PHP الإصدار: 7.0.26
- PHP الامتدادات: bz2, curl, dba, gd, imagick, imap, mbstring, mysqli, opcache, openssl, pdo, pdo_mysql, pdo_odbc, sockets, xsl, zip, zlib
- PHP الوحدات: pear, fpm, cli
تكوين PHP Opcache
تمت إضافة تكوين PHP Opcache مع الإعدادات الموصى بها في php.ini هنا: .bp-config/php/php.ini.d/extra.ini
[opcache] opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1
تكوين PHP FastCGI
إعدادات تكوين PHP-FPM pool موجودة هنا: .bp-config/php/fpm.d/extra.conf
يمكن العثور على قائمة الأوامر العالمية php-fpm.conf
هنا
.
هذا كل شيء! اترك لنا تعليقًا على أي مشكلة تجدها!
