phpVirtualbox 구축 방법

phpVirtualbox 구축 방법
Page content

1. Virtualbox 설치

준비

$ sudo add-apt-repository universe
$ sudo add-apt-repository multiverse
$ sudo apt update
$ sudo apt upgrade
$ sudo apt dist-upgrade
$ sudo apt install build-essential dkms unzip wget
$ sudo reboot

VirtualBox Source Repo 추가

$ sudo nano /etc/apt/sources.list
$ deb http://download.virtualbox.org/virtualbox/debian [rel] contrib

GPG 키 추가

$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
$ sudo apt update

설치

$ sudo apt install virtualbox

VirtualBox Group 및 User 추가

$ sudo usermod -aG vboxusers vbox
$ sudo passwd vbox

Extension Pack 설치

$ wget https://download.virtualbox.org/virtualbox/5.2.30/Oracle_VM_VirtualBox_Extension_Pack-[version].vbox-extpack
$ sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-[version].vbox-extpack

vboxdrv 및 vboxweb-service 설치

$ cd /etc/init.d/

services=(vboxautostart-service vboxweb-service vboxballoonctrl-service)
base_url="https://www.virtualbox.org/svn/vbox/trunk/src/VBox/Installer/linux"
for service in "${services[@]}"
    do
      sudo wget "${base_url}/${service}".sh -O "${service}" \
      && sudo chmod +x "$service"  \
      && sudo update-rc.d "$service" defaults 90 10
    done
	

2. phpVirtualBox 설치

필수 패키지 설치

$ sudo apt install apache2 php php-mysql libapache2-mod-php php-soap php-xml

phpVirtualBox 설치

반듯이 git에서 땡겨야 함. 현재 최신 릴리즈가 5.2인데 5.2에서는 virtualbox 6.1에 대한 soap 이 정의 되어 있지 않음.

$ git clone https://github.com/phpvirtualbox
$ sudo mv phpvirtualbox /var/www/html/
$ sudo chmod 777 /var/www/html/phpvirtualbox

config

$ sudo cp /var/www/html/phpvirtualbox/config.php-example /var/www/html/phpvirtualbox/config.php

config.php 파일 수정

위에서 생성한 vbox 계정에 대한 정보 입력

var $username = 'vbox';
var $password = 'password';

/etc/default/virtualbox 수정

VBOXUSER=vbox
VBOXWEB_USER=vbox
VBOXWEB_HOST=127.0.0.1
VBOXWEB_PORT=18083

실행

sudo systemctl restart vboxweb-service
sudo systemctl restart virtualbox
sudo systemctl restart apache2

3. 참고

Remote Desktop 사용

VNC등을 통해 원격 스크린을 보고 싶은 경우, 기본적으로 Localbinding되기 때문에 외부에서 접근이 어렵다. 아래의 명령어는 인터페이스로 Binding 하는 방법이다.

$ VBoxHeadless --startvm "node-5" --vrde on --vrdeproperty "TCP/Ports=9003" --vrdeproperty "TCP/Address=10.1.1.61"

네트워크 관련

$ VBoxManage natnetwork add --netname natnet1 --network "192.168.0.0/24" --enable --dhcp on
$ VBoxManage natnetwork modify --netname natnet1 --port-forward-4 "SSH:tcp:[10.1.1.62]:10022:[192.168.0.4]:22"
$ VBoxManage natnetwork modify --netname natnet1 --port-forward-4 delete 'GIS-SSH'

4. TroubleShooting

$ VBoxManage natnetwork stop --netname natnet1
$ VBoxManage natnetwork start --netname natnet1

5. Reference

https://ostechnix.com https://technote.kr/213