====== Установка 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]