RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Виртуализация на FreeBSD с использованием VirtualBox + phpVirtualBox [2010]
Захотел настроить на своём сервере виртуализацию, для бесплатного VPS.
Имею FreeBSD и не имею иксов. Остановил свой выбор на VirtualBox + phpVirtualBox.
1. Начинаем установку. Переходим в каталог с VirtualBox:
# cd /usr/ports/emulators/virtualbox-ose
Внимание! В FreeBSD портирована только OSE версия, в которой нет поддержки RDP.
2. Устанавливаем:
# make && make install && make clean && rehash
Т.к на сервере нет иксов, выбираем следующие опции:
Options for virtualbox-ose 3.2.10_1
[X] DEBUG Build with debugging symbols
[X] GUESTADDITIONS Build with Guest Additions
[X] DBUS Build with D-Bus and HAL support
[X] VDE Build with VDE support
[X] VNC Build with VNC support
[X] WEBSERVICE Build Webservice
3. Перед первым запуском VirtualBox-а необходимо установить модуль ядра:
# kldload vboxdrv
4. Для того, чтобы модуль ядра загружался автоматически необходимо прописать его:
# vboxdrv_load="YES" >> /boot/loader.conf
5. Запускаем ldconfig:
# /sbin/ldconfig -m /usr/local/lib/virtualbox
Теперь нам нужно как-то управлять нашим VirtualBox-ом. Для этого выберем Веб интерфейс. phpVirtualBox.
6. Устанавливаем phpVirtualBox:
# cd /usr/ports/www/phpvirtualbox
# make && make install && make clean
Далее нам необходимо настроить файрвол, DNS сервер и WEB сервер. Данный пункт вам придется настроить самостоятельно в зависимости от ваших серверов. У меня используются ipfw, BIND и Apache. Apache настраиваем на директорию /usr/local/www/phpvirtualbox, именно суда по умолчанию устанавливается phpvirtualbox.
7. Перезагружаем ipfw, Apache и BIND для применения изменений.
Не запускается. Т.к. у меня PHP установлено без поддержки SOAP.
9. Удаляем PHP:
# cd /usr/ports/lang/php5
# make deinstall
10. Ставим PHP с поддержкой SOAP:
# cd /usr/ports/net/php5-soap
# make && make install && make clean
После данных действий у меня возникли некоторые конфликты, пришлось удалить несколько ранее установленных портов. После чего у меня и у тех кто у меня хостился возникли проблемы с отображением вебсайтов. Пришлось установить следующие порты:
- php5-json
- php5-mysql
- php5-session
- php5-sockets
- php5-xml
- php5-xmlrpc
И подконфигурировать php.ini. У вас может список будет другим, а может и вообще не возникнет проблем.
11. После этого создаём пользователя для работы phpvirtualbox:
# adduser phpvbuser
12. Для работы phpvirtualbox наш пользователь должен входить в группу vboxuser, создаём группу:
# pw groupadd vboxusers
13. Добавляем пользователя в группу:
# pw groupmod vboxusers -m phpvbuser
14. Правим конфиг любым удобным редактором:
# vi /usr/local/www/phpvirtualbox/config.php
в нём нас интересует 2 строки:
var $username = 'phpvbuser';
var $password = 'пароль';
15. Назначаем в собственность phpvbuser каталог с phpvirtualbox:
19. Переходим на страницу, что настроили в Apache:
20. Cоздаём новую машину:
21. Вводим название и выбираем устанавливаемую ОС:
22. Выбираем объём оперативной памяти:
23. Выбираем существующий диск или создаём новый:
24. Выбираем тип жесткого диска, фиксированный размер или динамически увеличивающийся до определённого размера:
25. Задаём размер нашего диска:
26. Просматриваем суммарную информацию по выбранной конфигурации:
27. В списке виртуальных компьютеров выбираем наш компьютер и запускаем его:
Т.к. нет поддержки RDP можно устанавливать заказанную систему на отдельном компьютере, настраивать удалённый доступ и подкладывать в новую виртуальную машину уже готовый жесткий диск, а дальнейшие действия пусть проводит клиент на своей виртуальной мишине.
Но если кто-нибудь напортачит с виртуальной машиной, например "правильно" настроив файрвол\подмонтировав диск, или что-то в этом роде, так, что нет возможности подключиться удалённо по SSH\Telnet или другим удобным способом, то придётся этой машине настраивать консоль. Но в phpVirtualBox данной вкладки нет, т.к. мы установили версию OSE. Но мы собрали с поддержкой VNC. Поэтому для таких случаев для клиентов можно запускать на день доступ к консоли компьютера.
28. Делаем к примеру такой скриптик:
# touch /usr/local/virtualboxvnc.sh
29. И правим любым удобным редактором:
# vi /usr/local/virtualboxvnc.sh
Добавляем в него примерно следующее:
#!/bin/sh
vpc="$1"
port="$2"
pass="$3"
# Запускаем виртуальную машину под названием "vpc" (-s), с поддержкой
# VNC (-n), на порту "port" (-m), c паролем для доступа к VNC "pass" (-o)
Не забываем открыть порт на файрволе для доступа с наружи к VNC серверу.
30. Сообщяем клиенту порт, пароль доступа и срок ребута машины. И он может подключаться любым клиентом VNC к заданному порту вешего сервера и работать консольно с виртуальной машиной: