[原创]在HP DL380 G7服务器上部署基于Ubuntu Server 16.04 和 VirtualBox的云平台
对于一线开发人员来说,一提到虚拟机平台,往往会让人联想到在价格昂贵的服务器上部署VMware vSphere之类软件来实现。
笔者作为一个资深码农,也是一直梦寐着在自己家中打造一个真正的家庭私有云,秒杀那些硬盘厂商所吹嘘的“Jia私有云”。
功夫不负有心人,经过反复的实验,浏览了很多国外的社区以后,笔者真的实现了这个目标,而且,真的很便宜哦~!
整理出一份教程放在这里,希望能扩展一下大家的思路。

材料
HP DL380 G7 2U 服务器
- Core 24, Mem 40G, SAS 146G * 2, Raid 0
Ubuntu Server 16.04 LTS
Oracle Virtualbox 5.1
Oracle_VM_VirtualBox_Extension_Pack 5.1
选择服务器
市场上有很多IDC机房淘汰的服务器在二手市场上销售,真的是白菜价格。
想入手服务器的筒子们,可以认真考察考察。
笔者在这里不给任何人做广告,只是说一点:在家用,一定要注意噪音问题,否则,被家里的大领导给禁止了就没的完了。
参考文章:
操作系统
由于服务器是一种有别于一般家用机设备,因此,对于家用机(或者笔记本)来说天经地义的一些经验和安装方法,往往不能直接搬到服务器上。
笔者实际测试的系统包括:
- Windows Server 2012 R2
- Debian 9 with non-free
- Fedora Workstation 25
- Ubuntu Desktop 16.04 LTS
- Ubuntu Server 16.04 LTS
其中,只有一下三种操作系统能够顺利启动:
- Windows Server 2012 R2
- Debian 9 with non-free
- Ubuntu Server 16.04 LTS
考虑到维护和稳定性的要求,最终选择了Ubuntu Server 16.04作为服务器主机的操作系统。
虚拟机平台
网上有众多的文章都主张选用VMware vSphere,但是License是个大问题,反正笔者是买不起的。
使用了多年的VirtualBox自然成了我的首选,可是VirtualBox是否能在Server版本的Linux上成功虚拟带有图形界面的OS还是个问题?
幸好最终找到了一个叫做phpvirtualbox的软件,能够通过网页的形式将VirtualBox的操作界面展现出来,
再加上Extension Pack扩展包,一个Headless服务器的蓝图便浮出水面。
国外的一个网站提供了本教程后面一半的内容,感谢那个名叫SK的作者的分享。
好了,铺垫的介绍就到这里,让我们赶快开始吧。
安装步骤
第一步 安装Ubuntu Server 16.04 LTS
(安装步骤省略,请自行用Bing搜索)
第二步 配置Ubuntu Server 16.04 LTS
使用固定IP地址。
vi /etc/network/interfaces
以下是笔者机器上的例子:
# The primary network interface
auto enp3s0f0
# iface enp3s0f0 inet dhcp
iface enp3s0f0 inet static
address 192.168.11.16
netmask 255.255.255.0
gateway 192.168.11.1
手工指定DNS服务器
- DNS服务器众多,国外的很多DNS资源无法访问,所以笔者选择了一个最保险的DNS:要要死(114)
vi /etc/resolvconf/resolv.conf.d/base
向其中添加一行:
nameserver 114.114.114.114
(如果你有多个DNS服务器的话,请采用上面的格式,每行添加一个DNS的IP地址)
让刚才的变更生效,你需要手工重启networking服务
/etc/init.d/networking restart
第三步 更新Ubuntu操作系统
这可能是大家最熟悉的一个指令了apt-get。他看起来太经典了,不是吗?
apt-get update
apt-get -y dist-upgrade
升级完成后,顺便安装以下组件:
apt-get install build-essential dkms unzip wget
apt-get install apache2 php php-mysql libapache2-mod-php php-soap php-xml
到这里,请一定重启一下服务器。
由于服务器启动速度很慢,通常5 ~ 10分钟的样子,各位同学尽可以利用这段时间来放松一下。
第四步 安装VirtualBox
VirtualBox提供了灵活的安装方式,比如,可以选择通过deb包或者repository的来安装。
笔者这里使用repository的方式来进行说明,其它方式,请参考Oracle VirtualBox的官方网站。
首先,要做的就是注册这个官方的repository:
vi /etc/apt/sources.list
笔者将URL地址添加进去。注:这里"xenial"是Ubuntu的发型代号,各位需要根据自己所使用的Ubuntu版本添加特定的仓库地址,不能混用。
deb http://download.virtualbox.org/virtualbox/debian xenial contrib
注册官方的Key
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
获取官方repository信息,并开始安装
apt-get update
apt-get install virtualbox-5.1
安装完成后,请确认vboxdrv的状态
systemctl status vboxdrv

