Задача: на удалённом сервере CentOS, к которому имеем доступ только через консоль, необходимо развернуть virtualbox с возможностью админить его из веббраузера.
CentOS мне не понравился сразу скажу, потому что я не гуру линукса и в нём очень многое приходится делать самому шаг за шагам. В этом вы убедитесь прочитав дальше начало где мы будем ставить apach, в убунте вы ставите апач и он сразу работает, тут же надо покувыркаться. В общем если вы начинающий линуксоид вам центос абсолютно противопоказан. Берите ubuntu и наслаждайтесь. Я в свою очередь запишу дабы не забыть. В конце вы найдете ссылки на все источники где я брал информацию.
Сначала заставим работать apache.
Стартуем его (потом придётся заставить его автоматически старотовать, я вас предупреждал :))
После запуска службы нужно проверить конфигурацию iptables и разрешить подключения на 80-й порт, используемый по умолчанию. Для этого редактируем /etc/sysconfig/iptables (любым редактором, я пользуюсь MC)
Добавляем строчку по аналогии с 22 портом для 80-го
ВНИМАНИЕ! Таким же образом вы можете открыть заранее порт к примеру 3390 что бы подключаться по RDP к вашей виртуальной машине.
Для установки VirtualBox нам потребуется скачать репозиторий, из которого и будет проводится установка и дальнейшие обновления.
Также Вам потребуется репозиторий rpmforge, для установки дополнительных функций.
Установим репозиторий rpmforge:
Теперь обновим yum командой:
Также эта команда обновит и пакеты, которые уже устарели в Вашей системе.
Для установки VirtualBox требуется обновление модулей ядра и модуль DKMS(Dynamic Kernel Module Systems IIRC) упростит обновление. Установка DKMS рекомендуется до установки VirtualBox.
Установка DKMS из репозитория rpmforge:
Пакет DKMS с собой может установить средства разработки kernel-devel, в том члучае если он не установлен.
Проверим какая версия доступна:
И видим что то типо этого:
Мы установим последнюю версию:
Теперь устанавливаем phpvirtualbox.
Chkconfig - уровни 235 vboxweb-службы на Далее создайте запуска системы связи для vboxwebsrv и перезапустить его:
Вот это уже - теперь вы можете открыть браузер и доступ phpvirtualbox следующим образом:
http://www.example.com/phpvirtualbox/
Теперь очень важный момент, с помощью чего мы планируем настраивать и подключаться к нашей, в большинстве случаев, не рабочей пока что машине!
Начиная с VirtualBox версии 4.0, был введен так называемый «Extension Pack», куда например и была перенесена ранее доступная в самом VirtualBox функция поддержки удаленного подключения к рабочему столу (VRDP). Потому нужно установить соответствующий пакет расширений.
Идем на www.virtualbox.org/wiki/Downloads, находим Extension Pack:
Скачиваем и устанавливаем Extension Pack:
Последняя команда должна быть обязательно с повышением привилегий sudo, иначе получим ошибку:
После этого в веб морде виртуалбокса в настройках создаваемой новой виртуальной машины (или старой не важно) в разделе дисплей появится вторая вкладка - удалённый дисплей
В полезных ссылках вы найдёте много дополнительной полезной информации, часть которой я наглым образом скопипастил :)
http://alterworld.ru/show/139
http://itbuben.org/blog/Unix-way/2178.html
http://it-student.com.ua/verkhnee-menju/administrirovanie/ustanovka-apache-v-centos-i-zapusk.html
http://www.howtoforge.com/managing-a-headless-virtualbox-installation-with-phpvirtualbox-centos-6.2
http://forum.ubuntu.ru/index.php?topic=126421.0
http://igorka.com.ua/2010-09-23/vboxmanage-virtualbox-iz-komandnoj-stroki/
CentOS мне не понравился сразу скажу, потому что я не гуру линукса и в нём очень многое приходится делать самому шаг за шагам. В этом вы убедитесь прочитав дальше начало где мы будем ставить apach, в убунте вы ставите апач и он сразу работает, тут же надо покувыркаться. В общем если вы начинающий линуксоид вам центос абсолютно противопоказан. Берите ubuntu и наслаждайтесь. Я в свою очередь запишу дабы не забыть. В конце вы найдете ссылки на все источники где я брал информацию.
Сначала заставим работать apache.
yum install httpd
Стартуем его (потом придётся заставить его автоматически старотовать, я вас предупреждал :))
service httpd start
После запуска службы нужно проверить конфигурацию iptables и разрешить подключения на 80-й порт, используемый по умолчанию. Для этого редактируем /etc/sysconfig/iptables (любым редактором, я пользуюсь MC)
mcedit /etc/sysconfig/iptables
Добавляем строчку по аналогии с 22 портом для 80-го
После того как это было сделано тестируем то что получилось. Для этого создаем тестовый файл index.html в /var/www/html
В файле мы просто пишем тестовое содержимое (к примеру, It works), как показано на рисунке ниже.
Проверяем результат, открыв в браузере с другой машины IP-адрес сервера.
ВНИМАНИЕ! Таким же образом вы можете открыть заранее порт к примеру 3390 что бы подключаться по RDP к вашей виртуальной машине.
ВНИМАНИЕ! Так же для CentOS нужно отключить selinux - среда безопасности (или тип того) т.к. она не даёт апачу смотреть другие порты нежели свои... как то так (убунта таким не болеет :) ) необходимо отредактировать файл
mcedit /etc/selinux/config
привести к виду: SELINUX=disabled
Для установки VirtualBox нам потребуется скачать репозиторий, из которого и будет проводится установка и дальнейшие обновления.
cd /etc/yum.repos.d wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
Также Вам потребуется репозиторий rpmforge, для установки дополнительных функций.
Установим репозиторий rpmforge:
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt cd /tmp Для 32х битной: wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm Для 64х битной: wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm rpm -ivh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
yum update
Также эта команда обновит и пакеты, которые уже устарели в Вашей системе.
Для установки VirtualBox требуется обновление модулей ядра и модуль DKMS(Dynamic Kernel Module Systems IIRC) упростит обновление. Установка DKMS рекомендуется до установки VirtualBox.
Установка DKMS из репозитория rpmforge:
yum --enablerepo rpmforge install dkms
Пакет DKMS с собой может установить средства разработки kernel-devel, в том члучае если он не установлен.
Проверим какая версия доступна:
yum list | grep VirtualBox
VirtualBox-3.1.x86_64 3.1.8_61349_rhel5-1 virtualbox VirtualBox-3.2.x86_64 3.2.12_68302_rhel5-1 virtualbox VirtualBox-4.0.x86_64 4.0.0_69151_rhel5-1 virtualbox
yum install VirtualBox-4.1
Теперь устанавливаем phpvirtualbox.
Сначала нужно создать систему пользователя с именем VBox и добавить его в vboxusers группы:
useradd -m vbox -G vboxusers
Создать пароль для VBox пользователя:
passwd vbox
Создайте файл / и т.д. / по умолчанию / VirtualBox и поставить линию VBOXWEB_USER = VBox в ней (так, что VirtualBox SOAP API который называется vboxwebsrv работает как пользователь VBox ):
vi /etc/default/virtualbox
VBOXWEB_USER=vbox
Chkconfig - уровни 235 vboxweb-службы на Далее создайте запуска системы связи для vboxwebsrv и перезапустить его:
chkconfig --levels 235 vboxweb-service on
/etc/init.d/vboxweb-service restart
/etc/init.d/vboxweb-service restart
Нам нужны веб-сервера с поддержкой PHP, чтобы служить phpvirtualbox - я использую Apache2 здесь. Установка Apache2 и PHP5 следующим образом:
yum install httpd php php-mysql php-pear apr apr-util-sqlite apr-util-ldap apr-util wget php-soap
Теперь настроить систему для запуска Apache при загрузке ...
chkconfig --levels 235 httpd on
... и запустить Apache:
/etc/init.d/httpd start
Я хочу служить phpvirtualbox от дефолта в Apache виртуальный хост с корневой / VAR / WWW / HTML (я установлю его в / VAR / WWW / HTML / phpvirtualbox ) - если у вас есть другой корень документа, необходимо настроить следующие шаги :
cd /var/www/html
wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-7.zip
wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-7.zip
Unzip phpvirtualbox и переименование phpvirtualbox-4.1-7 в phpvirtualbox для удобства использования:
unzip phpvirtualbox-4.1-7.zip
mv phpvirtualbox-4.1-7 phpvirtualbox
mv phpvirtualbox-4.1-7 phpvirtualbox
Затем перейдите в / VAR / WWW / HTML / phpvirtualbox / каталог ...
cd /var/www/html/phpvirtualbox/
... и создать файл config.php , копируя его из config.php, например :
cp config.php-example config.php
Открытое config.php и заполнить пароль, который вы создали ранее для VBox пользователей системы:
vi config.php
[...] /* Username / Password for system user that runs VirtualBox */ var $username = 'vbox'; var $password = 'secret'; [...]
Вот это уже - теперь вы можете открыть браузер и доступ phpvirtualbox следующим образом:
http://www.example.com/phpvirtualbox/
По умолчанию имя пользователя admin , пароль admin :
Вот как выглядит phpvirtualbox - так же, как родной VirtualBox GUI:
Теперь очень важный момент, с помощью чего мы планируем настраивать и подключаться к нашей, в большинстве случаев, не рабочей пока что машине!
Начиная с VirtualBox версии 4.0, был введен так называемый «Extension Pack», куда например и была перенесена ранее доступная в самом VirtualBox функция поддержки удаленного подключения к рабочему столу (VRDP). Потому нужно установить соответствующий пакет расширений.
Идем на www.virtualbox.org/wiki/Downloads, находим Extension Pack:
VirtualBox 4.1.8 Oracle VM VirtualBox Extension Pack
Support for USB 2.0 devices, VirtualBox RDP and PXE boot for Intel cards.
Скачиваем и устанавливаем Extension Pack:
cd /tmp
wget http://download.virtualbox.org/virtualbox/4.1.8/Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack
sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack
Последняя команда должна быть обязательно с повышением привилегий sudo, иначе получим ошибку:
administrator@server:/tmp$ VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack
0%...
Progress state: NS_ERROR_FAILURE
VBoxManage: error: Failed to install "/tmp/Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack": The installer failed with exit code 127: Error creating textual authentication agent: Error opening current controlling terminal for the process (`/dev/tty'): No such device or address
administrator@server:/tmp$
После этого в веб морде виртуалбокса в настройках создаваемой новой виртуальной машины (или старой не важно) в разделе дисплей появится вторая вкладка - удалённый дисплей
Для запуска гостевой ОС VirtualBox через консоль, необходима утилита VboxHeadless. Она входит в пакет VirtualBox.
Команда для запуска выглядит следующим образом:
VboxHeadless -startvm 'name of quest os' &
Для остановки используется следующая команда:
VBoxManage -nologo controlvm 'name of quest os' acpipowerbutton
Для автоматического запуска гостевой системы необходим создать скрипт в init.d
Для CentOS скрипт выглядит следующим образом:
#!/bin/sh
# chkconfig: 345 20 80
# description: VBox Machine server
# Source function library.
. /etc/rc.d/init.d/functions
# chkconfig: 345 20 80
# description: VBox Machine server
# Source function library.
. /etc/rc.d/init.d/functions
run_by_init() {
([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ]
}
([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ]
}
export PATH="${PATH:+$PATH:}/bin:/usr/bin:/usr/sbin:/sbin"
VM_USER="vbox"
SU="su $VM_USER -c"
VBOXMANAGE="VBoxManage -nologo"
VBOXHeadless="/usr/bin/VBoxHeadless"
SU="su $VM_USER -c"
VBOXMANAGE="VBoxManage -nologo"
VBOXHeadless="/usr/bin/VBoxHeadless"
start () {
echo "Starting VBox Machine"
$SU "$VBOXHeadless -startvm "Linux VM" &"
}
echo "Starting VBox Machine"
$SU "$VBOXHeadless -startvm "Linux VM" &"
}
stop () {
$SU "$VBOXMANAGE list runningvms" | while read VM; do
echo "Shutting down VM: $VM ..."
$SU "$VBOXMANAGE controlvm "$VM" acpipowerbutton"
done
}
$SU "$VBOXMANAGE list runningvms" | while read VM; do
echo "Shutting down VM: $VM ..."
$SU "$VBOXMANAGE controlvm "$VM" acpipowerbutton"
done
}
restart() {
stop
start
}
stop
start
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
echo "The following virtual machines are currently running:"
$SU "$VBOXMANAGE list runningvms" | while read VM; do
echo -n "$VM ("
echo -n `$SU "VBoxManage showvminfo $VM|grep Name:|sed -e 's/^Name:\s*//g'"`
echo ")"
done
;;
*)
echo $"Usage: $prog {start|stop|restart|status}"
exit 3
esac
exit 0
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
echo "The following virtual machines are currently running:"
$SU "$VBOXMANAGE list runningvms" | while read VM; do
echo -n "$VM ("
echo -n `$SU "VBoxManage showvminfo $VM|grep Name:|sed -e 's/^Name:\s*//g'"`
echo ")"
done
;;
*)
echo $"Usage: $prog {start|stop|restart|status}"
exit 3
esac
exit 0
затем делаем
chmod +x VM
chkconfig --add VM
ну и соответственно запускаем гостевую систему:
/etc/init.d/VM start
В полезных ссылках вы найдёте много дополнительной полезной информации, часть которой я наглым образом скопипастил :)
http://alterworld.ru/show/139
http://itbuben.org/blog/Unix-way/2178.html
http://it-student.com.ua/verkhnee-menju/administrirovanie/ustanovka-apache-v-centos-i-zapusk.html
http://www.howtoforge.com/managing-a-headless-virtualbox-installation-with-phpvirtualbox-centos-6.2
http://forum.ubuntu.ru/index.php?topic=126421.0
http://igorka.com.ua/2010-09-23/vboxmanage-virtualbox-iz-komandnoj-stroki/
Комментариев нет:
Отправить комментарий