magento - nginx или жизнь без apache

artmouse

★ ★ ★ ★ ★
Регистрация
16 Июн 2007
Сообщения
395
Реакции
902
Обсуждаем работу в связке nginx+php-fpm. Есть наработки? Заходи!
Пример рабочего конфига nginx для работы magento:

Код:
server {
        listen 80; ## Web server port
    server_name www.site.com site.com;
    #server_name_in_redirect off;

    if ($http_host = www.site.com) {
        rewrite (.*) http://site.com$1 permanent;
    }

    access_log /var/log/nginx/site.com-access.log;
    error_log /var/log/nginx/site.com-error.log;

    root /home/site.com/www/;

    ## Nginx will not add the port in the url when the request is redirected.
    #port_in_redirect off;

    ####################################################################################
    ## SSL CONFIGURATION
  
    ##  ssl_certificate /etc/nginx/crt/site.com.pem;
    ##  ssl_certificate_key /etc/nginx/crt/site.com.key;

    ##  ssl_session_cache shared:SSL:15m;
    ##  ssl_session_timeout 15m;

    ##  ssl_protocols SSLv3 TLSv1;
    ##  ssl_ciphers HIGH:!ADH:!EXPORT56;
    ##  ssl_prefer_server_ciphers on;

    ####################################################################################

    ## Server maintenance block. insert dev ip 1.2.3.4 static address www.whatismyip.com
    #if ($remote_addr !~ "^(1.2.3.4|1.2.3.4)$") {
        #return 503;
        #}

    #error_page 503 @maintenance;
    #location @maintenance {
        #rewrite ^(.*)$ /error_page/503.html break;
        #internal;
        #access_log off;
        #log_not_found off;
        #}

    ####################################################################################

    ## 403 error log/page
    #error_page 403 /403.html;
    #location = /403.html {
        #root /var/www/html/error_page;
        #internal;
        #access_log /var/log/nginx/403.log error403;
        #}

    ####################################################################################
  
    ## Main Magento location
    location / {
        try_files $uri $uri/ @handler;
        }

    ####################################################################################

    ## These locations would be hidden by .htaccess normally, protected
    location ~ (/(app/|includes/|/pkginfo/|var/|errors/local.xml)|/\.svn/|/.hta.+) {
        deny all;
        #internal;
        }


    ####################################################################################


    ## Protecting /admin/ and /downloader/ 1.2.3.4 = static ip (www.whatismyip.com)
    location ~* ^/(downloader/|install.php)($|\/) {
    auth_basic "Admin Zone";
    auth_basic_user_file /var/www/ladaportal/.htpasswd;
    include /etc/nginx/templates/php;
        #allow 1.2.3.4;
        #allow 1.2.3.4;
        #deny all;
        #rewrite / /@handler;
        }

    ####################################################################################

    ## Images, scripts and styles set far future Expires header
    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
        }

    ####################################################################################

    ## Main Magento location
    location @handler {
        rewrite / /index.php;
        }
    location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
        rewrite ^(.*.php)/ $1 last;
        }

    include /etc/nginx/templates/default;
    include /etc/nginx/templates/php;
    #include /etc/nginx/templates/phpmyadmin;

}
 
Нашелся интересный Github Для просмотра ссылки Войди или Зарегистрируйся от компании, которая занимается оптимизацией и хостингом magento.
Есть конфиг для nginx и решения по автоматизированной установке. Пока не смотрел, но вижу что скрипты и конфиги на гитхабе обновляются.

Попробовал я на виртуалке Для просмотра ссылки Войди или Зарегистрируйся - интересная фиговина. Ставит на чистый CentOS свежие билды
nginx - вебсервер, Percona - MySQL, PHP 5.4 c apc, memchached, varnish, Lesti fpc, fail2ban, настраивает, генерирует безопасные пароли, заводит юзеров. Ставит 1.7.0.2. настраивает без демо БД.

Замечания:
1. При установке сказал что меньше 4 гигов оперативы ему не нравится. Дал в виртуалке 4, хотя конечно многовато.
2. После установки попробовал заапдейтить через коннект до 1.8 - обновлений не находило.
Код:
./mage install http://connect20.magentocommerce.com/community Mage_All_Latest --force
помогло, почистил кеш.
3. Индексы все со статусом processing, некоторые обновлены, некоторые нет. На ручную реиндексацию ругается
Stock Status Index process is working now. Please try run this process later.
Удалил все lock - помогло.

Собственно вопрос - как проверить эффективность такой установки? Есть ли у кого демо-база с большим кол-вом товаров?

UPD.
Поправил исходник чтобы качал и ставил 1.8, заранее завел (прописал в hosts) домен. 2-3 не повторились.
Добавил настройки кеша в local.xml
Нашел Для просмотра ссылки Войди или Зарегистрируйся

UPD2.
Перенесу на живой хостинг, поиздеваюсь Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование модератором:
там идет базовая установка сервера и нужных пакетов, а также инсталляция магенто, сделано это для тех у кого мало опыта в установке и настройке сервера, чтобы оне не устанавливали всякое ***но откуда попало. и немаловажная фича по замене рута на простого пользователя с sudo и замена стандартного порта SSH.
далее это уже твои проблемы как ты все настроиш.
 
