ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 31 марта, 2025
Сегодня у нас 1 праздник:
Международный День Резервного Копирования (World Backup Day). Пользователи сайта социальных новостей reddit предложили сделать дату 31.03 Международным днём резервного копирования, аргументируя это тем, что никогда заранее нельзя узнать, какие сюрпризы преподнесёт 1.04

Настройка Magento 2 с Redis, Varnish и Nginx как termination SSL в Ubuntu

В этой статье мы покажем вам, как установить Magento 2 на Ubuntu 16.04 VPS с MariaDB, PHP-FPM 7.0, Varnish как полный кэш страниц, Nginx, как termination SSL и Redis для сеанс хранения и кэширования страниц. Это руководство должно работать на других системах Linux VPS, но была испытана и написана для Ubuntu 16.04.

Войдите на свой VPS через SSH

ssh destroyer@my_server

Обновление системы и установка необходимых пакетов

sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get -y install curl nano git

Установка MariaDB 10,0

Установите последнюю версию 10.0 сервера MariaDB из официальных репозиториев Ubuntu:

sudo apt-get install -y mariadb-server

Когда установка завершена, выполните следующую команду, чтобы обеспечить защиту:

mysql_secure_installation

Далее, нам необходимо создать базу данных для нашей установки Magento.

MySQL -p -uroot
MariaDB [(none)]> CREATE DATABASE magento;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON magento.* TO 'magento'@'localhost' IDENTIFIED BY 'my_very_strong_password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> \q

Установка PHP 7.0, composer и все необходимые модули PHP

Чтобы установить последнюю стабильную версию PHP 7.0 и все необходимые модули, выполните следующую команду:

sudo apt-get -y install php-fpm php-cli php-gd php-imagick php-mysql php-mcrypt php-pear php-curl php-intl php-xsl php-zip php-mbstring

Изменение нескольких параметров PHP по умолчанию:

sudo sed -i "s/memory_limit = .*/memory_limit = 256M/" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 128M/" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/7.0/fpm/php.ini

Composer является менеджером зависимостей для PHP с помощью которого можно установить пакеты. Композитор будет тянуть все необходимые библиотеки и зависимости, необходимые для вашего проекта.

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

Установка Magento 2 из Github

Клонирование репозиторий Magento в каталог ~/myMagentoSite.ru, используя следующую команду:

sudo git https://github.com/magento/magento2.git /var/www/myMagentoSite.ru

Получите последнюю стабильную версию, в момент написания это Magento 2.1.2:

CD /var/www/myMagentoSite.ru
sudo git checkout $(git describe --tags $(git rev-list --tags --max-count=1))

Запуск composer, чтобы установить все зависимости Magento:

sudo composer install

Для продолжения установки вы можете использовать мастер установки или командную строку, в данном руководстве мы будем использовать последнюю.

sudo bin/magento setup:install \
--base-url=http://myMagentoSite.ru/ \
--db-host=localhost \
--db-name=magento \
--db-user=magento \
--db-password=my_very_strong_password \
--admin-firstname=First  \
--admin-lastname=Last \
--admin-email=user@myMagentoSite.ru \
--admin-user=admin \
--admin-password=my_very_strong_password987 \
--language=ru_RU \
--currency=RU \
--timezone=Europe/Moscow \
--use-rewrites=1

Если установка прошла успешно, вы увидите что-то вроде этого:

