Инфо Обсуждение настроек VPS сервера для PrestaShop

Тема в разделе "PrestaShop", создана пользователем ZiX, 15 мар 2016.

Информация :
Приветствую гость, обрати внимание! Темы которые закреплены в разделах, в скором времени будут откреплены. Правила раздела PrestaShop

(Не актуальные темы) Каталоги:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
(Не актуальные темы) Поиск / Запросы:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
Полезная информация:Поддержка и помощь c PrestaShopУбираем ПрестаТраст, стучалки и прочую рекламуСовместные покупки модулей и шаблоновПеревод Prestashop и модулей
Модераторы: trace
  1. Cinerar

    Cinerar Писатель

    Регистр.:
    24 янв 2016
    Сообщения:
    8
    Симпатии:
    9
    Правила nginx видел, времени их попробовать не было. А что сильно заметна разница в производительности между apache и nginx на престашопе?
    У меня на страницах статики не так много, я так понимаю nginx особенно выигрывает если статики много, он ее быстрее отдает.
    Ага, про 7.1 слышал тоже краем уха. В сутках всего 24 часа правда, а столько всего интересного )
    Ну я же и говорю - выносить их надо куда-то отдельно, а на это все время нужно.
    Вообще какие-то велосипеды с ресинком изобретать мне кажется не самое правильное решение для этой задачи, лучше использовать что-нибудь уже готовое и отлаженное.
    Но у меня пока задача обеспечить high availability не стояла, просто приложений помимо престашопа задействованных в бизнес процессах накопилось столько, что как-то хотелось их во что-то единое свести, всякие ELK, Prometheus и плюс пара-тройка своих самописных, собственно я по этой причине пока и не стал замарачиваться, но с докером это всяко удобней делать.
    Насколько я представляю, все таки этот переход это скорее эволюционный процесс, а не революционный.
    Но как мне кажется для меня - движение в правильном направлении.
     
    _sashok нравится это.
  2. val22

    val22

    Регистр.:
    5 июн 2014
    Сообщения:
    188
    Симпатии:
    65
    Поделитесь настройками отлаженными и проверенными my.cnf для vps c 4 gb ОЗУ. Понимаю, что для каждого свое но все таки хочу проанализировать
     
  3. alpi

    alpi human being

    Регистр.:
    29 июл 2014
    Сообщения:
    244
    Симпатии:
    234
    http://www.mysqlcalculator.com/
    innodb_buffer_pool_size поставьте 2,5-3 гб и дальше mysqltuner

    Пример для 2Гб vps

    самый простой способ ускорить базу для тех, кто на mysql - поставить mariadb :)
     
    Последнее редактирование: 17 фев 2017
    val22 нравится это.
  4. alpi

    alpi human being

    Регистр.:
    29 июл 2014
    Сообщения:
    244
    Симпатии:
    234
    По просьбам трудящихся, выкладываю свои конфиги для nginx в этой теме.

    Конфиг nginx для Prestashop 1.6.1.x + AS 4.11.x


    Код:
    server {
        listen 80;
        server_name site.com www.site.com;
        return 301 https://$server_name$request_uri;
    }
    
    server {
        listen 443 ssl http2 deferred;
        server_name site.com www.site.com;
    
        #SSL
        include /etc/nginx/conf.d/ssl.cfg;
        ssl_certificate /etc/letsencrypt/live/site.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/site.com/privkey.pem;
        ssl_dhparam /etc/letsencrypt/live/site.com/dhparam.pem;
    
        root   /var/www/site.com;
        index  index.php;
    
        client_max_body_size 100m;
        client_body_buffer_size 128k;
    
        charset utf8;
    
        client_header_buffer_size 2k;
        large_client_header_buffers 4 8k;
    
        location / {
            try_files $uri $uri/ /index.php?$args;
            if (-f $request_filename) { expires 30d; break; }
            if (!-e $request_filename) { rewrite ^(.+)$ /index.php?$args last; }
        }
    
        include /etc/nginx/conf.d/prestashop.cfg;                #    рерайты престы вынесены отдельно
        include /etc/nginx/conf.d/phpmyadmin.cfg;
        #include /etc/nginx/conf.d/deny.cfg;                        #    для блокировки по ip
    
        location \.png  { access_log off; error_log off; expires max; gzip off; }
        location \.jpg  { access_log off; error_log off; expires max; gzip off; }
        location \.jpeg { access_log off; error_log off; expires max; gzip off; }
        location \.gif  { access_log off; error_log off; expires max; gzip off; }
        location \.ico  { access_log off; error_log off; expires max; gzip off; }
    
        location \.css { access_log off; expires 7d; log_not_found off; add_header Vary Accept-Encoding; }
        location \.js  { access_log off; expires 7d; log_not_found off; add_header Vary Accept-Encoding; }
    
    
        location ~ \.php$ {
    
            fastcgi_split_path_info ^(.+\.php)(.*)$;
            fastcgi_pass   unix:/var/run/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  HTTPS on;
    
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_script_name;
    
            fastcgi_param  HTTP_MOD_REWRITE On;
    
            include fastcgi_params;
            fastcgi_connect_timeout 300s;
            fastcgi_send_timeout 300s;
            fastcgi_read_timeout 1200s;
    
            fastcgi_buffer_size 16k;
            fastcgi_buffers 8 16k;
    
            fastcgi_cache_valid 200 301 302 1h;
            fastcgi_cache_valid 404 500 501 502 503 504 505 506 507 509 510 1m;
            fastcgi_cache_valid any 1m;
        }
    
        location /robots.txt { allow all; log_not_found off; access_log off; }
        location ~ /\.ht { deny  all; }
    
        #letsencrypt
        location /.well-known/acme-challenge { alias /var/www/.well-known/acme-challenge; }
    
        access_log /var/log/nginx/site.com.access.log combined buffer=32 flush=5m;
        error_log /var/log/nginx/site.error.log;
    
    }
    содержимое ssl.cfg
    Код:
     ssl on;
    ssl_session_timeout 24h;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
    ssl_session_cache shared:SSL:10m;
    add_header Strict-Transport-Security "max-age=31536000;";
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver_timeout 10s;
    
    содержимое prestashop.cfg
    Код:
    rewrite ^/[a-zA-Z][a-zA-Z]/index.php(.*)$ /index.php$1;
           rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
           rewrite ^/([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$1$2$3.jpg last;
           rewrite ^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$1$2$3$4.jpg last;
           rewrite ^/([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$1$2$3$4$5.jpg last;
           rewrite ^/([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg last;
           rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg last;
           rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg last;
           rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg last;
           rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg last;
           rewrite ^/c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2$3.jpg last;
           rewrite ^/c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;
           rewrite ^/images_ie/?([^/]+)\.(jpe?g|png|gif)$ /js/jquery/plugins/fancybox/images/$1.$2 last;
           rewrite ^/page-not-found$ /index.php?controller=404 last;
    
        location /as4_seositemap {
           rewrite ^/as4_seositemap-([0-9]+).xml$ /modules/pm_advancedsearch4/sitemap/seositemap-$1.xml break;
        }
    
    #rewrite "^/([a-z]{2})?/?s/([0-9]+)/([a-zA-Z0-9/_-]*)" /index.php?fc=module&module=pm_advancedsearch4&controller=advancedsearch4&isolang=$1&id_seo=$2&seo_url=$3 break;
    #rewrite "^/ru/s/([0-9]+)/([a-zA-Z0-9/_-]*)" /index.php?fc=module&module=pm_advancedsearch4&controller=advancedsearch4&isolang=ru&id_seo=$1&seo_url=$2 break;
    
    
    в последних версиях адвансед серч работает без рерайтов, в конфиге они закомментированы.

    содержимое phpmyadmin.cfg
    Код:
    location /pma12345/ {
    
            auth_basic           "closed site";
            auth_basic_user_file /etc/nginx/pass/pma;
    
            alias /usr/share/phpMyAdmin/;
            location ~ \.php$ {
                    fastcgi_pass unix:/var/run/php-fpm.sock;
                    fastcgi_index index.php;
                    include fastcgi_params;
                    fastcgi_param SCRIPT_FILENAME $request_filename;
                    fastcgi_ignore_client_abort off;
                    }
    }
    
    страницу авторизации phpmyadmin желательно паролить, для этого в файле /etc/nginx/pass/pma; задать пароль, подробнее тут

    ssl сертификат - появляется возможность использовать http/2, что ускоряет загрузку. nginx должен быть собран с поддержкой openssl 1.0.2j.
    бесплатный валидный сертификат выдаётся через letsencrypt в пару комманд:
    Код:
    yum install certbot
    certbot certonly -a webroot --webroot-path /var/www/ -d site.com -d www.site.com --server https://acme-v01.api.letsencrypt.org/directory
    openssl dhparam -out /etc/letsencrypt/live/site.com/dhparam.pem 2048
    
    не забудьте дописать в cron автообновление сертификата каждые 2 месяца:
    0 2 * */2 * root /bin/sh certbot certonly -a webroot --webroot-path /var/www/ -d site.com -d www.site.com --server https://acme-v01.api.letsencrypt.org/directory >> /var/log/certbot.log;service nginx restart
    либо просто
    03 2 * */2 * root /bin/sh certbot renew >> /var/log/certbot.log;service nginx restart
    
    при переходе на https с http читать вот это
    https://www.nulled.cc/threads/281790/
     
    Последнее редактирование: 27 фев 2017
    yuazakharov, andrew.irpin, hitbaby и 3 другим нравится это.
  5. alpi

    alpi human being

    Регистр.:
    29 июл 2014
    Сообщения:
    244
    Симпатии:
    234
    @ZiX , может стоит объединить 2 темы ? "Обсуждение настроек VPS" прикреплена, а "Настройки VPS для Prestashop" нет, хотя там тоже есть полезные посты - их не увидят.
     
    evgenij.sobolev нравится это.
  6. val22

    val22

    Регистр.:
    5 июн 2014
    Сообщения:
    188
    Симпатии:
    65
    Нужна помощь! Преста 1.6 Пытаюсь освоить связку nginx + php-fpm на CentOS 7, панель управления Vesta

    Имеем предустановленный спец шаблон для Vesta https://gist.github.com/rez0n/69da75aae0049f8fa670f7cfd6e8542e

    столкнулся с проблемой, сайт который хочу заставить работать на данной конфигурации имеет чистые ссылки, полученные с помощью модуля
    Friendly Urls
    https://www.prestashop.com/forums/topic/204935-override-friendly-urls-without-id-number-for-v15/
    перенес рабочий сайт на данный конфиг, главная страница работает, страницы категорий и товаров выдают ошибку 404, думаю проблема в модуле cleanurls, подскажите как подружить?
     
  7. fortuner

    fortuner

    Регистр.:
    26 июн 2012
    Сообщения:
    561
    Симпатии:
    912
    Кеш смарти и автозагрузки чистили?
    Вот другой модуль попробуйте. Перед установкой этого удалите предыдущий и очистите кеш. И после установки тоже очистите
     
  8. val22

    val22

    Регистр.:
    5 июн 2014
    Сообщения:
    188
    Симпатии:
    65
    Не помогает, удалил, почистил, вернул ссылки с id, все работает, ставлю модуль, получаю 404,


    Вот конфиг:

    rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
    rewrite ^/([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1-$2$3.jpg last;
    rewrite ^/([0-9]+)\-([0-9]+)/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1-$2.jpg last;
    rewrite ^/([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$1$2.jpg last;
    rewrite ^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$1$2$3.jpg last;
    rewrite ^/([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$1$2$3$4.jpg last;
    rewrite ^/([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg last;
    rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.jpg last;
    rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.jpg last;
    rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8.jpg last;
    rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg last;
    rewrite ^/c/([0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/c/$1$2.jpg last;
    rewrite ^/c/([a-zA-Z-]+)/[a-zA-Z0-9-]+\.jpg$ /img/c/$1.jpg last;
    rewrite ^/([0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/c/$1$2.jpg last;

    rewrite "^/([0-9]+)\-(\P{M}\p{M}*)+\.html(.*)$" /index.php?controller=product&id_product=$1$3 last;
    rewrite "^/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$" /index.php?controller=category&id_category=$1$3 last;
    rewrite "^/([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$" /index.php?controller=product&id_product=$2$4 last;
    rewrite "^/([0-9]+)__([a-zA-Z0-9-]*)(.*)$" /index.php?controller=supplier&id_supplier=$1$3 last;
    rewrite "^/([0-9]+)_([a-zA-Z0-9-]*)$" /index.php?controller=manufacturer&id_manufacturer=$1$3 last;
    rewrite "^/content/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$" /index.php?controller=cms&id_cms=$1$3 last;
    rewrite "^/content/category/([0-9]+)\-([a-zA-Z0-9-]*)(.*)$" /index.php?controller=cms&id_cms_category=$1$3 last;
    rewrite "^/module/([_a-zA-Z0-9-]*)/([_a-zA-Z0-9-]*)$" /index.php?fc=module&module=$1&controller=$2 last;
    rewrite ^/articles$ /index.php?fc=module&module=smartblog&controller=category last;
    rewrite "^/articles/([0-9]+)_([_a-zA-Z0-9-]*)$" /index.php?fc=module&module=smartblog&id_post=$1&controller=details last;
    rewrite "^/articles/category/([0-9]+)_([_a-zA-Z0-9-]*)$" /index.php?fc=module&module=smartblog&id_category=$1&controller=category;
    rewrite ^/products-comparison$ /index.php?controller=products-comparison last;
    rewrite ^/page-not-found$ /index.php?controller=404 last;
    rewrite ^/address$ /index.php?controller=address last;
    rewrite ^/addresses$ /index.php?controller=addresses last;
    rewrite ^/authentication$ /index.php?controller=authentication last;
    rewrite ^/best-sales$ /index.php?controller=best-sales last;
    rewrite ^/cart$ /index.php?controller=cart last;
    rewrite ^/contact-us$ /index.php?controller=contact-form last;
    rewrite ^/discount$ /index.php?controller=discount last;
    rewrite ^/guest-tracking$ /index.php?controller=guest-tracking last;
    rewrite ^/order-history$ /index.php?controller=history last;
    rewrite ^/identity$ /index.php?controller=identity last;
    rewrite ^/manufacturers$ /index.php?controller=manufacturer last;
    rewrite ^/my-account$ /index.php?controller=my-account last;
    rewrite ^/new-products$ /index.php?controller=new-products last;
    rewrite ^/order$ /index.php?controller=order last;
    rewrite ^/order-follow$ /index.php?controller=order-follow last;
    rewrite ^/quick-order$ /index.php?controller=order-opc last;
    rewrite ^/order-slip$ /index.php?controller=order-slip last;
    rewrite ^/password-recovery$ /index.php?controller=password last;
    rewrite ^/prices-drop$ /index.php?controller=prices-drop last;
    rewrite ^/search$ /index.php?controller=search last;
    rewrite ^/sitemap$ /index.php?controller=sitemap last;
    rewrite ^/stores$ /index.php?controller=stores last;
    rewrite ^/supplier$ /index.php?controller=supplier last;

    Возможно здесь чего то не хватает?
     
  9. fortuner

    fortuner

    Регистр.:
    26 июн 2012
    Сообщения:
    561
    Симпатии:
    912
    Я не очень силен в конфигах nginx (это больше к @alpi :)), но может попробовать удалить конструкцию
    Код:
    ([0-9]+)\-
    В каждой строчке, где встречается controller=product и controller=category?
    Это как раз похоже на id
    Ну и после изменений надо перезапустить nginx
     
    val22 нравится это.
  10. alpi

    alpi human being

    Регистр.:
    29 июл 2014
    Сообщения:
    244
    Симпатии:
    234
    удалите всё, что после
    или замените свои рерайты на те, что у меня в конфиге - содержимое prestashop.cfg
     
    fortuner и val22 нравится это.