Drupal (AlmaLinux 8)

Drupal (AlmaLinux 8)

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

Описание

Този образ комбинира Drupal с AlmaLinux 8, за да започнете с готова за работа среда вместо ръчно първоначално конфигуриране. Оптимизиран е за управление на съдържание със структурирано публикуване, като същевременно запазва операционната система стабилна и лесна за поддръжка в дългосрочен план. Изберете този стек, когато искате да намалите времето за настройка, да стандартизирате инфраструктурата и да стартирате Drupal среди върху AlmaLinux 8 по-бързо.

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

Пакет Версия
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

Издаване на сертификати с Let's Encrypt

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

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

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

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

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

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

За целта, спрете временно контейнера с командата 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

С тази модификация оказвате, че "свързвате" външните сертификати, издадени от Let's Encrypt с конфигурацията, която се намира вътре в 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 конфигурация, за да се случи автоматичното подновяване:

# Автоматично подновяване на Let's Encrypt
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.