Создание сайта на CMS Joomla с базой данных PostgreSQL с помощью консоли управления
- Подготовьте облако к работе
- Создайте и настройте облачную сеть
- Создайте виртуальную машину для Joomla
- Создайте и настройте публичную зону DNS
- Добавьте TLS-сертификат в Yandex Certificate Manager
- Создайте кластер БД PostgreSQL
- Настройте окружение на виртуальной машине
- Настройте Joomla
- Проверьте работу сайта
- Как удалить созданные ресурсы
Чтобы создать инфраструктуру для сайта на CMS Joomla с базой данных PostgreSQL c помощью консоли управления Yandex Cloud:
- Подготовьте облако к работе.
- Создайте и настройте облачную сеть.
- Создайте виртуальную машину для Joomla.
- Создайте и настройте публичную зону DNS.
- Добавьте TLS-сертификат в Yandex Certificate Manager.
- Создайте кластер БД PostgreSQL.
- Настройте окружение на виртуальной машине.
- Настройте Joomla.
- Проверьте работу сайта.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки сайта на Joomla входит:
- плата за постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud);
- плата за использование публичного IP-адреса (см. тарифы Yandex Virtual Private Cloud);
- плата за кластер БД PostgreSQL (см. тарифы Yandex Managed Service for PostgreSQL);
- плата за исходящий трафик из Yandex Cloud в интернет (см. тарифы Yandex Compute Cloud);
- плата за публичные DNS-запросы и зоны DNS (см. тарифы Yandex Cloud DNS).
Создайте и настройте облачную сеть
Создайте облачную сеть и подсети
-
Создайте облачную сеть:
- В консоли управления
выберите каталог, в котором вы будете создавать инфраструктуру. - В списке сервисов выберите Virtual Private Cloud.
- Справа сверху нажмите Создать сеть.
- В поле Имя укажите
joomla-network
. - В поле Дополнительно отключите опцию Создать подсети.
- Нажмите Создать сеть.
- В консоли управления
-
Создайте подсеть в зоне доступности
ru-central1-b
:- В открывшемся окне со списком сетей выберите вновь созданную сеть
joomla-network
. - На панели сверху нажмите
Создать подсеть. - В поле Имя укажите
joomla-subnet-b
. - В поле Зона выберите зону доступности
ru-central1-b
. - В поле CIDR укажите
192.168.1.0/24
. - Нажмите Создать подсеть.
- В открывшемся окне со списком сетей выберите вновь созданную сеть
-
Аналогичным образом создайте подсети
joomla-subnet-a
иjoomla-subnet-d
соответственно в зонах доступностиru-central1-a
иru-central1-d
. Для этих подсетей в поле CIDR укажите192.168.2.0/24
и192.168.3.0/24
.
Создайте группы безопасности
Создайте группы безопасности joomla-sg
и postgresql-sg
, которые будут использоваться для разграничения сетевого доступа к виртуальной машине и кластеру Yandex Managed Service for PostgreSQL.
-
Создайте группу безопасности
joomla-sg
для виртуальной машины:-
В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. -
В списке сервисов выберите Virtual Private Cloud.
-
На панели слева выберите
Группы безопасности и нажмите кнопку Создать группу безопасности. -
В поле Имя задайте имя
joomla-sg
. -
В поле Сеть выберите созданную ранее сеть
joomla-network
. -
В блоке Правила создайте следующие правила для управления трафиком:
Направление
трафикаОписание Диапазон портов Протокол Источник /
НазначениеCIDR блоки /
Группа безопасностиВходящий http
80
TCP
CIDR
0.0.0.0/0
Входящий https
443
TCP
CIDR
0.0.0.0/0
Входящий ssh
22
TCP
CIDR
0.0.0.0/0
Входящий self
Весь
Любой
Группа безопасности
Текущая
Исходящий any
Весь
Любой
CIDR
0.0.0.0/0
-
Нажмите Создать.
-
-
Аналогичным образом создайте группу безопасности
postgresql-sg
для кластера Managed Service for PostgreSQL со следующими правилами для трафика:Направление
трафикаОписание Диапазон портов Протокол Источник /
НазначениеCIDR блоки /
Группа безопасностиВходящий port-6432
6432
TCP
CIDR
192.168.1.0/24
Входящий self
Весь
TCP
Группа безопасности
Текущая
Исходящий any
Весь
Любой
CIDR
0.0.0.0/0
Зарезервируйте статический публичный IP-адрес
Зарезервируйте статический публичный IP-адрес для виртуальной машины, на которой будет размещен ваш сайт.
- В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. - В списке сервисов выберите Virtual Private Cloud.
- На панели слева выберите
IP-адреса и нажмите кнопку Зарезервировать адрес. - В открывшемся окне в поле Зона доступности выберите
ru-central1-b
и нажмите Зарезервировать.
Создайте виртуальную машину для Joomla
-
В консоли управления
на странице каталога, в котором вы создаете инфраструктуру, нажмите кнопку Создать ресурс и выберитеВиртуальная машина
. -
В блоке Образ загрузочного диска в поле Поиск продукта введите
Ubuntu 24.04
и выберите публичный образ Ubuntu 24.04 LTS. -
В блоке Расположение выберите зону доступности
ru-central1-b
. -
В блоке Сетевые настройки:
- В поле Подсеть выберите сеть
joomla-network
и подсетьjoomla-subnet-b
. - В поле Публичный IP-адрес выберите
Список
и в появившемся поле выберите зарезервированный ранее публичный IP-адрес. - В поле Группы безопасности выберите созданную ранее группу безопасности
joomla-sg
.
- В поле Подсеть выберите сеть
-
В блоке Доступ выберите вариант SSH-ключ и укажите данные для доступа на ВМ:
- В поле Логин введите имя пользователя:
yc-user
. -
В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.
Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
- Нажмите кнопку Добавить ключ.
- Задайте имя SSH-ключа.
- Загрузите или вставьте содержимое открытого SSH-ключа. Пару SSH-ключей для подключения к ВМ по SSH необходимо создать самостоятельно.
- Нажмите кнопку Добавить.
SSH-ключ будет добавлен в ваш профиль пользователя организации.
Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя создаваемой виртуальной машины.
- В поле Логин введите имя пользователя:
-
В блоке Общая информация задайте имя ВМ:
joomla-web-server
. -
Нажмите кнопку Создать ВМ.
Создание ВМ может занять несколько минут.
Создайте и настройте публичную зону DNS
Доменное имя, которое вы хотите использовать для сайта, нужно связать с IP-адресом созданной ВМ joomla-web-server
. Для управления доменом вы можете использовать сервис Yandex Cloud DNS.
Делегируйте доменное имя
Делегирование — это перенос ответственности с серверов регистратора на ваши серверы, при котором для домена создаются ресурсные записи типа NS.
Чтобы делегировать домен, в личном кабинете вашего регистратора домена укажите в настройках домена адреса DNS-серверов ns1.yandexcloud.net
и ns2.yandexcloud.net
.
Делегирование происходит не сразу. Серверы интернет-провайдеров обычно обновляют записи до 24 часов (86 400 секунд). Это обусловлено значением TTL, в течение которого кэшируются записи для доменов.
Проверить делегирование домена можно с помощью сервиса Whoisdig
:
dig +short NS example.com
Результат:
ns2.yandexcloud.net.
ns1.yandexcloud.net.
Создайте публичную зону DNS
-
В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. -
В списке сервисов выберите Cloud DNS и нажмите Создать зону.
-
Задайте настройки зоны, соответствующие вашему домену:
- Зона — доменная зона. Название зоны должно заканчиваться точкой. Например, название доменной зоны
example.com.
соответствует доменуexample.com
. Чтобы создать доменную зону с нелатинскими символами, используйте кодировку Punycode . - Тип —
Публичная
. - Имя —
joomla-zone
.
- Зона — доменная зона. Название зоны должно заканчиваться точкой. Например, название доменной зоны
-
Нажмите Создать.
Создайте ресурсную запись типа A
Создайте в вашей зоне DNS ресурсную запись типа A, указывающую на публичный IP-адрес созданной ранее ВМ:
-
В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. -
Выберите сервис Cloud DNS.
-
Выберите созданную ранее DNS-зону
joomla-zone
и нажмите Создать запись. -
Задайте параметры записи:
-
В поле Имя выберите
Совпадает с именем зоны (@)
. -
В поле Тип выберите тип записи
A
. -
В поле Значение укажите публичный IP-адрес созданной ранее ВМ с веб-сервером.
Узнать IP-адрес ВМ можно в консоли управления
на странице ВМ в блоке Сеть.
-
-
Нажмите Создать.
Добавьте TLS-сертификат в Yandex Certificate Manager
Создайте новый сертификат от Let's Encrypt® для вашего домена, чтобы ваш сайт был доступен по защищенному TLS-протоколу:
-
Добавьте новый сертификат в сервис Certificate Manager:
Консоль управления- В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. - В списке сервисов выберите Certificate Manager.
- Нажмите Добавить сертификат и выберите
Сертификат от Let's Encrypt
. - В открывшемся окне в поле Имя укажите
joomla-cert
. - В поле Домены укажите имя вашего домена. Например:
example.com
. - Выберите тип проверки прав на домен —
DNS
. - Нажмите Создать.
- В консоли управления
-
Для успешного выпуска сертификата пройдите проверку прав на домен:
Консоль управления- В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. - В списке сервисов выберите Certificate Manager.
- В списке сертификатов выберите
joomla-cert
. - В открывшемся окне в блоке Проверка прав на домены выберите
CNAME-запись
. - В секции ниже нажмите Создать запись и в открывшемся окне нажмите Создать.
Проверка прав на домены может занять от нескольких минут до нескольких дней — дождитесь ее успешного завершения. В результате сертификат будет выпущен и перейдет в статус
Issued
. - В консоли управления
Создайте кластер БД PostgreSQL
- В консоли управления
на странице каталога, в котором вы создаете инфраструктуру, нажмите кнопку Создать ресурс и выберитеКластер PostgreSQL
. - В поле Имя кластера введите имя кластера —
joomla-pg-cluster
. - В поле Версия выберите версию СУБД —
17
. - В блоке Класс хоста выберите подходящий вам класс хоста.
- В блоке Размер хранилища укажите
10 ГБ
. - В блоке База данных укажите:
- Имя БД —
joomla_db
. - Имя пользователя —
joomla
. - В поле Пароль выберите
Ввести вручную
и задайте пароль, который вы будете использовать для доступа к БД.
- Имя БД —
- В блоке Сетевые настройки выберите созданные ранее сеть
joomla-network
и группу безопасностиpostgresql-sg
. - В блоке Хосты добавьте дополнительные хосты так, чтобы в каждой зоне доступности было по одному хосту. При создании хостов не включайте для них Публичный доступ.
- Нажмите кнопку Создать кластер.
Создание кластера БД может занять несколько минут.
Настройте окружение на виртуальной машине
На этом этапе вы подготовите окружение на виртуальной машине для запуска и настройки Joomla.
-
Экспортируйте TLS-сертификат
joomla-cert
на локальный компьютер:Консоль управления- В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. - В списке сервисов выберите Certificate Manager и выберите сертификат
joomla-cert
. - На панели сверху нажмите
Экспортировать сертификат, выберите вариантСертификат без приватного ключа
и нажмите Скачать сертификат. На ваш компьютер будет скачан файл с сертификатомcertificate.pem
. - Повторите предыдущее действие и скачайте закрытый ключ, выбрав вариант
Только приватный ключ
. Переименуйте скачанный файл с закрытым ключом вprivate_key.pem
. - Сохраните скачанные файлы
certificate.pem
иprivate_key.pem
— они понадобятся при настройке веб-сервера.
- В консоли управления
-
Скопируйте на ВМ полученные сертификат и закрытый ключ:
scp ./certificate.pem yc-user@<IP-адрес_ВМ>:certificate.pem \ && scp ./private_key.pem yc-user@<IP-адрес_ВМ>:private_key.pem
Где
<IP-адрес_ВМ>
— публичный IP-адрес созданной ранее ВМjoomla-web-server
.Узнать IP-адрес ВМ можно в консоли управления
на странице ВМ в блоке Сеть.При первом подключении к ВМ появится предупреждение о неизвестном хосте:
The authenticity of host '51.250.**.*** (51.250.**.***)' can't be established. ED25519 key fingerprint is SHA256:PpcKdcT09gjU045pkEIwIU8lAXXLpwJ6bKC********. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])?
Введите в терминале слово
yes
и нажмите Enter. -
Подключитесь к ВМ по SSH:
ssh yc-user@<IP-адрес_ВМ>
-
Создайте директорию для сертификата и перенесите в нее скопированные файлы:
sudo mkdir /etc/ssl-certificates sudo mv certificate.pem /etc/ssl-certificates/ sudo mv private_key.pem /etc/ssl-certificates/
-
Обновите версии пакетов, установленные на ВМ:
sudo apt update && sudo apt upgrade -y
-
Установите и запустите Apache HTTP-сервер
:sudo apt install apache2 sudo systemctl start apache2 && sudo systemctl enable apache2
-
Установите PHP
c необходимыми библиотеками:sudo apt install php libapache2-mod-php php-common php-pgsql php-xml php-mbstring php-curl php-zip php-intl php-json unzip
-
Скачайте и распакуйте пакет Joomla:
Примечание
В примере приведена ссылка на скачивание версии Joomla
5.2.4
, актуальной на момент написания данного руководства. Уточнить наличие более новой версии и получить ссылку на скачивание вы можете на сайте проекта.wget https://downloads.joomla.org/cms/joomla5/5-2-4/Joomla_5-2-4-Stable-Full_Package.zip -O Joomla.zip sudo rm /var/www/html/index.html sudo unzip Joomla.zip -d /var/www/html rm Joomla.zip
-
Настройте разрешения на доступ к директории с сайтом:
sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html
-
Измените номер порта по умолчанию, использующийся Joomla для доступа к базам данных PostgreSQL: в Yandex Managed Service for PostgreSQL используется порт
6432
.-
Откройте файл настроек драйверов доступа к базам данных Joomla:
sudo nano /var/www/html/libraries/vendor/joomla/database/src/Pdo/PdoDriver.php
-
Найдите в файле раздел с настройками баз данных PostgreSQL и замените номер порта c
5432
на6432
:... case 'pgsql': $this->options['port'] = $this->options['port'] ?? 6432; ...
Не забудьте сохранить внесенные изменения.
-
-
Настройте виртуальный хост для вашего сайта:
-
Создайте файл конфигурации виртуального хоста:
sudo nano /etc/apache2/sites-available/joomla.conf
-
Поместите в созданный файл следующую конфигурацию:
<VirtualHost *:80> ServerAdmin admin@localhost DocumentRoot /var/www/html ServerName <имя_домена> <Directory /var/www/html> Options FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/joomla_http_error.log CustomLog ${APACHE_LOG_DIR}/joomla_http_access.log combined </VirtualHost> <VirtualHost *:443> ServerAdmin admin@localhost DocumentRoot /var/www/html ServerName <имя_домена> ErrorLog ${APACHE_LOG_DIR}/joomla_ssl_error.log CustomLog ${APACHE_LOG_DIR}/joomla_ssl_access.log combined SSLEngine on SSLCertificateFile /etc/ssl-certificates/certificate.pem SSLCertificateChainFile /etc/ssl-certificates/certificate.pem SSLCertificateKeyFile /etc/ssl-certificates/private_key.pem </VirtualHost>
Где
<имя_домена>
— доменное имя вашего сайта. Например:example.com
.
-
-
Активируйте созданный виртуальный хост и перезапустите веб-сервер:
sudo a2ensite joomla.conf sudo a2enmod rewrite sudo a2enmod ssl sudo systemctl restart apache2
Настройте Joomla
-
Получите имена хостов кластера Managed Service for PostgreSQL, они потребуются в процессе установки Joomla:
Консоль управления- В консоли управления
выберите каталог, в котором находится кластер, и в списке сервисов выберите Managed Service for PostgreSQL. - Выберите кластер
joomla-pg-cluster
и перейдите на вкладку Хосты. - Наведите указатель мыши на поле FQDN хоста в строке с каждым из хостов и нажмите значок
, чтобы скопировать FQDN хоста. Сохраните скопированные значения — они понадобятся позднее.
- В консоли управления
-
Установите и настройте Joomla:
-
Откройте в браузере мастер установки и настройки Joomla. На этом этапе он должен быть доступен по любому из адресов:
http://<публичный_IP-адрес_ВМ>
http://<имя_вашего_домена>
https://<имя_вашего_домена>
-
При настройке параметров базы данных заполните поля:
-
Тип базы данных —
PostgreSQL (PDO)
. -
Имя хоста:
<имя_хоста_1>,<имя_хоста_2>,<имя_хоста_3>
Где
<имя_хоста_1>
,<имя_хоста_2>
,<имя_хоста_3>
— FQDN-имена хостов кластера Managed Service for PostgreSQL, скопированные на предыдущем шаге. -
Имя пользователя базы данных —
joomla
. -
Пароль пользователя базы данных — пароль пользователя БД, заданный при создании кластера PostgreSQL.
-
Имя базы данных —
joomla_db
. -
Шифрование соединения — оставьте значение по умолчанию.
-
-
В качестве проверки безопасности Joomla может попросить вас создать или удалить определенный тестовый файл в директории установки продукта на ВМ. Перейдите в директорию
/var/www/html/installation/
и создайте или удалите там указанный файл:Вы пытаетесь использовать хост базы данных, который недоступен на локальном сервере. Вам необходимо подтвердить право собственности на учетную запись на хостинге. Пожалуйста, ознакомьтесь с информацией на странице Защищенная процедура установки Joomla. Для подтверждения права собственности на сайт, пожалуйста, удалите файл _JoomlazUZKusLnD2jXi********.txt в каталоге installation и нажмите "Установить Joomla" для продолжения.
-
-
После завершения установки удалите директорию
installation
на ВМ. Это требование безопасности Joomla:sudo rm -rf /var/www/html/installation
Если в процессе установки Joomla у вас возникли трудности, воспользуйтесь инструкцией
Проверьте работу сайта
После завершения установки Joomla введите в браузере IP-адрес или доменное имя вашего сайта, чтобы проверить его работу:
http://<публичный_IP-адрес_ВМ>
http://example.com
https://example.com
Теперь вы можете приступить к дальнейшей настройке вашего сайта и наполнению его контентом с помощью административного интерфейса и инструментов Joomla.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
- Удалите виртуальную машину
joomla-web-server
. - Удалите статический публичный IP-адрес.
- Удалите кластер Managed Service for PostgreSQL
joomla-pg-cluster
. - Удалите DNS-записи, затем удалите DNS-зону
joomla-zone
. - Удалите TLS-сертификат
joomla-cert
. - Удалите группы безопасности
joomla-sg
иpostgresql-sg
. - Удалите подсети
joomla-subnet-a
,joomla-subnet-b
иjoomla-subnet-d
. - Удалите облачную сеть
joomla-network
.