Гид по технологиям

Установка Magento 2 с Varnish на Ubuntu 16.04

• 7 min read • DevOps • Обновлено 21 Nov 2025
Magento 2 с Varnish на Ubuntu 16.04
Magento 2 с Varnish на Ubuntu 16.04

Иллюстрация: установка Magento 2 с Varnish на Ubuntu

О чём эта инструкция

Это практическое руководство поможет системному администратору или разработчику развернуть Magento 2 на Ubuntu 16.04 и включить Varnish как кэш уровня страницы. Приведённые команды и конфигурации соответствуют среде Ubuntu 16.04 и PHP 7.0. В конце — разделы с рекомендациями по безопасности, проверками, устранению неполадок и вариантах для продакшена.

Важно: сохраняйте резервные копии конфигураций и данных перед изменениями на рабочих серверах.

Требования

  • Сервер с Ubuntu 16.04.
  • Установленные Apache, PHP и MariaDB (в дальнейшем — LAMP).
  • Непользователь root с правами sudo.
  • Доступ в интернет для загрузки пакетов и Composer.

Краткие определения

  • Magento 2: платформа электронной коммерции на PHP.
  • Varnish: HTTP-реверс-прокси и ускоритель для кеширования страниц.
  • VCL: конфигурационный язык Varnish (Varnish Configuration Language).

1 Подготовка системы

Перед установкой обновите пакеты ОС:

sudo apt-get update -y  
sudo apt-get upgrade -y

Перезагрузите сервер, если обновления включали ядро или системные библиотеки. Затем войдите под sudo-пользователем.

2 Установка LAMP и Varnish

Magento требует веб-сервер и PHP с расширениями. Установим Apache и Varnish:

sudo apt-get install apache2 varnish -y

Запустите и включите Apache:

sudo systemctl start apache2  
sudo systemctl enable apache2

Установите PHP 7.0 и необходимые расширения:

sudo apt-get install php7.0 libapache2-mod-php7.0 php7.0-mbstring php7.0-mysql php7.0-mcrypt php7.0-xsl php-imagick php7.0-gd php7.0-cli php-pear php7.0-intl php7.0-curl php7.0-zip php7.0-gd php7.0-soap php7.0-xml -y

Измените базовые настройки PHP (для CLI, при необходимости аналогично обновите php-fpm или Apache php.ini):

sudo nano /etc/php/7.0/cli/php.ini

В файле найдите и установите:

memory_limit = 512
upload_max_filesize = 128M
zlib.output_compression = on
max_execution_time = 15000

Сохраните изменения.

Примечание: значения можно адаптировать под размер магазина и доступную память. Для production-окружения проверяйте настройки и лимиты PHP-FPM, если используете php-fpm.

3 Установка и настройка MariaDB

Установите MariaDB:

sudo apt-get install mariadb-server -y

Запустите и включите сервис:

sudo systemctl start mysql  
sudo systemctl enable mysql

Защитите установку MariaDB:

sudo mysql_secure_installation

Следуйте подсказкам: удалите анонимных пользователей, отключите удалённый вход root, удалите тестовую базу и перезагрузите таблицы привилегий.

После защиты войдите в MariaDB и создайте базу и пользователя для Magento:

mysql -u root -p
MariaDB [(none)]> CREATE DATABASE magento_db;
MariaDB [(none)]> CREATE USER 'magento'@'localhost' IDENTIFIED BY 'password';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON magento_db.* TO 'magento'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> \q

Важно: замените ‘password’ на надёжный пароль и используйте безопасные паттерны хранения секретов (не храните пароли в открытых скриптах).

4 Загрузка Magento и Composer

Скачайте дистрибутив Magento с официального источника (или используйте Composer для установки релизной версии). После скачивания распакуйте в корневую папку Apache:

sudo mkdir /var/www/html/magento/  
sudo unzip magento2-develop.zip -d /var/www/html/magento

Установите права и владельца:

sudo chown -R www-data:www-data /var/www/html/magento  
sudo chmod -R 777 /var/www/html/magento

Примечание по правам: режим 777 удобен для тестовой среды, но небезопасен в продакшене. Для production рекомендуются более строгие права: каталогам 750, файлам 640 и владельцу www-data.

Установите Composer (менеджер зависимостей PHP):

curl -sS https://getcomposer.org/installer | php  
sudo mv composer.phar /usr/bin/composer

Установите зависимости Magento через Composer:

cd /var/www/html/magento  
sudo composer install

После успешной установки зависимостей переходите к настройке Apache.

5 Настройка Apache для Magento

Создайте виртуальный хост Apache для Magento:

sudo nano /etc/apache2/sites-available/magento.conf

Добавьте конфигурацию (пример):


ServerAdmin [email protected]
DocumentRoot /var/www/html/magento
ServerName 192.168.15.189
ServerAlias www.example.com

Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all

ErrorLog /var/log/apache2/magento-error_log
CustomLog /var/log/apache2/magento-access_log common

Включите сайт и модуль rewrite:

sudo a2ensite magento  
sudo a2enmod rewrite

Измените порт Apache с 80 на 8080, так как порт 80 будет занят Varnish:

sudo nano /etc/apache2/ports.conf

Измените на:

Listen 8080

Перезапустите Apache:

sudo systemctl restart apache2

Совет: тестируйте виртуальный хост локально через curl или в браузере с указанием :8080.

6 Веб-инсталлятор Magento

Откройте в браузере адрес http://192.168.15.189:8080 и пройдите стандартный мастер установки Magento. На скриншотах ниже показаны шаги мастера. Следуйте указаниям: условия, проверка готовности, ввод данных БД, конфигурация сайта, учётная запись администратора и запуск установки.

Мастер установки Magento

Согласие с условиями

Проверка готовности

Детали базы данных

Настройки сайта

Данные администратора

Запуск установки

После окончания установки запомните URL административной панели, например: http://192.168.15.189/admin_wczta4. Откройте панель и войдите под администратором.

Успех установки

Вход в админку

Панель администратора Magento

7 Включение Varnish в настройках Magento

В админке пройдите: STORES > Configuration > ADVANCED > System > Full Page Cache. Снимите флажок Use System Value и выберите Varnish Cache в списке Caching Application. Сохраните настройки и нажмите ссылку Varnish Configuration, затем Export VCL for Varnish 4. Это экспортирует файл varnish.vcl в каталог /var/www/html/magento/var.

Конфигурация магазина для Varnish

Очистите кэш Magento:

cd /var/www/html/magento  
sudo php bin/magento cache:flush

8 Настройка Varnish

Удалите стандартный default.vcl и сделайте символьную ссылку на VCL, экспортированный Magento:

sudo rm -rf /etc/varnish/default.vcl  
sudo ln -s /var/www/html/magento/var/varnish.vcl /etc/varnish/default.vcl

Скопируйте unit-файл varnish в /etc/systemd/system и отредактируйте его:

sudo cp /lib/systemd/system/varnish.service /etc/systemd/system/
sudo nano /etc/systemd/system/varnish.service

Отредактируйте блок ExecStart, чтобы Varnish слушал порт 80 и использовал экспортированный VCL. Пример содержимого:

[Unit]
Description=Varnish HTTP accelerator
Documentation=https://www.varnish-cache.org/docs/4.1/ man:varnishd

[Service]
Type=simple
LimitNOFILE=131072
LimitMEMLOCK=82000
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
ExecReload=/usr/share/varnish/reload-vcl
ProtectSystem=full
ProtectHome=true
PrivateTmp=true
PrivateDevices=true

[Install]
WantedBy=multi-user.target

Перезагрузите конфигурацию systemd и перезапустите Varnish:

sudo systemctl daemon-reload  
sudo systemctl reload varnish.service

Проверьте статус сервиса:

systemctl status varnish.service

Если всё настроено корректно, Varnish будет прослушивать порт 80 и проксировать запросы к Apache на 8080.

9 Проверки и тесты

  1. Протестируйте доступ к админке через Varnish:
curl -I http://192.168.15.189/admin_wczta4

В выводе ожидайте заголовки, указывающие на Varnish, например X-Varnish и Via.

Пример заголовков (объяснение):

  • X-Varnish: идентификатор запроса в Varnish.
  • Age: время хранения в секундах (0 — свежий ответ).
  • Via: указывает, через какой прокси прошёл запрос.
  1. Протестируйте кешируемые страницы (главная, категории). Повторный запрос должен вернуть заголовок Age > 0 и, возможно, X-Cache или X-Cache-Hits, в зависимости от конфигурации.

  2. Проверьте административные страницы и страницы с сессиями — они обычно не кешируются.

После установки: рекомендации по безопасности и производительности

Важно:

  • Не оставляйте права 777 на рабочем каталоге в продакшене.
  • Настройте HTTPS (TLS) перед открытием магазина для клиентов. Можно терминовать TLS перед Varnish (например, с помощью Nginx или балансировщика).
  • Отключите ненужные расширения PHP и следите за версиями PHP и Magento.
  • Настройте бэкапы базы данных и файлов.

