Как я могу заставить vboxweb нормально запускаться при загрузке

Недавно я обновил сервер без заголовка до Ubuntu Server 15.10.

Базовый Ubuntu Server LAMP Xubuntu минимальная установка

Я установил virtualbox 5.0.14 из исходных Ubuntu-источников. Я загрузил и установил virtualbox/5.0.14/Oracle_VM_VirtualBox_Extension_Pack-5.0.14-105127.vbox-extpack

Я определил пользователя vbox в группе vboxusers, и в основном виртуальный бокс работает отлично.

Я загрузил и установил phpvirtualbox-5.0-5.zip

Я добавил файл VBOXWEB_USER=vbox в файл /etc/default/virtualbox.

При посещении веб-страницы с другого компьютера, я получил ошибку Could not connect to host (см. msg1 и более подробно в msg2, не очень важно, хотя, я думаю.).

Используя sudo netstat -peanut, похоже, что vboxwebsrv не использовал правильный IP-адрес. Он показал локальный адрес как ::1:18083, а не ожидаемый 192.168.1.12:18083.

После некоторого поиска в Google я добавил VBOXWEB_HOST=192.168.1.12 в файл /etc/default/virtualbox, но после перезапуска службы никаких изменений не было.

Однако, если я остановил службу с помощью sudo systemctl stop vboxweb.service и начал ее вручную с помощью sudo vboxwebsrv -H 192.168.1.12, это сработало нормально. sudo netstat -peanut теперь сообщил об этом с ожидаемым адресом IP / порта.

Большая часть документации, на которую я смотрела, ссылалась на init.d, и я начал думать, что, возможно, systemd не использует файл /etc/default/virtualbox. Я обнаружил, что могу редактировать файл /lib/systemd/system/vboxweb.service и добавил -H 192.168.1.12 к команде ExecStart. После перезагрузки службы vboxweb это сработало! : o)

Включен сервис, чтобы он запускался автоматически во время загрузки:

sudo systemctl enable vboxweb.service

Но после перезагрузки не было vboxweb показывая в sudo netstat -peanut вообще, хотя ps -ef показал, что сервис запущен:

sudo systemctl enable vboxweb.service

root 1383 1 0 mars02? 00:00:00 / usr / lib / virtualbox / vboxwebsrv --pidfile /run/vboxweb.pid --background -H 192.168.1.12 -p 18083

$ ps -ef

[d23 ] Перезапуск службы исправит его, но после перезагрузки он не будет корректным.

Итак, я думал, что, возможно, vboxweb.service был запущен слишком рано в процессе инициализации systemd. Поэтому я снова редактировал файл vboxweb.service, с After=apache2.service (а позже и попытался After=multi-user.target) и проверил с помощью systemd-analyse plot, что init vboxweb действительно был перемещен в самый конец последовательности инициализации. Но все же, wboxweb не был указан в netstat -peanut

Существуют ли конфликты между init.d и systemd, например. что виртуальный бокс (от стандартных источников Ubuntu) зависит от файлов, которые являются init.d, а Ubuntu перешел на systemd? Любая другая причина, по которой параметр VBOXWEB_HOST в файле /etc/default/virtualbox не влиял? Правильно ли было редактировать файл vboxweb.service (в частности, с параметром хоста). (и это важно). Как я могу запустить службу vboxweb и работать с правильными настройками IP / port во время загрузки? Я все из идей: /

Итак, наконец, на мои вопросы:

PS: Я знаю, что мог бы укоротить этот пост и просто сохранил главный вопрос здесь, так как Я разрешил все остальное (оставив только пару вопросов), но я подумал, что может быть интересно другим посмотреть, как я работал над этой проблемой.

1
задан 3 March 2016 в 15:52

1 ответ

Ответ rolfhsp действительно полезен.

Кроме того, если vboxweb.service изменен для запуска как другой пользователь, который не является root, произойдет другой сбой. В этой ситуации причина регистрируется как «Не удалось открыть» / dev / vboxdrvu », errno = 13, rc = VERR_VM_DRIVER_NOT_ACCESSIBLE», что означает, что пользователь не имеет права доступа /dev/vboxdrvu.

By default, /dev/vboxdrvu вместе с /dev/vboxnetctl и /dev/vboxdru разрешены только для root (crw-------). для пользователей, не являющихся пользователем root, для доступа к нему, разрешение должно быть изменено. Согласно этому блогу, он архивируется путем простого добавления файла правил в / lib / udev / с содержимым ниже:

/lib/udev/rules.d/20-virtualbox2.rules:

KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660"
KERNEL=="vboxdrvu", NAME="vboxdrvu", OWNER="root", GROUP="vboxusers", MODE="0660"
KERNEL=="vboxnetctl", NAME="vboxnetctl", OWNER="root",GROUP="vboxusers", MODE="0660"

Затем перезапустите систему, после перезагрузки эти файлы имеют новые разрешения:

crw-------. 1 root root      10, 54 Mar 20 00:24 /dev/vboxdrv
crw-rw----. 1 root vboxusers 10, 53 Mar 20 00:24 /dev/vboxdrvu
crw-rw----. 1 root vboxusers 10, 52 Mar 20 00:24 /dev/vboxnetctl

Хотя vboxdru по-прежнему не изменился, vboxdrvu уже имеет хорошее разрешение для не- -root (в группе vboxusers) для доступа. После этой модификации vboxweb.service может быть успешно запущен пользователем без полномочий root.

0
ответ дан 23 May 2018 в 13:07

Другие вопросы по тегам:

Похожие вопросы: