RE:NODE

Веб-хостинг11 мин чтения

Хостинг Joomla: установка, configuration.php, обновления

Хостинг Joomla 6 или 5.4: требования, ручная установка, настройки configuration.php, SEF URL на nginx, расширения, кэширование, задачи по расписанию и безопасные обновления.

0 прочтений

Joomla 6 нужны PHP 8.3 или новее (рекомендуется 8.4), база данных MySQL 8.0.13+, MariaDB или PostgreSQL, memory_limit PHP 256 МБ и обычный набор расширений PHP. Установка - классическая процедура для PHP: загрузить один архив, распаковать его в корне сайта, создать пустую базу данных и пройти браузерный установщик, который сам напишет configuration.php. При обычном подключении вся работа занимает пятнадцать минут.

Проблемы потом возникают в другом: URL, дружественные к поисковикам, на nginx, где .htaccess от Joomla ничего не делает; расширения, установленные откуда попало по ссылке из поиска; настройки кэширования и сессий, оставленные по умолчанию и не подходящие сайту; и обновления, применённые без backup. В этом руководстве мы выполним установку, а затем как следует разберём каждый из этих пунктов.

Joomla 6 или Joomla 5.4#

Joomla 6.0 и 5.4 вышли одновременно в октябре 2025 года. Joomla 6 - текущая мажорная версия; 5.4 - последняя в серии 5, перешедшей в режим поддержки. Согласно опубликованной дорожной карте проекта, Joomla 5 получает исправления ошибок до октября 2026 года и исправления безопасности до октября 2027 года - прежде чем строить на этом планы, уточните актуальные даты на joomla.org.

Для нового сайта устанавливайте Joomla 6. Используйте 5.4, только если расширение, без которого вы не можете обойтись, ещё не обновлено для 6, и запланируйте переход. Переход с 5.4 на 6 - это обновление на месте через компонент Joomla Update, как только Pre-Update Check сообщит, что ваши расширения совместимы; он гораздо меньше, чем был скачок с Joomla 3 на 4.

Требования Joomla 6 со страницы официальных технических требований:

ПрограммаМинимумРекомендуется
PHP8.3.08.4
MySQL8.0.138.4
MariaDB10.4 (поддерживается 10.6)12.0
PostgreSQL12.0 (поддерживается 14.0)17.6
nginxподдерживается 1.261.29
Apache2.42.4

Обязательные расширения PHP - json, simplexml, dom, zlib, gd и одно из mysqlnd, pdo_mysql или pdo_pgsql; рекомендуется mbstring. Руководство рекомендует memory_limit не меньше 256 МБ. Поднимите также upload_max_filesize и post_max_size примерно до 32-64 МБ, иначе установка крупного пакета расширения упадёт с невнятной ошибкой. Где лежат эти настройки, описано в статье важные настройки php.ini.

Ресурсов нужно умеренно. Небольшой сайт на Joomla спокойно работает с 1 ГБ памяти; сайту с конструктором страниц, расширением магазина и вошедшими участниками нужно 2 ГБ. На диске сама Joomla занимает около 100 МБ плюс изображения и архивы backup, которые вы держите на сервере, - а маленькие диски заполняют как раз архивы backup.

Перед началом: база данных и версия PHP#

Сначала создайте базу данных. На большинстве хостингов Joomla сама её не создаёт; ей нужна существующая пустая база и пользователь с полными правами на неё. Запишите хост, порт, имя базы, пользователя и пароль.

В RE:NODE линейка, рассчитанная на такие CMS, как Joomla, - это тарифы Engines, и на каждом есть два слота баз данных, которые создаются из панели со сгенерированными хостом, пользователем и паролем. Кнопка Open in phpMyAdmin выполняет вход по одноразовому токену, который истекает через шестьдесят секунд, так что вы можете убедиться, что база на месте и пуста, не вводя пароль в форму. Joomla вы устанавливаете сами - установщика в один клик нет, а значит, никто другой не решает, когда меняется ваша версия.

Прежде чем что-то скачивать, проверьте, какая версия PHP на самом деле работает на вашем тарифе: файл с содержимым <?php phpinfo();, открытый один раз в браузере и затем удалённый, показывает версию, загруженные расширения и действующий memory_limit. На PHP 8.2 Joomla 6 устанавливаться откажется.

Установка Joomla#

  1. Скачайте полный пакет с downloads.joomla.org, никогда не со сторонних зеркал. Подменённый архив CMS - самый прямой способ начать жизнь сайта уже взломанным.
  2. Загрузите zip в корень сайта и распакуйте его на месте. Файловый менеджер, распаковывающий на стороне сервера, превращает несколько тысяч мелких файлов в одну загрузку. По SFTP загружайте zip и распаковывайте его в файловом менеджере, а не загружайте распакованное дерево. Оба способа описаны в статье SFTP и файловый менеджер.
  3. Откройте сайт. Установщик запустится автоматически. Выберите язык и задайте название сайта.
  4. Создайте Super User. Не admin; длинный сгенерированный пароль; настоящий адрес почты, которую вы читаете.
  5. Настройки базы данных. Тип MySQLi или MySQL (PDO) для MySQL и MariaDB, PostgreSQL (PDO) для PostgreSQL. Хост, пользователь, пароль и имя базы - из вашей панели. Оставьте случайный префикс таблиц, который предлагает установщик.
  6. Если попросят, докажите, что сайт ваш. Когда хост базы данных отличается от localhost, Joomla создаёт в папке installation файл со случайным именем, начинающимся с _Joomla, и просит удалить его, прежде чем продолжить. Это не даёт тому, кто нашёл недоделанную установку, направить её на собственную базу. Удалите файл в файловом менеджере и снова нажмите Install.
  7. Завершите. Последний экран предлагает открыть сайт или панель администратора. Убедитесь, что после этого папки installation нет; если она осталась, удалите её.

Панель администратора находится по адресу /administrator. Войдите, перейдите в System, затем Global Configuration, и пройдитесь по настройкам ниже, прежде чем добавлять какой-либо контент.

configuration.php и Global Configuration#

Всё, что вы задаёте в Global Configuration, хранится в configuration.php в корне сайта в виде свойств PHP-класса. Файл можно править напрямую - это полезно, когда неверная настройка заблокировала вам вход в панель администратора, - но сначала сделайте его доступным для записи, правьте аккуратно и затем снова сделайте его доступным только для чтения.

configuration.php
public $sitename = 'Example';public $offline = false;public $dbtype = 'mysqli';public $host = 'db.example.internal:3306';public $user = 'joomla_site';public $password = 'from-the-panel';public $db = 'joomla';public $dbprefix = 'x7k2q_';public $secret = 'generated-at-install';public $live_site = '';public $force_ssl = 2;public $sef = true;public $sef_rewrite = true;public $tmp_path = '/path/to/site/tmp';public $log_path = '/path/to/site/administrator/logs';public $error_reporting = 'none';public $debug = false;public $caching = 0;public $cache_handler = 'file';public $lifetime = 30;public $session_handler = 'database';public $behind_loadbalancer = true;

Важные из них:

  • `host` принимает имя хоста с портом после двоеточия, если база работает не на порту по умолчанию. Как и в любой CMS на PHP, localhost верен, только когда база запущена на той же машине.
  • `secret` генерируется при установке и используется в хэшировании и токенах. Не копируйте его между сайтами, но сохраняйте при переносе сайта.
  • `force_ssl`: 0 - нигде, 1 - только панель администратора, 2 - весь сайт. Используйте 2, когда HTTPS заработал, и не раньше: включение на сайте без сертификата блокирует вам вход, и исправить это можно только правкой этого файла.
  • `tmp_path` и `log_path` - абсолютные пути. После переноса сайта на новый сервер они - классическая причина ошибок «не удаётся установить расширение», потому что всё ещё указывают на каталоги старого сервера. Обновляйте их после каждого переезда.
  • `error_reporting`: none или simple в продакшене. maximum или development - только на время отладки, потому что эти режимы показывают посетителям пути и запросы.
  • `lifetime` - срок жизни сессии в минутах, по умолчанию 15. Администраторы, уставшие от постоянных выходов из системы, увеличивают его; разумно 30-60.
  • `behind_loadbalancer`, в интерфейсе Behind Load Balancer на вкладке Server, велит Joomla доверять X-Forwarded-For и X-Forwarded-Proto. Включайте, когда перед сайтом стоит обратный прокси, завершающий TLS, иначе Joomla видит каждого посетителя как прокси и может строить URL http:// на сайте с HTTPS.

SEF URL на nginx#

URL, дружественные к поисковикам (Search Engine Friendly), состоят из двух частей. sef превращает index.php?option=com_content&view=article&id=12 в index.php/my-article. sef_rewrite убирает index.php/ - а для этого веб-сервер должен отправлять неизвестные пути в index.php.

Для Apache Joomla поставляет правила в htaccess.txt; переименуйте его в .htaccess. nginx игнорирует .htaccess, а эквивалент для него такой:

nginx
location / {    try_files $uri $uri/ /index.php?$args;}

Если вы включили Use URL Rewriting и все страницы, кроме главной, возвращают 404, этого правила нет. На управляемом хостинге вы можете не иметь права сами править конфигурацию nginx: проверьте, включив rewrite и открыв статью, - если она загрузилась, правило уже есть. Если нет, оставьте sef_rewrite выключенным (URL сохранят сегмент index.php/, но будут работать) и обратитесь к хостингу. Следующий шаг - домен и сертификат перед сайтом; в RE:NODE слот прокси выпускает и продлевает сертификат автоматически, как только ваша A-запись указывает на него, а сторона DNS описана в статье ваш домен и его сертификат.

Расширения: как устанавливать их безопасно#

Типы расширений Joomla - компоненты, модули, плагины, шаблоны и языковые пакеты, и все они устанавливаются через System, затем Install, затем Extensions - загрузкой пакета, из папки, по URL или через вкладку Install from Web, которая открывает каталог Joomla Extensions Directory.

Правила, которые сохраняют сайт на Joomla сопровождаемым:

  • Устанавливайте только от разработчика или из JED. «Бесплатные» копии коммерческих расширений с сайтов загрузок - самый частый источник бэкдоров на сайтах Joomla.
  • Проверяйте дату последнего обновления и совместимость с Joomla 6 перед установкой. Расширение, последний раз обновлявшееся три года назад, заблокирует ваше следующее мажорное обновление.
  • Меньше расширений, но лучше. Каждое - это код, который выполняется на каждой странице, и обновление, которое вам придётся применять.
  • Коммерческие расширения используют ключи загрузки. Введите ключ в System, затем Update Sites, иначе расширение не сможет обновляться само.
  • Удаляйте, а не отключайте то, чем больше не пользуетесь. Отключённый код всё ещё на диске и всё ещё уязвим, если в нём есть дыра, доступная напрямую.

Расширение для backup - то, что большинству сайтов стоит добавить в первый же день. Давний выбор - Akeeba Backup: он архивирует файлы и базу данных вместе, а сопутствующий скрипт Kickstart восстанавливает архив на пустом сервере. Храните архивы вне сервера - backup на том же диске, что и сайт, пропадёт вместе с ним. Почему проверка восстановления важнее самого backup, объясняет статья backup, из которого действительно можно восстановиться.

Кэширование, сессии и задачи по расписанию#

В Joomla два отдельных уровня кэширования, и оба по умолчанию выключены:

  • Conservative или Progressive caching в Global Configuration, затем System, кэширует вывод модулей и компонентов. Conservative - безопасный выбор; Progressive кэширует для каждого посетителя отдельно и может занимать много места на диске.
  • Плагин System - Page Cache кэширует страницы целиком для гостей. Большой выигрыш для анонимного трафика, но исключайте страницы с формами и всё персонализированное, а на магазинах держите его выключенным.

Настройки Cache Handler и Session Handler показывают только те бэкенды, которые поддерживает ваша установка PHP. File и database есть всегда. Redis появляется, когда загружено расширение phpredis, и работает с Valkey без изменений, потому что Valkey говорит на том же протоколе. Перенос сессий и кэша на сервер Valkey снимает с базы нагрузку по записи на загруженных сайтах; на небольших сайтах обработчика database достаточно. Если варианта Redis в списке нет, расширение не установлено, и никакая настройка его не добавит.

