DEVM (Developer & Engineers' Virtual Machine) 是专门为网站开发维护人员准备的虚拟服务器镜像,用户可以非常简单的使用vmplayer运行这一镜像来模拟网站服务器环境,便于开发自己的应用。
本文详细介绍了如何使用DEVM作为PHP开发环境。考虑到大多数用户的情况,本文采用 Windows7 作为开发用操作系统。
关于DEVM最新版本的信息可以看这里:http://www.1308362.com/devm/12.11/release-info
1,前言
很多做PHP开发的程序员一定对LAMP不陌生,但是受到一些客观因素的影响,多数人开发 PHP 程序都会先在 Windows 下开发,然后再部署到 Linux 服务器。
在 Windows 下开发 PHP 程序的人肯定很熟悉类似 Wamp / Xampp 这些运行在 Windows 下的AMP(Apache + Mysql + PHP)的软件包。这些软件包简单易用,但是,这些软件包并非是真实的 LAMP 环境,使用这些软件包并不利于开发者全面深入的掌握程序部署和运行的技术环境,所以把Windows下开发的PHP系统部署到Linux下时经常会遇到一些问题,例如典型的路径的问题、换行符问题等。
DEVM是一个高度集成的Linux虚拟机镜像,可以提供非常贴近真正生产环境的的 LAMP 系统。DEVM 的 LAMP 由最新的 gentoo linux、apache、mysql、php(fpm+apc) 组成。由于 DEVM 下所有的软件是完全定制编译,性能十分强大。经过测试,DEVM性能远超在物理机运行的Wamp/Xampp(某些系统可达到30倍以上的性能差距)。而仅仅分配128MB内存,DEVM 就可以很好的提供一个完整的 LAMP 环境了。
2,准备
如果想体验DEVM,我们需要做一些准备工作。
首先,DEVM是基于vmware构建的虚拟机镜像(有kvm版本,但不单独提供),所以我们需要先下载一个vmplayer来运行这个镜像,下载地址:http://www.vmware.com/go/get-player-cn
然后我们下载DEVM,镜像压缩后大小约270MB,下载地址:http://pan.baidu.com/share/link?shareid=111849&uk=3472985267
解压DEVM需要2G左右的硬盘空间,由于DEVM默认设置虚拟硬盘的尺寸为8GB,所以建议用户准备9~10G的硬盘空间来存放DEVM。
开发PHP程序,我们经常会使用一些常用的工具,大家可以根据个人的习惯选择,也可以根据我的建议来安装下面的软件:
如果大家怕麻烦,安装notepad++、filezilla就可以开始利用DEVM开发php程序了。
而dreamweaver和eclipse/aptana选一组即可,dreamweaver一向对基于ftp的远程服务器管理很友好,而aptana也提供了类似的功能。
准备好了这些软件,我们可以开始动手了。
3,我们的目标
作为大家熟悉PHP应用的第一步,很多用户都会选择安装一些现成的开源PHP系统,例如CMS系统,所以在接下来的例子里面,我们会把应用DEVM环境的目标设置为2个:
4,环境设置
我们首先启动DEVM镜像。通过vmplayer设置好DEVM参数之后就可以直接运行了。
DEVM只需要1CPU、64MB内存即可启动,不过推荐分配256MB或更多的内存(默认256MB)。一般LAMP运行之后内存占用大概在120MB左右。
启动DEVM之后需要记住虚拟机的IP地址。登录方式可以直接在虚拟机控制窗口或者用ssh登录。登录DEVM虚拟机的帐号是root,密码1308362。登录之后ifconfig eth0 就可以看到IP地址。我的是:192.168.58.129。
要在Windows下设置好测试用的域名。编辑 C:\Windows\System32\drivers\etc 下的 hosts 文件,增加两行:
- 192.168.58.129 site01 site01.lo
- 192.168.58.129 site02 site02.lo
在DEVM虚拟机里面要编辑/etc/hosts,加入同上的两行。
DEVM的FTP用户设置是支持本地用户登录,所以我们只需要添加虚拟机的本地用户就可以通过FTP来使用这些用户登录。
添加用户的命令:
- devm ~# useradd site01 -m -G ftp,apache -s /bin/nologin
- devm ~# passwd site01
- devm ~# chmod a-w /home/site01
- devm ~# mkdir -p /home/site01/wwwroot/{htdocs,cgi-bin}
- devm ~# chmod -R 777 /home/site01/wwwroot
- devm ~# chown -R site01:site01 /home/site01
chmod a-w 的原因是vsftp不允许用户根目录可写,而我们需要上传的网站文件都在 /home/site01/wwwroot 下。
如果上传有问题,通常是可写权限的问题,在/home/site01下执行 chmod -R 777 wwwroot 即可。当然,至于读写执行权限的管理可以更加严格,本文不赘述。
-G 参数后面没有users组,-s后面也是/bin/nologin,就是说这个用户并非用于系统操作,无法通过ssh登录的。如果希望这个用户可以登录虚拟机,-G ftp,apache,users -s /bin/bash 即可。
至于用户site02,重复以上操作即可。如果大家觉得麻烦,可以写个脚本(假设叫add_ftp_user.sh),内容类似:
- #!/bin/bash
- if [ -z $1 ]; then
- echo "Warn: must specific a user name!"
- else
- useradd $1 -m -G ftp,apache -s /bin/nologin
- passwd $1
- chmod a-w /home/$1
- mkdir -p /home/$1/wwwroot/{htdocs,cgi-bin}
- chmod -R 777 /home/$1/wwwroot
- chown -R /home/$1
- fi
然后 运行 ./add_ftp_user.sh site01; ./add_ftp_user.sh site02 即可。
然后我们在客户端上做设置。
在FileZilla上打开站点管理器,新建一个叫做site01的站点。
通用设置如图:
这个时候我们也可以设置同步机制,就是当ftp连接之后,点击本地目录,远程目录会同步切换,这样省得上传文件的时候要本地远程不断的手动保持目录一致。
假设我们第一个网站的Windows本地目录是 d:\devm\site01,那么我们可以在FileZilla站点的高级设置中如此设置(要选中“使用同步浏览”):
点击连接之后应该如图:
由于我们在本地没有建立htdocs目录,所以点击右边服务器上的htdocs目录会有报错。只要我们在本地site01目录下建立htdocs目录,则可看到同步浏览的作用了。
接下来我们来设置apache vhost,让我们可以通过 http://www.site01.lo 访问这个网址。
由于devm 2012.11发布之后,我对重新做了一些apache的设置,所以大家需要先到 https://github.com/goldeagle/devm/tree/master/share/profile/etc/apache2 获取最新的配置文件,覆盖到 /etc/apache2 即可。
其中在/etc/apache2/vhost.d/目录下已经提供了site01的默认设置。如果新增一个vhost的话,只需要:
- <VirtualHost site01.lo:80>
- ServerName site01.lo
- ServerAlias www.site01.lo site01.lo site01
- ServerAdmin 1308362@gmail.com
- DocumentRoot "/home/site01/wwwroot/htdocs"
- <Directory "/home/site01/wwwroot/htdocs">
- Options All
- AllowOverride None
- DirectoryIndex index.php index.html
- </Directory>
- ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/site01/wwwroot/htdocs/$1
- <IfModule alias_module>
- ScriptAlias /cgi-bin/ "/home/site01/wwwroot/cgi-bin/"
- </IfModule>
- <Directory "/home/site01/wwwroot/cgi-bin">
- AllowOverride None
- Options None
- Require all granted
- </Directory>
- <IfModule mpm_peruser_module>
- ServerEnvironment apache apache
- </IfModule>
- </VirtualHost>
重启一下apache的服务/etc/init.d/apache2 restart,就可以生效。
我们在windows下的d:\devm\site01\htdocs下面新增一个文件:index.php。编辑这个文件,加入:
- <?php
- phpinfo();
- ?>
然后通过FileZilla连接site01,切换到本地站点的htdocs目录下,上传新建的index.php文件,再通过浏览器打开:http://www.site01.lo
大家应该可以看到如下的结果:
至此,环境配置搞定!
敬请期待本文第二部分。