В этой статье мы покажем вам, как установить 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.