Патч для php-cgi, позволяющий конфигурировать значение listen backlog
По умолчанию значение listen backlog в php-cgi жёстко задано — 128. Это означает, что PHP не сможет обработать более 128 запросов одновременно (точнее, что очередь запросов не сможет превысить данного значения). Я столкнулся с тем, что 128 — это мало.
Для тех, кто столкнулся с данной проблемой, но по каким-либо причинам не хочет/не может поставить php-fpm (в котором backlog конфигурируется), я сделал небольшой патч. Далее »
Автор: Vladimir, опубликовано в: C/C++, PHP, комментариев: 9Янв
2010
WP Super Cache vs MaxSite Cache: часть 2
Вторая часть статьи WP Super Cache vs MaxSite Cache.
В предыдущей части я сравнивал поведение MaxSite Cache и WP Super Cache на тестовом VDS (512 MiB RAM, 10 GB HD, Intel Xeon X3320 (1 ядро), 2.5 GHz), на котором ни операционная система, ни программное обеспечение не были специально настроены — бралась конфигурация «из коробки» и тестировалась. Одним словом, «VDS абсолютного чайника».
В этой части изменилась только конфигурация программного обеспечения: сервер настраивался на максимальную производительность.
В частности:
- отказ от Apache в пользу nginx и от
mod_php5в пользуphp-fcgi(количество FastCGI-процессов выбиралось таким образом, чтобы избежать использования файла подкачки); - смена ядра с
linux-image-serverнаlinux-image-virtual; - настройка MySQL: отказ от InnoDB (экономит примерно 100 МБ памяти), увеличение буфера ключей и т.п.;
- установка и настройка xCache (я исходил из того, что далеко не все чувствуют себя комфортно при сборке программ из исходников, поэтому брал только готовое ПО);
- настройка
iptablesдля фильтрации пакетов.
Дек
2009
nginx Compatibility
Описание
Плагин предназначен для решения двух проблем:
- Когда WordPress обнаруживает, что используется FastCGI SAPI, код перенаправления, передаваемый в
wp_redirect(), игнорируется. Таким образом, все перенаправления с кодом 301 тихо превращаются в перенаправления с кодом 302, что не очень хорошо для SEO.
Если WordPress работает под управлением nginx, плагин переопределяет функциюwp_redirect(), что позволяет использовать коды перенаправления. - Если WordPress считает, что
mod_rewrite(модуль Apache, отвечающий за переписывание URL’ов — используется для красивых постоянных ссылок) не загружен (а nginx не использует модули и API Apache), он предлагает использовать постоянные ссылки в формате PATHINFO (Настройки » Постоянные ссылки). Такие ссылки не очень красивы, но всё же лучше, чем ничего.
Тем не менее, nginx умеет переписывать URL’ы, но не может об этом сказать WordPress. За него это делает плагин, заставляя WordPress думать, что mod_rewrite всё-таки загружен, и можно использовать красивые пермалинки.
Установка
- Загрузите каталог
nginx-compatibilityв/wp-content/plugins/ - Активируйте плагин в панели управления WordPress
- Это всё
Никакой настройки не требуется, плагин сам обо всём позаботится
Замечания по конфигурации nginx
Хотя данный плагин и позволяет WordPress использовать красивые постоянные ссылки, для этого требуются специальные правила в конфигурации виртуального хоста.
Для nginx версии 0.7.32 и старше могут использоваться такие правила (приведены только релевантные блоки):
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;
}
}
Для nginx младших версий конфигурация виртуального хоста будет несколько другой:
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 задайте адрес сервера php-cgi (обычно это 127.0.0.1:9000).
Для старых версий nginx, возможно, придётся изменить строку rewrite ^(.+)$ /index.php break;, если блог расположен не в корне сайта.
Файл fastcgi_params (в Debian он обычно в /etc/nginx, в других системах он может располагаться в другом месте — используйте правильный путь в директиве include!) выглядит примерно так (скорее всего, он идёт в стандартной поставке nginx):
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! Плагину для работы требуется PHP 5. PHP 4 не поддерживается разработчиками, у меня тоже нет желания его поддерживать. Тем более, что шестая версия на носу.
Домашняя страница плагина на wordpress.org.
Автор: Vladimir, опубликовано в: Всё подряд, комментариев: 47Апр
2009
nginx Compatibility: делаем WordPress дружелюбнее к nginx
Переведя несколько сайтов с Apache на nginx, уже который раз встречаю подводные камни. Один из них — нежелание WordPress понимать код редиректа, другая — постоянные попытки использовать PATHINFO-пермалинки вместо “нормальных” (pretty permalinks).
Неудобно каждый раз лезть в код WordPress, чтобы поправить очередную несовместимость, поэтому я написал небольшой плагин. Далее »
Автор: Vladimir, опубликовано в: Плагины WordPress, комментариев: 5Апр
2009
WordPress, FastCGI и редирект 301: часть 2
Более изящное решение, нежели представленное в первой части (WordPress, FastCGI и редирект 301).
В первой части предлагалось при использовании web-сервера nginx закомментировать проверку на SAPI PHP (if ( php_sapi_name() != 'cgi-fcgi' )). Однако есть лучшее решение. Далее »
Март
2009

Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.





