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

Magento — это открытая платформа управления интернет-магазинами.

Система достаточно требовательна к ресурсам, так что популярный магазин будет генерить большую нагрузку на железо. Поэтому стоит использовать Nginx и Magento вместе.

Требования

Прежде чем приступить к установке Magento, нужно иметь установленный Nginx с ngx_http_fastcgi_module, MySQL, PHP не ниже версии 5.5 и модули php-fpm, php-cli, php-mysql, php-curl, php-gd.

Установка

Для работы Magento требуется установить Composer:

curl -sS https://getcomposer.org/installer | php

# Перемещение файла
mv composer.phar /usr/bin/composer


# Проверка работы
composer -v

# Загрузка и установка Composer

После этого можно скачать и разместить Magento в нужной директории:

tar -xzvf 2.1.0.tar-gz
mv magento2-2.1.0/ /var/www/magento2/

# Размещение системы в /var/www/magento2/

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

cd /var/www/magento2/

bin/magento setup:install --backend-frontname="adminlogin" \ 	# URI для доступа к панели администратора 
--db-host="localhost" \ 					# Адрес БД (IP, localhost или URL с портом)
--db-name="magentodb" \ 					# Имя БД
--db-user="magentouser" \ 					# Пользователь БД
--db-password="magentouser@" \ 					# Пароль для доступа к БД
--language="en_US" \ 						# Язык панели администратора
--currency="USD" \ 						# Валюта по умолчанию
--timezone="America/New_York" \ 				# Часовой пояс
--use-rewrites=1 \ 						# Используется перезапись ссылок веб-сервером
--use-secure=0 \ 						# Включение TLS/SSL
--base-url="http://www.newshop.com" \ 				# Адрес сайта
--base-url-secure="https://www.newshop.com" \ 			# HTTPS-адрес сайта
--admin-user=adminuser \ 					# Администратор Magento
--admin-password=admin123@ \ 					# Пароль администратора
--admin-email=admin@newshop.com \ 				# e-mail администратора
--admin-firstname=admin \ 					# Имя пользователя
--admin-lastname=user \ 					# Фамилия пользователя
--cleanup-database

# Установка Magento с дополнительными параметрами, выделенные обязательны

Конфигурация Nginx

Для начала нужно создать файл конфигурации для платформы /etc/nginx/sites-available/magento.conf и заполнить его. Блок server будет иметь вид:

server {
	listen   80;
	server_name newshop.com www.newshop.com;
	root   /var/www/magento2;
}

# Укажите свой домен

Первый блок location:

location / {
        index index.html index.php; 

        try_files $uri $uri/ @handler;
        expires max;
}

location ^~ /app/                { deny all; }
location ^~ /includes/           { deny all; }
location ^~ /lib/                { deny all; }
location ^~ /media/downloadable/ { deny all; }
location ^~ /pkginfo/            { deny all; }
location ^~ /report/config.xml   { deny all; }
location ^~ /var/                { deny all; }

# Передает URI, если путь не существует, указывает срок жизни кэша, запрещает доступ к внутренним директориям

Далее нужно указать доступ к директории export:

location /var/export/ { 
        auth_basic           "Restricted";
        auth_basic_user_file htpasswd;
        autoindex            on;
    }

# Разрешает доступ для пользователя, указанного в файле /etc/nginx/htpassword

Дополнительные блоки location:

location  /. { 
        return 404;
}

location @handler { 
        rewrite / /index.php;
}

location ~ .php/ { 
        rewrite ^(.*.php)/ $1 last;
}

# Закрывает доступ к скрытым файлам, передает скрипты

Параметры php-fpm:

location ~ .php$ { 
        try_files $uri $uri/ /index.php last;
        expires        off;

        fastcgi_pass   unix:/tmp/php5-fpm.sock;
        fastcgi_param  HTTPS $fastcgi_https;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;

        fastcgi_param  MAGE_RUN_CODE default; 
        fastcgi_param  MAGE_RUN_TYPE store;

	fastcgi_buffer_size 128k;
	fastcgi_buffers 256 4k;
	fastcgi_busy_buffers_size 256k;
	fastcgi_temp_file_write_size 256k;
}

# Указывает стандартные параметры fastcgi и дополнительные буферы, чтобы избежать распространенных ошибок

Осталось активировать хост:

ln -s /etc/nginx/sites-available/magento.conf /etc/nginx/sites-enabled/
systemctl restart nginx

# Создает ссылку на файл конфигурации и перезагружает сервер

Самое главное

Связка Nginx + Magento позволит получить максимальную производительность. Используйте также Varnish и Memcache для ускорения проектов.


Подпишитесь на Хайлоад с помощью Google аккаунта
или закройте эту хрень