Код
# uname -prs
FreeBSD 8.0-RELEASE i386
FreeBSD 8.0-RELEASE i386
Создаём клетки. Для этого есть 2 способа:
1. прописываем руками:
Код
# setenv D /here/is/the/jail
# mkdir -p $D
# cd /usr/src
# make buildworld
# make installworld DESTDIR=$D
# make distribution DESTDIR=$D
# mount -t devfs devfs $D/dev
# mkdir -p $D
# cd /usr/src
# make buildworld
# make installworld DESTDIR=$D
# make distribution DESTDIR=$D
# mount -t devfs devfs $D/dev
такой образ действий не всем будет понятен и красив, поэтому нашёл вот такой скриптик (2.)
Код
#cat /home/ISQman/jail_create.sh
#!/bin/sh
# скрипт создания клеток
case "$2" in
create)
# стругаем клетку
jail_dir="$1"
mkdir -p ${jail_dir}
cd /usr/src
mkdir -p ${jail_dir}
make world DESTDIR=${jail_dir}
cd /usr/src/etc
make distribution DESTDIR=${jail_dir}
mount_devfs devfs ${jail_dir}/dev
;;
*)
echo ""
echo "Usage: `basename $0` { /path/to/jail/directory create }"
echo ""
exit 64
;;
esac
#!/bin/sh
# скрипт создания клеток
case "$2" in
create)
# стругаем клетку
jail_dir="$1"
mkdir -p ${jail_dir}
cd /usr/src
mkdir -p ${jail_dir}
make world DESTDIR=${jail_dir}
cd /usr/src/etc
make distribution DESTDIR=${jail_dir}
mount_devfs devfs ${jail_dir}/dev
;;
*)
echo ""
echo "Usage: `basename $0` { /path/to/jail/directory create }"
echo ""
exit 64
;;
esac
достаточно создать его в нужном месте и и чмоднуть на 755 (chmod +x /путь/к/скрипту)
далее запуск самого скрипта:
Код
#./jail_create.sh /usr/local/jails/retracker create
открываем новую консоль и приступаем к предварительной настройке сервера под клетку.
Код
# cat /etc/rc.conf | grep ifconfig
ifconfig_rl0="inet 192.168.0.200 netmask 255.255.255.0"
ifconfig_rl0_alias0="inet 192.168.0.201 netmask 255.255.255.0"
ifconfig_rl0="inet 192.168.0.200 netmask 255.255.255.0"
ifconfig_rl0_alias0="inet 192.168.0.201 netmask 255.255.255.0"
Заставляем работать sshd на одном (основном) адресе:
Код
#cat /etc/ssh/sshd_config | grep ListenAddress
ListenAddress 192.168.0.200
#ListenAddress ::
ListenAddress 192.168.0.200
#ListenAddress ::
Вешаем syslogd на тот же адрес:
Код
#cat /etc/rc.conf | grep syslo
syslogd_flags="-b 192.168.0.200"
syslogd_flags="-b 192.168.0.200"
уходим поесть, по пить чай или даже поспать часа на 2 точно (у меня собиралось на тестовом железе 3.5 часа)
далее после сборки мира ребутим машину, проверяем и настраиваем клетку:
было до настроек и ребута:
Код
#sockstat | grep "*."
root inetd 494 5 tcp4 *:21 *:*
root sendmail 451 3 tcp4 127.0.0.1:25 *:*
root sshd 445 3 tcp4 *:22 *:*
root syslogd 325 6 udp4 *:514 *:*
root inetd 494 5 tcp4 *:21 *:*
root sendmail 451 3 tcp4 127.0.0.1:25 *:*
root sshd 445 3 tcp4 *:22 *:*
root syslogd 325 6 udp4 *:514 *:*
стало:
Код
#sockstat | grep "*."
root inetd 462 5 tcp4 192.168.0.200:21 *:*
root sendmail 417 3 tcp4 127.0.0.1:25 *:*
root sshd 411 3 tcp4 192.168.0.200:22 *:*
root syslogd 291 6 udp4 192.168.0.200:514 *:*
root inetd 462 5 tcp4 192.168.0.200:21 *:*
root sendmail 417 3 tcp4 127.0.0.1:25 *:*
root sshd 411 3 tcp4 192.168.0.200:22 *:*
root syslogd 291 6 udp4 192.168.0.200:514 *:*
проверяем алиасы:
Код
#ifconfig
net0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.0.200 netmask 0xffffff00 broadcast 192.168.0.255
inet 192.168.0.201 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:a5:b5:c5:d5:e5
net0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.0.200 netmask 0xffffff00 broadcast 192.168.0.255
inet 192.168.0.201 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:a5:b5:c5:d5:e5
Создаём в клетке пусой файл /etc/fstab
Код
#touch /usr/local/jails/retracker/etc/fstab
содаём резолв (какбы нужен всё-таки адрес днс)
Код
#echo "nameserver 192.168.0.3" /usr/local/jails/retracker/etc/resolv.conf
Добавляем в файл /usr/local/jails/jail_test/etc/rc.conf такие строки (если там нужны эти демоны):
Код
sshd_enable="YES"
inetd_enable="YES"
mysql_enable="YES"
xbt_tracker_enable="YES"
inetd_enable="YES"
mysql_enable="YES"
xbt_tracker_enable="YES"
Затем на родительской машине добавляем такие строки в /etc/rc.conf
Код
jail_enable="YES"
jail_list="retracker"
jail_retracker_rootdir="/usr/local/jails/retracker" # jail's root directory
jail_retracker_hostname="retracker.local" # jail's hostname
jail_retracker_ip="192.168.0.201" # jail's IP address
jail_retracker_devfs_enable="YES" # mount devfs in the jail
jail_retracker_procfs_enable="YES"
jail_retracker_flags="-l -U root"
jail_list="retracker"
jail_retracker_rootdir="/usr/local/jails/retracker" # jail's root directory
jail_retracker_hostname="retracker.local" # jail's hostname
jail_retracker_ip="192.168.0.201" # jail's IP address
jail_retracker_devfs_enable="YES" # mount devfs in the jail
jail_retracker_procfs_enable="YES"
jail_retracker_flags="-l -U root"
Затем заводим пользователя и даём руту в клетке пароль, для этого входим в клетку:
Код
#jail /usr/local/jails/retracker/ retracker 192.168.0.201 /bin/tcsh
И заводим пользователя командой adduser. Не забываем задать пароль для рута. Выходим из клетки командой exit, и можно запускать:
Код
#/etc/rc.d/jail start
Configuring jails:.
Starting jails: retracker.local.
Configuring jails:.
Starting jails: retracker.local.
далее либо вышеизложенным способом либо по ссхе заходим в клетку и ставим ретрекер:
так как система у нас пустая, например мне не очень хотелось её сильно отстраивать, и поэтому древо портов я не ставил. симлинки не катят.
для начала:
Код
retracker# pkg_add -r mc
почему я сначала ставлю мс - элементарно, очень много полезных зависимостей тянет за собой + лучший консольный фм
Код
retracker# pkg_add -r mysql50-server
Код
retracker# pkg_add -r mysql50-scripts
Код
retracker# chown -R mysql /var/db/mysql
Код
retracker# mysql_install_db
Код
retracker# pkg_add -r subversion
Код
retracker# pkg_add -r boost-all
Код
retracker# rehash
Код
retracker# cd /usr/local/ && svn co https://xbtt.svn.sourceforge.net/svnroot/xbtt/trunk/xbt/misc xbt/misc && svn co https://xbtt.svn.sourceforge.net/svnroot/xbtt/trunk/xbt/Tracker xbt/Tracker
Код
retracker# cd /usr/local/xbt/Tracker && chmod +x make.sh && mcedit ./make.bsd.sh
изменяем первую строку файла.
было:
Код
g++ $@ -DNDEBUG -I ../misc -I . -O3 -o xbt_tracker \
стало:
Код
g++ $@ -DNDEBUG -I ../misc -I . -O3 -o xbt_tracker -I /usr/local/include \
сохраняем и запускаем... не пугаемся что процесс повис! он не повис, он просто не выдаёт никаких сообщений. ждём пару минут.
пробуем конфигурить мускуль:
Код
retracker# /usr/local/etc/rc.d/mysql-server start
Код
retracker# mysql -u root
Код
>CREATE USER 'xbt'@'localhost' IDENTIFIED BY '***YOU_PASSWORD***';
>GRANT USAGE ON *.* TO 'xbt'@'localhost' IDENTIFIED BY '***YOU_PASSWORD***';
>CREATE DATABASE IF NOT EXISTS `xbt`;
>GRANT ALL PRIVILEGES ON `xbt`.* TO 'xbt'@'localhost';
>exit;
>GRANT USAGE ON *.* TO 'xbt'@'localhost' IDENTIFIED BY '***YOU_PASSWORD***';
>CREATE DATABASE IF NOT EXISTS `xbt`;
>GRANT ALL PRIVILEGES ON `xbt`.* TO 'xbt'@'localhost';
>exit;
Код
retracker# mysql -u xbt -p xbt < xbt_tracker.sql
Код
retracker# cp xbt_tracker.conf.default xbt_tracker.conf && mcedit xbt_tracker.conf
мой конфиг:
Код
mysql_host = localhost
mysql_user = xbt
mysql_password = my_m3g@_p@ssw0rd
mysql_database = xbt
pid_file = /var/run/xbt_tracker.pid
announce_interval = 1800
anonymous_connect = 1
anonymous_announce = 1
anonymous_scrape = 1
auto_register = 1
clean_up_interval = 180
daemon = 1
debug = 0
full_scrape = 1
gzip_debug = 1
gzip_scrape = 1
listen_ipa = 192.168.0.201
listen_port = 80
log_access = 0
log_announce = 0
log_scrape = 0
read_config_interval = 30
read_db_interval = 30
#redirect_url = http://re-tracker.ru
scrape_interval = 30
able_announce_log = xbt_announce_log
table_files = xbt_files
table_files_users = xbt_files_users
table_scrape_log = xbt_scrape_log
table_users = xbt_users
write_db_interval = 15
mysql_user = xbt
mysql_password = my_m3g@_p@ssw0rd
mysql_database = xbt
pid_file = /var/run/xbt_tracker.pid
announce_interval = 1800
anonymous_connect = 1
anonymous_announce = 1
anonymous_scrape = 1
auto_register = 1
clean_up_interval = 180
daemon = 1
debug = 0
full_scrape = 1
gzip_debug = 1
gzip_scrape = 1
listen_ipa = 192.168.0.201
listen_port = 80
log_access = 0
log_announce = 0
log_scrape = 0
read_config_interval = 30
read_db_interval = 30
#redirect_url = http://re-tracker.ru
scrape_interval = 30
able_announce_log = xbt_announce_log
table_files = xbt_files
table_files_users = xbt_files_users
table_scrape_log = xbt_scrape_log
table_users = xbt_users
write_db_interval = 15
для запуска:
Код
retracker# ee /usr/local/etc/rc.d/xbt.sh
с содержимым:
Код
#!/bin/sh
. /etc/rc.subr
name="xbt_tracker"
rcvar=`set_rcvar xbt_tracker`
load_rc_config ${name}
: ${xbt_tracker_enable="NO"}
: ${xbt_tracker_flags="--conf_file /usr/local/xbt/Tracker/xbt_tracker.conf"}
pidfile="/var/run/${name}.pid"
command="/usr/local/xbt/Tracker/${name}"
required_files="/usr/local/xbt/Tracker/${name}.conf"
case "${xbt_tracker_flags}" in
*-p\ *)
echo "ERROR: \$xbt_flags includes -p option." \
"PID file is already set to $pidfile."
exit 1
;;
*)
command_args="-p ${pidfile} ${xbt_tracker_flags}"
;;
esac
run_rc_command "$1"
. /etc/rc.subr
name="xbt_tracker"
rcvar=`set_rcvar xbt_tracker`
load_rc_config ${name}
: ${xbt_tracker_enable="NO"}
: ${xbt_tracker_flags="--conf_file /usr/local/xbt/Tracker/xbt_tracker.conf"}
pidfile="/var/run/${name}.pid"
command="/usr/local/xbt/Tracker/${name}"
required_files="/usr/local/xbt/Tracker/${name}.conf"
case "${xbt_tracker_flags}" in
*-p\ *)
echo "ERROR: \$xbt_flags includes -p option." \
"PID file is already set to $pidfile."
exit 1
;;
*)
command_args="-p ${pidfile} ${xbt_tracker_flags}"
;;
esac
run_rc_command "$1"
чмоднем его:
Код
retracker# chmod +x /usr/local/etc/rc.d/xbt.sh
для запуска:
Код
retracker# /usr/local/etc/rc.d/xbt.sh start
проверяем:
Код
retracker# ps ax | grep xbt
81365 ?? SsJ 0:00.13 /usr/local/xbt/Tracker/xbt_tracker --conf_file /usr/local/xbt/Tracker/xbt_tracker.conf -p /var/run/xbt_tracker.pid
81365 ?? SsJ 0:00.13 /usr/local/xbt/Tracker/xbt_tracker --conf_file /usr/local/xbt/Tracker/xbt_tracker.conf -p /var/run/xbt_tracker.pid
вроде ничего не пропустил...
по созданию этого мана отдельное спасибо kolobok3D lissyara и hizel за ссылку на http://www.freebsd.org/doc/en_US.ISO8859-1...ails-build.html