[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_medj1n

Выполните команду crontab, чтобы создать cronjob

crontab -u www-data -e

и добавьте следующую строку:

* * * * * /usr/bin/php /var/www/myMagentoSite.ru/bin/magento cron:run | grep -v "Запуск задачи по расписанию" >> /var/www/myMagentoSite.ru/var/log/magento.cron.log

И, наконец, установить правильные разрешения:

sudo chown -R www-data: /var/www/myMagentoSite.ru

Установка и настройка Nginx

Установка Nginx из репозиториев Ubuntu :: Официальный

sudo apt-get -y install nginx

Создание нового блока сервера Nginx со следующим содержанием:

sudo nano /etc/nginx/sites-available/myMagentoSite.ru
upstream fastcgi_backend {
  server   unix:/run/php/php7.0-fpm.sock;
}

server {
    server_name myMagentoSite.ru www.myMagentoSite.ru;
    listen 80;
    set $MAGE_ROOT /var/www/myMagentoSite.ru;
    set $MAGE_MODE developer; # or production

    access_log /var/log/nginx/myMagentoSite.ru-access.log;
    error_log /var/log/nginx/myMagentoSite.ru-error.log;

    include /var/www/myMagentoSite.ru/nginx.conf.sample;        
}

Активировать блок сервера, создав символическую ссылку:

sudo ln -s /etc/nginx/sites-available/myMagentoSite.ru /etc/nginx/sites-enabled/myMagentoSite.ru

Удалить конфигурацию по умолчанию:

sudo rm -f /etc/nginx/sites-enabled/default

Проверка конфигурации Nginx и перезапуск Nginx:

sudo nginx -t
sudo service nginx restart

Вы должны быть теперь в состоянии войти в свой бэкэнд Magento, перейдя в

http://myMagentoSite.ru/admin_medj1n

Используйте информацию, которую вы установили при запуске

bin/magento setup:install.

Установка и настройка Varnish

Установка Varnish так просто, выполнив следующую команду:

sudo apt-get install varnish

Зайдите в приборную панель администратора Magento, нажмите на ссылку МАГАЗИН (левый боковой панели) -> Конфигурация -> Дополнительно -> Система -> Full Page Cache.
Используйте системное значение Unselected, из списка приложений Caching, выберите Varnish Cache (Recommended), сохраните конфигурацию, нажмите на ссылку Конфигурация Varnish и нажмите на Export VCL для кнопки Varnish 4. Файл varnish.vcl, который мы будем использовать, будет экспортирован в каталог /var/www/myMagentoSite.ru/var/.

Кэш Flush  Magento:

sudo php bin/magento cache:flush

Удалите файл /etc/varnish/default.vcl и создайте симлинк на экспортируемую конфигурацию varnish.

sudo rm -f /etc/varnish/default.vcl
sudo ln -sf /var/www/myMagentoSite.ru/var/varnish.vcl /etc/varnish/default.vcl

Для изменения порта varnish от 6081 до 80, нам нужно изменить конфигурацию службы Systemd.

Создайте новый файл customexec.conf

sudo mkdir -p /etc/systemd/system/varnish.service.d
sudo nano /etc/systemd/system/varnish.service.d/customexec.conf

вставьте следующее:

[Service]
ExecStart=
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

и перезагрузите Systemd

sudo systemctl daemon-reload

Теперь нам нужно изменить порт прослушивания Nginx от 80 до 8080 и включить termination Nginx SSL с http2, чтобы сделать это откройте файл конфигурации Nginx и измените его следующим образом:

sudo nano /etc/nginx/sites-available/myMagentoSite.ru
upstream fastcgi_backend {
  server   unix:/run/php/php7.0-fpm.sock;
}

server {
    server_name myMagentoSite.ru www.myMagentoSite.ru;
    listen 8080;
    set $MAGE_ROOT /var/www/myMagentoSite.ru;
    set $MAGE_MODE production; # or developer

    access_log /var/log/nginx/myMagentoSite.ru-access.log;
    error_log /var/log/nginx/myMagentoSite.ru-error.log;

    include /var/www/myMagentoSite.ru/nginx.conf.sample;        
}

server {

    listen 443 ssl http2;
    server_name myMagentoSite.ru www.myMagentoSite.ru;

    ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; # change with your SSL cert
    ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; # change with your SSL key
    ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers               'AES128+EECDH:AES128+EDH:!aNULL';
    ssl_session_cache    shared:SSL:10m;
    ssl_session_timeout 24h;
    keepalive_timeout 300s;

    location / {
        proxy_pass http://127.0.0.1;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Ssl-Offloaded "1";
        #proxy_hide_header X-Varnish;
        #proxy_hide_header Via;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}

Если вы еще не имеете сертификат SSL, вы можете приобрести сертификат доверенного SSL или получить его бесплатно с помощью Let’s Encrypt.

Перезапуск Varnish и Nginx:

sudo systemctl restart nginx
sudo systemctl restart varnish

Изменить базовый URL для протокола HTTPS и очистите кэш

sudo bin/magento setup:store-config:set --base-url="https://myMagentoSite.ru"
sudo php bin/magento cache:flush

Если все настроено правильно, то вы должны быть в состоянии войти в свой бэкэнд Magento, перейдя по ссылке https://myMagentoSite.ru/admin_medj1n.

Установка и настройка кэширования Redis

Redis является одним из ключевых значений в памяти хранилища данных, и мы будем использовать его для замены бэкэнда Magento 2 Zend_Cache_Backend_File по умолчанию. Установите Redis, выполнив следующую команду:

apt-get install php-redis redis-server

Чтобы настроить установку Magento используйте Redis для хранения сессии, откройте файл app/etc/env.php и измените/добавьте следующее:

sudo nano /var/www/myMagentoSite.ru/app/etc/env.php

изменение:

'session' =>
  array (
    'save' => 'files',
  ),

с:

'session' => 
   array (
   'save' => 'redis',
   'redis' => 
      array (
	'host' => '127.0.0.1',
	'port' => '6379',
	'password' => '',
	'timeout' => '2.5',
	'persistent_identifier' => '',
	'database' => '0',
	'compression_threshold' => '2048',
	'compression_library' => 'gzip',
	'log_level' => '1',
	'max_concurrency' => '6',
	'break_after_frontend' => '5',
	'break_after_adminhtml' => '30',
	'first_lifetime' => '600',
	'bot_first_lifetime' => '60',
	'bot_lifetime' => '7200',
	'disable_locking' => '0',
	'min_lifetime' => '60',
	'max_lifetime' => '2592000'
    )
),

и использовать Redis для кэширования страниц:

'cache' =>
array(
   'frontend' =>
   array(
      'default' =>
      array(
         'backend' => 'Cm_Cache_Backend_Redis',
         'backend_options' =>
         array(
            'server' => '127.0.0.1',
            'port' => '6379'
            ),
    ),
    'page_cache' =>
    array(
      'backend' => 'Cm_Cache_Backend_Redis',
      'backend_options' =>
       array(
         'server' => '127.0.0.1',
         'port' => '6379',
         'database' => '1',
         'compress_data' => '0'
       )
    )
  )
),

И, наконец очистите кэш снова:

sudo php bin/magento cache:flush

Далее оптимизация

Для дальнейшей оптимизации вашей установки Magento в панели управления администратора Magento:

1. Перейдите в МАГАЗИН -> Конфигурация -> Каталог -> Каталог -> Используйте плоский каталог, выберите Да и нажмите кнопку Сохранить конфигурацию.
2. Перейдите к МАГАЗИН -> Конфигурация -> Дополнительно -> Инструменты разработчика -> Параметры JavaScript и установите Merge JavaScript Files и Minify JavaScript — Files на Да и нажмите кнопку Сохранить конфигурацию ..
3. Перейдите к МАГАЗИН -> Конфигурация -> Дополнительно -> Разработчик -> Настройки CSS и установить как Merge CSS Files и Minify CSS — Files на Да и нажмите кнопку Сохранить конфигурацию.
4. Рассмотрите вопрос об использовании CDN — сеть доставки контента

Не забудьте очистить кэш:

sudo php bin/magento cache:flush

Вот и все. Вы успешно установили Magento 2 с Redis в качестве хранилища сеанса и кэширования страниц, Varnish в качестве полного кэширования страниц и Nginx как SSL termination на вашем Ubuntu 16,04 VPS. Для получения дополнительных сведений о том, как управлять вашей установкой Magento, пожалуйста, обратитесь к официальной документации Magento.

Настройка Magento 2 с Redis, Varnish и Nginx как termination SSL в Ubuntu

Exit mobile version