Рекомендации по Varnish:

  • Для магазина с высокой нагрузкой увеличьте выделение памяти Varnish (-s malloc, size) и настройте ttl для объектов в VCL.
  • Логи Varnish и mgt-интерфейс позволяют мониторить статистику хитов и пропускной способности.

Частые ошибки и способы их устранения

  • Ошибка 503 при обращении к сайту: проверьте, что Apache слушает 8080 и что Varnish запущен на 80. Проверьте журналы /var/log/apache2/error.log и systemctl status varnish.

  • Нет заголовков X-Varnish: возможно, используется кеширование на стороне браузера или ваш запрос идёт напрямую на Apache (проверьте порт и виртуальные хосты).

  • Ошибки разрешений при установке зависимостей Composer: убедитесь, что владелец файлов www-data и временно запускайте composer от имени пользователя с правами (или используйте sudo -u www-data composer install).

  • 500 Internal Server Error после установки: проверьте журналы Magento и PHP, убедитесь в корректных версиях расширений и правильных параметрах php.ini.

Откат изменений и контрольные точки

Перед крупными изменениями делайте снимки VM или создавайте резервные копии конфигураций и базы данных.

Простой сценарий отката:

  1. Остановите Varnish:
sudo systemctl stop varnish.service
  1. Верните порт Apache на 80 в /etc/apache2/ports.conf и перезапустите Apache.

  2. Восстановите старый default.vcl, если он был заменён:

sudo rm /etc/varnish/default.vcl
sudo mv /path/to/backup/default.vcl /etc/varnish/default.vcl
  1. Перезапустите сервисы.

Альтернативные подходы

  • Redis для кеширования данных и сессий в сочетании с Varnish как full page cache.
  • Nginx вместо Apache: Nginx часто предпочтителен в продакшене за счёт меньшего потребления памяти и встроенной поддержки TLS. В таком случае Varnish остаётся перед Nginx, либо TLS терминируется на Nginx.
  • Использовать готовые контейнеры Docker с Magento + Varnish для упрощённого развёртывания и изоляции окружения.

Контрольные тесты и критерии приёмки

Критерии приёмки:

  • Магазин открывается через Varnish на порту 80.
  • Для публичных страниц повторные запросы показывают Age > 0 или иные признаки hit-кеша.
  • Админка доступна и корректно авторизует пользователей.
  • Журналы ошибок Apache, PHP, Varnish не содержат критических ошибок после начальной проверки.

Минимальные тесты:

  • curl -I на главной — наличие заголовков Varnish.
  • Вход в админку и создание тестового товара.
  • Просмотр публичной страницы товара, повторный просмотр — проверка кеша.

Роли и обязанности

Системный администратор:

  • Подготовка сервера, установка пакетов, настройка systemd и бэкапов.

Разработчик / DevOps:

  • Настройка VCL, интеграция с Magento, настройка CI/CD и миграций.

Менеджер проекта:

  • Координация тестирования, утверждение окна обслуживания, контроль приёмки.

Советы по производственному развёртыванию

  • Настройте мониторинг (CPU, память, hit-rate Varnish).
  • Настройте автоматические бэкапы базы данных и файлов.
  • Используйте отдельные сервера/контейнеры для веба, БД и кэша на больших нагрузках.
  • Планируйте стратегию очистки кеша при обновлениях контента и релизах.

Краткое резюме

Вы установили Magento 2 на Ubuntu 16.04, настроили Apache на 8080 и подключили Varnish в качестве full page cache. В руководстве приведены проверки работоспособности, рекомендации по безопасности, распространённые ошибки и варианты продакшен-развёртывания.

Важно: перед переносом в продакшен адаптируйте настройки прав доступа, TLS и размеры кеша под реальную нагрузку.


Ключевые команды для быстрого доступа:

  • Обновление системы: sudo apt-get update -y && sudo apt-get upgrade -y
  • Установка Apache и Varnish: sudo apt-get install apache2 varnish -y
  • Установка PHP: sudo apt-get install php7.0 … -y
  • Установка MariaDB: sudo apt-get install mariadb-server -y
  • Экспорт VCL в Magento через админку, затем: sudo ln -s /var/www/html/magento/var/varnish.vcl /etc/varnish/default.vcl
  • Перезапуск systemd: sudo systemctl daemon-reload && sudo systemctl reload varnish.service

Важно: адаптируйте команды и конфигурации под вашу среду и политики безопасности.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро