Drupal (AlmaLinux 8)

Drupal (AlmaLinux 8)

  • Операционна система: almalinux 8

Описание

Drupal е безплатна система за управление на съдържанието с отворен код, която дава възможност на потребителите да създават и управляват уеб сайтове, блогове и други онлайн приложения. Тя е написана на PHP и е базирана на Symfony PHP framework. Drupal е известен с гъвкавостта и скалируемостта си, което го прави популярен избор за сайтове от всички размери, от малки лични блогове до големи уеб сайтове.

Включен софтуер

Пакет Версия
Drupal latest
Docker 3.20.10
Docker compose 2.12.2
containerd.io 1.6.10

Първоначално стартиране на услугата

Това приложение използва Docker, за да осигури по-бързо стартиране на прилежащия софтуер (Drupal) и директно започване на употребата му. По този начин се елиминира нуждата от запознаване със спецификите му по отношение на конфигурация и инсталация. За да започнете директна работа с приложението, единственото, което трябва да направите е да посетите IP адреса, който е назначен за виртуалната Ви машина в бразура си, за да видите новата си Drupal инсталация.

Забележка: По подразбиране, Drupal може да се достъпи директно по IP адрес. За да започнете да използвате Drupal с реалния си домейн, първо трябва да насочите въпросния домейн към IP адреса си и да промените настройките за това от къде се отваря Drupal през неговия административен панел.

Бързи настройкии и често задавани въпроси

  • Входът в клауд услугата се извършва посредством SSH ключ или парола, която сте посочили.
  • Docker е инсталиран според препоръките от официалната docker документация.
  • Стандартните команди docker и docker compose са вече достъпни в това приложение.
  • При първо стартиране на виртуалната машина, отнема няколко минути, преди да се стартира Docker контейнер, съдържащ Drupal.
  • Drupal data е настроена да бъде persistent и се намира в /opt/drupal/data/. MariaDB също е persistent и съхранява базите си данни в /opt/mariadb/data/.
  • Потребителят за достъп до Drupal административния панел е admin, а паролата е P@ssw0rd!

Използване на собствен SSL сертификат

В това приложение, което осигурява целия нужен софтуерен стек, нужен за да задвижи Drupal, е включен и уебсървър Apache. Ако желаете да ползвате собствен SSL сертификат, то моля, прочетете как да направите тези настройки в документацията ни за Apache за AlmaLinux 8.

Допълнителни настройки при Docker

Допълнителнителните настройки за Drupal, които можете да променяте и които се контролират директно от Docker са зададени като променливи стойности в конфигурационния файл /opt/docker-drupal/docker-compose.yml:

Забележка: След промяна на която и да е от стойностите, трябва да пресъздадете Docker контейнерите, върху който работи приложението. За повече информация, моля, прочетете секцията за пресъздаване на Docker контейнери.

Drupal конфигурационни опции

Потребителски и сайт конфигурация

  • DRUPAL_PROFILE: Тип на Drupal профила. Default: standard
  • DRUPAL_SITE_NAME: Drupal име на сайта. Default: My blog
  • DRUPAL_SKIP_BOOTSTRAP: Да се пропусне ли първоначалната инициализация на сайта. Default: no
  • DRUPAL_ENABLE_MODULES: Списък с модули, разделени със запетая или интервал за първоначална инициализация. Без default.
  • DRUPAL_USERNAME: Drupal потребителско име. Default: admin
  • DRUPAL_PASSWORD: Drupal потребителска парола. Default: P@ssw0rd!
  • DRUPAL_EMAIL: Drupal електронна поща. Default: user@example.com
  • DRUPAL_CONFIG_SYNC_DIR: Drupal папка за синхронизиране на конфигурацията. Използва се само ако DRUPAL_SKIP_BOOTSTRAP опцията е включена. Без default.
  • DRUPAL_HASH_SALT: Drupal низ, който се използва при генериране на случайни стойнсти. Използва се само ако DRUPAL_SKIP_BOOTSTRAP опцията е включена. Без default.

