本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 [署名 4.0 国际 (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/deed.zh) 本文作者: 苏洋 创建时间: 2013年04月14日 统计字数: 8979字 阅读时间: 18分钟阅读 本文链接: https://soulteary.com/2013/04/14/local-test-env.html ----- # 本地测试开发环境的搭建 菜鸟随意写写,欢迎斧正,有建议和问题欢迎在评论中指出。 经常做本地测试的同学,尤其是经常使用WINDOWS进行开发测试的童鞋,对各种LAMP,XAMP,lnmp工具包一定耳熟能详。 比如大名鼎鼎的XMAPP,AMPserv,PHPNow等等... 理想的测试环境需要具备那些条件呢,苏洋认为下面几点必不可少: 1. 首先是数据隔离要好。本地操作系统和测试环境数据相互隔离,互不影响,尤其指开发环境中,系统进程和服务软件不会影响到开发或者开发结束不会影响到系统正常使用。 2. 接着是重复使用成本要足够低。诸如测试工具和测试环境的流行,很大程度上是基于便携或者简单部署(包括再次部署),下载解压,(一键安装或者编译),点击一个按钮,或者输入一条指令就完成要实现的功能。 3. 然后是扩展性强,可定制能力高。`APACHE/NGIX + PHP/TOMCAT/PYTHON/NODEJS + MEMCACHE/REDIS + MYSQL/NOSQL + ...`想用什么就加什么。 那么,基于上面的三点,之前的现成工具包不能完全满足我们日益增长的开发需求,并且会限制到我们的一些实践开发过程。 比如对于配置好的测试工具的再分发,我们配置好一个环境,想和好基友或者童鞋一起使用,但是发现他也要下载很多依赖环境或者软件,或者修改很多系统配置。 所以,我认为使用虚拟机做测试环境是一个不错的实践。 虚拟机做测试环境的优势: 1. 数据隔离性好。相比较在本机安装一堆东西,并且修改本机配置的话,会更加的纯净。 2. 重复使用便捷,学习无成本。把镜像打包就可以分发给别人或者自己在其他地方部署。 3. 扩展性极佳。虚拟机环境是独立的操作系统,想安装什么就安装什么,想配置什么就添加什么。 虚拟机的环境我们按照自己的喜好或者需求来,如果你强烈希望使用WINDOWS作为环境,那么使用WINDOWS也无可厚非,只是如果使用LINUX的话,开发和服务器软件都有大量的资源可供我们使用,并且文档会更加的齐全,并且性能效率稳定性都不错,消耗资源好少。所以,本文使用的是`CentOS 6.4` 本地环境,是WINDOWS 8(全系列适用)+ORACLE公司出品的Virtual Box[本文使用4.2.10版本] **熟悉Virtual Box的童鞋可以跳过第一步,熟悉CentOS操作的童鞋可以跳过本文。** ### 一.安装虚拟机 关于WINDOWS下安装Virtual Box 出现错误可以看看 之前写的[一篇文章](http://www.soulteary.com/2013/03/30/win8-instal-virtualboxl-error.html),或许可以帮你解决问题。 环境安装好之后,我们要开始创建虚拟机了。 这里需要注意一下虚拟机设置,因为Virtual Box没有提供CentOS的默认配置。 在创建类型,我们选择Linux 2.6(如果你的机器支持X64的话,选择X64会获得更好体验) [![2013-04-13_055748](https://attachment.soulteary.com/2013/04/14/2013-04-13_055748.png "2013-04-13_055748")](https://attachment.soulteary.com/2013/04/14/2013-04-13_055748.png) 内存分配按照个人机器配置的不同给不同的配额就好,小到256大到系统物理内存的一半,任君选择。 不过选择CentOS的做测试环境的话,给1G就很奢侈了有木有,这里我们为了获得更好体验,奢侈一下。 [![2013-04-13_060150](https://attachment.soulteary.com/2013/04/14/2013-04-13_060150.png "2013-04-13_060150")](https://attachment.soulteary.com/2013/04/14/2013-04-13_060150.png) 接着创建硬盘,选择现在创建硬盘,或者使用自己闲置的整个分区都无可争议,这个要看你对自己机器的资源使用态度了。 为了便于分发和再次使用,我选择屌丝节约型,就是创建虚拟硬盘,文件类型VDI,硬盘大小为动态创建,节约硬盘占用和方便备份和分发。 [![2013-04-13_060621](https://attachment.soulteary.com/2013/04/14/2013-04-13_060621.png "2013-04-13_060621")](https://attachment.soulteary.com/2013/04/14/2013-04-13_060621.png) 点击创建后,我们开始设置虚拟机。 [![2013-04-13_061406](https://attachment.soulteary.com/2013/04/14/2013-04-13_061406.png "2013-04-13_061406")](https://attachment.soulteary.com/2013/04/14/2013-04-13_061406.png) 接着是CPU和硬件虚拟 [![2013-04-13_061728](https://attachment.soulteary.com/2013/04/14/2013-04-13_061728.png "2013-04-13_061728")](https://attachment.soulteary.com/2013/04/14/2013-04-13_061728.png) 接着是声音和光盘设置。 光盘选择:`CentOS-6.4-x86_64-minimal.iso` 下载地址:`http://centos.arcticnetwork.ca/6.4/isos/x86_64/CentOS-6.4-x86_64-minimal.iso` [![2013-04-13_062310](https://attachment.soulteary.com/2013/04/14/2013-04-13_062310.png "2013-04-13_062310")](https://attachment.soulteary.com/2013/04/14/2013-04-13_062310.png) 接着是重要的网络设置。 这里我们要实现的是虚拟机可以访问互联网,本机可以访问互联网,虚拟机可以被主机访问。 最简单的配置是虚拟机双网卡,也就是NAT+HOST-ONLY模式。 第一块NAT网卡利用主机来进行网络访问,第二块网卡则是为了实现主机和虚拟机的数据互通。 [![2013-04-13_063127](https://attachment.soulteary.com/2013/04/14/2013-04-13_063127.png "2013-04-13_063127")](https://attachment.soulteary.com/2013/04/14/2013-04-13_063127.png) [![2013-04-13_063151](https://attachment.soulteary.com/2013/04/14/2013-04-13_063151.png "2013-04-13_063151")](https://attachment.soulteary.com/2013/04/14/2013-04-13_063151.png) 最后其他的设置就相当随意了,不过有可能的话,给显示-显存分配可以多一点,我这里选择了128MB。 启动机器,开始安装系统。 随意选择第一或者第二项,进入安装引导。 [![2013-04-13_064221](https://attachment.soulteary.com/2013/04/14/2013-04-13_064221.png "2013-04-13_064221")](https://attachment.soulteary.com/2013/04/14/2013-04-13_064221.png) 然后选择SKIP跳过光盘检查这个虚拟机木有营养的步骤。 [![2013-04-13_064302](https://attachment.soulteary.com/2013/04/14/2013-04-13_064302.png "2013-04-13_064302")](https://attachment.soulteary.com/2013/04/14/2013-04-13_064302.png) 须臾之后,进入正式安装。 [![2013-04-13_064501](https://attachment.soulteary.com/2013/04/14/2013-04-13_064501.png "2013-04-13_064501")](https://attachment.soulteary.com/2013/04/14/2013-04-13_064501.png) 安装过程语言选择什么都好,自己看得懂就成,汉语英语或者霓虹语或者鸟语,随意选择。 出现储存设备选择基本储存设备,弹出新界面选择忽略所有数据。 主机名输入一个霸气外露的,比如soulteary(这里无所谓的,你懂的),建议和你的电脑的主机不要一样。 然后设置一下时区,北京/上海。 密码可以设置一个弱口令,然后选择无论如何都使用这个密码,接着下一步选择使用所有硬盘空间, 继续下一步将修改保存到硬盘,最后等待 真.安装过程的结束,结束后,右下角有重启系统的按钮,按下之后,我们等待系统重启。 [![2013-04-13_065621](https://attachment.soulteary.com/2013/04/14/2013-04-13_065621.png "2013-04-13_065621")](https://attachment.soulteary.com/2013/04/14/2013-04-13_065621.png) ### 二.配置虚拟机操作系统环境 又是须臾之后,我们进入系统,使用root和你刚刚设置的密码进行登录,注意,密码输入是不显示的,输入完成之后,回车即可。 [![2013-04-13_065731](https://attachment.soulteary.com/2013/04/14/2013-04-13_065731.png "2013-04-13_065731")](https://attachment.soulteary.com/2013/04/14/2013-04-13_065731.png) 目前我们的机器是不可以访问网络的,所以我们要配置一下网络。 输入`ifconfig`显示虚拟机就绪的网络接口设备,发现只有一个lo回环接口。 接着输入`ifconfig -a`显示所有设备,确定eth0,eth1,lo接口都存在,那么安装是正确的,网卡都正确被识别了。 现在修改NAT网卡的配置 ```bash #切换目录到系统配置目录中 cd /etc/sysconfig/network-scripts/ #先修改NAT网卡的配置 vi ifcfg-eth0 ``` 配置中需要修改和增加的项目,其他的网卡原有设置请保留。 ```bash #启动服务的时候启动这个网卡配置 ONBOOT=yes #IP获取方式为静态指定 BOOTPROTO=static #IP地址(注1) IPADDR=192.168.56.103 #IP掩码 NETMASK=255.255.255.0 ``` 用惯了图形界面的童鞋可能对VI不熟悉,但是请不要排斥用多之后,你会发现命令模式真的很高效。 如果你对VI相当熟悉,那么请忽略这段内容。 修改内容需要按下Insert键,修改完毕之后,请先按ESC,在输入:wq保存并退出,相关操作可以自行百度。 有童鞋会问,注1的IP和掩码是怎么获得的呢。 答案很简单,在你的主机操作系统中`WIN+R`打开运行,输入`CMD`,回车打开命令提示符。 接着输入`ipconfig/all` ```text 以太网适配器 VirtualBox Host-Only Network: 连接特定的 DNS 后缀 . . . . . . . : 描述. . . . . . . . . . . . . . . : VirtualBox Host-Only Ethernet Adapter 物理地址. . . . . . . . . . . . . : XX-XX-XX-XX-XX-XX DHCP 已启用 . . . . . . . . . . . : 否 自动配置已启用. . . . . . . . . . : 是 IPv4 地址 . . . . . . . . . . . . : 192.168.56.1(首选) 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : ``` 接着我们配置网卡二。 ```bash #先修改HOST网卡的配置 vi ifcfg-eth1 ``` 相比NAT网卡,这块HOST网卡只需要设置自启动就好。 ```bash #启动服务的时候启动这个网卡配置 ONBOOT=yes ``` 重启网络服务。 ```bash service network restart ``` 等提示全部OK之后,进行一下PING测试。 ```bash #PING WLAN ping weibo.com #PING HOST ping 192.168.56.1 ``` 同时在主机里可以打开CMD,ping一下虚拟机。 ```bash ping 192.168.56.3 ``` 确定都是通畅的话,我们继续下一步。 先更换官方软件源为国内比较快的源。 这里先替换为网易源。 官方中国源列表地址:`http://www.centos.org/modules/tinycontent/index.php?id=32` ```bash #切换到源目录 cd /etc/yum.repos.d/ #备份一份 cp CentOS-Base.repo CentOS-Base.repo.backup #安装wget工具 yum install -y wget #下载网易源 wget http://mirrors.163.com/.help/CentOS6-Base-163.repo #删除原始文件 rm CentOS-Base.repo #提示删除? #输入 y 回车 #修改源文件名 mv CentOS6-Base-163.repo CentOS-Base.repo #生成缓存 yum makecache ``` 接着开始更新系统内核 ```bash #更新全部 yum update -y #更新完毕之后,重启 reboot ``` 更新完毕后,重启之后,我们再次登录。 ```bash #中文语言支持 yum groupinstall "Chinese Support" ``` 安装开发环境包 ```bash yum groupinstall -y "Development Tools" yum groupinstall -y "Additional Development" yum groupinstall -y "Sever Platform Development" ``` 准备安装虚拟机增强包 ```bash yum install -y kernel-devel yum install -y man #重启并将VboxGuestAdditions.iso手动挂载到虚拟机下 reboot #输入用户和密码后,挂载光驱到/mnt mount /dev/cdrom /mnt #运行安装脚本 sh VboxLinuxaddition.run #OPENGL安装失败,如果你需要的话 #http://wiki.centos.org/HowTos/Virtualization/VirtualBox/CentOSguest ``` 然后在设置中添加一个共享目录,用于两个操作系统中的数据交换 [![2013-04-13_165333](https://attachment.soulteary.com/2013/04/14/2013-04-13_165333.png "2013-04-13_165333")](https://attachment.soulteary.com/2013/04/14/2013-04-13_165333.png) ```bash #挂载共享文件夹 mount -t vboxsf share /mnt #切换目录到共享文件夹 cd /mnt ``` 接下来安装WEB SERVER(APACHE)+PHP+MEMCACHE+PHP的MEMCACHE扩展 ```bash yum groupinstall -y "Web Server" yum groupinstall -y "PHP Support" yum groupinstall -y "MySQL Database server" yum install -y memcached yum install -y php-pecl-memcache #关闭selinux cd /etc/selinux vi config #添加 SELINUX=disabled #关闭防火墙,如果你想添加规则也可以 service iptables stop && chkconfig iptables off service ip6tables stop && chkconfig ip6tables off ``` 忘记了,还要有SFTP来方便我们进行文件的上传。 ```bash yum groupinstall -y "FTP server" ``` 现在更新python为2.7.4 ```bash wget http://www.python.org/ftp/python/2.7.4/Python-2.7.4.tgz tar zvxf Python-2.7.4.tgz cd Python-2.7.4 ./configure make && make install #重启 reboot #查看Python版本 python2.7 -V ``` 安装NODEJS v0.10.4 ```bash wget http://nodejs.org/dist/v0.10.4/node-v0.10.4.tar.gz tar zvxf node-v0.10.4.tar.gz cd node-v0.10.4.tar.gz ./configure make && make install #重启 reboot #查看Python版本 node -V ``` 基本需要玩的环境就简单的搭建好了,然后我们开始使用这个环境。 当然你可以继续安装redis等任何你想要玩的环境。 ### 三.使用搭建好的环境 1.NODEJS ```bash cd /var/www mkdir nodejs && cd nodejs npm install socket.io #创建一个NODEJS经典的HELLO WORLD vi app.js ``` 在app.js中输入 ```js var http = require('http'); var io = require('socket.io'); var server = http.createServer(function(req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello world'); }); server.listen(process.argv[2]); var socket = io.listen(server); socket.on('connection', function(client) { console.log('client has connected'); client.on('message', function() {}); }); ``` 然后使用nodejs启动app.js ```bash node app.js 80 ``` 本机浏览器访问http://192.168.56.103 显示HELLO WORLD,NODEJS DONE. `CTRL+C` 中断进程,我们来测试apache+PHP 2.APACHE+PHP ```bash service httpd start ``` 接着访问`192.168.56.103` apache启动正常。 创建一个PHP脚本并尝试访问 ```bash cd /var/www/html vi test.php ``` 在test.php中输入然后本机浏览器访问: `http://192.168.56.103/test.php` 显示HELLO WORLD ,PHP运行正常。 忘记一点,就是测试的时候,如果有一个好记的域名就更好了。 既然是本地环境,绑定`test.com`好了,当然你绑定 `baidu.com` 也行。 编辑虚拟机的HOST ```bash vi /etc/hosts #添加一条记录 127.0.0.1 test.com #退出编辑之后,虚拟机PING一下test.com ping test.com #如果返回结果是127.0.0.1那么说明修改成功 #如果修改失败,可以尝试http://www.soulteary.com/2012/03/08/macwinlinux%E6%B8%85%E9%99%A4dns%E7%BC%93%E5%AD%98.html ``` 接着我们要修改本机的host 添加一条 `192.168.56.103 test.com` 接着PING一下 `test.com` 查看返回结果是否是`192.168.56.103` 如果不是的话,那么和上面一样,尝试清理缓存。 如果你喜欢使用SFTP来传文件的话,那么先启动SFTP服务 ```bash service vsftpd start ``` 然后用户名为root,密码为你的密码,端口为22,即可连接虚拟机 至此一个简单的简单的虚拟机测试环境就搭建完毕。 可以在机器上测试开发PHP,NODEJS,MYSQL,MEMCACHE, 本机可以通过SFTP或者同享的虚拟文件夹进行数据交互。 稍后继续完成redis,mongo,以及虚拟机上的简单开发记录。 附: 启动MYSQL,MEMCACHE ```bash service mysqld start service memcached start ```