| ||||||||||
Ключевые слова: virtual, virtualbox, freebsd, (найти похожие документы)
Автор: McSeem <maxim@kadyshev.com> Newsgroups: email Date: Mon, 12 Dec 2010 17:02:14 +0000 (UTC) Subject: Виртуализация на FreeBSD с использованием VirtualBox + phpVirtualBox Захотел настроить на своём сервере виртуализацию, для бесплатного 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 для применения изменений. 8. Переходим на страницу http://phpvirtualbox.mydomain.name Не запускается. Т.к. у меня 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: # chown -R phpvbuser:vboxusers /usr/local/lib/virtualbox 16. Создаём скрипт для автозапуска phpvirtualbox после перезагрузки: # touch /usr/local/etc/rc.d/phpvirtualbox.sh 17. И правим любым удобным редактором: # vi /usr/local/etc/rc.d/phpvirtualbox.sh Добавляем в него примерно следующее: #!/bin/sh echo -n 'phpVirtualBox daemon' case "$1" in start) su - phpvbuser -c "vboxwebsrv -t 0 -F /dev/null" ;; stop) killall vboxwebsrv killall VBoxSVC killall VBoxXPCOMI ;; *) echo "Usage: `basename $0` {start|stop}" >&2 exit 64 ;; esac exit 0 18. После этого запускаем phpvirtualbox: # su - phpvbuser -c vboxwebsrv -H localhost -p 18083 -t 0 -F /dev/null" Дальше, всё как в GUI: 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) su - phpvbuser -c "VBoxHeadless -s $vpc -n -m $port -o $pass" # Перезапускаем через сутки машину в обычном режиме (без VNC) echo su - phpvbuser -c \"VBoxManage controlvm $vpc reset\" | at now + 1 days exit 0 29. Запускаем скрипт с параметрами: имя виртуального компа, порт на котором будет слушать VNC, пароль для доступа к VNC: # /usr/local/virtualboxvnc.sh Client1_OpenSolaris 5500 password Не забываем открыть порт на файрволе для доступа с наружи к VNC серверу. 30. Сообщяем клиенту порт, пароль доступа и срок ребута машины. И он может подключаться любым клиентом VNC к заданному порту вешего сервера и работать консольно с виртуальной машиной:
![]()
| ||||||||||
|
|
|