пятница, 6 августа 2010 г.

Засовываем веб-сервер в chroot


Играет: Sick Puppies - My World

Платформа: CentOS 5
WebServer: Apache 2
Задача: Перенести веб-сервер в чрут окружение.

Установка mod_chroot

В репозитории CentOS нет пакета mod_chroot, поэтому собираем его вручную.
Для начала подготовим систему:
yum groupinstall 'Development Tools'
yum groupinstall 'Development Libraries'
yum install httpd-devel

Теперь скачаем и соберем mod_chroot:
cd /tmp
wget http://core.segfault.pl/~hobbit/mod_chroot/dist/mod_chroot-0.5.tar.gz
tar xvfz mod_chroot-0.5.tar.gz
cd mod_chroot-0.5
apxs -cia mod_chroot.c

И по окончанию этого безобразия перезапустим веб-сервер:
/etc/init.d/httpd restart


Настройка веб-сервера

Веб-сервер будет у нас жить в /var/www, поэтому нам нужно перенести туда httpd.pid:mkdir -p /var/www/var/run
chown -R root:apache /var/www/var/run

Теперь необходимо перенастроить конфигурационный файл веб-сервера /etc/httpd/conf/httpd.conf следующим образом:
[...]
#
# PidFile: The file in which the server should record its process
# identification number when it starts.
#
#PidFile run/httpd.pid
PidFile /var/run/httpd.pid
ChrootDir /var/www
[...]


Настройка DocumentRoot

Пойдем простым способом, не требующим вмешательства в конфигурационные файлы сервера:
mkdir -p /var/www/var
cd /var/www/var
ln -s ../../ www
/etc/init.d/httpd stop
ln -sf /var/www/var/run/httpd.pid /var/run/httpd.pid
/etc/init.d/httpd start


Перенос необходимых библиотек

Если в связке с веб-сервером у вас используется PHP, CGI, Perl, Python и прочее, то для нормальной работы нам необходимо также перенести в чрут бинарники и библиотеки (и создать для них соответствующие директории, согласно основной системы). Для поиска зависимостей проще всего использовать утилиту ldd. Пример ее работы:
[centos:/var/www/]# ldd /usr/sbin/suphp
linux-gate.so.1 => (0xffffe000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7e34000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7e0f000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7e03000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7cd2000)
/lib/ld-linux.so.2 (0xb7f23000)


Заключение

Ну вот собственно и все. Можете ставить себе плюсик и сходить налить чаю :-)

Комментариев нет:

Отправить комментарий