
В этой статье мы покажем вам, как установить 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.
Редактор: AndreyEx
Поделиться в соц. сетях:
