Сайт на базе Joomla с БД PostgreSQL
С помощью этой инструкции вы научитесь разворачивать сайт на базе CMS Joomla с базой данных под управлением СУБД PostgreSQL в инфраструктуре Yandex Cloud.
Чтобы настроить статический веб-сайт на Joomla:
- Создайте виртуальную машину для Joomla.
- Создайте кластер БД PostgreSQL.
- Установите Joomla и дополнительные компоненты.
- Настройте веб-сервер Apache2.
- Настройте Joomla.
- Загрузите файлы веб-сайта.
- Настройте DNS.
- Проверьте работу сайта.
Если сайт вам больше не нужен, удалите все используемые им ресурсы.
Подготовьте облако к работе
Перед работой нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт:
- Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
- На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе
ACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.
Подробнее об облаках и каталогах.
Убедитесь, что в выбранном каталоге есть сеть с подсетями в зонах доступности ru-central1-a
, ru-central1-b
и ru-central1-c
. Для этого на странице каталога выберите сервис Virtual Private Cloud. Если в списке есть сеть — нажмите на нее, чтобы увидеть список подсетей. Если нужных подсетей или сети нет, создайте их.
Необходимые платные ресурсы
В стоимость поддержки сайта на Joomla входит:
- плата за постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud);
- плата за использование динамического или статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud).
- плата за кластер БД PostgreSQL (см. тарифы Yandex Managed Service for PostgreSQL);
- стоимость исходящего трафика из Yandex Cloud в интернет (см. тарифы Yandex Compute Cloud).
Создайте виртуальную машину для Joomla
-
На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите Виртуальная машина.
-
В поле Имя введите имя ВМ —
joomla-pg-tutorial-web
. -
Выберите зону доступности, в которой будет находиться ВМ.
-
Выберите публичный образ CentOS Stream.
-
В блоке Вычислительные ресурсы:
- Выберите платформу.
- Укажите необходимое количество vCPU и объем RAM.
Для функционального тестирования хватит минимальной конфигурации:
- Платформа — Intel Ice Lake.
- Гарантированная доля vCPU — 20%.
- vCPU — 2.
- RAM — 1 ГБ.
-
В блоке Сетевые настройки выберите, к какой подсети необходимо подключить ВМ при создании.
-
Укажите данные для доступа на ВМ:
- В поле Логин введите имя пользователя.
- В поле SSH ключ вставьте содержимое файла открытого ключа.
Пару ключей для подключения по SSH необходимо создать самостоятельно. Для создания ключей используйте сторонние инструменты, например утилитыssh-keygen
в Linux и macOS или PuTTYgen в Windows.
-
Нажмите кнопку Создать ВМ.
Создание ВМ может занять несколько минут.
При создании ВМ назначаются IP-адрес и имя хоста (FQDN). Эти данные можно использовать для доступа по SSH.
Создайте кластер баз данных PostgreSQL
- На странице каталога нажмите кнопку Создать ресурс и выберите Кластер PostgreSQL.
- В поле Имя введите имя кластера —
joomla-pg-tutorial-db-cluster
. - В разделе Класс БД выберите b2.medium.
- В разделе Размер хранилища укажите 10 ГБ.
- В разделе База данных укажите:
- Имя БД —
joomla-pg-tutorial-db
. - Имя пользователя —
joomla
. - Пароль — пароль, который вы будете использовать для доступа к БД.
- Имя БД —
- В списке Сеть выберите сеть, к которой подключена ваша ВМ.
- В разделе Хосты добавьте еще два хоста в других зонах доступности. При создании хостов не включайте для них Публичный доступ.
- Нажмите кнопку Создать кластер.
Создание кластера БД может занять несколько минут.
Установите Joomla и дополнительные компоненты
После того как ВМ joomla-pg-tutorial-web
перейдет в статус RUNNING
, выполните:
-
В блоке Сеть на странице ВМ в консоли управления найдите публичный IP-адрес ВМ.
-
Подключитесь к ВМ по протоколу SSH. Для этого можно использовать утилиту
ssh
в Linux и macOS и программу PuTTY для Windows.Рекомендуемый способ аутентификации при подключении по SSH — с помощью пары ключей. Не забудьте настроить использование созданной пары ключей: закрытый ключ должен соответствовать открытому ключу, переданному на ВМ.
-
Скачайте и распакуйте архив с Joomla:
CentOS Streamsudo mkdir -p /var/www/html/ curl https://downloads.joomla.org/cms/joomla3/3-8-7/Joomla_3-8-7-Stable-Full_Package.tar.gz?format=gz -o Joomla_3-8-7-Stable-Full_Package.tar.gz -L sudo mv Joomla_3-8-7-Stable-Full_Package.tar.gz /var/www/html/ (cd /var/www/html/ && sudo tar -zxvf Joomla_3-8-7-Stable-Full_Package.tar.gz) sudo rm /var/www/html/Joomla_3-8-7-Stable-Full_Package.tar.gz sudo mv /var/www/html/htaccess.txt /var/www/html/.htaccess
-
Установите дополнительные компоненты:
CentOS Streamsudo dnf install epel-release sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm sudo yum -y install --enablerepo remi-modular httpd php php-pgsql php php-common php-mbstring php-zip php-xml nano wget php-json sudo dnf module enable postgresql:13 sudo dnf install postgresql-server
-
Получите и настройте использование SSL-сертификата:
CentOS Streamsudo mkdir ~apache/.postgresql sudo wget "https://crls.yandex.net/allCLCAs.pem" -O ~apache/.postgresql/root.crt sudo chmod 0600 ~apache/.postgresql/root.crt sudo chown -R apache:apache ~apache/.postgresql
Настройте веб-сервер Apache2
-
Выполните базовую настройку Apache2:
CentOS Streamsudo chown -R apache /var/www/html/
-
Задайте настройки виртуального хоста в конфигурационном файле Apache2. Вы можете отредактировать файл с помощью редактора
nano
:CentOS Streamsudo nano /etc/httpd/conf.d/joomla.conf
Приведите файл к виду:
<VirtualHost *:80 [::]:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html/ <Directory /var/www/html/> DirectoryIndex index.php index.html DirectorySlash off RewriteEngine on RewriteBase / AllowOverride all </Directory> </VirtualHost>
-
Перезапустите веб-сервер:
CentOS Streamsudo service httpd restart
-
Измените настройки:
CentOS Streamsudo restorecon -R /var/www/html sudo setsebool -P httpd_can_network_connect 1
Настройте Joomla
Настройте Joomla по инструкции на сайте проекта. В процессе настройки вам потребуются параметры подключения к БД.
-
Получите адреса хостов кластера БД в консоли управления:
- Откройте каталог, в котором создан кластер БД.
- Выберите сервис Managed Service for PostgreSQL.
- Выберите кластер
joomla-pg-tutorial-db-cluster
. - Откройте вкладку Хосты.
- В колонке Адрес (доменное имя) найдите адреса хостов.
-
На шаге Database в веб-установщике Joomla заполните поля:
-
Тип базы данных:
PostgreSQL
. -
Имя сервера базы данных:
<адрес хоста 1>,<адрес хоста 2>,<адрес хоста 3> port=6432 sslmode=verify-full target_session_attrs=read-write
-
Имя пользователя:
joomla
. -
Пароль: укажите пароль пользователя БД.
-
Имя базы данных:
joomla-pg-tutorial-db
.
-
-
Для проверки безопасности Joomla! может потребовать создать или удалить специальный тестовый файл. На ВМ перейдите в каталог
/var/www/html/installation
и создайте или удалите там указанный файл. -
Создайте пустой файл
configuration.php
для сохранения конфигурации и настройте права для записи в каталог:sudo touch /var/www/html/configuration.php sudo chmod 655 /var/www/html/configuration.php sudo chown -R apache:apache /var/www/html/ sudo restorecon -R /var/www/html
-
После завершения установки удалите директорию
Installation
. Это требование безопасности Joomla!:sudo rm -rf /var/www/html/Installation
Загрузите файлы веб-сайта
-
В блоке Сеть на странице ВМ в консоли управления найдите публичный IP-адрес ВМ.
-
Подключитесь к ВМ по протоколу SSH.
-
Выдайте права на запись для вашего пользователя на директорию
/var/www/html
:sudo chown -R "$USER":apache /var/www/html
-
Загрузите на ВМ файлы веб-сайта с помощью протокола SCP.
Linux/macOSWindowsИспользуйте утилиту командной строки
scp
:scp -r <путь до директории с файлами> <имя пользователя ВМ>@<IP-адрес виртуальной машины>:/var/www/html
С помощью программы WinSCP скопируйте локальную директорию с файлами в директорию
/var/www/html
на ВМ.
Настройте DNS
Доменное имя, которое вы хотите использовать для веб-сайта, нужно связать с IP-адресом созданной ВМ joomla-pg-tutorial-web
. Для управления доменом можно использовать сервис Cloud DNS.
В инструкции ниже описана настройка DNS для доменного имени example.com
.
Добавьте зону
Чтобы добавить публичную зону:
- Откройте раздел Cloud DNS в каталоге, где требуется создать зону DNS.
- Нажмите кнопку Создать зону.
- Задайте настройки зоны:
- Имя зоны:
example-zone-1
. - Зона:
example.com.
. Укажите ваш зарегистрированный домен. - Тип — Публичная.
- Имя зоны:
- Нажмите кнопку Создать.
Добавьте ресурсные записи
Создайте в публичной зоне записи DNS:
- В блоке Сеть на странице ВМ в консоли управления найдите публичный IP-адрес ВМ.
- Создайте запись типа А:
- Откройте раздел Cloud DNS в каталоге, где находится зона
example.com
. - Выберите зону
example.com
из списка. - Нажмите кнопку Создать запись.
- Задайте параметры записи:
- Имя: оставьте пустым.
- Тип записи: оставьте значение
А
. - TTL (время кэширования записи): оставьте значение по умолчанию.
- Значение: введите публичный адрес вашей ВМ.
- Нажмите кнопку Создать.
- Откройте раздел Cloud DNS в каталоге, где находится зона
- Создайте запись типа CNAME:
- Выберите зону
example.com
из списка. - Нажмите кнопку Создать запись.
- Задайте параметры записи:
- Имя:
www
. - Тип записи: выберите значение
CNAME
. - TTL (время кэширования записи): оставьте значение по умолчанию.
- Значение: введите
example.com
.
- Имя:
- Нажмите кнопку Создать.
- Выберите зону
Делегируйте доменное имя
Делегирование — это перенос ответственности с серверов регистратора на ваши серверы. Для домена создаются ресурсные записи типа NS (ns1.yandexcloud.net
и ns2.yandexcloud.net
).
Чтобы делегировать домен, укажите для него DNS-серверы в личном кабинете регистратора.
Делегирование происходит не сразу. Серверы интернет-провайдеров обычно обновляют записи до 24 часов (86400 секунд). Это обусловлено значением TTL, в течение которого кэшируются записи для доменов.
Проверить делегирование домена можно с помощью сервиса Whois или утилиты dig
:
dig +short NS example.com
Результат:
ns2.yandexcloud.net.
ns1.yandexcloud.net.
Проверьте работу сайта
Чтобы проверить работу сайта, введите в браузере его IP-адрес или доменное имя:
http://<публичный IP-адрес виртуальной машины>
.http://www.example.com
.
Как удалить созданные ресурсы
Чтобы перестать платить за развернутый сервер и БД, достаточно удалить созданную ВМ joomla-pg-tutorial-web
и кластер Managed Service for PostgreSQL joomla-pg-tutorial-db-cluster
.
Если вы зарезервировали статический публичный IP-адрес специально для этой ВМ:
- Откройте сервис Virtual Private Cloud в вашем каталоге.
- Перейдите на вкладку IP-адреса.
- Найдите нужный адрес, нажмите значок и выберите пункт Удалить.