Запуска apache в окружении chroot

Перехав из родственного Debian дистрибутива например на ArchLinux вы обнаружите неприятную особенность конфигурации Apache, настройки модулей и виртуальных хостов сосредоточены в 2 файлах, а не так как вы успели привыкнуть, когда для добавления нового виртуального хоста или модуля нужно всего лишь добавить симлинк в папку site-enabled. Так и я попался, разруливать конфиг апаче по новой мне очень не хотелось? по-этому я пошёл по лёгкому пути, запустил веб сервер в своей старой убунте, находясь при этом в дистрибутиве ArchLinux. Делает это просто, вот скрипт запуска:

cat bin/start_http.sh

#!/bin/bash
# монтируем необходимые для апача служебные директории
sudo mount --bind /dev/ /media/ubuntu/dev/
sudo mount --bind /proc/ /media/ubuntu/proc/
sudo mount --bind /media/home/ /media/ubuntu/home/
# используя chroot запускаем апача на разделе с дистрибутивом Ubutnu
sudo chroot /media/ubuntu/ /etc/init.d/apache2 start

вот скрипт остановки сервера:

cat bin/stop_http.sh

#!/bin/bash
# используя chroot останавливаем сервер
sudo chroot /media/ubuntu/ /etc/init.d/apache2 stop
sleep 5
# подождав 5 секунда(пока апач полностью не остановится) отмонтируем каталоги
sudo umount /media/ubuntu/dev/
sudo umount /media/ubuntu/proc/
sudo umount /media/ubuntu/home/

Для заметки: команда chroot позволяет изменить название корневого каталога, а это позволяет без особых усилий использовать отличные от целевой системы создавая виртуальные окружения, такой приём используется для создания безопасного окружения опасных сервисов типа: bind, apache, ntpd, изолируя эти сервисы от родительской системы. Взломав такую систему хакер получает доступ только к файловой системе ограниченной chroot и не имеет доступа к родительской системе. А так же достаточно просто запускать инородные приложения, для разгрузки своего домашнего компьютера я вынес mysql сервер на компьютер супруги, дал ему алиас mysql.xxx и расшарил во внутреннюю сеть, затем когда она перехала в Debian 5.0-AMD64 я в чруте запустил mysql сервер

  1. sudo chroot /media/ubuntu
  2. mount /proc # без /proc mysql не запуститься
  3. /etc/init.d/mysql start

Конечно я несколько потерял в производительности, но пока я не провёл тесты и не знаю СКОЛЬКО, для меня это решение приемлимо

 

Комментариев 0
Нужна авторизация с помощью
Об авторе
Илья Илья

меня можно найти тут