Ключевые слова:vserver, virtual, chroot, linux, vps, (найти похожие документы)
From: CityHawk
Newsgroups: Saratov Opensource community
Date: Sun, 19 Nov 2006 17:02:14 +0000 (UTC)
Subject: Использование VServer в Fedora Core Linux 4
Оригинал: http://saratov.lug.ru/?p=82
Изначально задача была поставлена здесь, я позволю себе
процитировать:
Есть у меня такая задача: энное количество хостов хочется засунуть
в чрут. То есть на каждый хост (сайт) отдельный чрут. Ну и
разруливать их через mod_proxy.
Как это поумнее сделать? Хочется чтобы чруты эти создавались
динамически (а не кривым способом вроде копирования ручками /usr/ в
/chroot/usr)
В Альте есть замечательный chrooted, но проблема в том что система
- немного не Альт :(
На текущий момент есть мысль спортировать chrooted туда. Но может
благородные доны посоветуют более другой путь?
1. Поднимаем VServer
В итоге склонился я к модному решению под названием VServer. Заодно
и нашлась статейка VServer installation Fedora Core 4. На нее пока
и буду ориентироваться. Возможно этот текст станет переводом ее,
возможно просто изложением, на текущий момент - пофиг.
Изначально в статье говориться о том, что надо Федору поставить, но у
меня она уже стоит. Этот шаг опускаем. Но видимо SElinux надо
отключить для этого в /etc/selinux/config ставим SELINUX=disabled.
Говорим
# sestatus -v
Проверяем:
# sestatus | head -n 6
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: disabled
Policy version: 19
Policy from config file: targeted
Хм... Вроде пока не получилось его сделать совсем disabled. Но мы
будем перегружаться, так что изменения вступят в силу позже... А пока
не думаю, что помешает.
Дальше нам нужно ядрышко с патчем для VServer. Думается, имеет смысл
взять прекомпиленное... Хотя фик ево знает как его собирали... Ну да
ладно:
Создаем файлик /etc/yum.repos.d/dhozac.repo
[dhozac-vserver]
name=Daniel Hokka Zakrisson's packages for Fedora $releasever - $basearch - vserver
baseurl=http://rpm.hozac.com/dhozac/fedora/$releasever/vserver/$basearch
gpgkey=http://rpm.hozac.com/fedora/conf/keys/RPM-DHOZAC-GPG-KEY
enabled=1
После этого просто говорим # yum install kernel-smp (ну или просто #
yum install kernel, если у вас однопроцессорная машина). Пока ставится
ядро и сервер перегружается - идем курить
Отлично:
# uname -sr
Linux 2.6.15-1.1833_FC4.vs2.0.2.0.rc14.1smp
Теперь надо поставить утилиты для этого самого VServer-а: # yum
install util-vserver
Делаем первый сервер:
# /usr/sbin/vserver gast build -m yum --hostname=vtest.4c.ru \
--interface gast0=eth0:xxx.xxx.xxx.xxx -- -d fc4
/usr/sbin/vserver: line 171: /usr/lib/util-vserver/vserver-build:
No such file or directory
/usr/sbin/vserver: line 171: exec:
/usr/lib/util-vserver/vserver-build: cannot execute: No such file or directory
Нет ничего лучше хорошо стрясшейся жопы ;) Идем гуглить :)
Ага, надо было еще сделать # yum install util-vserver-build.
Исправляем
Еще раз:
# /usr/sbin/vserver gast build -m yum --hostname=vtest.4c.ru \
--interface gast0=eth0:xxx.xxx.xxx.xxx -- -d fc4
Соответственно поставилось:
glibc i686 2.3.6-3 updates-released 6.2 M
basesystem noarch 8.0-5 base 2.7 k
filesystem i386 2.3.4-1 base 16 k
glibc-common i386 2.3.6-3 updates-released 16 M
libgcc i386 4.0.2-8.fc4 updates-released 60 k
setup noarch 2.5.44-1.1 updates-released 31 k
tzdata noarch 2006b-2.fc4 updates-released 488 k
coreutils i386 5.2.1-48.1 updates-released 2.9 M
vps-dev noarch 3.999-3.cru cru-vps 3.3 k
vps-fakekernel noarch 2.6.999-2.cru cru-vps 2.4 k
vps-fakepackages noarch 1.0-5.cru cru-vps 3.8 k
SysVinit i386 2.85-39 base 98 k
audit-libs i386 1.0.14-1.fc4 updates-released 39 k
bash i386 3.0-31 base 1.8 M
chkconfig i386 1.3.23-0.4 updates-released 136 k
cracklib i386 2.8.2-1 base 42 k
cracklib-dicts i386 2.8.2-1 base 3.3 M
db4 i386 4.3.27-5.fc4 updates-released 1.7 M
e2fsprogs i386 1.38-0.FC4.1 updates-released 879 k
ethtool i386 3-1 base 54 k
fedora-release noarch 4-2 base 414 k
findutils i386 1:4.2.20-1 base 222 k
gawk i386 3.1.4-5.4 updates-released 1.7 M
grep i386 2.5.1-48.2 updates-released 172 k
info i386 4.8-8.fc4.1 updates-released 162 k
initscripts i386 8.11.1-1 base 1.1 M
iproute i386 2.6.11-1 base 714 k
iputils i386 20020927-22 base 108 k
libacl i386 2.2.32-1.FC4.2 updates-released 17 k
libattr i386 2.4.24-1.FC4.1 updates-released 9.7 k
libselinux i386 1.23.11-1.1 updates-released 66 k
libsepol i386 1.5.10-1.1 updates-released 42 k
libstdc++ i386 4.0.2-8.fc4 updates-released 307 k
libtermcap i386 2.0.8-41 base 13 k
mktemp i386 3:1.5-23 base 13 k
ncurses i386 5.4-19.fc4 updates-released 1.7 M
net-tools i386 1.60-52.fc4.2 updates-released 346 k
pam i386 0.79-9.6 updates-released 1.9 M
pcre i386 5.0-4.1.fc4 updates-released 69 k
popt i386 1.10.1-22 updates-released 63 k
procps i386 3.2.5-6.3 updates-released 201 k
psmisc i386 21.5-5 updates-released 41 k
sed i386 4.1.4-1 base 199 k
shadow-utils i386 2:4.0.12-8.FC4 updates-released 862 k
sysklogd i386 1.4.1-30 base 70 k
termcap noarch 1:5.4-7fc4 updates-released 263 k
util-linux i386 2.12p-9.14 updates-released 1.6 M
zlib i386 1.2.2.2-5.fc4 updates-released 48 k
Закончилось правда:
Failed to start vserver 'gast'
'vserver ... suexec' is supported for running vservers only;
aborting...
'vserver ... suexec' is supported for running vservers only;
aborting...
'vserver ... suexec' is supported for running vservers only;
aborting...
'vserver ... suexec' is supported for running vservers only;
aborting...
Но это не страшно - сервер то у нас не запущен :)
# vserver gast start
/proc/uptime can not be accessed. Usually, this is caused by
procfs-security. Please read the FAQ for more details
http://www.linux-vserver.org/index.php?page=Linux-Vserver+FAQ
Failed to start vserver `gast'
Фактически сервера (реальный и виртуальный) не поделили /proc
Впочем это лечится:
# service vprocunhide start
Fixing /proc entries visibility... [ OK ]
Ну а теперь:
# vserver gast start
Bringing up loopback interface: Device lo does not seem to be
present, delaying initialization. [FAILED]
Starting system logger: [ OK ]
Starting kernel logger: [ OK ]
Mounting other filesystems: [ OK ]
Ну?! Мы в шаге от миллиона?! Проверим...
# ping xxx.xx.xxx.xxx
PING xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx) 56(84) bytes of data.
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=0 ttl=64 time=0.104 ms
Замечательно! Сервер жив и стартанул!
Теперь его надо как нибудь сконфигурячить ;)
# vserver gast enter
bash-3.00#
bash-3.00# pwconv
bash-3.00# pwck
user adm: directory /var/adm does not exist
user news: directory /etc/news does not exist
user uucp: directory /var/spool/uucp does not exist
user gopher: directory /var/gopher does not exist
user ftp: directory /var/ftp does not exist
pwck: no changes
bash-3.00# passwd root
bash: passwd: command not found :(
bash-3.00# logout
Плохо, что не поставился. Неправильно это. # vyum gast -- install
passwd В принципе в виртуальный сервер можно и сам yum зафигачить, но
мы же сервера клиентам отдавать будем. А вот им yum-а не надо ;)
Впрочем неизвестно, по сути, нужен ли там root как факт... С другой
стороны логины пользователям надо как то раздавать.
2. Поднимаем хостинг
Нам небходимо дать пользователю два сервиса - http и ftp
# vyum gast -- install httpd vsftpd php mysql ...
И прочая, прочая.... На ваш вкус и потребности.
Далее настраиваем одного пользователя. Для этого стандартно добавляем
его в систему, добавляем его в группу apache и в /etc/passwd
прописываем его домашний каталог, как /var/www/html. [INS: Вообще
стараемся максимально и универсально настроить виртуальный сервер.:INS]
Можно сказать, что мы сделали "болванку" для других серверов. Но ее
нужно научиться клонировать. Для этого идем на
http://www.micropp.se/vserver/ и скачиваем два скрипта vcopy и
vrescue. После этого нам надо их сделать исполняемыми и скопировать
куда-нибудь в $PATH. Я скопировал в /usr/local/bin
# vcopy gast newhost --ip=aaa.bbb.ccc.ddd --dev=eth0 \
--alias=newhost --hostname=newhost.tld --coldcopy --skel
где:
* ip - IP-адрес нового сервера
* dev - интерфейс на котором будет висеть сетевой псевдоним
* alias - имя псевдонима
* hostname - имя хоста
* coldcopy - останов сервера-источника (впрочем он поднятым не нужен
в обычное время)
* skel - копирование без конфигов
После этого можем этот новый сервер стартовать, заходить в него и
настраивать по вкусу и потребностям.