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

О чём эта инструкция
Это практическое руководство поможет системному администратору или разработчику развернуть 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. На скриншотах ниже показаны шаги мастера. Следуйте указаниям: условия, проверка готовности, ввод данных БД, конфигурация сайта, учётная запись администратора и запуск установки.







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



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.

Очистите кэш Magento:
cd /var/www/html/magento
sudo php bin/magento cache:flush8 Настройка 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 Проверки и тесты
- Протестируйте доступ к админке через Varnish:
curl -I http://192.168.15.189/admin_wczta4В выводе ожидайте заголовки, указывающие на Varnish, например X-Varnish и Via.
Пример заголовков (объяснение):
- X-Varnish: идентификатор запроса в Varnish.
- Age: время хранения в секундах (0 — свежий ответ).
- Via: указывает, через какой прокси прошёл запрос.
Протестируйте кешируемые страницы (главная, категории). Повторный запрос должен вернуть заголовок Age > 0 и, возможно, X-Cache или X-Cache-Hits, в зависимости от конфигурации.
Проверьте административные страницы и страницы с сессиями — они обычно не кешируются.
После установки: рекомендации по безопасности и производительности
Важно:
- Не оставляйте права 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 или создавайте резервные копии конфигураций и базы данных.
Простой сценарий отката:
- Остановите Varnish:
sudo systemctl stop varnish.serviceВерните порт Apache на 80 в /etc/apache2/ports.conf и перезапустите Apache.
Восстановите старый default.vcl, если он был заменён:
sudo rm /etc/varnish/default.vcl
sudo mv /path/to/backup/default.vcl /etc/varnish/default.vcl- Перезапустите сервисы.
Альтернативные подходы
- 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
Важно: адаптируйте команды и конфигурации под вашу среду и политики безопасности.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента