这篇日志也是首先写在Qzone的,我现在把它搬到oschina来。
貌似又有一段时间没有写日志了,明天K歌去,今天刚好有时间,又随便写一点啥吧!
好了,进入正题吧,既然说到LAMP,那么首先肯定还是环境的搭建了,我以我的Fedora15作为例子,来讲述一下:
1.安装MySQL5
yuminstall mysql mysql-server
设置mysql5开机启动
chkconfig--levels 235 mysqld on
启动mysql
/etc/init.d/mysqldstart
进入mysql
mysql-u root
查询用户信息
selectuser,host,password from mysql.user;
设置root密码
setpassword for root@localhost=password('在这里填入root密码');
2.安装Apache2
yuminstall httpd
设置Apache2开机启动
chkconfig--levels 235 httpd on
启动Apache
/etc/init.d/httpdstart
在Fedora中Apache的默认文档路径在/var/www/html,配置文件是/etc/httpd/conf/httpd.conf。其余的配置文件存储在/etc/httpd/conf.d/
3.安装PHP5
yuminstall php
再重启apache
4.测试PHP5
在这个(/var/www/html)中创建一个PHP(info.php)文件,在里面加入以下代码
<?php
phpinfo();
?>
现在我们在浏览器中访问这个文件,在浏览器中输入http://localhost/info.php
出现如下界面,就表示PHP5安装成功了
5.让PHP5支持MySQL
yuminstall php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpcphp-eaccelerator php-magickwand php-magpierss php-mapserver php-mbstringphp-mcrypt php-mhash php-mssql php-shout php-snmp php-soap php-tidy
5.安装phpMyAdmin
yuminstall phpmyadmin
重启Apache
然后通过浏览器访问http://localhost/phpmyadmin
ubuntu环境搭建与此类似,只是把yum命令改为apt-get即可,您也可直接下载源码包安装,安装过程如:configure,make,make install,make clean,其实都不难。
环境安装好了之后,我现在就说一下我的整个LAMP构架吧,我以Toper为例:
我的Toper代码编写在Win7上面,使用PHP的一个集成开发IDE(php storm),
版本控制通过SVN,准确说来TortoiseSVN(一个SVN的图形界面的客户端)。我的Win7下面安装有WAMP的环境,可以做代码的基本测试,我现在安装了两台虚拟机,一个叫Fedora-Master ,另一个叫Fedora-Slave,是用来做Mysql的主从服务器的,现在也充当了LAMP的Server了,我在Fedora-master上面安装了以下软件:
1. SVN的Server端,用来做SVN的仓库;
2. Phpunit,用来做单元测试;
3. Xdebug,PHP的调试利器;
4. Phing,自动化部署工具,需要在项目中添加build.xml,使用方法和ant类似;
5. Xinc,也是做自动化部署的,不过非常智能,当每次我提交代码到SVN之后,它就会自动调用phing,phing会首先通过build.xml的配置项来查找到所有的测试用例,然后自动调用phpunit做单元,如果所有单元通过,那么将代码自动部署到相应的服务器上面,反之,报警;
6. Memcache,PHP的缓存,不需要多说,很多人都在用;
7. Xcache,也是PHP的缓存,直接缓存PHP的opcode。
大家都知道PHP是一个解释型的语言,那么每次调用这个脚本,那么它先编译生成opcode,编译之后再执行opcode,大家可以想象一下,这和编译型的语言,直接执行二进制代码相比,多了编译的工作,肯定速度是比不上的。可是,对于上线的PHP应用,如果每次用户请求都需要去编译一下源代码,那么这个效率实在是不怎么高。
使用xcache之后,PHP就可以在设定的时间内直接执行opcode,省去了编译的过程,那么速度就快多了,其中的原理和java的字节码是很类似的。
当然,缓存opcode的除了xcache,还有著名了zend加速器和apc ,eAccelerator等等,您可以选择其中的任意一项来试试。
8. Mongodb,著名的nosql数据库的代表;
在Fedora-slave中,我就只安装了memcache,xcache。
那么每次当我修改代码使用TortoiseSVN提交到Fedora-master之后,Fedora-master会自动调用phing,phing会自动使用phpunit做单元测试,然后部署到Fedora-slave的机器上面。部署成功之后,我可以直接通过Win7作为普通客户端来访问Fedora-master(测试使用)和Fedora-slave(上线使用的环境)。
好了,大家可能想问,我开启了两台虚拟机,那么我的电脑怎么承受的住啊,实际上很easy,我给每个虚拟机只是分配了256M的内存,我电脑室2G的内存,除去虚拟机,正常使用电脑室没有问题的。可能大家会问,一个虚拟机256M内存,不会卡吗,实际上一点都不卡,因为我都是开启的字符界面(我默认就关闭了图形界面,开机启动直接进入字符,对于字符的linux,128M内存都完全够了,我分配256M已经太多太多!!!!)。
大家可能都知道,linux的字符界面的确是有点不够友好,黑色的背景加上白色的文字,就如下图所示:
我承认我是一个不能忍受这种界面的人,所以我选择了SSH远程登录,在此,我推荐SecureCRT,这个软件相当不错,直接截一个图,看这个图,和上面的图做一下对比,是不是效果马上就出来了。
现在一切都就绪了,那么我们可以通过客户端的浏览器来试试效果,不过这儿有一个问题了,我是直接通过输入IP还是?
不管你们是怎么样,反正我是直接通过输入一个域名来做的,这样有什么好处呢,马上你们就知道了。
现在我在Win7和Fedora-master,Fedora-slave三台机器上面都有Apache作为server,那么我是怎么调试的呢?
当我写代码的时候,我调试是直接在Win7里面的浏览器中进行调试的,打开浏览器,输入:www.test.com就可以开始调试了,调试完成,提交SVN之后,将IP切换,然后Win7浏览器中输入www.test.com进入Fedora-master的server,调试无误之后,切换到Fedora-slave,再在Win7浏览器输入www.test.com进行调试,当然,也可以直接在secureCRT中输入PHP + 文件名直接运行进行调试。
上面一段话是不是有点晕?
看我一步一步怎么做的吧!!!
首先配上虚拟主机,在Win7,Fedora-master,Fedora-slave中都需要配。
1. Win7:
找到Apache安装目录,进入conf/extra目录,打开httpd-vhosts.conf,这里面就是虚拟主机的配置文件,添加
<VirtualHost *:80>
DocumentRoot "项目实际路径"
ServerName www.test.com:80
ErrorLog "错误日志存放路径"
CustomLog "普通日志存放路径"common
</VirtualHost>
2. Fedora
然后类似Win7上面,加入这段话,然后打开/etc/hosts文件,添加localhost www.test.com,然后重启Apache,就OK了!
大家注意一下,我在Win7中配虚拟主机的时候没有在hosts文件中添加内容,这是为什么呢?
我这样做,主要是要给大家推荐一个工具,Fiddler(网络抓包必备,此处用来管理hosts),你想将www.test.com配到那个IP就在这项前面勾选就行。
当然,您如果使用Firefox或者chrome,那么也可以使用hostadmin这个插件,如果使用这个插件,那么需要修改C:\Windows\System32\drivers\etc\hosts,添加#127.0.0.1 www.test.com,#192.168.19.1www.test.com, #192.168.19.2 www.test.com,然后在浏览器中使用hostadmin来选取IP。
好了,写了这么多,今天就到此为止吧,结束之前截一张我研究PHP源码的图,最近在看PHP的源代码,准备从根本上了解PHP的原理,其实感觉PHP的源码写的真的很不错。