接着,要做的就是安装VirtualBox的扩展包。可以说本方案之所以能够成功,主要依靠的就是这个扩展包的功能。
wget http://download.virtualbox.org/virtualbox/5.1.26/Oracle_VM_VirtualBox_Extension_Pack-5.1.26-117224.vbox-extpack
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.1.-.vbox-extpack
当你看到形如下面的提示,那么恭喜你,到目前为止安装很顺利。

第五步 安装Web客户端phpvirtualbox
也许大家对phpVirtualBox会比较陌生,引用官方网站上的一句话:A web-based front-end to VirtualBox written in PHP
可以在这里下载到最新版本。
wget https://sourceforge.net/projects/phpvirtualbox/files/phpvirtualbox-5.0-5.zip
unzip phpvirtualbox-5.0-5.zip
将解压缩后的文件夹复制到apache的默认发布路径,并赋予权限
mv phpvirtualbox-5.0- /var/www/html/phpvirtualbox
chmod 777 /var/www/html/phpvirtualbox/
通过Example文件创建配置文件
cp /var/www/html/phpvirtualbox/config.php-example /var/www/html/phpvirtualbox/config.php
打开刚刚复制产生的配置文件,指定以哪一个Linux用户的权限运行
vi /var/www/html/phpvirtualbox/config.php
/* Username / Password for system user that runs VirtualBox */
var $username = 'Linux用户名';
var $password = '密码';
注:这个配置用的php里有很多的设置选项,推荐准备用于生产环境的筒子们详细的看一下。
创建/etc/default/virtualbox文件
vi /etc/default/virtualbox
仍然添加上面所指定的Linux用户
VBOXWEB_USER=Linux用户名
依次尝试重启以下三个服务
systemctl restart vboxweb-service
systemctl restart vboxdrv
systemctl restart apache2
第六步 激动人心的时刻到了
打开浏览器,输入网址:http://服务器地址/phpvirtualbox/

在输入了默认的用户明(admin)和密码(admin)以后,一个与原版VirtualBox如出一辙的界面就会展现出来

剩下的使用方式就和VirtualBox完全相同了。篇幅所限,笔者这里省略。
如何连接你的虚拟机桌面
你当然不希望仅仅在VM中运行命令行界面的OS,那么如何才能远程连接到VM的桌面环境呢?
两个步骤轻松搞定:
第一,在虚拟机的设置里面指定远程桌面的端口,例如笔者设置的9061

第二,是使用Windows自带的远程桌面(或者任何支持RDP协议的客户端)来连接服务器上面的这个端口。

注:这里的IP(192.168.1.123)是服务器本身的IP,不是VM的IP。
然后....就没有然后啦。
大功告成,累死了。希望能开阔大家的思路。
[原创]在HP DL380 G7服务器上部署基于Ubuntu Server 16.04 和 VirtualBox的云平台的更多相关文章
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(三):设置上传文件夹权限(这里测试用完全共享)
基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(五):测试项目
基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(二):Apache安装和配置
基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django
近期开始学习基于Linux平台的Django开发,想配置一台可以发布的服务器,经过近一个月的努力,终于掌握了基于Apache和mod-wsgi插件的部署模式,自己也写了一个教程,一是让自己有个记录,二 ...
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(四):安装MySQL数据库
基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...
- Ubuntu Server 16.04 LTS上怎样安装下载安装Nginx并启动
场景 Linux-安装 Ubuntu Server 16.04 X64(图文教程详细版): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- 在Cent OS云服务器上部署基于TP5后端代码踩坑记录_艾孜尔江撰
推荐使用镜像安装Cent OS系统,或者在纯净安装完成之后在完成Apache+MySQL+PHP的时候不要每个单独安装,因为这样会出一些三者之间版本不配的问题,网上各种说法都有,查起来也非常困难,版本 ...
- Ubuntu server 16.04的安装 以及配置(服务器版)
1.在电脑上下载最新版本的Ubuntu服务器ISO映像,刻录到CD或创建一个可启动的USB盘. 2.视情况而定,进入到服务器的boot界面,把cd或者usb设置为启动第一项 3.开始安装 1)Ub ...
- ubuntu server 16.04安装GPU服务器
1 Ubuntu16.04 系统安装过程中,需要勾选openssh-server 方便远程连接 2 必须安装gcc 与g++ 3 安装显卡驱动 NVIDIA-Linux-x86_64-367.57.r ...
随机推荐
- CJOJ 2171 火车站开饭店(树型动态规划)
CJOJ 2171 火车站开饭店(树型动态规划) Description 政府邀请了你在火车站开饭店,但不允许同时在两个相连的火车站开.任意两个火车站有且只有一条路径,每个火车站最多有 50 个和它相 ...
- git bash上传代码到github
今天,老爷机notebook开始卡了,我决定格盘重装系统. 顺便复习一下git本地命令的使用 1,配置 2先跳过一般的操作.介绍链接github远程库的操作 我的两个钥匙在C:\Users\bond\ ...
- GCD使用汇总
本文目录 dispatch_queue_t.dispatch_block_t dispatch_sync.dispatch_async dispatch_set_target_queue.dispat ...
- Android 自定义帧动画
Android 自定义帧动画 Android L : Android Studio 帧动画 和gif图片类似,顺序播放准本好的图片文件:图片资源在xml文件中配置好 将图片按照预定的顺序一张张切换,即 ...
- [luogu P3797] 妖梦斩木棒 [线段树]
题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的n段.现在这个木棒可以看做由三种小段构成,中间的 ...
- GetStdHandle 函数--获取标准设备的句柄
#GetStdHandle函数 来源:https://msdn.microsoft.com/en-us/library/ms683231.aspx 作用 该函数用于取得指定的标准设备的句柄(标准输入, ...
- (转)Linux命令unzip
场景:解压war包时候用到该命令,感觉很方便. 1 基本用法 unzip [选项] 压缩文件名.zip 1.2 完整语法 unzip [-cflptuvz] [-agCjLMnoqsVX] [-P & ...
- (转)js jquery.qrcode生成二维码 带logo 支持中文
场景:公司最最近在开发二维码支付业务,所以需要做一个html5中的二维码生成和部署! 前天用js生成二维码,节省服务器资源及带宽 原版jquery.qrcode不能生成logo,本文采用的是修改版 1 ...
- 31. leetcode 122. Best Time to Buy and Sell Stock II
122. Best Time to Buy and Sell Stock II Say you have an array for which the ith element is the price ...
- Python 发展历史
1. Python发展历史 起源 Python的作者,Guido von Rossum,荷兰人.1982年,Guido从阿姆斯特丹大学获得了数学和计算机硕士学位.然而,尽管他算得上是一位数学家,但他更 ...