Вот не хотелось бы проблем, а хотелось бы понимания как это настраивать. Может лучше вынести оптимизацию отдельным топиком и делится опытом для разных конфигураций.
 
тоже ставил эту штуку. автоматизатор поставил nginx, percona, redis, php-fpm. собсно всё это настроить и поставить можно и вручную, как и настроить, и это будет более правильно.
кроме некоторых фич в конфиге nginx ничего интересного.

в любом случае все пакеты нужно настраивать под имеющиеся ресурсы сервера, дефолтные далеко не всем подойдут.
 
Последнее редактирование:
Ну например для меня было интересно, что используется Percona вместо "обычного" MySQL.
Хорошо. Как настраивать. Сейчас настройка Magento похожа на магию, доступную Избранным и весьма не дешево.

Лучше пусть будет конфигуратор честно показывающий в "попугаях" эффективность своих действий и настроек в зависимости от параметров железа для эталонной базы.
Понятно, что мой магазин, обвешанный плагинами, дизайном и хостящийся хз где может отличаться от эталона. Но конфигуратор-тест покажет чиселку и я смогу ее сравнить с чем-то.
Например, насколько эффективнее будет при прочих настройках иметь на VPS/VDS 2 гига RAM вместо 1. Потому что чем они отличаются в деньгах я вижу хорошо.
 
Percona для магенто это логичное решение, так как в InnoDB Percona показывает больше попугаев, чем mysql и имеет полную прямую и обратную совместимость с последней. При таких раскладах смысл использовать mysql на своих проектах для меня лично не ясен :)
C nginx+php-fpm тоже всё понятно, исключив апач мы получаем экономию на оперативке раза в полтора а то и больше. настройки Nginx можно спокойно брать с этого пакета, php-fpm же настраивается в основном настройкой пожирания ресурсов да выставления лимитов. настройка демонов и их размножения производится в файлах /etc/php-fpm.d, там тоже всё прозрачно (прописать пользователя от которого запускается процесс да колво процессов.
варниш-мемкеш-редис, как и apc - для любителей оптимизации (пол попугая и хайлоад). настраиваются в зависимости от модели использования - либо в связке с другим ПО (nginx+varnish, php+memcache) либо как самостоятельные приложения, с которыми общается сам скрипт магенто(редис). также в основном их настройка сводится к выделению ресурсов.

в итоге получается, что настроить всю эту братию надо в первую очередь опираясь на то, в каком режиме работает сервер (средняя нагрузка) да сколько оперативки у него есть.
 
Последнее редактирование:
  • Нравится
Реакции: Jodo
No. You can't change software in shared hosting. Most of shared hosting has Apache + MySQL.
Also, most of shared hosting isn't good for Magento. PHP memory limit may be 64-128Mb, but Magento req 256 and more. You can find Magento optimized shared hosting such as elief or siteground, and it will be cheaper than VPS. But shared is shared. Don't wait for good perfomance.
 
Попробовал я на виртуалке Для просмотра ссылки Войди или Зарегистрируйся - интересная фиговина. Ставит на чистый CentOS свежие билды
nginx - вебсервер, Percona - MySQL, PHP 5.4 c apc, memchached, varnish, Lesti fpc, fail2ban, настраивает, генерирует безопасные пароли, заводит юзеров. Ставит 1.7.0.2. настраивает без демо БД.

Замечания:
1. При установке сказал что меньше 4 гигов оперативы ему не нравится. Дал в виртуалке 4, хотя конечно многовато.
2. После установки попробовал заапдейтить через коннект до 1.8 - обновлений не находило.
Код:
./mage install http://connect20.magentocommerce.com/community Mage_All_Latest --force
помогло, почистил кеш.
3. Индексы все со статусом processing, некоторые обновлены, некоторые нет. На ручную реиндексацию ругается
Stock Status Index process is working now. Please try run this process later.
Удалил все lock - помогло.

Собственно вопрос - как проверить эффективность такой установки? Есть ли у кого демо-база с большим кол-вом товаров?

UPD.
Поправил исходник чтобы качал и ставил 1.8, заранее завел (прописал в hosts) домен. 2-3 не повторились.
Добавил настройки кеша в local.xml
Нашел Для просмотра ссылки Войди или Зарегистрируйся

UPD2.
Перенесу на живой хостинг, поиздеваюсь Для просмотра ссылки Войди или Зарегистрируйся
Как прошли издевательства? Какие новости?
 
Более менее. Использовал CentOS в триальном периоде в Windows Azure. Были проблемы с версиями пакетов, т.к. а Azure из-за проблем с ядром CentOS стояла 6.3.
Нагрузил Для просмотра ссылки Войди или Зарегистрируйся но результаты не имели смысла без сравнения с такой же маджентой в типовой для шареда установке.
Если руки дойдут, может попробую на Digital Ocean поднять и погонять.
 
Назад
Сверху