Установка phpvirtualbox и VirtualBox в Ubuntu 20.04 (19.10)
Для экспериментов решил поднять на домашнем сервере данную связку.
Для реализации данной инсталляции нам потребуются следующие продукты:
- Git
- php + php-fpm
- Nginx
- VirtualBox
- phpVirtualBox
Установку PHP и NGINX мы пропустим, считаем, что она у вас уже настроена.
Становимся рутом (на время инсталляции):
$ sudo -s
Добавляем репозиторий:
echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian eoan contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
Добавляем ключи репозитория:
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add - wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
Обновляем репозитории:
apt update
Поищем VirtualBox:
apt search virtualbox | grep virtualbox- virtualbox-6.0/unknown 6.0.24-139119~Ubuntu~eoan amd64 virtualbox-6.1/unknown 6.1.12-139181~Ubuntu~eoan amd64
Устанавливаем linux-headers и VirtualBox 6.1.12-139181:
apt install linux-headers-$(uname -r) dkms apt install virtualbox-6.1
Установим Extension Pack:
wget http://download.virtualbox.org/virtualbox/6.1.12/Oracle_VM_VirtualBox_Extension_Pack-6.1.12-139181.vbox-extpack VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.1.12-139181.vbox-extpack rm Oracle_VM_VirtualBox_Extension_Pack-6.1.12-139181.vbox-extpack
Редактируем службу systemd запуска:
vi /lib/systemd/system/vboxweb-service.service
Приводим к такому виду:
[Unit] Description=VirtualBox Web Service After=network.target [Service] Type=forking ExecStart=/usr/bin/vboxwebsrv --pidfile /run/vboxweb/vboxweb.pid --host=0.0.0.0 --background PIDFile=/run/vboxweb/vboxweb.pid User=vbox Group=vboxusers [Install] WantedBy=multi-user.target
Создаем пользователя vbox в нужной нам группе и запоминаем пароль:
useradd vbox -G vboxusers -p mypassword
Создаем директорию для pid файла и назначим ей права:
mkdir /run/vboxweb chown vbox:vboxusers /run/vboxweb chmod 755 /run/vboxweb/
Перезагрузим systemd и vboxweb:
systemctl daemon-reload systemctl restart vboxweb-service
Настало время phpVirtualBox
Получаем phpVirtualBox:
cd /var/www git clone https://github.com/phpvirtualbox/phpvirtualbox.git
Редактируем конфиг phpVirtualBox:
cd /var/www/phpvirtualbox cp config.php-example config.php vi config.php
Напишу, что нужно сменить:
var $username = 'vbox'; var $password = 'password'; /* Ваш IP адрес, на котором запущен */ var $location = 'http://192.168.5.3:18083/'; var $language = 'ru'; /* Если не указать, то RDP будет запущен как 127.0.0.1 */ var $vrdeaddress = '192.168.5.3';
Установим пользователя на файлы phpVirtualBox:
chown -R www-data:www-data /var/www/phpvirtualbox
Конфигурационный файл NGINX:
vi /etc/nginx/sites-available/vb.myhost.ru
server { listen 80; server_name vb.myhost.ru; root /var/www/phpvirtualbox; index index.html; access_log /var/log/nginx/vbox/access.log; error_log /var/log/nginx/vbox/error.log error; location ~* \.(gif|jpg)$ { expires 30d; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; auth_basic "Admin only"; auth_basic_user_file /home/admins/pass/.vb.auth; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; } }
Создадим директорию для логов Nginx:
mkdir /var/log/nginx/vbox
В конфигурационном файле Nginx, я решил прикрыться дополнительно http авторизацией (если вам это не нужно, просто удалите эти строки:)).
Создадим директорию для auth файла и сам файл
mkdir -p /home/admins/pass/ printf "vbadmin:$(openssl passwd -crypt MY_PASSWORD)\n" >> /home/admins/pass/.vb.auth
vbadmin — имя
MY_PASSWORD — пароль
Делаем симлинк на конфигурационный файл NGINX для его подключения:
ln -s /etc/nginx/sites-available/vb.marvins.ru /etc/nginx/sites-enabled/
Проверим конфигурацию NGINX и перезапустим его:
nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful nginx -s reload
Перейдя на указанный в конфиге NGINX адрес — http://vb.myhost.ru должна появиться форма http авторизации:
После введения ваших данных, попадаем в phpVirtualBox.
Логин: admin
Пароль: admin
Из этого материала можете узнать, как установить бесплатный сертификат от Lets’n Crypt для Web сервера.
Хорошая инструкция, но почему-то дальше этапа systemctl restart vboxweb-service сдвинуться не удалось. Ошибка:
Job for vboxweb-service.service failed because the control process exited with error code.
See «systemctl status vboxweb-service.service» and «journalctl -xe» for details.
Файл /lib/systemd/system/vboxweb-service.service взят дословно с мануала…
Приветствую.
Директорию для pid файла сделали?
Что выдает systemctl status vboxweb-service.service и journalctl -xe?
Был уверен что сделал, но проверив необнаружил…создал ещё раз и уже точно есть, далее все по инструкии, но ошибка таже:
● vboxweb-service.service — VirtualBox Web Service
Loaded: loaded (/lib/systemd/system/vboxweb-service.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2021-03-09 22:35:37 UTC; 14s ago
Process: 6244 ExecStart=/usr/bin/vboxwebsrv —pidfile /run/vboxweb/vboxweb.pid —host=0.0.0.0 —background (code>
Mar 09 22:35:37 gorgona2021 vboxwebsrv[6244]: 00:00:00.000165 main DMI Product Version:
Mar 09 22:35:37 gorgona2021 vboxwebsrv[6244]: 00:00:00.000179 main Firmware type: BIOS
Mar 09 22:35:37 gorgona2021 vboxwebsrv[6244]: 00:00:00.000224 main Host RAM: 48277MB (47.1GB) total, 47727MB (46>
Mar 09 22:35:37 gorgona2021 vboxwebsrv[6244]: 00:00:00.000227 main Executable: /usr/lib/virtualbox/vboxwebsrv
Mar 09 22:35:37 gorgona2021 vboxwebsrv[6244]: 00:00:00.000228 main Process ID: 6244
Mar 09 22:35:37 gorgona2021 vboxwebsrv[6244]: 00:00:00.000228 main Package type: LINUX_64BITS_UBUNTU_19_10
Mar 09 22:35:37 gorgona2021 vboxwebsrv[6244]: vboxwebsrv: error: could not get base directory for logging: VERR_PATH>
Mar 09 22:35:37 gorgona2021 systemd[1]: vboxweb-service.service: Control process exited, code=exited, status=1/FAILU>
Mar 09 22:35:37 gorgona2021 systemd[1]: vboxweb-service.service: Failed with result ‘exit-code’.
Mar 09 22:35:37 gorgona2021 systemd[1]: Failed to start VirtualBox Web Service.
Есть идеи, куда копать….? :roll:
vboxwebsrv: error: could not get base directory for logging: VERR_PATH
Нужно создать домашний каталог пользователя
mkhomedir_helper vbox
Ровно то же самое, после рестарта
root@megaplan:/var/www/phpvirtualbox# systemctl status vboxweb-service.service
● vboxweb-service.service — VirtualBox Web Service
Loaded: loaded (/lib/systemd/system/vboxweb-service.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2021-03-25 13:32:30 UTC; 38s ago
Process: 2698 ExecStart=/usr/bin/vboxwebsrv —pidfile /run/vboxweb/vboxweb.pid —host=0.0.0.0 —background (code=exited, status=1/FAILURE)
Mar 25 13:32:30 megaplan vboxwebsrv[2698]: 00:00:00.000167 main DMI Product Version:
Mar 25 13:32:30 megaplan vboxwebsrv[2698]: 00:00:00.000184 main Firmware type: BIOS
Mar 25 13:32:30 megaplan vboxwebsrv[2698]: 00:00:00.000239 main Host RAM: 64270MB (62.7GB) total, 63658MB (62.1GB) available
Mar 25 13:32:30 megaplan vboxwebsrv[2698]: 00:00:00.000242 main Executable: /usr/lib/virtualbox/vboxwebsrv
Mar 25 13:32:30 megaplan vboxwebsrv[2698]: 00:00:00.000243 main Process ID: 2698
Mar 25 13:32:30 megaplan vboxwebsrv[2698]: 00:00:00.000243 main Package type: LINUX_64BITS_UBUNTU_19_10
Mar 25 13:32:30 megaplan vboxwebsrv[2698]: vboxwebsrv: error: could not get base directory for logging: VERR_PATH_NOT_FOUND
Mar 25 13:32:30 megaplan systemd[1]: vboxweb-service.service: Control process exited, code=exited, status=1/FAILURE
Mar 25 13:32:30 megaplan systemd[1]: vboxweb-service.service: Failed with result ‘exit-code’.
Mar 25 13:32:30 megaplan systemd[1]: Failed to start VirtualBox Web Service.
Заметил, что папка /run/vboxweb после перезагрузки сервера пропадает
Вот что-то никак не получилось по данному мануалу стартонуть, ка в принципе и по многим другим, такое впечатление что жизнь есть только до vbox 6.0 ((
Еще и эта строчка:
ln -s /etc/nginx/sites-available/vb.marvins.ru /etc/nginx/sites-enabled/
Обязательно через sites-available? Нельзя через виртуальный хост?
После изменения служба не стартует. Ошибка
/usr/lib/virtualbox/vboxwebsrv: not found
как быть ???