使用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_PHP和http://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,所以你不觉得无聊...)