Суть в том, что это не работает.
https://serverfault.com/questions/772298/configuring-apache2-mpm-worker-with-php5
Ubuntu's PHP5 module will only work with the single-threaded mpm_prefork. In order to use the Apache module with the threaded mpm_worker, you will need to compile a threadsafe version of PHP yourself (which requires disabling all of the features and modules of PHP that are not threadsafe, which are a lot of them).
Instead of using libapache2-mod-php5 you should consider using FastCGI/php-fpm. There is a guide to the steps needed to install and configure libapache2-mod-fastcgi and php5-fpm here: https://askubuntu.com/a/527227 Part of configuring FPM is to create "pools" of php processes, each of which have their own limits and INI files, so you will need to be sure that the limits in FPM are reasonable for your site's expected load.
This arrangement will allow you to use the multi-threaded worker MPM in Apache while handing off the PHP requests to individual PHP processes handling a single request each.
Показаны сообщения с ярлыком apache. Показать все сообщения
Показаны сообщения с ярлыком apache. Показать все сообщения
четверг, 25 октября 2018 г.
четверг, 3 мая 2018 г.
apache 2.4, nginx и 127.0.0.1 в логах
В старых версиях apache при проксировании запросов через nginx в логах апача светился 127.0.0.1, помогала установка mod_rpaf(2) или mod_realip. Но в 2.4 эти модули уже не нужны: в сам пакет входит mod_remoteip, и штатно активируется в /etc/httpd/conf.modules.d/00-base.conf
Но.. в логах всё-равно 127.0.0.1. Для полной настройки нужно создать файл /etc/httpd/conf.d/mod_remoteip.conf с содержимым
Но.. в логах всё-равно 127.0.0.1. Для полной настройки нужно создать файл /etc/httpd/conf.d/mod_remoteip.conf с содержимым
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1/8
после этого в /etc/httpd/conf/httpd.conf ищем LogFormat и заменяем %h на %a (подробности в документации)
И не забыть выставить X-Forwarded-For со стороны nginx, разумеется.
Проверяем что нет ошибок
apachectl -S
и перечитываем
apachectl -S
и перечитываем
service httpd graceful
И чуть линков
четверг, 14 июля 2016 г.
debian 8, apache, php: почта ходит только от рута
Довелось настраивать debian 8 + apache 2.4 (ITK) + php, штатный почтовик exim (и сразу - не забываем сказать dpkg-reconfigure exim4-config и выставить режим internet site), а дальше - есть скрипт-мейлер, от рута из консоли mail() возвращает true, а ровно оно же но через сайт отдаёт false. При этом в paniclog появляется строка
unable to set gid=1000 or uid=0 (euid=0): forcing real = effective
unable to set gid=1000 or uid=0 (euid=0): forcing real = effective
По данной строке уже гуглится проблема и решение:
<IfModule mpm_itk_module>
LimitUIDRange 0 6000
LimitGIDRange 0 6000
</IfModule>
ну или так
echo "LimitGIDRange 0 2000" >> /etc/apache2/mods-available/mpm_prefork.conf
echo "LimitUIDRange 0 2000" >> /etc/apache2/mods-available/mpm_prefork.conf
service apache2 restart
(только с гидом не работает, надо uid+gid)
Кто-то набыдлокодил и выпустил это в мир, только непонятно кто именно.
Плюс кому-то также в exim надо вписать
disable_ipv6 = true
И опционально в /etc/php5/apache/php.ini найти sendmail_path и выставить
sendmail_path = "/usr/sbin/exim4 -ti"
И немного доков
среда, 1 июля 2015 г.
nginx+pootle
Pootle - это система на базе django, помогающая с переводом .po файлов на разные языки, в том числе отслеживание изменений.
Поскольку это питон, желательно использовать uWSGI и nginx.
Поскольку это питон, желательно использовать uWSGI и nginx.
вторник, 9 сентября 2014 г.
CentOS 6: переход на httpd-itk
Тема конечно старая, но может быть кому-то актуальной. Переключаем apache на ITK
1) подключаем epel (интересный был найден метод: yum install epel-release из extras), при ругани
2) в /etc/sysconfig/httpd добавляем
HTTPD=/usr/sbin/httpd.itk
3) заменяем обработчик
sed -i ‘s/SuexecUserGroup/AssignUserID/’ /etc/httpd/conf/httpd.conf
4) в php.conf
<IfModule itk.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
5) если есть ispmanager:
"необходимо отредактировать конфиг файл - /usr/local/ispmgr/etc/ispmgr.conf — добавить строчку Option ApacheMPM и изменить строчку ApacheProcName httpd на ApacheProcName httpd.itk"
Также могут сломаться сессии, для этого надо сказать в конфиге сайта что-то типа
php_admin_value upload_tmp_dir "/home/site/data/mod-tmp"
php_admin_value session.save_path "/home/site/data/mod-tmp"
http://wiki.owlhost.net/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_mpm-itk_%D0%BD%D0%B0_CentOS/ISPmanager
http://svirchoff.ru/linux/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-apache-mpm-itk-%D0%BD%D0%B0-%D1%81entos-6-c-ispmanager/
1) подключаем epel (интересный был найден метод: yum install epel-release из extras), при ругани
2) в /etc/sysconfig/httpd добавляем
HTTPD=/usr/sbin/httpd.itk
3) заменяем обработчик
sed -i ‘s/SuexecUserGroup/AssignUserID/’ /etc/httpd/conf/httpd.conf
4) в php.conf
<IfModule itk.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
5) если есть ispmanager:
"необходимо отредактировать конфиг файл - /usr/local/ispmgr/etc/ispmgr.conf — добавить строчку Option ApacheMPM и изменить строчку ApacheProcName httpd на ApacheProcName httpd.itk"
Также могут сломаться сессии, для этого надо сказать в конфиге сайта что-то типа
php_admin_value upload_tmp_dir "/home/site/data/mod-tmp"
php_admin_value session.save_path "/home/site/data/mod-tmp"
http://wiki.owlhost.net/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_mpm-itk_%D0%BD%D0%B0_CentOS/ISPmanager
http://svirchoff.ru/linux/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-apache-mpm-itk-%D0%BD%D0%B0-%D1%81entos-6-c-ispmanager/
понедельник, 14 апреля 2014 г.
apache, nginx: ограничение видов запросов
В apache через .htaccess, Limit и LimitExcept
Например
http://www.webmasterworld.com/apache/3537686.htm
http://board.phpbuilder.com/showthread.php?10367096-.htaccess-configuration-(limit-get-allow-deny)-and-lt-Limit-GET-HEAD-POST-gt
nginx
синтаксис: limit_except метод ... { ... }
контекст: location
Ограничивает HTTP-методы, доступные внутри location. Параметр метод может быть одним из GET, HEAD, POST, PUT, DELETE, MKCOL, COPY, MOVE, OPTIONS, PROPFIND, PROPPATCH, LOCK, UNLOCK или PATCH. Если разрешён метод GET, то метод HEAD также будет разрешён. Доступ к остальным методам может быть ограничен при помощи директив модулей ngx_http_access_module и ngx_http_auth_basic_module:
limit_except GET {
allow 192.168.1.0/32;
deny all;
}
Обратите внимание, что данное ограничение действует для всех методов, кроме GET и HEAD.
http://nginx.org/ru/docs/http/ngx_http_core_module.html
http://board.phpbuilder.com/showthread.php?10367096-.htaccess-configuration-(limit-get-allow-deny)-and-lt-Limit-GET-HEAD-POST-gt
nginx
синтаксис: limit_except метод ... { ... }
контекст: location
Ограничивает HTTP-методы, доступные внутри location. Параметр метод может быть одним из GET, HEAD, POST, PUT, DELETE, MKCOL, COPY, MOVE, OPTIONS, PROPFIND, PROPPATCH, LOCK, UNLOCK или PATCH. Если разрешён метод GET, то метод HEAD также будет разрешён. Доступ к остальным методам может быть ограничен при помощи директив модулей ngx_http_access_module и ngx_http_auth_basic_module:
limit_except GET {
allow 192.168.1.0/32;
deny all;
}
Обратите внимание, что данное ограничение действует для всех методов, кроме GET и HEAD.
http://nginx.org/ru/docs/http/ngx_http_core_module.html
среда, 15 мая 2013 г.
FreeBSD: Error in apache22-itk-mpm
Иногда при сборке apache22-itk-mpm вылезает ошибка
> configure: error: the selected mpm -- itk -- is not supported
> configure: error: the selected mpm -- itk -- is not supported
воскресенье, 3 марта 2013 г.
apache+nginx, появление внутреннего порта в адресе
Связка apache+nginx, появление внутреннего порта в адресе.
Проблема была замечена исключительно с debian: при обращении к странице вида site.ru/about и внутренним редиректом на site.ru/about/ (добавление слэша в конец) вдруг появляется внутренный порт, и адрес становится например site.ru:8080/about/
Есть предположения о причинах, но если проблема не в основных настройках системы (уже было описано тут: http://dragonflybsd.blogspot.ru/2011/08/apachenginx.html), то наиболее простой фикс: в nginx правим переменную $host
proxy_set_header Host $host:80;
при этом должен стоять mod_rpaf (без выставленного X-Forvarded-for), с правильным RPAFproxy_ips.
Также был замечен вариант с
proxy_set_header X-Server-Address $server_addr;
но мной не проверялось.
помним про proxy_redirect
Проблема была замечена исключительно с debian: при обращении к странице вида site.ru/about и внутренним редиректом на site.ru/about/ (добавление слэша в конец) вдруг появляется внутренный порт, и адрес становится например site.ru:8080/about/
Есть предположения о причинах, но если проблема не в основных настройках системы (уже было описано тут: http://dragonflybsd.blogspot.ru/2011/08/apachenginx.html), то наиболее простой фикс: в nginx правим переменную $host
proxy_set_header Host $host:80;
при этом должен стоять mod_rpaf (без выставленного X-Forvarded-for), с правильным RPAFproxy_ips.
Также был замечен вариант с
proxy_set_header X-Server-Address $server_addr;
но мной не проверялось.
помним про proxy_redirect
воскресенье, 3 февраля 2013 г.
FreeBSD: Use of assignment to $[ is deprecated at /usr/local/sbin/apxs line 86.
После обновления перла при сборке разных пакетов может показывать ошибку
Use of assignment to $[ is deprecated at /usr/local/sbin/apxs line 86.
У меня наблюдалось при переходе с перл 5.8 на 5.14
Как можно догадаться из текста, надо обновить (переустановить) apr и за компанию apache.
Use of assignment to $[ is deprecated at /usr/local/sbin/apxs line 86.
У меня наблюдалось при переходе с перл 5.8 на 5.14
Как можно догадаться из текста, надо обновить (переустановить) apr и за компанию apache.
пятница, 25 января 2013 г.
Логгирование POST в apache
Можно это делать через mod_security, можно через mod_log_post
CentOS: mod_log_post есть в репе epel, ставится элементарно
yum install mod_log_post.`uname -i`
после этого
# /etc/init.d/httpd graceful
Теперь пост-запросы будут в
/var/log/httpd/post_log
В дебиляне надо качать сорцы и собирать самому, подробнее тут:
Модуль для логгирования POST запросов в Apache
CentOS: mod_log_post есть в репе epel, ставится элементарно
yum install mod_log_post.`uname -i`
после этого
# /etc/init.d/httpd graceful
Теперь пост-запросы будут в
/var/log/httpd/post_log
В дебиляне надо качать сорцы и собирать самому, подробнее тут:
Модуль для логгирования POST запросов в Apache
воскресенье, 9 декабря 2012 г.
awstats в CentOS
В версии 6 пути были
/usr/share/awstats/wwwroot
Тогда как в 7 уже
/var/www/awstats/
Поэтому и настройки отличаются.
У меня selinuх отключается за ненадобностью, поэтому если нужна его настройка - искать отдельно правила.
Итак, сначала подключаем rpmforge. Потом
yum install awstats
Теперь надо проверить конфиг /etc/httpd/conf.d/awstats.conf, путь должен быть /var/www/awstats. Если не так - посмотреть в /etc/httpd/conf.d/awstats.conf.rpmnew
Часть 2:
настройка.
Настройки для парсинга сайтов лежат в /etc/awstats/ в формате awstats._site_.conf
Настроек в файле много, подробнее есть в доках. За основу можно взять конфиг awstats.model.conf
Для генерации статистики автоматом ставится скрипт на запуск раз в час, в
/etc/cron.hourly/00awstats
вписывается
/usr/bin/awstats_updateall.pl now -confdir="/etc" -awstatsprog="/var/www/awstats/awstats.pl"
Ручное обновление
awstats_buildstaticpages.pl -config=_site_ -update
(для 6 версии было perl /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=_site_ -update)
Теперь обращаемся за данными
site.com/awstats/awstats.pl?config=_site_
где вместо _site_ вписываем сайт так, как он указан в имени конфига.
Сами данные лежат в
/var/lib/awstats/
Нюансы
Лучше сразу настроить access_log как combined и указать это в настройках awstats для сайта, там информации будет побольше.
4 - Apache or Squid native common log format (NCSA common/CLF log format)
это про тип common.
Возможные ошибки
503 Forbidden
You don't have permission to access /awstats/awstats.pl on this server.
Причина: в /etc/httpd/conf.d/awstats.conf прописано
order deny,allow
/usr/share/awstats/wwwroot
Тогда как в 7 уже
/var/www/awstats/
Поэтому и настройки отличаются.
У меня selinuх отключается за ненадобностью, поэтому если нужна его настройка - искать отдельно правила.
Итак, сначала подключаем rpmforge. Потом
yum install awstats
Теперь надо проверить конфиг /etc/httpd/conf.d/awstats.conf, путь должен быть /var/www/awstats. Если не так - посмотреть в /etc/httpd/conf.d/awstats.conf.rpmnew
Часть 2:
настройка.
Настройки для парсинга сайтов лежат в /etc/awstats/ в формате awstats._site_.conf
Настроек в файле много, подробнее есть в доках. За основу можно взять конфиг awstats.model.conf
Для генерации статистики автоматом ставится скрипт на запуск раз в час, в
/etc/cron.hourly/00awstats
вписывается
/usr/bin/awstats_updateall.pl now -confdir="/etc" -awstatsprog="/var/www/awstats/awstats.pl"
Ручное обновление
awstats_buildstaticpages.pl -config=_site_ -update
(для 6 версии было perl /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=_site_ -update)
Теперь обращаемся за данными
site.com/awstats/awstats.pl?config=_site_
где вместо _site_ вписываем сайт так, как он указан в имени конфига.
Сами данные лежат в
/var/lib/awstats/
Нюансы
Лучше сразу настроить access_log как combined и указать это в настройках awstats для сайта, там информации будет побольше.
4 - Apache or Squid native common log format (NCSA common/CLF log format)
With LogFormat=4, some features (browsers, os, keywords...) can't work.
это про тип common.
Возможные ошибки
503 Forbidden
You don't have permission to access /awstats/awstats.pl on this server.
Причина: в /etc/httpd/conf.d/awstats.conf прописано
order deny,allow
deny from all
allow from 127.0.0.1
решение - вписать свои айпи или просто сделать order allow,deny
четверг, 29 ноября 2012 г.
bitrix + debian
Битрикс хочет несколько моментов для работы (то, что вызывает больше всего вопросов):
- mbstring + 2 строчки в настройках
- права на запись
- обработчик .htaccess
apache: Особенности работы сайтов от заданных пользователей
Штатно все сайты работают от пользователя апача (www, www-data, apache).
Как изменить это поведение на работу от заданного пользователя:
suphp
suexec
cgi/fastcgi
apache-mpm-itk
Особенности:
для mpm-itk выставляем пользователя через
AssignUserID
Для isp также надо вписать в ispmgr.conf:
Option ApacheMPM
Режим работы апача небезопасен: если найдут дыру в апаче, когда он работает от рута - вся система сразу будет под властью взломщика с неограниченными правами.
Для suexec опция
SuexecUserGroup
но!!! работает suexec только в режиме cgi/fastcgi! Через mod_php пользователь будет апача. Связано с тем, что apache через suexec запускает php от заданного пользователя и передаёт ему коннект через mod_proxy.
Также в режиме fastcgi будет особенность обработки конфигурационных файлов, в частности в debian будет читаться только содержимое каталога
/etc/php5/apache2/conf.d/
но при этом полностью игнорируется содержимое
/etc/php5/apache2/php.ini
Таким образом, для каждого пользователя надо вносить изменения в
/var/www/_user_/data/php-bin/php.ini
а глобально - создавать файлы в
/etc/php5/apache2/conf.d/
с содержимым
[mbstring]
mbstring.internal_encoding = UTF-8
mbstring.func_overload = 2
Линки
куда делся режим "PHP как FastCGI"
Как изменить это поведение на работу от заданного пользователя:
suphp
suexec
cgi/fastcgi
apache-mpm-itk
Особенности:
для mpm-itk выставляем пользователя через
AssignUserID
Для isp также надо вписать в ispmgr.conf:
Option ApacheMPM
Режим работы апача небезопасен: если найдут дыру в апаче, когда он работает от рута - вся система сразу будет под властью взломщика с неограниченными правами.
Для suexec опция
SuexecUserGroup
но!!! работает suexec только в режиме cgi/fastcgi! Через mod_php пользователь будет апача. Связано с тем, что apache через suexec запускает php от заданного пользователя и передаёт ему коннект через mod_proxy.
Также в режиме fastcgi будет особенность обработки конфигурационных файлов, в частности в debian будет читаться только содержимое каталога
/etc/php5/apache2/conf.d/
но при этом полностью игнорируется содержимое
/etc/php5/apache2/php.ini
Таким образом, для каждого пользователя надо вносить изменения в
/var/www/_user_/data/php-bin/php.ini
а глобально - создавать файлы в
/etc/php5/apache2/conf.d/
Например для fastcgi и битрикса можно создать глобальный файл
/etc/php5/apache2/conf.d/mbstring.iniс содержимым
[mbstring]
mbstring.internal_encoding = UTF-8
mbstring.func_overload = 2
также обычно я выношу файл datetime.ini (по имени секции из главного конфига), где выставляется таймзона сервера.
Линки
куда делся режим "PHP как FastCGI"
вторник, 21 августа 2012 г.
400 Bad Request Request Header Or Cookie Too Large
Самое просто решение - почистить куки. Если же сервер наш, можно подкрутить настройки серверов:
для nginx это
large_client_header_buffers 4 8k;
Можно выставить например 16к, но дальше будет ошибка
Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.
Потому что надо увеличить эти же значения и для apache
LimitRequestFieldSize 8190
Можно выставить
LimitRequestFieldSize 16380
Но проблема может быть и по другой причине.
Включаем в nginx.conf строку
error_log /var/log/nginx/error.log info;
И видим в логе
2012/11/28 13:15:42 [info] 77783#0: *1146484 client sent too long header line: "X-Forwarded-For: 1.2.123.24, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, ..." while reading client request headers, client: 127.0.0.1, server: _, request: "GET / HTTP/1.0", host: "site.ru"
для nginx это
large_client_header_buffers 4 8k;
Можно выставить например 16к, но дальше будет ошибка
Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.
Потому что надо увеличить эти же значения и для apache
LimitRequestFieldSize 8190
Можно выставить
LimitRequestFieldSize 16380
Но проблема может быть и по другой причине.
Включаем в nginx.conf строку
error_log /var/log/nginx/error.log info;
И видим в логе
2012/11/28 13:15:42 [info] 77783#0: *1146484 client sent too long header line: "X-Forwarded-For: 1.2.123.24, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, ..." while reading client request headers, client: 127.0.0.1, server: _, request: "GET / HTTP/1.0", host: "site.ru"
Это признаки циклического редиректа, например в proxy_pass указан тот же порт, на котором сидит сам nginx (и так бывает иногда, да)
четверг, 21 июня 2012 г.
apache и nginx: сайт по умолчанию
nginx:
Если у директивы есть параметр default_server, то сервер, в котором описана эта директива, будет сервером по умолчанию для указанной пары адрес:порт. Если же директив с параметром default_server нет, то сервером по умолчанию будет первый сервер, в котором описана пара адрес:порт.
До версии 0.8.21 этот параметр назывался просто default.
дока
apache:
server { listen 80 default_server; server_name _; }
Если у директивы есть параметр default_server, то сервер, в котором описана эта директива, будет сервером по умолчанию для указанной пары адрес:порт. Если же директив с параметром default_server нет, то сервером по умолчанию будет первый сервер, в котором описана пара адрес:порт.
До версии 0.8.21 этот параметр назывался просто default.
дока
apache:
<VirtualHost _default_:*> DocumentRoot /var/www/default ErrorLog /var/www/default/error_log </VirtualHost>
среда, 20 июня 2012 г.
apache: client denied by server configuration
В лине можно словить эту ошибку.
Причины: в конфиге прописано
Фикс: написать в конфиг
Для битрикса по сути нужно только AllowOverride FileInfo
Можно просто убрать "лишние" строки из главного конфига, но по ряду причин лучше попытаться переопределить нужные. Это и безопаснее, и автообновление конфига не отвалится.
Причины: в конфиге прописано
<Directory "/"> ... AllowOverride none Options none </Directory>
Фикс: написать в конфиг
<Directory "/var/www/site"> ... Allow from all AllowOverride All Options +FollowSymLinks </Directory>
Для битрикса по сути нужно только AllowOverride FileInfo
Можно просто убрать "лишние" строки из главного конфига, но по ряду причин лучше попытаться переопределить нужные. Это и безопаснее, и автообновление конфига не отвалится.
среда, 30 мая 2012 г.
apache: LogLevel warn
По умолчанию апач обычно пишет в логи только уровень error и выше. Меняем на warn и выше: после ErrorLog пишем
LogLevel warn
и перезапускаем апач.
LogLevel warn
и перезапускаем апач.
четверг, 10 мая 2012 г.
SuexecUserGroup и AssignUserID
Часто бывает нужно, чтобы скрипты на сайте исполнялись не от системного юзера (www/www-data/apache), а от пользователя, которому принадлежит сайт. В зависимости от режима работы apache разные методы для указания пользователя.
Основные методы это SuexecUserGroup и AssignUserID, и в своих конфигах можно указывать оба атрибута, плюс вариант под peruser:
Существенные отличия тут в том, что только itk обеспечивает полную работу от указанного юзера, тогда как тот же SuexecUserGroup обеспечивает смену пользователя только для динамики. Статика отдаётся при этом от системного юзера.
Если при смене типа воркера используется ispmanager, надо сделать еще ряд манипуляций.
# perl -p -i -e 's/SuexecUserGroup/AssignUserID/g' /etc/httpd/conf/httpd.conf
В ispmgr.conf надо добавить
Option ApacheMPM
и возможно
ApacheProcName httpd.itk
Линки
http://forum.ispsystem.com/ru/showthread.php?t=17740
http://wiki.firstvds.ru/index.php/Apache_MPM-ITK_на_CentOS_с_ISPmanager
http://ru.ispdoc.com/index.php/Файл_конфигурации_ISPmanager_(ISPmanager)
Основные методы это SuexecUserGroup и AssignUserID, и в своих конфигах можно указывать оба атрибута, плюс вариант под peruser:
<IfModule peruser.c> ServerEnvironment user user Processor user user </IfModule> <IfModule mod_suexec.c> SuexecUserGroup user user </IfModule> <IfModule mod_suexec> SuexecUserGroup user user </IfModule> <IfModule itk.c> AssignUserID user user </IfModule>Также надо проверить, что есть сам блок про itk. Если нету -- надо вписать
<IfModule itk.c> StartServers 1 MinSpareServers 1 MaxSpareServers 5 ServerLimit 110 MaxClients 100 MaxRequestsPerChild 4000 </IfModule>Ну и подогнать под свои нужды.
Существенные отличия тут в том, что только itk обеспечивает полную работу от указанного юзера, тогда как тот же SuexecUserGroup обеспечивает смену пользователя только для динамики. Статика отдаётся при этом от системного юзера.
Если при смене типа воркера используется ispmanager, надо сделать еще ряд манипуляций.
# perl -p -i -e 's/SuexecUserGroup/AssignUserID/g' /etc/httpd/conf/httpd.conf
В ispmgr.conf надо добавить
Option ApacheMPM
и возможно
ApacheProcName httpd.itk
Линки
http://forum.ispsystem.com/ru/showthread.php?t=17740
http://wiki.firstvds.ru/index.php/Apache_MPM-ITK_на_CentOS_с_ISPmanager
http://ru.ispdoc.com/index.php/Файл_конфигурации_ISPmanager_(ISPmanager)
суббота, 28 апреля 2012 г.
suhosin и логи
Избавляемся от suhosin спама в логи (писалось под фрю, на линях пока не отлаживалось, может потом дополню)
понедельник, 19 марта 2012 г.
FastCGI: socket file descriptor (1103) is larger than FD_SETSIZE (1024)
Была год назад проблема с
(20)Not a directory: FastCGI: failed to connect to server "/home/abc/data/php-bin/php.sh": socket file descriptor (1103) is larger than FD_SETSIZE (1024), you probably need to rebuild Apache with a larger FD_SETSIZE
Сейчас снова всплыла после очередного обновления апача.
Фиксы:
make.conf:
В /usr/src/sys/sys/select.h:
После этого пересобираем апач и ap22-mod_fastcgi. Поведение с fcgid не проверялось.
(20)Not a directory: FastCGI: failed to connect to server "/home/abc/data/php-bin/php.sh": socket file descriptor (1103) is larger than FD_SETSIZE (1024), you probably need to rebuild Apache with a larger FD_SETSIZE
Сейчас снова всплыла после очередного обновления апача.
Фиксы:
make.conf:
.if ${.CURDIR} == ${PORTSDIR}/www/apache22 WITH_SSL=YES WITH_SUEXEC=YES PERF_TUNING=YES WITH_MODACCEL=YES HARD_SERVER_LIMIT=4096 #SUEXEC_DOCROOT=/home SUEXEC_DOCROOT=/ SUEXEC_USERDIR=www SUEXEC_LOGFILE=/var/log/httpd-suexec.log SUEXEC_CALLER=www CFLAGS+=" -DFD_SETSIZE=8192" CONF_CFLAGS=" -DFD_SETSIZE=8192U" .endif
В /usr/src/sys/sys/select.h:
... #define FD_SETSIZE 8192U ...
После этого пересобираем апач и ap22-mod_fastcgi. Поведение с fcgid не проверялось.
Подписаться на:
Сообщения (Atom)