FastNetMon

Показаны сообщения с ярлыком Apache. Показать все сообщения
Показаны сообщения с ярлыком Apache. Показать все сообщения

воскресенье, 18 марта 2012 г.

Да здравствует Apache 2.4

Кардинально новых фич крайне мало, скорее доделка и повсеместное улучшение, но на этом попрощие работа выполнена просто огромная!

Подробнее: http://www.opennet.ru/opennews/art.shtml?num=33138

суббота, 23 июля 2011 г.

Модуль для логгирования POST запросов в Apache

Вот описание: http://freshmeat.net/projects/mod_log_post

Вот официальный сайт загрузки (требуется регистрация): http://ftp.robert-scheck.de/linux/mod_log_post/

А вот зеркало без регистрации: http://fastvps.googlecode.com/files/mod_log_post-0.1.0.tar.gz
cd /usr/src
wget http://fastvps.googlecode.com/files/mod_log_post-0.1.0.tar.gz
tar -xf mod_log_post-0.1.0.tar.gz
cd mod_log_post-0.1.0
apt-get install -y apache2-dev
./configure
make install
После этого модуль скопируется в: /usr/lib/apache2/modules, а конфиг его добавится в /etc/apache2/conf.d/log_post.conf.

Открываем конфиг:
vim /etc/apache2/conf.d/log_post.conf

Там заменяем:
LoadModule log_post_module modules/mod_log_post.so
на
LoadModule log_post_module /usr/lib/apache2/modules/mod_log_post.so

И применяем изменения:
/etc/init.d/apache2 restart


tail -f /var/log/apache2/post_log




вторник, 7 декабря 2010 г.

Баг с source пакетом от Apache2 в Debian

Актуальная версия Apache в Debian сейчас lenny8, но исходники Апача упорно качаются от 7го:

# dpkg -l | grep 'apache2 '
ii apache2 2.2.9-10+lenny8 Apache HTTP Server metapackage

# apt-get clean
# apt-get source apache2
Reading package lists... Done
Building dependency tree
Reading state information... Done
Need to get 6546kB of source archives.
Get:1 http://security.debian.org lenny/updates/main apache2 2.2.9-10+lenny7 (dsc) [1682B]
Get:2 http://security.debian.org lenny/updates/main apache2 2.2.9-10+lenny7 (tar) [6397kB]
Get:3 http://security.debian.org lenny/updates/main apache2 2.2.9-10+lenny7 (diff) [147kB]
Fetched 6546kB in 6s (1012kB/s)
gpg: Signature made Sun 28 Mar 2010 10:07:07 PM MSD using DSA key ID AE3BE9AA
gpg: Can't check signature: public key not found
dpkg-source: extracting apache2 in apache2-2.2.9
dpkg-source: info: unpacking apache2_2.2.9.orig.tar.gz
dpkg-source: info: applying apache2_2.2.9-10+lenny7.diff.gz

sources.list (это этом не используется заpinивание пакаджей):
cat /etc/apt/sources.list
deb ftp://mirror.hetzner.de/debian/packages lenny main contrib non-free
deb ftp://mirror.hetzner.de/debian/security lenny/updates main contrib non-free

deb http://ftp.de.debian.org/debian lenny main non-free contrib
deb-src http://ftp.de.debian.org/debian lenny main non-free contrib

deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

Бага / фича?

Update: видимо, какое-то из зеркал тупит, на другой машине не воспроизвелось и стянуло lenny8.

суббота, 27 ноября 2010 г.

Как работает Apache Per User MPM?

http://www.peruser.org/trac/peruser/wiki/PeruserUnderTheHood

Из фундаментальных отличий от prefork - наличие мультиплексор (третий тип) процесса, который принимает соединение, определяет, на какой vhost оно идет и передает соединение нужному рабочему процессу.

воскресенье, 21 ноября 2010 г.

Для чего Apache 2.2 Prefork MPM использует shm память?

Сейчас изучаю исходный код Apache 2.2 Prefork и хотелось бы объяснить, зачем Апача использует SHM память.

Итак, имеем в почти чистой системе такую вот картину по использованию SHM памяти:
ipcs -m

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x0000014c 0 root 600 384 0

Запускаем Апача:
/etc/init.d/apache2 start
Starting web server: apache2.

Убеждаемся, что запустились и считаем количество тушек:
ps aux | grep apa | wc -l
8

Также обращаем внимание, что появился блок SHM памяти:
ipcs -m

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x0000014c 0 root 600 384 14
0x0103c460 65537 root 600 345416 7

Итак, зачем же она нужна Апачу? :)

вторник, 16 ноября 2010 г.

Как сделать Apache hook на событие ДО форка child?

Есть только после форка:
Apache provides hooks into the child process initialization and exit handling. The child process initialization handler, installed with PerlChildInitHandler, is called just after the main server forks off a child but before the child has processed any incoming requests. The child exit handler, installed with PerlChildExitHandler, is called just before the child process is destroyed.

Как сделать до форка? Кто-нибудь такое делал?

суббота, 13 ноября 2010 г.

Тюнинг Apache (Prefork) MaxClients на OpenVZ VPS

Имеем работающий хотя бы минут 15-20 VPS с отключенным Апачем:
free
total used free shared buffers cached
Mem: 409600 62588 347012 0 0 0
-/+ buffers/cache: 62588 347012
Swap: 0 0 0

Запускаем Апача:
/etc/init.d/apache2 start

Дерагем несколько страниц сайта и смотрим данные free повторно:
free
total used free shared buffers cached
Mem: 409600 81100 328500 0 0 0
-/+ buffers/cache: 81100 328500
Swap: 0 0 0

Теперь считаем число обработчиков Апача:
ps aux | grep apa | wc -l
6

Далее производим расчет памяти, занимаемой одним процессом Апача (делаим на 5, а не на 6, потому что 1 процесс Апача является родительским и обработку сайтов не осуществляет):
perl -e ' print scalar (81100-62588)/5/1024'
3.615625

То есть, около 4 мегабайт на один процесс. Это крайне примерный метод, так что стоит заложить в него +5 мегабайта еще, то есть взять где-то 8-9 мегабайт на процесс. Более точные измерения можно провести вот так: http://phpsuxx.blogspot.com/2010/04/blog-post_9092.html

Теперь берем объем свободной памяти до старта Апача (347012) и делим его на память, занимаемую 1 тушкой Апача:
perl -e '347/9'
38.5555555555556

Итого, ставим MaxClients у Апача в 35 и живем спокойно.

пятница, 12 ноября 2010 г.

Apache mod_ruid2 - suexec new generation или нет ?

Вот порекомендовали mod_ruid2 с такой вот заявкой приятных фич:
mod_ruid2 is a suexec module for apache 2.0, based on mod_ruid and mod_suid2

-it runs only on linux because afaik only linux has implemented posix 1003.1e capabilities

-it has better performance than mod_suid2 because it doesn`t need to kill httpd children after one request. it makes use of kernel capabilites and after receiving a new request suids again.

-there are some security issues, for instance if attacker successfully exploits the httpd process, he can set effective capabilities and setuid to root. i recommend to use some security patch in kernel (grsec), or something..

Интересный вариант, однако.

Из недостатков - подозрения, что это потенциально небезопасно. Из используемых технологий - Linux capabilities (да, да, как раз из-за них требуется Posix и Линукс). Из принципа работы - при отфорке процесса даем ему capabilities CAP_SETGID и CAP_SETGID (то есть, работая от обычного пользователя он получает возможность менять себе uid/gid, как пожелает) и если следующий запрос идет к другому сайту (точнее - сайту принадлежащему другому пользователю), с чистой совестью меняем uid / gid на него и продолжаем обработку.