最近、ヘッドレスサーバーをUbuntu Server 15.10に更新しました。
デフォルトのUbuntuソースからvirtualbox 5.0.14をインストールしました。 virtualbox/5.0.14/Oracle_VM_VirtualBox_Extension_Pack-5.0.14-105127.vbox-extpack
をダウンロードしてインストールしました
グループvbox
のユーザーvboxusers
を定義しましたが、基本的にvirtualbox自体は正常に機能します。ただし、phpvirtualboxを使用してリモートで構成できるようにしたいと考えています。
phpvirtualbox-5.0-5.Zip
をダウンロードしてインストールしました
VBOXWEB_USER=vbox
をファイル/etc/default/virtualbox
に追加しました。
別のマシンからWebページにアクセスすると、エラーCould not connect to Host
が発生しました(詳細は msg1 を参照してください。詳細は msg2 ですが、あまり重要ではないと思います)。
Sudo netstat -peanut
を使用すると、vboxwebsrvが正しいIPアドレスを使用していないように見えました。予想される::1:18083
ではなく、192.168.1.12:18083
としてローカルアドレスを示しました。
グーグルで調べた後、ファイル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
を編集できることがわかり、ExecStart
コマンドに-H 192.168.1.12
を追加しました。 vboxwebサービスの再起動後、機能しました! :o)
起動時に自動的に開始されるようにサービスを有効にしました:
Sudo systemctl enable vboxweb.service
しかし、再起動後、ps -efはサービスが開始されたことを示していますが、Sudo netstat -peanut
にvboxwebがまったく表示されませんでした。
$ ps -ef
ルート1383 1 0 mars02? 00:00:00/usr/lib/virtualbox/vboxwebsrv --pidfile /run/vboxweb.pid --background -H 192.168.1.12 -p 18083
サービスを再起動すると修正されますが、再起動後は正しく起動しません。
そのため、おそらくsystemdの初期化プロセスの初期段階でvboxweb.serviceが開始されたと考えていました。そこで、vboxweb.service
を使用してAfter=Apache2.service
ファイルを再度編集し(後でAfter=multi-user.target
も試しました)、systemd-analyse plot
を使用してvboxwebのinitが実際に初期化シーケンスの最後に移動したことを確認しました。それでも、wboxwebはnetstat -peanut
にリストされていませんでした
最後に私の質問に:
VBOXWEB_Host
ファイルの/etc/default/virtualbox
設定が効果を持たなかった他の理由は何ですか?PS:私はこの投稿を大幅に短縮でき、残りを解決したので(ここでいくつかの質問を残して)主な質問をここに留めることができたことを知っていますが、他の人が自分の様子を見るのは面白いと思いましたveはこの問題に取り組みました。
BR、ロルフ
さらにいくつかのグーグルといじくり回した後、私は最終的に解決策を思いつきました:
1)/etc/defaults/virtualbox
ファイルは何にも影響を及ぼさないようであると結論付けました(init.d時代の名残ですか?)。そのため、そのファイルのユーザーとグループの設定は無駄になりました。
解決策:User=vbox
ファイルのGroup=vboxusers
セクションに[Service]
およびvboxweb.service
を追加しました。
2)私が抱えていた問題のいくつかは、vboxweb.config
ファイルが/run
フォルダー内のpidファイルを参照しており、vbox
がそのフォルダーへの書き込みアクセス権を持っていないことが原因でした。最初に、vbox
が所有するpidファイルを格納するサブフォルダーを作成しようとしましたが、すべてのサブフォルダーを含む/run
フォルダーがブート時に消去されることがわかりました。
ソリューション:vbox
homedirにサブフォルダーを作成し、その場所でvboxweb.config
ファイルを更新しました。
3)何らかの理由で(それでも私を避けます)、config.php
(phpvirtualbox
フォルダー内)およびvboxweb.config
ファイル内の実際のIPアドレス192.168.1.12を参照します(元の投稿で言及された)、ブート時に動作しませんでした。 (ただし、後でサービスを再起動しても機能します。)
解決策: 192.168.1.12ではなくIPアドレス127.0.0.1でconfig.php
とvboxweb.config
の両方を更新しました。
ケースが閉じられました! :o)...物事がそうである理由に関するすべての質問は別ですが、私はそれで生きることができます:o)
BR、ロルフ
rolfhspの答えは本当に役に立ちます。
さらに、vboxweb.service
がroot以外の他のユーザーとして実行するように変更された場合、別の障害が発生します。この状況では、原因は「「/ dev/vboxdrvu」、errno = 13、rc = VERR_VM_DRIVER_NOT_ACCESSIBLEを開けませんでした」と記録されます。これは、ユーザーが/dev/vboxdrvu
にアクセスする権限を持っていないことを意味します。
デフォルトでは、/dev/vboxdrvu
と/dev/vboxnetctl
および/dev/vboxdru
は、ルートに対してのみ許可されています(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
はすでに(vboxusers
グループ内の)非ルートがアクセスするための適切な許可を持っています。この変更後、vboxweb.service
が非rootユーザーによって正常に実行される可能性があります。