Vesta Control Panel - Forum

Community Forum

Skip to content

Advanced search
  • Quick links
    • Main site
    • Github repo
    • Google Search
  • FAQ
  • Login
  • Register
  • Board index Language specific forums Russian (Русский) Веб сервер
  • Search

[MANUAL] Шаблон NGINX под UMI.CMS

Вопросы по работе Веб сервера
Apache + Nginx, Nginx + PHP5-FPM
Post Reply
  • Print view
Advanced search
2 posts • Page 1 of 1
Enkil
Posts: 67
Joined: Thu Jan 31, 2013 1:09 am

[MANUAL] Шаблон NGINX под UMI.CMS
  • Quote

Post by Enkil » Mon Mar 03, 2014 10:40 am

Добрый день!

Вводная
Вообще мы пишем сайты и приложения на Yii Framework, но у одного из клиентов есть действующий сайт на UMI.CMS.
Клиент обратился к нам с проблемой крайне медленной работы сайта.
Получив доступы, мы узнали что

используется VPS от fastvps
виртуализация OpenVZ
2 ядра
800 Mb Ram
8 Gb HDD
Debian

сервер настроен абы как, с использованием webmin.

Даже при включенном в UMI использовании APC (который был установлен) и статическом кешировании (файловая система) генерация главной страницы занимала 10-12 сек, самой большой страницы (>130 объектов с графикой) около 30 сек

Что сделали

1) зарегистрировали для клиента аккаунт на DigitialOcean
2) создали дроплет, схожий по конфигурации (1Gb RAM, 1 CPU, 30 GB HDD) в ДЦ в Амстердаме
нам это дало
- SSD диски
- меньше пинг до сервера (fastvps реселлер hetxner, серверы в Германии)
3) поставили CentOS 6.5 x64 и VestaCP

Далее создали аккаунт, отличный от админа. Перенесели туда сайт (шаблоны apache и nginx - default)
Запустили сайт

Примечание
Так как UMI.CMS привязывается к домену и использует активационный ключ, то, что бы не обращаться в саппорт и не иметь проблем с ключами, домен в Vesta указали "боевой" и на локальном хосте админ в /etc/hosts прописал IP и "боевой" домен сайта


Далее стали гуглить на тему оптимизации работы UMI.CMS
Оказалось, что данный движок умеет из коробки хорошо интегрироваться с NGINX по части кеширования, но для этого надо по их рекомендациям настроить виртуальный хост.
тут статья из wiki http://wiki.umisoft.ru/Кэширование_через_nginx

так как создавать хардкодом настройки не путь джедая, то решили сделать шаблон Vesta для данного движка с учетом рекомендаций.

Пошагово

1) Копируем дефолтные шаблоны nginx в отдельные файлы

Code: Select all

cp /usr/local/vesta/data/templates/web/nginx/default.tpl /usr/local/vesta/data/templates/web/nginx/umi-cms.tpl

cp /usr/local/vesta/data/templates/web/nginx/default.stpl /usr/local/vesta/data/templates/web/nginx/umi-cms.stpl
2) Открываем данный файлы и заменяем их содержимое на

/usr/local/vesta/data/templates/web/nginx/umi-cms.tpl

Code: Select all

server {
    listen      %ip%:%proxy_port%;
    server_name %domain_idn% %alias_idn%;
    error_log  /var/log/httpd/domains/%domain%.error.log error;
    access_log     /var/log/httpd/domains/%domain%.log combined;
    access_log     /var/log/httpd/domains/%domain%.bytes bytes;

    location / {

        error_page 412 = @fallback;

        if ($request_method = 'POST') { return 412; }
        if ($is_args = '?') { return 412; }
        if ($cookie_umicms_session) { return 412; }

        try_files $uri/index.html @fallback;
        root %docroot/cache/$host; # (3) Путь до каталога закэшированных файлов
        index index.php;
    }

    location /error/ {
        alias   %home%/%user%/web/%domain%/document_errors/;
    }

    location @fallback {
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_pass      http://%ip%:%web_port%;
    }

    location ~* ^/admin {
        error_page 412 = @fallback;
        return 412;
    }

    location ~* \.php$ {
        error_page 412 = @fallback;
        return 412;
    }

    location ~* ^.+\.(%proxy_extentions%)$ {
        root %docroot%;
        expires        max;
        access_log  off;
    }

    location ~ /\.ht    {return 404;}
    location ~ /\.svn/  {return 404;}
    location ~ /\.git/  {return 404;}
    location ~ /\.hg/   {return 404;}
    location ~ /\.bzr/  {return 404;}

    include %home%/%user%/conf/web/nginx.%domain%.conf*;
}
/usr/local/vesta/data/templates/web/nginx/umi-cms.stpl

Code: Select all

server {
    listen      %ip%:%proxy_port%;
    server_name %domain_idn% %alias_idn%;
    ssl         on;
    ssl_certificate      %ssl_pem%;
    ssl_certificate_key  %ssl_key%;
    error_log  /var/log/httpd/domains/%domain%.error.log error;
    access_log     /var/log/httpd/domains/%domain%.log combined;
    access_log     /var/log/httpd/domains/%domain%.bytes bytes;

    location / {

        error_page 412 = @fallback;

        if ($request_method = 'POST') { return 412; }
        if ($is_args = '?') { return 412; }
        if ($cookie_umicms_session) { return 412; }

        try_files $uri/index.html @fallback;
        root %sdocroot%/cache/$host; # (3) Путь до каталога закэшированных файлов
        index index.php;
    }

    location /error/ {
        alias   %home%/%user%/web/%domain%/document_errors/;
    }

    location @fallback {
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_pass      http://%ip%:%web_ssl_port%;
    }

    location ~* ^/admin {
        error_page 412 = @fallback;
        return 412;
    }

    location ~* \.php$ {
        error_page 412 = @fallback;
        return 412;
    }

    location ~* ^.+\.(%proxy_extentions%)$ {
        root %sdocroot%;
        expires        max;
        access_log  off;
    }

    location ~ /\.ht    {return 404;}
    location ~ /\.svn/  {return 404;}
    location ~ /\.git/  {return 404;}
    location ~ /\.hg/   {return 404;}
    location ~ /\.bzr/  {return 404;}

    include %home%/%user%/conf/web/snginx.%domain%.conf*;
}
Конфиги уже проверены в работе и являются готовыми к использованию.

3) в основном конфиг-файле движка config.ini меняем

Code: Select all

[includes]
system.static-cache = указать тот же путь, что и в пункте (3) конфигурационного файла nginx
 
[cache]
static.enabled = "1"
static.mode = "nginx"
Обращаю внимание, что надо не забыть создать каталог для кеша, если его не было (у нас использовался иной каталог) или прописать в шаблоне тот же каталог, что и в config.ini (мы решили все таки вынести в отдельный)

4) все сохранить и перезапустить NGINX (предварительно проверить не сделали ли где опечатку или ошибку nginx -t)
4) в ПУ Vesta для хоста поменять шаблон NGINX на umi-cms
5) не заню надо ли, но из ПУ Vesta для юзера сделали "Пересоздать WEB"

Проверяем работу сайта
все ок - сайт открывается, админка тоже.

Замеряем скорость генерации страницы - около 0,3 сек после создания кеш (то есть 2е открытии страницы)

Дополнительно
Для общей оптимизации также поставили memcached (не забыть в /etc/sysconfig/memcached прописать OPTIONS="-l 127.0.0.1", если конечно не используется другими серверами)


наш вариант

Code: Select all

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="256"
OPTIONS="-l 127.0.0.1"
В адмикне UMI.CMS поменяли APC на Memcached

Ну и немного общего тюннинга по части MySQL, php

При посещаемость около 500 уников в день, потребление RAM не превышает 500-550 Mb, swap не используется.

В итоге получен шаблон для данного движка, позволяющий использовать статическое кеширование на полную мощность и реально увеличивающее скорость сайта для конечного посетителя (UMI перегенрит кеш при изменении контента, поэтому тут нет смысла переживать, что добавление новых и редактирование старых материалов не будет во время отображаться на сайте)


Надеюсь, кому то материал будет полезен.

Спасибо!
Top

imperio
VestaCP Team
Posts: 7000
Joined: Sat Dec 01, 2012 12:37 pm
Contact:
Contact imperio
Website

Re: [MANUAL] Шаблон NGINX под UMI.CMS
  • Quote

Post by imperio » Mon Mar 03, 2014 11:48 am

Спасибо. Думаю тем кто использует VestaCP + UMI.CMS, данная инструкция будет полезна.
Top


Post Reply
  • Print view

2 posts • Page 1 of 1

Return to “Веб сервер”



  • Board index
  • All times are UTC
  • Delete all board cookies
  • The team
Powered by phpBB® Forum Software © phpBB Limited
*Original Author: Brad Veryard
*Updated to 3.2 by MannixMD
 

 

Login  •  Register

I forgot my password