Конфигурация на бази данни

  • DRUPAL_DATABASE_HOST: Име на хост за MariaDB база данни. Default: mariadb
  • DRUPAL_DATABASE_PORT_NUMBER: Порт за връзка с MariaDB база данни. Default: 3306
  • DRUPAL_DATABASE_NAME: Име на базата данни. Default: bitnami_drupal
  • DRUPAL_DATABASE_USER: Потребителско име за връзка с базата данни. Default: bn_drupal
  • DRUPAL_DATABASE_PASSWORD: Парола за връзка с базата данни. Без default.
  • DRUPAL_DATABASE_TLS_CA_FILE: TLS CA сертификат за комуникация с базата данни. Без default.
  • ALLOW_EMPTY_PASSWORD: Използва се за да се разреши връзка с празна парола. Default: no

PHP конфигурационни опции

  • PHP_ENABLE_OPCACHE: Включване на OPcache за PHP. Без default.
  • PHP_EXPOSE_PHP: Показване на HTTP header в PHP. Без default.
  • PHP_MAX_EXECUTION_TIME: Максимално време за изпълнение на PHP скриптовете. Без default.
  • PHP_MAX_INPUT_TIME: Maximum input време за PHP скриптовете. Без default.
  • PHP_MAX_INPUT_VARS: Максимален брой променливи PHP скриптовете. Без default.
  • PHP_MEMORY_LIMIT: Лимит на паметта за PHP скриптовете. Default: 256М
  • PHP_POST_MAX_SIZE: Максимален размер на PHP POST заявки. Без default.
  • PHP_UPLOAD_MAX_FILESIZE: Максимален обем за качване на файлове за PHP PHP скриптовете. Без default.

SMTP конфигурация. По подразбиране не е конфигурирано

  • DRUPAL_SMTP_HOST: SMTP хост.
  • DRUPAL_SMTP_PORT: SMTP порт.
  • DRUPAL_SMTP_USER: SMTP потребител.
  • DRUPAL_SMTP_PASSWORD: SMTP парола.
  • DRUPAL_SMTP_PROTOCOL: SMTP протокол. (standard, tls, ssl).

SSL сертификати

Използване на собствени (платени) SSL сертификати

Ако вече разполагате с готови, валидни сертификати, трябва да направите няколко модификации върху конфигурацията, преди да можете да ги използвате. За да постигнете това, моля следвайте следните стъпки:

Стъпка 1 - поставяне на сертификатите

Създайте директория, където сертификатите ще се съхраняват:

mkdir /opt/certs/

Копирайте сертификатите в директорията, която създадохте току-що и модифицирайте техните права:

chown 1001:1001 /opt/certs/ -R

Стъпка 2 - модифицирайте Docker конфигурацията

Отворете docker конфигурационния файл /opt/docker-drupal/docker-compose.yml с текстов редактор и намерете следния фрагмент:

  drupal:
    image: docker.io/bitnami/drupal:10
    ports:
      - '80:8080'
      - '443:8443'
    environment:
      - DRUPAL_DATABASE_HOST=mariadb
      - DRUPAL_DATABASE_PORT_NUMBER=3306
      - DRUPAL_DATABASE_USER=bn_drupal
      - DRUPAL_DATABASE_NAME=bitnami_drupal
      - ALLOW_EMPTY_PASSWORD=yes
      - DRUPAL_USERNAME=admin
      - DRUPAL_PASSWORD=P@ssw0rd!
    volumes:
      - '/opt/drupal/data/:/bitnami/drupal'
    depends_on:
      - mariadb
    restart: unless-stopped

