1. Чтобы не получить бан прочти правила магентоман! Читать обязательно!

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

Тема в разделе "Magento", создана пользователем artmouse, 21 ноя 2013.

Модераторы: Violent
  1. artmouse

    artmouse ★ magentik.net ★

    Регистр.:
    16 июн 2007
    Сообщения:
    277
    Симпатии:
    489
    Обсуждаем работу в связке 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;
    
    }
     
    donvictorio и Jodo нравится это.
  2. Jodo

    Jodo Постоялец

    Регистр.:
    15 ноя 2013
    Сообщения:
    67
    Симпатии:
    76
    Нашелся интересный Github https://github.com/magenx от компании, которая занимается оптимизацией и хостингом magento.
    Есть конфиг для nginx и решения по автоматизированной установке. Пока не смотрел, но вижу что скрипты и конфиги на гитхабе обновляются.

    Попробовал я на виртуалке https://github.com/magenx/MASC-M - интересная фиговина. Ставит на чистый 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
    Нашел интересный материал о Varnish

    UPD2.
    Перенесу на живой хостинг, поиздеваюсь http://www.magespeedtest.com/
     
    Последнее редактирование модератором: 7 июл 2014
    adsenselabs и donvictorio нравится это.
  3. dedo

    dedo Постоялец

    Регистр.:
    2 дек 2006
    Сообщения:
    104
    Симпатии:
    62
    там идет базовая установка сервера и нужных пакетов, а также инсталляция магенто, сделано это для тех у кого мало опыта в установке и настройке сервера, чтобы оне не устанавливали всякое ***но откуда попало. и немаловажная фича по замене рута на простого пользователя с sudo и замена стандартного порта SSH.
    далее это уже твои проблемы как ты все настроиш.
     
  4. Jodo

    Jodo Постоялец

    Регистр.:
    15 ноя 2013
    Сообщения:
    67
    Симпатии:
    76
    Вот не хотелось бы проблем, а хотелось бы понимания как это настраивать. Может лучше вынести оптимизацию отдельным топиком и делится опытом для разных конфигураций.
     
    jurikserf нравится это.
  5. donvictorio

    donvictorio

    Регистр.:
    28 янв 2010
    Сообщения:
    868
    Симпатии:
    796
    тоже ставил эту штуку. автоматизатор поставил nginx, percona, redis, php-fpm. собсно всё это настроить и поставить можно и вручную, как и настроить, и это будет более правильно.
    кроме некоторых фич в конфиге nginx ничего интересного.

    в любом случае все пакеты нужно настраивать под имеющиеся ресурсы сервера, дефолтные далеко не всем подойдут.
     
    Последнее редактирование: 10 июл 2014
  6. Jodo

    Jodo Постоялец

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

    Лучше пусть будет конфигуратор честно показывающий в "попугаях" эффективность своих действий и настроек в зависимости от параметров железа для эталонной базы.
    Понятно, что мой магазин, обвешанный плагинами, дизайном и хостящийся хз где может отличаться от эталона. Но конфигуратор-тест покажет чиселку и я смогу ее сравнить с чем-то.
    Например, насколько эффективнее будет при прочих настройках иметь на VPS/VDS 2 гига RAM вместо 1. Потому что чем они отличаются в деньгах я вижу хорошо.
     
  7. donvictorio

    donvictorio

    Регистр.:
    28 янв 2010
    Сообщения:
    868
    Симпатии:
    796
    Percona для магенто это логичное решение, так как в InnoDB Percona показывает больше попугаев, чем mysql и имеет полную прямую и обратную совместимость с последней. При таких раскладах смысл использовать mysql на своих проектах для меня лично не ясен :)
    C nginx+php-fpm тоже всё понятно, исключив апач мы получаем экономию на оперативке раза в полтора а то и больше. настройки Nginx можно спокойно брать с этого пакета, php-fpm же настраивается в основном настройкой пожирания ресурсов да выставления лимитов. настройка демонов и их размножения производится в файлах /etc/php-fpm.d, там тоже всё прозрачно (прописать пользователя от которого запускается процесс да колво процессов.
    варниш-мемкеш-редис, как и apc - для любителей оптимизации (пол попугая и хайлоад). настраиваются в зависимости от модели использования - либо в связке с другим ПО (nginx+varnish, php+memcache) либо как самостоятельные приложения, с которыми общается сам скрипт магенто(редис). также в основном их настройка сводится к выделению ресурсов.

    в итоге получается, что настроить всю эту братию надо в первую очередь опираясь на то, в каком режиме работает сервер (средняя нагрузка) да сколько оперативки у него есть.
     
    Последнее редактирование: 10 июл 2014
    Jodo нравится это.
  8. Jodo

    Jodo Постоялец

    Регистр.:
    15 ноя 2013
    Сообщения:
    67
    Симпатии:
    76
    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.
     
  9. Игорь А.

    Игорь А. Постоялец

    Регистр.:
    5 июл 2013
    Сообщения:
    51
    Симпатии:
    23
    Как прошли издевательства? Какие новости?
     
  10. Jodo

    Jodo Постоялец

    Регистр.:
    15 ноя 2013
    Сообщения:
    67
    Симпатии:
    76
    Более менее. Использовал CentOS в триальном периоде в Windows Azure. Были проблемы с версиями пакетов, т.к. а Azure из-за проблем с ядром CentOS стояла 6.3.
    Нагрузил http://www.magespeedtest.com/ но результаты не имели смысла без сравнения с такой же маджентой в типовой для шареда установке.
    Если руки дойдут, может попробую на Digital Ocean поднять и погонять.