管理无头VirtualBox安装使用phpvirtualbox在nginx(Ubuntu 12.04)

管理无头VirtualBox安装使用phpvirtualbox在nginx(Ubuntu 12.04) phpvirtualbox是一个基于Web的VirtualBox前端编写的...

使用phpvirtualbox管理无头VirtualBox安装在nginx(Ubuntu 12.04)

phpvirtualbox是一个基于Web的VirtualBox前端,用PHP编写,它允许您访问和控制远程VirtualBox实例。 尽可能地尽可能地使VirtualBox GUI类似,使其尽可能简单。 如果您在无头服务器中运行VirtualBox(如教程中的VBoxHeadless - 使用VirtualBox 4.1在无头Ubuntu 12.04服务器上运行虚拟机) ,则可以很好地替代VirtualBox GUI。 本教程介绍了如何在Ubuntu 12.04服务器上安装带有nginx的phpvirtualbox来管理本地安装的无头VirtualBox。

我不会保证这将为您工作!

1初步说明

我假设在本地的Ubuntu 12.04服务器上已经安装了一个无头的VirtualBox,例如教程中所述的VBoxHeadless - 使用VirtualBox 4.1在无头Ubuntu 12.04服务器上运行虚拟机

我使用root权限运行本教程中的所有步骤,因此请确保以root用户身份登录:

sudo su

2安装phpvirtualbox

首先创建一个名为vbox的系统用户并将其添加到vboxus组中:

useradd -m vbox -G vboxusers

创建vbox用户的密码:

passwd vbox

创建文件/ etc / default / virtualbox并将其中的VBOXWEB_USER = vbox放在其中(以便使用称为vboxwebsrv的VirtualBox SOAP API作为用户vbox运行):

vi /etc/default/virtualbox

VBOXWEB_USER=vbox

接下来创建vboxwebsrv的系统启动链接并启动它:

update-rc.d vboxweb-service defaults
/etc/init.d/vboxweb-service start

我们需要一个支持PHP的Web服务器来提供phpvirtualbox - 我在这里使用nginx。 安装nginx和PHP5如下:

apt-get install nginx php5-common php5-mysql php5-suhosin php5-fpm php-pear wget

开始nginx:

/etc/init.d/nginx start

虚拟主机在server {}容器中定义。 默认的vhost是在文件/ etc / nginx / sites-available / default中定义的 - 让我们修改它,如下所示,以便它可以服务于PHP文件:

vi /etc/nginx/sites-available/default

[...]
server {
        listen   80; ## listen for ipv4; this line is default and implied
        listen   [::]:80 default ipv6only=on; ## listen for ipv6

        root /usr/share/nginx/www;
        index index.php index.html index.htm;

        # Make site accessible from http://localhost/
        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                try_files $uri $uri/ /index.html;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }

        location /doc/ {
                alias /usr/share/doc/;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }

        # Only for nginx-naxsi : process denied requests
        #location /RequestDenied {
                # For example, return an error code
                #return 418;
        #}

        #error_page 404 /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/www;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}
[...]

取消注释两个监听行使nginx监听端口80 IPv4 IPv6。

服务器名称 _; 使它成为默认的catchall vhost(当然,您也可以像www.example.com一样指定一个主机名)。

我已经将index.php添加到索引行。 root / usr / share / nginx / www; 意味着文档根目录是/ usr / share / nginx / www

PHP的重要部分是位置〜\ .php $ {}节。 取消注释以启用它。 请注意,我添加了try_files $ uri = 404; 以防止零日漏洞(请参阅http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHPhttp://forum.nginx.org/read.php?2,88845,page=3 )。 或者,如果不想使用try_files $ uri = 404; 行,你可以设置cgi.fix_pathinfo = 0;/etc/php5/fpm/php.ini (以后不要忘记重新加载PHP-FPM)。

现在保存文件并重新加载nginx:

/etc/init.d/nginx reload

我想从文件root / usr / share / nginx / www (我将安装在/ usr / share / nginx / www / phpvirtualbox )中的nginx默认虚拟主机提供phpvirtualbox - 如果你有一个不同的文件根,你必须调整以下步骤:

cd /usr/share/nginx/www
wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-8.zip

确保已解压缩:

apt-get install unzip

解压缩phpvirtualbox并将phpvirtualbox-4.1-8重命名为phpvirtualbox以方便使用:

unzip phpvirtualbox-4.1-8.zip
mv phpvirtualbox-4.1-8 phpvirtualbox

接下来去/ var / www / phpvirtualbox /目录...

cd /usr/share/nginx/www/phpvirtualbox/

...并通过从config.php-example复制文件config.php

cp config.php-example config.php

打开config.php并填写您先前为vbox系统用户创建的密码:

vi config.php

[...]
/* Username / Password for system user that runs VirtualBox */
var $username = 'vbox';
var $password = 'secret';
[...]

已经有了 - 您现在可以打开浏览器并访问phpvirtualbox,如下所示:

http://www.example.com/phpvirtualbox/

默认用户名为admin ,密码为admin

这就是phpvirtualbox的外观 - 就像本地的VirtualBox GUI一样:

你应该做的第一件事是改变管理员密码。 转到文件>更改密码

输入旧密码并指定一个新密码:

如果您知道本机VirtualBox GUI,现在使用phpvirtualbox非常简单。 例如,如果要创建新的虚拟机,则具有与VirtualBox GUI中相同的向导:

(我要离开几个sceenshots,所以你不觉得无聊...)