Инструменты пользователя

Инструменты сайта


freebsd:dev

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
freebsd:dev [2011/01/21 15:14]
linko22@gmail.com
freebsd:dev [2011/01/24 14:59] (текущий)
linko22@gmail.com
Строка 29: Строка 29:
  
  
-====== Настройка джейлов ======+====== Настройка работы с джейлами ====== 
 Для настройки джейлов будем использовать свежеустановленный сервер с FreeBSD. Кто то использует vim или vi, кто то nano, мне удобно пользоваться встроенным редактором в mc. Для настройки джейлов будем использовать свежеустановленный сервер с FreeBSD. Кто то использует vim или vi, кто то nano, мне удобно пользоваться встроенным редактором в mc.
  
 Поставим порт управления джейлами Поставим порт управления джейлами
-  cd /usr/ports/sysutils/ezjail +  [root@dev /]# cd /usr/ports/sysutils/ezjail 
-  make install clean+  [root@dev /]# make install clean
  
 Добавляем автозапуск джейла, указав в файле /etc/rc.conf: Добавляем автозапуск джейла, указав в файле /etc/rc.conf:
Строка 40: Строка 41:
  
 У меня на сервере самый большой размер имеет раздел /home. Поэтому, берем файл примеров настройки ezjail и копируем его в конфигурационный файл У меня на сервере самый большой размер имеет раздел /home. Поэтому, берем файл примеров настройки ezjail и копируем его в конфигурационный файл
-  cd /usr/local/etc +  [root@dev /]# cd /usr/local/etc 
-  cp ezjail.conf.sample ezjail.conf+  [root@dev /]# cp ezjail.conf.sample ezjail.conf
  
 В нем берем строку В нем берем строку
Строка 48: Строка 49:
   ezjail_jaildir=/home/jails   ezjail_jaildir=/home/jails
 Сохраняем файл и устанавливаем мир для джейлов, для этого используем команду  Сохраняем файл и устанавливаем мир для джейлов, для этого используем команду 
-  ezjail-admin create+  [root@dev /]# ezjail-admin create
  
 Он лезет в интернет и качает оттуда сборку FreeBSD под текущую систему. В принципе, можно было бы воспользоваться исходниками FreeBSD, если бы Вы их поставили, но так гораздо быстрее. Пока оно все ставиться, можно пойти и налить себе чайку/сходить покурить. Он лезет в интернет и качает оттуда сборку FreeBSD под текущую систему. В принципе, можно было бы воспользоваться исходниками FreeBSD, если бы Вы их поставили, но так гораздо быстрее. Пока оно все ставиться, можно пойти и налить себе чайку/сходить покурить.
Строка 58: Строка 59:
  
 Но мы пойдем немного дальше. В текущей статье, разработчиков 3, но что делать, если их будет больше? Это по первых, они могут ставить любой порт. Порт можно поставить нормально, можно криво, не хочется потом разбираться, почему так произошло. Так же, они будут иметь право удалять порты, зависимости и прочее. Не говоря уже о том, что при обновлении, придется заходить в каждый джейл и обновлять порты. Но мы пойдем немного дальше. В текущей статье, разработчиков 3, но что делать, если их будет больше? Это по первых, они могут ставить любой порт. Порт можно поставить нормально, можно криво, не хочется потом разбираться, почему так произошло. Так же, они будут иметь право удалять порты, зависимости и прочее. Не говоря уже о том, что при обновлении, придется заходить в каждый джейл и обновлять порты.
 +
 +====== Установка первого джейла ======
  
 Рассмотрим очевидное решение, которое мне показалось разумным. Рассмотрим очевидное решение, которое мне показалось разумным.
  
 Для начала создадим управляющий джейл. Для начала создадим управляющий джейл.
-  ezjail-admin create hq.local 10.8.0.200+  [root@dev /]# ezjail-admin create hq.local 10.8.0.200
  
 Лежать он будет по пути /home/jails/hq.local Лежать он будет по пути /home/jails/hq.local
-Создаем каталог +Создаем каталог и сопутствующие подкаталоги 
-  mkdir /home/jails/baselocaljail+  [root@dev /]# mkdir /home/jails/baselocaljail/{bin,include,info,lib,libdata,libexec,man,sbin,share,var,www}
 В нашем случае, он будет монтироваться в джейле в каталог /usr/local В нашем случае, он будет монтироваться в джейле в каталог /usr/local
  
Строка 83: Строка 86:
 Т.е. для управляющего джейла мы его будем монтировать в режиме чтение-запись, для установки или обновления портов, а в случае для разработчиков мы его будем монтировать в режиме только для чтения, за исключением каталога etc, где бы разработчики могли делать необходимые им изменения с конфигурационных файлов сервисов. Т.е. для управляющего джейла мы его будем монтировать в режиме чтение-запись, для установки или обновления портов, а в случае для разработчиков мы его будем монтировать в режиме только для чтения, за исключением каталога etc, где бы разработчики могли делать необходимые им изменения с конфигурационных файлов сервисов.
  
-  /home/jails/baselocaljail /home/jails/hq.sagl/baselocaljail nullfs ro 0 0+  /home/jails/baselocaljail /home/jails/hq.local/baselocaljail nullfs ro 0 0 
 + 
 +Так же, нам нужно будет работать с портами. Для этого удаляем симлинк с портами в джейле и делаем из него папку, что бы потом просто монтировать папку с портами в джейл. 
 + 
 +  [root@dev /]# rm /home/jails/hq.local/usr/ports ; mkdir /home/jails/hq.local/usr/ports 
 + 
 +Так же прописываем это в /etc/fstab.hq_local 
 +  /usr/ports /home/jails/hq.local/usr/ports nullfs rw 0 0 
 + 
 +Запускаем непосредственно джейл 
 + 
 +  [root@dev /]# /usr/local/etc/rc.d/ezjail start 
 + 
 +И смотрим в списках джейлов, какой он имеет JID. 
 + 
 +  [root@dev /]# jls 
 +     JID  IP Address      Hostname                      Path 
 +        10.8.0.200      hq.local                      /home/jails/hq.local 
 + 
 +Заходим в него 
 + 
 +  [root@dev /]# jexec 1 tcsh 
 +  hq# 
 + 
 +Все, мы в джейле. 
 + 
 +====== Настройка управляющего джейла ====== 
 + 
 +Для того, что бы все установленные порты могли использоваться другими джейлами надо создать несколько симлинков. 
 + 
 +  #hq cd /usr/local/ 
 +  #hq ln -s /baselocaljail/{bin,include,info,lib,libdata,libexec,man,sbin,share,var,www} . 
 + 
 +Т.е. фактически, все основные каталоги, кроме etc будут ссылаться на каталог, который мы примонтировали для джейлов. Во всех джейлах содержимое будет одинаково. 
 + 
 +Для установки портов я использую локальную копию портов и его же локальный кеш distfiles, что бы не качать одни и те же порты, что уже и так есть у меня, когда я настраивал основную систему. Для этого надо подправить один файл, /etc/make.conf, закоментировать строчку DISTDIR 
 +  #DISTDIR   /var/ports/distfiles 
 + 
 +И, соответственно, поле этого ставим те порты, которые нам нужны. 
 + 
 +====== Джейлы разработчиков ====== 
 + 
 +Создаются по такому же принципу, что и управляющий джейл, за исключением того, что, все каталоги монтируются в режиме только для чтения, а каталог с портами вообще не используется. 
 +====== Подводные камни ====== 
 + 
 +Масса. 
 + 
 +Во первых, это php. Как известно, php использует файл /usr/local/etc/php/extenstions.ini для предопределения, какие экстеншены мы будем использовать. При установке какого либо порта для php или для его удаления, необходимо обновлять файл в остальных джейлах и рестартить везде apache. Можно просто обойтись копированием, но я сделал немного по другому. 
 + 
 +В каталоге /baselocaljail у меня есть каталог var, куда я засунул файл extensions.ini. Соответственно, при этом, при обновлении этого файла в управляющем джейле, он будет везде одинаков. 
 + 
 +  #hq mkdir /usr/local/etc/php 
 +  #hq touch /baselocaljail/var/extensions.ini 
 +  #hq cd /usr/local/etc/php && ln -s /baselocaljail/var/extensions.ini . 
 + 
 +Далее. При установке какого нибудь дополнительного порта, необходимо в каждом джейле запускать /etc/rc.d/ldcondig 
 + 
 +Например, для этого можно написать простенький скрипт: 
 + 
 +  #!/bin/csh 
 +   
 +  jls | grep user | awk '{ system( "jexec "$1" /etc/rc.d/ldconfig restart");}' 
 + 
 +То же самое относиться к апачу 
 + 
 +  #!/bin/csh 
 +   
 +  jls | grep user | awk '{ system( "jexec "$1" /usr/local/etc/rc.d/apache22 restart");}'
  
  
 +Ну, и конечно, некоторые программы кладут скрипты запуска, а так же файлы конфигураций по пути /usr/local/etc, их уже надо отслеживать руками.
  
 ====== Настройка bind ====== ====== Настройка bind ======
freebsd/dev.1295612084.txt.gz · Последнее изменение: 2011/01/21 15:14 — linko22@gmail.com