Как установить Ghost CMS через Docker на сервер с панелью управления Plesk

Andy Wits Blog

Как установить Ghost CMS через Docker на сервер с панелью управления Plesk

Когда я пытался установить Ghost на сервер с панелью Plesk, столкнулся с проблемой. По умолчанию Plesk использует 10.6.16-MariaDB, а Ghost требует MySQL, а не MariaDB. Поэтому необходимо установить Ghost CMS через Docker.

Ниже приведены основные шаги.

1. Расширения Plesk и Домен

  1. Установите расширение "Docker" для Plesk: https://YOURSERVER:8443/modules/catalog/index.php/catalog/package/docker

  2. Создайте домен через панель Plesk и настройте SSL через Let's Encrypt.

  3. Установите расширение "Nginx" для Plesk (если ещё не установлено): https://YOURSERVER:8447/installer/add_components.html

  4. Проверьте раздел "Web hosting" > "Nginx web server and reverse proxy server".

  5. Запустите службу Nginx: https://YOURSERVER:8443/admin/services/list

2. Установка контейнера Docker с MySQL

  1. Перейдите в меню Docker: https://YOURSERVER:8443/modules/docker/index.php/index/list?context=extNavButton_docker_1
  2. В поисковой строке введите "Mysql" и нажмите Enter.
  3. Найдите "Mysql" с тегом [OFFICIAL], нажмите на стрелку рядом и выберите последнюю версию.
  4. Это загрузит образ и перенаправит вас на следующую страницу.

3. Настройка контейнера Docker с MySQL

  1. Название контейнера: выберите любое, желательно связанное с вашим сайтом. Например, "mysql8_container".
  2. Поставьте галочку "Automatic start after system reboot".
  3. Снимите галочку "Automatic port mapping".
  4. Ручное отображение портов: 3306 на внешний 3006, 33060 на 33060.
  5. Укажите root-пароль MySQL через "Add variable" (например):
    MYSQL_ROOT_PASSWORD == SomeSecurePhrase
    
  6. Нажмите "OK" для продолжения.

4. Настройка базы данных MySQL

  1. Подключитесь к консоли MySQL через SSH:

    mysql -u root -p -P3006
    
  2. Выполните следующие команды для создания пользователя и базы данных для Ghost CMS:

    CREATE DATABASE exampledb;
    CREATE USER 'exampledbu'@'%' IDENTIFIED BY 'ExampleSecretPhrase';
    GRANT ALL ON exampledb.* TO 'exampledbu'@'%';
    FLUSH PRIVILEGES;
    EXIT (ctrl + D)
    

5. Установка контейнера Docker с Ghost

  1. Перейдите в меню Docker: https://YOURSERVER:8443/modules/docker/index.php/index/list?context=extNavButton_docker_1
  2. В поисковой строке введите "Ghost" и нажмите Enter.
  3. Найдите "ghost" с тегом [OFFICIAL], нажмите на стрелку рядом и выберите последнюю версию (например, 5.0.0 или аналогичную, но не выбирайте "latest" или "5.x.x-alpine").
  4. Это загрузит образ и перенаправит вас на следующую страницу.

6. Настройка контейнера Docker с Ghost

  1. Название контейнера: выберите любое, связанное с вашим сайтом. Например, "ghost_examplecom_container".

  2. Поставьте галочку "Automatic start after system reboot".

  3. Снимите галочку "Automatic port mapping".

  4. Ручное отображение портов: 2368 на внешний 32778.

  5. Отображение папок:

    • Контейнер: /var/lib/ghost/content
    • Хост: /var/ghost/ghost_examplecom_container/content (замените ghost_examplecom_container на название вашего контейнера).
  6. Внизу страницы нажмите "Add Variable".

  7. Введите "url" в первом поле и ваш URL (например, "https://example.com" во втором поле (убедитесь, что этот домен зарегистрирован и добавлен в Plesk).

    Убедитесь, что база данных уже создана.

  8. Добавьте данные базы данных:

    database__client - mysql
    database__connection__host - 172.17.0.2 (ваш IP внутренней сети Docker)
    database__connection__user - exampledbu
    database__connection__password - "ExampleSecretPhrase"
    database__connection__database - exampledb
    database__connection__port - 3306
    
  9. Нажмите "OK" и дождитесь завершения установки.

P.S. Чтобы получить доступ к базе данных MySQL из одного контейнера в другой, решений не нашлось…

Но при проверке сети Docker было обнаружено: 172.17.0.2 - mysql8_container с открытым портом 3306 172.17.0.1 - ghost_examplecom_container

Используем это!

7. Настройки для проксирования запросов с домена к контейнеру

Перейдите в "Websites & Domains" и найдите ваш сайт, нажмите на "Docker Proxy Rules".

Нажмите "Add Rule" URL: оставьте пустым Container: выберите ваш контейнер Port: должно быть указано 2368 -> 32778 Нажмите "OK"

9. Вопросы:

  1. Как получить доступ к файлам, если я хочу импортировать темы или другой контент? Подключитесь через SSH к вашему серверу (FTP не подойдёт) /var/ghost/ghost_examplecom_container/content/

  2. Что, если я хочу запустить второй или третий блог на Ghost в Plesk? Повторите шаги выше, изменив:

    • Название контейнера
    • Порт: измените его с 32778 на 32779
  3. Что, если я хочу разместить блог на example.com/blog? Укажите это в URL на странице настройки. А при добавлении правила на странице "Docker Proxy Rules", укажите "blog" в поле "URL".

  4. Как перенести сайт на поддомен или с поддомена на основной домен? Перейдите в "Docker Proxy Rules" и удалите старое правило. Перейдите в "Docker" слева, нажмите "Settings" рядом с контейнером и измените URL. Скорее всего, это перезапустит контейнер. Повторно добавьте "Docker Proxy Rules" для нового домена.

10. Полезные ссылки:

  1. https://ghost.org/docs/install/
  2. https://padraig.blog/how-to-install-ghost-5-on-plesk-obsidian/
  3. https://docs.plesk.com/en-US/obsidian/administrator-guide/plesk-administration/using-docker.75823/
  4. https://www.plesk.com/kb/support/how-to-proxy-requests-from-domains-to-docker-container-in-plesk/
Published on May 01 2024 at 5:07 am
Time to read 2 minute(s)
Categories
  • System Administration

Contact me on