Патч для php-cgi, позволяющий конфигурировать значение listen backlog

По умолчанию значение listen backlog в -cgi жёстко задано — 128. Это означает, что не сможет обработать более 128 запросов одновременно (точнее, что очередь запросов не сможет превысить данного значения). Я столкнулся с тем, что 128 — это мало.

Для тех, кто столкнулся с данной проблемой, но по каким-либо причинам не хочет/не может поставить -fpm (в котором backlog конфигурируется), я сделал небольшой . Далее »

Автор: Vladimir, опубликовано в: C/C++, PHP, комментариев: 9
3
Янв
2010

WP Super Cache vs MaxSite Cache: часть 2

Вторая часть статьи WP Super Cache vs MaxSite Cache.

В предыдущей части я сравнивал поведение MaxSite Cache и на тестовом VDS (512 MiB RAM, 10 GB HD, Intel Xeon X3320 (1 ядро), 2.5 GHz), на котором ни операционная система, ни программное обеспечение не были специально настроены — бралась конфигурация «из коробки» и тестировалась. Одним словом, «VDS абсолютного чайника».

В этой части изменилась только конфигурация программного обеспечения: сервер настраивался на максимальную .

В частности:

  • отказ от Apache в пользу и от mod_5 в пользу -fcgi (количество -процессов выбиралось таким образом, чтобы избежать использования файла подкачки);
  • смена ядра с linux-image-server на linux-image-virtual;
  • настройка MySQL: отказ от InnoDB (экономит примерно 100 МБ памяти), увеличение буфера ключей и т.п.;
  • установка и настройка xCache (я исходил из того, что далеко не все чувствуют себя комфортно при сборке программ из исходников, поэтому брал только готовое ПО);
  • настройка iptables для фильтрации пакетов.

Далее »

Автор: Vladimir, опубликовано в: WordPress, комментариев: 2
13
Дек
2009

nginx Compatibility

Описание

предназначен для решения двух проблем:

  1. Когда обнаруживает, что используется SAPI, код перенаправления, передаваемый в wp_redirect(), игнорируется. Таким образом, все перенаправления с кодом 301 тихо превращаются в перенаправления с кодом 302, что не очень хорошо для SEO.
    Если работает под управлением , переопределяет функцию wp_redirect(), что позволяет использовать коды перенаправления.
  2. Если считает, что mod_rewrite (модуль Apache, отвечающий за переписывание URL’ов — используется для красивых постоянных ссылок) не загружен (а не использует модули и API Apache), он предлагает использовать постоянные ссылки в формате PATHINFO (Настройки » Постоянные ссылки). Такие ссылки не очень красивы, но всё же лучше, чем ничего.
    Тем не менее, умеет переписывать URL’ы, но не может об этом сказать . За него это делает , заставляя думать, что mod_rewrite всё-таки загружен, и можно использовать красивые пермалинки.

Установка

  1. Загрузите каталог -compatibility в /wp-content/plugins/
  2. Активируйте в панели управления
  3. Это всё :-) Никакой настройки не требуется, сам обо всём позаботится

Замечания по конфигурации

Хотя данный и позволяет использовать красивые постоянные ссылки, для этого требуются специальные правила в конфигурации виртуального хоста.

Для версии 0.7.32 и старше могут использоваться такие правила (приведены только релевантные блоки):

[-]
View Code nginx configuration
server {
    server_name mysite.com www.mysite.com;

    root /path/to/blog;

    index index.php;

    location / {
        try_files $uri $uri/ @wordpress;
    }

    location @wordpress {
        fastcgi_pass ...;
        fastcgi_param SCRIPT_FILENAME /path/to/blog/index.php;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_NAME /index.php;
    }

    location ~ \.php$ {
        try_files $uri @wordpress;
        fastcgi_index index.php;
        fastcgi_pass ...;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }
}

Для младших версий конфигурация виртуального хоста будет несколько другой:

[-]
View Code nginx configuration
server {
    server_name mysite.com www.mysite.com;

    root /path/to/blog;

    index index.php;

    location / {
        log_not_found off;
        error_page 404 = @wordpress;
    }

    location @wordpress {
        fastcgi_pass ...;
        fastcgi_param SCRIPT_FILENAME /path/to/blog/index.php;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_NAME /index.php;
    }

    location ~ \.php$ {
        if (!-e $request_filename) {
            rewrite ^(.+)$ /index.php break;
            break;
        }

        fastcgi_index index.php;
        fastcgi_pass ...;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }
}

Замените /path/to/blog путём к блогу, в fastcgi_pass задайте адрес сервера -cgi (обычно это 127.0.0.1:9000).
Для старых версий , возможно, придётся изменить строку rewrite ^(.+)$ /index.php break;, если блог расположен не в корне сайта.

Файл _params (в Debian он обычно в /etc/, в других системах он может располагаться в другом месте — используйте правильный путь в директиве include!) выглядит примерно так (скорее всего, он идёт в стандартной поставке ):

[-]
View Code nginx configuration
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

fastcgi_buffer_size 32k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

Есть вопросы по конфигурации — пишите.

Часто задаваемые вопросы

Вопросов пока нет, ответов тоже. Задавайте.

Замечания

GoPHP5! Плагину для работы требуется  5.  4 не поддерживается разработчиками, у меня тоже нет желания его поддерживать. Тем более, что шестая версия на носу.

Домашняя страница плагина на wordpress.org.

Автор: Vladimir, опубликовано в: Всё подряд, комментариев: 47
17
Апр
2009

nginx Compatibility: делаем WordPress дружелюбнее к nginx

Переведя несколько сайтов с Apache на , уже который раз встречаю подводные камни. Один из них — нежелание понимать код редиректа, другая — постоянные попытки использовать PATHINFO-пермалинки вместо “нормальных” (pretty permalinks).

Неудобно каждый раз лезть в код , чтобы поправить очередную несовместимость, поэтому я написал небольшой . Далее »

Автор: Vladimir, опубликовано в: Плагины WordPress, комментариев: 5
14
Апр
2009

WordPress, FastCGI и редирект 301: часть 2

Более изящное решение, нежели представленное в первой части (WordPress, FastCGI и редирект 301).

В первой части предлагалось при использовании web-сервера закомментировать проверку на SAPI (if ( php_sapi_name() != 'cgi-fcgi' )). Однако есть лучшее решение. Далее »

Автор: Vladimir, опубликовано в: Патчи, комментариев: 3
13
Март
2009