Task Scheduler в Joomla, в разделе System, затем Scheduled Tasks, выполняет задачи вроде очистки сессий, отправки писем из очереди, уведомлений об обновлениях и проверок сайта. Запускается он одним из трёх способов: Lazy Scheduler, который выполняет подошедшие задачи во время обычных посещений страниц (по умолчанию, подходит для небольших сайтов); URL веб-cron с секретным ключом, который запрашивает внешний планировщик; или CLI командой php cli/joomla.php scheduler:run там, где есть shell. Если его ничто не запускает, задачи молча никогда не выполняются. Более широкий список - в статье задачи по расписанию, которые стоит завести.

Обновления#

В Joomla 5.4 и 6.0 появились автоматические обновления ядра. В свежей установке Joomla 6 функция включена по умолчанию; на сайте, обновлённом с Joomla 5, она изначально выключена, и её нужно включить в компоненте Joomla Update. Она применяет выпуски с исправлениями ошибок и безопасности (например, с 6.0.0 на 6.0.1) и присылает Super Users письмо с результатом. Она зависит от того, может ли служба обновлений Joomla достучаться до вашего сайта, поэтому на локальных копиях для разработки не работает.

Для мажорных и минорных обновлений, а также для каждого обновления расширений порядок должен быть таким:

  1. Сделайте полный backup и убедитесь, что он завершился.
  2. Прочитайте примечания к выпуску, особенно у расширений, которые меняют структуру базы данных.
  3. Для мажорных версий запустите Pre-Update Check; каждое расширение должно сообщать о совместимости.
  4. Сначала обновите ядро, затем расширения, через System, затем Update.
  5. Очистите кэш и проверьте сайт, вход и любую форму.
  6. Загляните в System, затем Manage, затем Database. Если там сообщается о проблемах структуры, кнопка Fix исправит расхождения схемы, оставшиеся после прерванного обновления.

Устранение неполадок#

«Error connecting to the database» при установке. Неверный хост или учётные данные. Проверьте их в phpMyAdmin; если там они работают, разница обычно в поле хоста - localhost там, где нужно было имя хоста, или отсутствующий порт.

«JFolder::create: Could not create folder» или расширения не устанавливаются. tmp_path указывает на каталог, которого нет или который недоступен для записи, обычно после переезда.

404 на всех страницах, кроме главной. Rewrite URL включён, а правила на сервере нет.

Вход заблокирован после включения Force HTTPS. Верните force_ssl в 0 в configuration.php, исправьте сертификат и включите снова.

«The most recent request was denied because it had an invalid security token». Сессия истекла; обновите страницу и войдите снова. Если это происходит постоянно, увеличьте lifetime или проверьте, что хранилище обработчика сессий работает.

Белая страница. Фатальная ошибка PHP при выключенном выводе ошибок. Ненадолго задайте error_reporting равным maximum, воспроизведите, прочитайте сообщение и верните как было.

FAQ#

Joomla всё ещё поддерживается?

Да. Joomla 6.0 вышла в октябре 2025 года с автоматическими обновлениями ядра, и проект регулярно выпускает минорные версии и обновления безопасности. Экосистема расширений у неё меньше, чем у WordPress, зато встроенные возможности солидные: многоязычный контент, уровни доступа и пользовательские поля прямо в ядре.

Сколько ресурсов нужно Joomla?

Небольшой сайт работает на 1 ГБ памяти и половине ядра CPU. Сайту с конструктором страниц, расширением магазина или большим числом вошедших участников нужно 2 ГБ. memory_limit PHP должен быть 256 МБ, как рекомендует руководство Joomla.

Можно ли перенести сайт на Joomla на новый хостинг?

Да. Скопируйте файлы и экспортируйте базу данных, импортируйте её на новом сервере, затем обновите учётные данные базы, tmp_path и log_path в configuration.php. Расширение для backup со скриптом восстановления делает то же самое за меньшее число шагов. Половина, касающаяся базы данных, описана в статье импорт и экспорт в phpMyAdmin.

Стоит ли использовать обработчик кэша Redis с Valkey?

На загруженном сайте - да: он снимает с базы запись кэша и сессий. Ему нужно расширение phpredis. На небольшом сайте файловый кэш и сессии в базе проще и вполне достаточны.

Что лучше, Joomla или WordPress?

Зависит от сайта. Ядро Joomla умеет многоязычные сайты и детальные уровни доступа без расширений; у WordPress гораздо больше экосистема тем и плагинов. Что для чего подходит, разобрано в статье сравнение WordPress, Drupal и Joomla.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000