пятница, 3 августа 2012 г.

CentOS + virtualbox + phpvirtualbox

Задача: на удалённом сервере CentOS, к которому имеем доступ только через консоль, необходимо развернуть virtualbox с возможностью админить его из веббраузера.

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 командой:
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
Нам нужны веб-сервера с поддержкой 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
Unzip phpvirtualbox и переименование phpvirtualbox-4.1-7 в phpvirtualbox для удобства использования:
unzip phpvirtualbox-4.1-7.zip
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
run_by_init() {
([ "$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"
start () {
        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
}
restart() {
        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
затем делаем
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/




Комментариев нет:

Отправить комментарий