
Cum sa rulezi Drupal 8 pe Pivotal Cloud Foundry
Acest tutorial vă va ajuta să rulați Drupal 8 pe Pivotal Cloud Foundry (PCF). PCF este un instrument care vă ajută să rulați integrare continuă pe propriul cloud privat. Cu PCF puteți crea ușor noi medii de dezvoltare și noi proiecte prin utilizarea unei interfețe grafice puternice.
Acesta este un exemplu de aplicație Drupal 8 care poate fi rulată pe Pivotal Cloud Foundry folosind PHP Build Pack. Instalarea Drupal se bazează pe șablonul Composer pentru proiecte Drupal. Documentația oficială a buildpack-ului poate fi găsită la http://docs.cloudfoundry.org/buildpacks/php/index.html
ȘABLON PCF PENTRU DRUPAL 8
Primul pas va fi clonarea șablonului nostru pentru o aplicație Drupal 8 cu Composer de la următoarea adresă URL: https://github.com/softescu/pcf-drupal-8

git clone git@github.com:softescu/pcf-drupal-8.git pcf-drupal-8
Șablonul are următoarele directoare:
- .bp-config conține configurația PHP și Httpd
- .extensions conține extensii non-core (MySQL și Drush)
- drush acest folder este necesar pentru instalarea extensiei Drush
- htdocs acest folder va fi Directorul Web pentru aplicație, conține: module personalizate, teme personalizate, profiluri personalizate, etc.
- mysql acest folder este necesar pentru instalarea extensiei MySQL
- scripts conține o clasă ce poate fi încărcată automat pentru composer
CARACTERISTICILE ȘABLONULUI
La momentul scrierii acestei postări de blog, șablonul PCF Drupal 8 oferă următoarele caracteristici:
- PHP Versiunea 7.0.26
- Drush Versiunea 8.1.15
- MySQL Client Versiunea 5.7.20
- Drupal Versiunea 8.4.3
- Drupal Simple OAuth Versiunea 3.0
- Drupal s3fs Versiunea ^3.0@alpha
- Utilizarea bucket-ului S3 pentru stocarea fișierelor
- OAuth instalat în Drupal
Extensii și Module PHP:
- OP Cache
- Gzip output
- MySQLnd (MySQL Native Driver)
- MySQLi (MySQL Improved Extension)
- PDO
- PDO_MYSQL (Funcții MySQL)
- Session
- cURL
- MbString (Șir Multibyte)
- ImageMagick (Procesare Imagini)
CUM SĂ IMPLEMENTAȚI DRUPAL 8 PE PCF?
Acest tutorial presupune că aveți deja Pivotal Cloud Foundry instalat și rulând. Primul pas va fi clonarea șablonului nostru pentru o aplicație Drupal 8 cu Composer cu:
git clone git@github.com:softescu/pcf-drupal-8.git pcf-drupal-8
Trebuie să creați o instanță de serviciu MySQL în PCF.
cf create-service p-mysql <plan name> drupal-8-pcf-db
Trimiteți-l către CloudFoundry.
cf push
CONFIGURE DRUPAL 8
Once the “cf push” command has finished, your repo is pushed to your target PCF application. Drupal dependencies are automatically installed with Composer.
More about how composer dependencies are managed inside PCF linux container you can see here.
Drupal will be installed inside your web directory htdocs. Contrib Modules (packages of type drupal-module) will be placed in htdocs/modules/contrib/. Contrib Theme (packages of type drupal-theme) will be placed in htdocs/themes/contrib/. Contrib Profiles (packages of type drupal-profile) will be placed in htdocs/profiles/contrib/. The htdocs/sites/default/files directory is automatically created.
Once the initial push has been finished, you should continue and finish to install Drupal by accessing your application domain name and follow the D8 installation wizard.
CONFIGURE SIMPLE OAUTH
Our template already contains the modules necessary to run OAuth with D8.
Go to /admin/config/people/simple_oauth and save the path to your keys. Keys are generated automatically to this location /home/vcap/app/cert by the oauth extension .extensions/oauth
You can read more info how to configure Simple OAuth.
CONFIGURE DRUPAL FILE SYSTEM WITH S3
File system must be stored to Amazon Simple Cloud Storage Service (S3). Applications running on Cloud Foundry should not write files to the local file system for the following reason:
Local file system storage is short-lived. When an application instance crashes or stops, the resources assigned to that instance are reclaimed by the platform including any local disk changes made since the app started. When the instance is restarted, the application will start with a new disk image. Although your application can write local files while it is running, the files will disappear after the application restarts.
Drupal S3 File System (s3fs) provides an additional file system to your drupal site, which stores files in Amazon's Simple Storage Service (S3) or any other S3-compatible storage service.
To configure Drupal s3fs module the following details about AWS S3 Service are required:
- Amazon Web Service Access Key
- Amazon Web Service Secret Key
- S3 Bucket Name
- S3 Region
Setup steps:
- Setup your credentials in the Drupal configuration page for the s3fs module
/admin/config/media/s3fs
- Configure the Drupal File System destination in the File System configuration page
/admin/config/media/file-system
by choosing the “Amazon Simple Storage Service” option.
CONFIGURE DRUPAL DATABASE FOR PCF MYSQL SERVICE
Cloud Foundry adds connection details to the VCAP_SERVICES environment variable when you restart your application, after binding a service instance to your application. The results are returned as a JSON document that contains an object for each service for which one or more instances are bound to the application.
Database credentials can be readed by parsing JSON Object stored in VCAP_SERVICES environment variable.
Example:
$services = getenv("VCAP_SERVICES"); $services_json = json_decode($services,true); $mysql_config = $services_json["p-mysql"][0]["credentials"];
Pentru a conecta aplicația dvs. Drupal 8, am efectuat deja setările în settings.php.
OPȚIUNI AVANSATE PENTRU ȘABLONUL PCF DRUPAL 8
PERSONALIZAREA ATRIBUTELOR APLICAȚIEI
Șablonul oferă mai multe opțiuni pentru a personaliza aplicația dvs. cu fișierul de configurare manifest: manifest.yml
- atributul
name
pentru a specifica numele pentru instanța aplicației dvs. - atributul
buildpack
pentru a specifica URL-ul Github pentru buildpack-ul PHP - atributul
disk_quota
pentru a specifica spațiul pe disc pentru instanța aplicației dvs. - atributul
memory
pentru a specifica limita de memorie pentru instanța aplicației dvs. - atributul
services
pentru a specifica lista de servicii pentru instanța aplicației dvs.
ADĂUGAREA EXTENSIILOR PENTRU PHP BUILDPACK
În CloudFoundry, o extensie este un set de metode Python care vor fi apelate în timpul procesului de pregătire și vor instala pachete precompilate. Pentru a crea o extensie, pur și simplu creați un folder în directorul .extensions. Numele folderului va fi numele extensiei. În interiorul folderului nou creat, creați un fișier numit extension.py. Acel fișier va conține codul dvs. În interiorul acelui fișier, puneți metodele extensiei și orice cod suplimentar necesar. Următoarele extensii există deja în fișierul nostru șablon.
.extensions/drush
instalează și configurează Drush în interiorul containerului Linux cflinuxfs2.extensions/mysql
instalează Clientul MySQL în interiorul containerului Linux cflinuxfs2.extensions/oauth
instalează perechile de chei necesare pentru modulul Drupal Simple OAuth
CONFIGURAȚII AVANSATE PHP BUILDPACK
Documentația Pivotal Cloud Foundry (PCF) pentru Configurarea PHP Buildpack poate fi citită aici. Buildpack-ul suprascrie fișierul implicit options.json cu orice configurație găsită în fișierul .bp-config/options.json al aplicației dvs. Buildpack-ul va adăuga orice fișiere .bp-config/php/fpm.d
pe care le găsește în aplicație la configurația PHP-FPM. Acest lucru poate fi utilizat pentru a schimba orice valoare acceptabilă pentru php-fpm.ini
Buildpack-ul va adăuga orice fișiere .bp-config/php/php.ini.d/<file>.ini
pe care le găsește în aplicație la configurația PHP. De exemplu, acest lucru poate fi utilizat pentru a activa extensii PHP sau ZEND
CONFIGURAREA PHP PENTRU DRUPAL 8
O listă a versiunilor, extensiilor și modulelor PHP disponibile poate fi găsită aici. În mod implicit, șablonul nostru Drupal 8 conține în .bp-config/options.json
următoarele opțiuni:
- Versiunea PHP: 7.0.26
- Extensii PHP: bz2, curl, dba, gd, imagick, imap, mbstring, mysqli, opcache, openssl, pdo, pdo_mysql, pdo_odbc, sockets, xsl, zip, zlib
- Module PHP: pear, fpm, cli
CONFIGURAREA PHP OPCACHE
Configurarea PHP Opcache cu setările php.ini recomandate a fost adăugată aici: .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
CONFIGURAREA PHP FastCGI
Setările de configurare pentru pool-ul PHP-FPM se află aici: `.bp-config/php/fpm.d/extra.conf`
Lista directivelor globale `php-fpm.conf poate fi găsită aici
.