Редактирайте го, така че да изглежда по следния начин:

  drupal:
    image: docker.io/bitnami/drupal:10
    ports:
      - '80:8080'
      - '443:8443'
    environment:
      - DRUPAL_DATABASE_HOST=mariadb
      - DRUPAL_DATABASE_PORT_NUMBER=3306
      - DRUPAL_DATABASE_USER=bn_drupal
      - DRUPAL_DATABASE_NAME=bitnami_drupal
      - ALLOW_EMPTY_PASSWORD=yes
      - DRUPAL_USERNAME=admin
      - DRUPAL_PASSWORD=P@ssw0rd!
    volumes:
      - '/opt/drupal/data/:/bitnami/drupal'
      - '/opt/certs/cert.pem:/opt/bitnami/apache/conf/bitnami/certs/server.crt'
      - '/opt/certs/privkey.pem:/opt/bitnami/apache/conf/bitnami/certs/server.key'
    depends_on:
      - mariadb
    restart: unless-stopped

Обърнете внимание, че /opt/certs/cert.pem е пътя до сертификата, а /opt/certs/privkey.pem е пътя до частния ключ. Можете да именувате файловете и директоряита както пожелаете, но трябва да са посочени правилно в конфигурацията

Стъпка 3 - рестартирайте Docker контейнерите

cd /opt/docker-drupal/
docker compose up -d

Издаване на сертификати с Letsencrypt

Ако желаете, винаги можете да издадете и безплатни сертификати от Letsencrypt. За целта, моля следвайте следните стъпки:

Стъпка 1 - инсталиране на нужните пакети

Влезте в сървъра си, като добиете root права и изпълнете следните команди:

dnf install -y epel-release
dnf install -y certbot

Стъпка 2 - издаване на сертификата

Моля имайте предвид, че за да бъде издаден безплатен сертификат, то е нужно да можете да верифицирате по някакъв начин собствеността на домейна си. Letsencrypt предоставя няколко възможности за верификация на домейните ви, в този пример ще използваме верификация чрез стартиране на временен уеб сървър.

За целта, спрете временно контейнера с командата docker stop docker-drupal-drupal-1. Важно: Изпълнявайки тази стъпка, сайтът ви ще спре да работи временно. Уверете се, че искате да изпълните това действие във време, когато най-малко ще афектира потребителите ви.

Издайте сертификата с командата certbot certonly --standalone --preferred-challenges http -d example.com, като замените "example.com" с домейна, който сте насочили към IP адреса на Cloud сървъра си.

Стъпка 3 - поставете новите сертификати в конфигурацията

Отворете docker конфигурационния файл /opt/docker-drupal/docker-compose.yml с текстов редактор и намерете следния фрагмент:

  drupal:
    image: docker.io/bitnami/drupal:10
    ports:
      - '80:8080'
      - '443:8443'
    environment:
      - DRUPAL_DATABASE_HOST=mariadb
      - DRUPAL_DATABASE_PORT_NUMBER=3306
      - DRUPAL_DATABASE_USER=bn_drupal
      - DRUPAL_DATABASE_NAME=bitnami_drupal
      - ALLOW_EMPTY_PASSWORD=yes
      - DRUPAL_USERNAME=admin
      - DRUPAL_PASSWORD=P@ssw0rd!
    volumes:
      - '/opt/drupal/data/:/bitnami/drupal'
    depends_on:
      - mariadb
    restart: unless-stopped

Редактирайте го, така че да изглежда по следния начин:

  drupal:
    image: docker.io/bitnami/drupal:10
    ports:
      - '80:8080'
      - '443:8443'
    environment:
      - DRUPAL_DATABASE_HOST=mariadb
      - DRUPAL_DATABASE_PORT_NUMBER=3306
      - DRUPAL_DATABASE_USER=bn_drupal
      - DRUPAL_DATABASE_NAME=bitnami_drupal
      - ALLOW_EMPTY_PASSWORD=yes
      - DRUPAL_USERNAME=admin
      - DRUPAL_PASSWORD=P@ssw0rd!
    volumes:
      - '/opt/drupal/data/:/bitnami/drupal'
      - '/etc/letsencrypt/live/example.com/cert.pem:/opt/bitnami/apache/conf/bitnami/certs/server.crt'
      - '/etc/letsencrypt/live/example.com/privkey.pem:/opt/bitnami/apache/conf/bitnami/certs/server.key'
    depends_on:
      - mariadb
    restart: unless-stopped

