Como posso obter o vboxweb para iniciar corretamente na inicialização

2

Atualizei recentemente um servidor sem cabeçalho para o Ubuntu Server 15.10.

  • Servidor Ubuntu básico
  • LÂMPADA
  • Instalação mínima do Xubuntu

Instalei o virtualbox 5.0.14 de fontes padrão do Ubuntu. Eu baixei e instalei virtualbox/5.0.14/Oracle_VM_VirtualBox_Extension_Pack-5.0.14-105127.vbox-extpack

Eu defini um usuário vbox no grupo vboxusers , e basicamente o virtualbox funciona bem. Mas eu quero que seja configurável remotamente usando o phpvirtualbox.

Eu baixei e instalei phpvirtualbox-5.0-5.zip

Eu adicionei o VBOXWEB_USER=vbox ao arquivo /etc/default/virtualbox .

Ao visitar a página da Web a partir de outra máquina, recebi um erro Could not connect to host (consulte msg1 e com mais detalhes em msg2 , não é realmente importante, eu acho.).

Usando sudo netstat -peanut , parecia que o vboxwebsrv não estava usando o endereço IP correto. Mostrou o endereço local como ::1:18083 em vez do esperado 192.168.1.12:18083 .

Depois de alguns googling, adicionei VBOXWEB_HOST=192.168.1.12 ao arquivo /etc/default/virtualbox , mas ainda não houve alterações após a reinicialização do serviço.

No entanto, se eu parasse o serviço com sudo systemctl stop vboxweb.service e o iniciasse manualmente com sudo vboxwebsrv -H 192.168.1.12 , isso funcionaria bem. sudo netstat -peanut agora reportou com o endereço IP / porta esperado.

A maioria da documentação que eu olhei se refere ao init.d e comecei a pensar que talvez o systemd não use o arquivo /etc/default/virtualbox ... Descobri que eu poderia editar o arquivo /lib/systemd/system/vboxweb.service e adicionei um -H 192.168.1.12 para o comando ExecStart . Depois de um reinício do serviço vboxweb, funcionou! : o)

Serviço ativado para que seja iniciado automaticamente no momento da inicialização:

  

sudo systemctl ativar vboxweb.service

Mas após a reinicialização, não houve exibição de vboxweb em sudo netstat -peanut , apesar de ps -ef ter mostrado que o serviço foi iniciado:

  

$ ps -ef

     

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

Uma reinicialização do serviço irá consertá-lo, mas ele não será exibido corretamente após a reinicialização.

Então eu estava pensando que talvez o serviço vboxweb tenha sido iniciado muito cedo no processo de inicialização do systemd. Então eu editei o arquivo vboxweb.service novamente, com After=apache2.service (e mais tarde também tentei After=multi-user.target ), e verifiquei com systemd-analyse plot que o init de vboxweb realmente foi movido para o final da sequência de inicialização. Mas ainda assim, o wboxweb não foi listado em netstat -peanut

Então, finalmente, para minhas perguntas:

  1. Existem conflitos entre o init.d e o systemd, por ex. que virtualbox (de fontes padrão do Ubuntu) depende de arquivos que são init.d específicos, enquanto o Ubuntu passou para systemd?
  2. Qualquer outra razão pela qual a configuração VBOXWEB_HOST no arquivo /etc/default/virtualbox não teve efeito?
  3. Foi correto editar o arquivo vboxweb.service (especificamente com o parâmetro host).
  4. (e este é o mais importante) Como faço para que o serviço vboxweb seja executado com configurações IP / porta corretas no momento da inicialização? Estou sem ideias: /

PS: Eu sei que eu poderia ter encurtado muito este post, e apenas mantive a questão principal aqui, já que resolvi o resto (deixando apenas algumas perguntas), mas achei que poderia ser interessante para os outros verem. como trabalhei nesse problema.

BR, Rolf

    
por rolfhsp 03.03.2016 / 12:44

2 respostas

2

Depois de mais algumas pesquisas no Google, finalmente encontrei uma solução:

1) Eu concluí que o arquivo /etc/defaults/virtualbox não parece ter nenhum efeito sobre nada (apenas um remanescente do init.d dias?). Assim, as configurações de usuário e grupo nesse arquivo foram desperdiçadas.

Solução: Adicionamos User=vbox e Group=vboxusers na seção [Service] do arquivo vboxweb.service .

2) Alguns dos problemas que tive foram devidos ao arquivo vboxweb.config referente a um arquivo pid na pasta /run e vbox não tem acesso de gravação a essa pasta. Primeiro, tentei criar uma subpasta de vbox , na qual armazenar o arquivo pid, mas aprendi que a pasta /run é apagada no momento da inicialização, incluindo todas as subpastas.

Solução: criou uma subpasta em vbox homedir e atualizou o arquivo vboxweb.config com esse local.

3) Por algum motivo (que ainda me ilude), referindo-se ao endereço IP real, 192.168.1.12, em config.php (na pasta phpvirtualbox ) e no arquivo vboxweb.config (como mencionado no post original), não funcionou na inicialização. (Uma reinicialização posterior do serviço funcionaria.)

Solução: Atualizou os config.php e vboxweb.config com o endereço IP 127.0.0.1 em vez de 192.168.1.12.

Caso encerrado! : o) ... além de todas as perguntas sobre por que as coisas são como são, mas eu posso viver com isso: o)

BR, Rolf

    
por rolfhsp 04.03.2016 / 01:14
0

A resposta de rolfhsp é realmente útil.

Além disso, se vboxweb.service for modificado para ser executado como algum outro usuário que não seja root, outra falha ocorrerá. Nessa situação, a causa é registrada como "Falha ao abrir" / dev / vboxdrvu ", errno = 13, rc = VERR_VM_DRIVER_NOT_ACCESSIBLE", o que significa que o usuário não tem permissão para acessar /dev/vboxdrvu .

Por padrão, /dev/vboxdrvu , juntamente com /dev/vboxnetctl e /dev/vboxdru , são permitidos somente para raiz ( crw------- ). para usuários não-root acessá-lo, a permissão deve ser modificada. De acordo com este blog , ele é arquivado simplesmente colocando-se um arquivo "rules" em / lib / udev / com o conteúdo abaixo:

/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"

Em seguida, reinicie o sistema, após a reinicialização, esses arquivos terão novas permissões:

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

Embora vboxdru ainda esteja inalterado, vboxdrvu já tem uma boa permissão para que um não-raiz (em vboxusers group) acesse. Após essa modificação, vboxweb.service pode ser executado por um usuário não raiz com êxito.

    
por 周默晗 19.03.2017 / 17:51