@schors

Тег apache в блоге schors

schors

а никто кстати не хочет линуксовую часть лизануть? http://habrahabr.ru/post/240767/

schors

что-то не могу справится. apache 2.4, mod_wsgi 3.x, mod_deflate штатный. настраиваю сжатие через AddOutputFilterByType. статика, которую apache сам отдаёт - начинает сжиматься. а вот запросы к wsgi - ну ни в какую (AddOutputFilterByType DEFLATE text/html да). нагуглить проблему не могу.

schors

кстати очень недурно про настройку SSL https://wiki.mozilla.org/Security/Server_Side_TLS вообще у мозиллы внезапно всё очень недурно в доках

schors

недокументированный косяк при переходе с apache 1.3 на 2.4 (по пути тоже не нашёл). директива Action в apache 1.3 НЕ проверяет фактическое наличие обрабатываемого файла, а apache видимо с 2.0 - ПРОВЕРЯЕТ. судя по комментарию в документации, в версии apache 2.1 ввели аргумент "virtual" для отключения проверки. самого факта проверки, как и факта изменения поведения в документации не нашёл.

schors

недокументированный косяк при переходе с apache 1.3 на 2.4 (по пути тоже не нашёл). более строгая проверка директив конфигурации. очень часто можно было найти в .htaccess такое:
RedirectMatch ^(.*)$ http://example2.tld/$1 [R=301,L]
так вот в apache 2.4 такой номер не пройдёт, ибо [R=301,L] это фишка mod_rewrite, использованная клиентом по ошибке

schors

mod_proctitle для apache. фуф. надоело. работает отлично. но есть куда расти http://habrahabr.ru/post/240767/

schors

чтобы кто ни гундел, а писать чего apache делает в proctitle - очень наглядно. да перфоманс конечно того-с, однако. особенно там rate, qps и особенно listen queue. оооо!!! где я был все эти 12 лет?

schors

apache 2.4.10 modules/generators/mod_status строка 372. извините, это были мои воображаемые друзья. спать больше надо

schors

apache 2.4.10 modules/generators/mod_status строка 372 это как?
count += lres;
bcount += bytes;count += lres;

schors

а apache в структуре запроса нет времени окончания обработки запроса. mod_log_config делает очень странный изгиб через одно место, чтобы не дублировать функции взятия времени для одного запроса, а все остальные особо не парясь фигачат apr_time_now(), который внутри для UNIX gettimeofday() со всеми вытекающими. nginx легче. он кидает время аж в массив (хз зачем). и сразу форматирует всякими разными способами. что выглядит громоздко. челодлание какое-то сплошное

schors

выглядит pache mod_proctitle примерно так

ps -ax -U root | grep httpd

78945 ?? Ss 0:00.01 httpd: [M 0|0] ruby21 user01 (httpd)
78989 ?? Ss 0:00.25 httpd: [M 0|0] php52 user02 [PLAIN] (httpd)
79041 ?? Ss 0:00.09 httpd: [M 0|0] php53 user02 [PLAIN] (httpd)
79095 ?? Ss 0:00.09 httpd: [M 0|0] php53 user01 [PLAIN] (httpd)
79132 ?? Ss 0:00.09 httpd: [M 0|0] php54 user02 [PLAIN] (httpd)
79166 ?? Ss 0:00.09 httpd: [M 0|0] php55 user03 [PLAIN] (httpd)
79201 ?? Ss 0:00.09 httpd: [M 0|0] php54 user04 [PLAIN] (httpd)
79248 ?? Ss 0:00.09 httpd: [M 0|0] php56 user05 [PLAIN] (httpd)
79297 ?? Ss 0:00.09 httpd: [M 0|0] php54 user06 [PLAIN] (httpd)
79558 ?? Ss 0:00.01 httpd: [M 0|0] wsgi27 user02 (httpd)
79635 ?? Ss 0:00.01 httpd: [M 0|0] wsgi27 user01 (httpd)
79708 ?? Ss 0:00.01 httpd: [M 0|0] wsgi34 user07 (httpd)

ps -ax -U user02 | grep httpd

79025 ?? I 0:00.00 httpd: [I] [127.0.3.1] 127.0.3.1 GET / HTTP/1.1 (httpd)
79026 ?? I 0:00.00 httpd: [C] php52 user02 [PLAIN] (httpd)
79027 ?? I 0:00.00 httpd: [C] php52 user02 [PLAIN] (httpd)
79056 ?? I 0:00.00 httpd: [I] [127.0.3.2] 127.0.3.2 GET / HTTP/1.1 (httpd)
79057 ?? I 0:00.00 httpd: [C] php53 user02 [PLAIN] (httpd)
79058 ?? I 0:00.00 httpd: [C] php53 user02 [PLAIN] (httpd)
79147 ?? I 0:00.00 httpd: [C] php54 user02 [PLAIN] (httpd)
79148 ?? I 0:00.00 httpd: [I] [127.0.3.3] 127.0.3.3 GET / HTTP/1.1 (httpd)
79149 ?? I 0:00.00 httpd: [C] php54 user02 [PLAIN] (httpd)
79562 ?? I 0:00.04 httpd: user02/site2/2.user02.cz8.ru/norm (httpd)
79563 ?? I 0:00.04 httpd: user02/site2/2.user02.cz8.ru/norm (httpd)
79564 ?? I 0:00.04 httpd: [C] wsgi27 user02 (httpd)
79565 ?? I 0:00.03 httpd: [C] wsgi27 user02 (httpd)

(вот те GET - это наш monit моиторит состояние; [M] - основной воркер апача, он пишет заодно complete и incoplete queue; [C] - это "дочка" апача, пока не обработала ни одного запроса; [B] запрос в обработке, [I] - данные прошедшего запроса; запросы показываются только для mpm_prefork; на линукс пока не портировал)

schors

надо было пожаловаться в жуйк и пойнт. в apache чистый сокет достаётся apr_os_sock_get()

schors

воткнулся в слаборешаемую проблему - не могу никакими способами посредством API apache достать низкоуровневый дескриптор сокета, который слушаем. задница там из-за apr, который отдельно.

schors

товарищи линуксоиды! скажите, а в каких дистрибутивах что есть для передачи переменных окружения apache´у? вот в Debian/Ubintu я вижу закопанный файлик envvars. а в CentOS, Gentoo, etc?

schors

PhusionPassenger думает, что он умный и меняет proctitle основному апачу. тупо копированием в argv[0] того, что в этот argv[0] при запуске прилетело. не поверяя на длину. соответственно в proctitle полный дрен, если строка аргументов была длинная. так победим

schors

воткнуться в центральный процесс apache - это ap_hook_monitor() OK. способа забрать содержимое Define средствами API apache не существует

schors

прелесть какая. в apache можно задефайнить переменную через -D в коммандной строке, и через Define в конфигурационном файле. но задать ей значение через командную строку нельзя, а через конфиг - можно

schors

собственно мне надо как-то воткнуться в главный цикл основного процесса apache. пока не понимаю как

schors

Apache версия 2.4.10, server/mpm/prefork/prefork.c строка 1003 / this is a memory leak, but I'll fix it later. /

schors

и последний наверное вопрос дня - а есть дока по apache API? ну та что на сайте она какая-то косая... разве что на helloworld. я конечно уже начитался исходников, но таки иногда не хватает указаний....

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.