С тази модификация оказвате, че "свързвате" външните сертификати, издадени от Letsencrypt с конфигурацията, която се намира вътре в docker контейнера. Заменете "example.com" с името на домейна си. След като подмените конфигурацията, е нужно да поправите правата на сертификатите с командата chown 1001:1001 /etc/letsencrypt/archive/example.com/ -R, като отново замените "example.com" с името на домейна си.

Стъпка 4 - стартиране на услугите

Тъй като временно е спрян docker контейнера, то трябва да се приложи новата конфигурация и да го стартираме. Моля изпълнете следните команди:

cd /opt/docker-drupal/
docker compose up -d

Стъпка 5 (опционално) - автоматично подновяване на сертификата

Автоматичното подновяване може да бъде организирано чрез cron. Можете да зададете следната cron конфигурация, за да се случи автматичното подновяване:

# Automated Letsencrypt renewal
0 0 * * * /usr/bin/certbot renew --pre-hook 'docker stop docker-drupal-drupal-1' --post-hook 'chown 1001:1001 /etc/letsencrypt/archive/example.com/ -R; docker start docker-drupal-drupal-1'

Разбира се, можете да промените времето на изпълнение, когато пожелаете. В горният пример, тази задача ще се изпълнява всеки ден в 00:00 часа.

Работа с Docker

Организацията на това приложение е осъществена изцяло посредством Docker. По този начин можем да Ви предоставим готови приложения по-бързо. Освен това, конфигурацията им е по-гъвкава и е доста контролируема. За да можете да го контролирате това приложение обаче, е нужно да знаете някои базови Docker функционалности и особености.

Рестартиране на всички услуги

Рестартирането на базата данни и Docker контейнера, който съдържа самия Drupal, заедно с останалия софтуер, може да бъде извършено по два начина:

  1. Чрез рестартиране на цялата виртуална машина
  2. Рестартиране на Docker контейнерите, което е по-бързия вариант. За целта, достъпете машината си чрез SSH, и изпълнете следните команди:
sudo su -
cd /opt/docker-drupal
docker compose restart

Пресъздаване на Docker контейнери

Пресъздаването може да се наложи, в случай че сме променяли конфигурацията в docker-compose.yml. При тази ситуация, трябва да следвате следните стъпки:

cd /opt/docker-drupal/
docker compose stop
docker compose up -d

Проверка на статуса на Docker приложението

За да направите проверка, трябва да изпълните следните команди:

sudo su -
docker ps -a

Моля, обърнете внимание на колоната STATUS. Тя трябва да показва от колко време работи услугата, например Up X minutes. Ако статуса е Restarting, то трябва да се провери какво не е наред с приложението. В такъв случай, можете да направите проверка, като проследите логовете на приложението по следния начин:

  1. Вземете името на приложението, което можете да видите в колоната NAMES от изходния код на командата docker ps -a. Вижте логовете с командата docker logs <NAME>, Където е името на контейнера.

Промяна на настройки

Описаните настройки в секцията Допълнителни настройки при Docker могат да бъдат нагласяни в docker-compose.yml файла. Пътят до него е описан отново в тази секция. За да промените настройка, отворете конфигурационния файл и обърнете внимание на секцията environment, намираща се под drupal. Всяка една конфигурационна опция трябва да бъде описана на нов ред с тире отпред по следния примерен начин:

    environment:
      - DRUPAL_EMAIL=user@example.com
      - DRUPAL_SITE_NAME=My awesome blog

Моля, обърнете внимание, че трябва да се спазва и правилната индентация (брой празно място), тъй като това е важно за конфигурационни файлове от тип yaml.