====== Установка VirtualBox и phpvirtualbox на FreeBSD ======
===== После установки ОСи обновляем устанавливаем порты и обновляем их. =====
#
portsnap fetch extract
portsnap fetch update
===== Получаем свежие src ОС =====
# Получаем свежие сырцы
fetch -o /tmp/src.txz http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/`uname -r`/src.txz
cd /; tar xJvf /tmp/src.txz
===== Собираем VirtualBox и модули ядра для его работы =====
# Устанавливаем tmux
/usr/ports/sysutils/tmux
make install clean BATCH=yes
# Порт virtualbox-ose будет компилироваться несколько часов, поэтому выполняем это в tmux
# Порт virtualbox-ose-kmod подтянется сам.
tmux
cd /usr/ports/emulators/virtualbox-ose
make install clean BATCH=yes I_DONT_CARE_IF_MY_BUILDS_TARGET_THE_WRONG_RELEASE=yes
cd /usr/ports/sysutils/lsof
make install clean BATCH=yes
# Добавляем модуль в загрузку
echo 'vboxdrv_load="YES"' >> /boot/loader.conf
# Загружаем модуль в память
kldload vboxdrv
===== Устанавливаем PhpVirtualBox =====
# Добавляем пользователя, от которого будут работать VM на сервере.
# Пароль сохраняем, он нам потребуется чуть позднее.
adduser vbox
pw groupmod vboxusers -m vbox
# Устанавливаем web-сервер nginx
pkg install -y nginx
# Устанавливаем PhpVirtualBox
cd /usr/ports/www/phpvirtualbox
make install clean BATCH=yes
Обращаю внимание, что **php** установится автоматом при установке phpvirtualbox
===== Конфигурируем VirtualHost для вебморды =====
# Копируем конфиг для php.ini
cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
# Добавляем ссылку на каталог ngnix/conf.d
sed -i.bak '$s/}/\tinclude conf.d\/\*\.conf;\r\n\r\n}/' /usr/local/etc/nginx/nginx.conf
# Создаем директорию для добавления собственных конфигов NgiNX
mkdir /usr/local/etc/nginx/conf.d/
Далее нужно создать конфиг /usr/local/etc/nginx/conf.d/vbox.conf
Укажите URL, по которому будет работать веб-морда phpVBox
server {
listen 80;
server_name URL-URL;
root /usr/local/www;
error_log /var/log/nginx/vbox-error.log warn;
access_log /var/log/nginx/vbox.log;
location / {
root /usr/local/www/nginx;
index index.php index.html;
try_files $uri $uri/ =404;
}
location /phpvirtualbox {
index index.html;
try_files $uri $uri/ =404;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
==== Включаем phpVirtualBox ====
# Добавляем в автозагрузку nginx и php-fpm
sysrc nginx_enable=YES
sysrc php_fpm_enable=YES
# Стартуем сервисы
service php-fpm restart
service nginx restart
==== Стартуем vboxwebserver ====
sysrc vboxwebsrv_enable=YES
sysrc vboxwebsrv_user="vbox"
/usr/local/etc/rc.d/vboxwebsrv start
Сразу проверим, работает ли он:
lsof -i :18083
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vboxwebsr 87849 vbox 8u IPv6 0xfffffe003e89b0e0 0t0 TCP localhost:18083 (LISTEN)
=== Конфигурируем PhpVirtualBox ===
nano /usr/local/www/phpvirtualbox/config.php
/* Username / Password for system user that runs VirtualBox */
var $username = 'vbox'; /* Тут указываем имя пользователя */
var $password = 'Pa$$w0rD'; /* Тут указываем пароль пользователя */
/* SOAP URL of vboxwebsrv (not phpVirtualBox's URL) */
var $location = 'http://localhost:18083/'; /* Тут меняем 127.0.0.1 на locahost */
===== Стартуем все сервисы и проверяем работу VirtualBox и Вебморды=====
sysrc vboxguest_enable=YES
sysrc vboxnet_enable=YES
service vboxnet start
Переходите на [[http://URL-URL/phpvirtualbox/]] и начинайте настройку виртуальных машин. Пароль admin по дефолту admin.
===== PS Не работает в веб-интерфейсе выбор файла для монтирования =====
Если не работает в веб-интерфейсе выбор файла для монтирования, то действуем так:
$ vboxmanage list vms
"app" {5e261d64-68d0-4f20-92eb-82dadde4c54b}
$ vboxmanage storageattach "5e261d64-68d0-4f20-92eb-82dadde4c54b" --storagectl IDE \
--port 0 --device 0 --type dvddrive --medium /home/vbox/iso/debian-11.6.0-amd64-netinst.iso
Если потребовалось сменить hdd диск у виртуальной машины:
# Находим UUID нужного диска в этом списке:
vboxmanage list hdd $DISKUUID
# Находим UUID машины, в которой хотим сменить диск
vboxmanage list vms $VMUUID
"app" {5e261d64-68d0-4f20-92eb-82dadde4c54b}
"mysql" {f5d595f0-c8a0-4359-83f5-185083710a40}
# Меняем диск
vboxmanage storageattach $VMUUID --storagectl "SATA" --device 0 --port 0 --type hdd --medium $DISKUUID
[PHP Modules]
Core
date
hash
json
libxml
mysqlnd
openssl
pcre
Reflection
session
SimpleXML
soap
SPL
standard
xml
[Zend Modules]