type: install
version: 1.7.3
id: drupal
name: Drupal
logo: images/Drupal.png
homepage: https://new.drupal.org/home

baseUrl: https://raw.githubusercontent.com/jelastic-jps/drupal/master/
mixins:
- configs/vers.yaml

categories:
- apps/cms
- apps/popular
- apps/content-management

globals:
  ADMIN_PASS: "${fn.password}"
  DB_PASS: "${fn.password(10)}"
  APACHE_PATH: "/var/www/"
  LOG_FILE: "/install_drupal.log"

description: Drupal is an open-source content management platform that enables users to create and manage various websites and web applications.

nodes:
- cloudlets: 16
  nodeType: apache2
  engine: php8.3
  
- cloudlets: 8
  nodeType: mysql8

onInstall:
- cmd[sqldb]: |-
    MYSQL_PWD=${nodes.mysql8.password} mysql -uroot -e "CREATE DATABASE drupal;"
    MYSQL_PWD=${nodes.mysql8.password} mysql -uroot -e "CREATE USER 'drupal'@'%' IDENTIFIED BY '${globals.DB_PASS}';"
    MYSQL_PWD=${nodes.mysql8.password} mysql -uroot -e "GRANT ALL PRIVILEGES ON drupal.* To 'drupal'@'%' WITH GRANT OPTION;"
- cmd [cp]: |-
    echo "extension=gd.so;
    mbstring.encoding_translation = 0;
    zend_extension=/usr/lib64/php/modules/opcache.so;" > /etc/php.d/drupal-php.ini
- restartNodes:
    nodeGroup: cp
- cmd [cp]:
  - rm -rf ${SERVER_WEBROOT}/ROOT
  - wget -O drush.phar https://github.com/drush-ops/drush-launcher/releases/latest/download/drush.phar
  - chmod +x drush.phar

- cmd [cp]: |-
    sudo mv /var/www/drush.phar /usr/local/bin/drush
  user: root

- cmd [cp]: |-    
    curl -fsSL "https://getcomposer.org/installer" -o ${globals.APACHE_PATH}/installer 2>&1 1>>${globals.APACHE_PATH}${globals.LOG_FILE} && php installer 2>&1 1>>${globals.APACHE_PATH}${globals.LOG_FILE}
    composer create-project drupal/legacy-project:${globals.version_drupal} ${SERVER_WEBROOT}/ROOT
    cd /var/www/webroot/ROOT/
    rm -rf vendor
    composer config allow-plugins.composer/installers true
    composer config allow-plugins.drupal/core-composer-scaffold  true
    composer config allow-plugins.drupal/core-project-message true
    composer config allow-plugins.drupal/core-vendor-hardening true    
- cmd [cp]: cd /var/www/webroot/ROOT/ && composer require drush/drush 2>&1 1>>${globals.APACHE_PATH}${globals.LOG_FILE} && vendor/bin/drush -y si standard --db-url='mysql://drupal:${globals.DB_PASS}@${nodes.sqldb.address}/drupal' --site-name="Jelastic Drupal" --account-name="admin" --account-pass="${globals.ADMIN_PASS}" --account-mail="${user.email}" 2>&1 1>>${globals.APACHE_PATH}${globals.LOG_FILE}
- cmd [cp]:
  - echo "\$settings['trusted_host_patterns'] = array( '^${env.domain}$', '^www\.${env.domain}$', );" >> /var/www/webroot/ROOT/sites/default/settings.php
  - chown apache:apache /var/spool/clientmqueue
  user: root

success: |
  Use the following credentials to access the Drupal admin panel:

  **Admin panel URL:** [${env.protocol}://${env.domain}/](${env.protocol}://${env.domain}/)  
  **Admin name:** admin  
  **Admin password:** ${globals.ADMIN_PASS}  
  
  To add a custom domain name for your Drupal installation, follow the steps described in our [documentation](https://www.virtuozzo.com/application-platform-docs/custom-domains/).