转自:http://www.sudu.cn/info/html/edu/20080102/284036.html
如今Linux+Apache+Mysql+PHP的组合已经非常非常流行。可以说Linux最初的流行和Apache服务器的巨大市场占有率息息相关。LAMP又都是开源产品,在使用这一套产品的时候,除了具有不可比拟的价格优势,还可以不用过分担心版权问题。于是几乎所有开源主题的网站都使用LAMP架构,其中不乏一些著名的网站,比如维基百科全书。从这个角度我们看到,LAMP虽然廉价,但是绝对不是便宜无好货!用很少的资金投入,同样可以经受起重量级应用的高负荷考验。作为一个Linuxer,如果想在网站建设上能有所研究,不亲自配置一次LAMP是不可能的。可惜网上教程虽多,但相似度也高,大多你抄我,我抄你,而且LAMP的发展迅速,基本找不到一个完美的最新版的LAMP配置教程。而LAMP配置比较繁琐,如果没有一份很好的教程指导,恐怕新手可有苦头吃咯!正好最近Rainking在自己的工作中需要用LAMP架设一个维基网站,故对LAMP的配置进行了一些研究,不算深入,但是一般网站配置应该是可以参考的。这里总结出来,一方面是为了给有同样需要的读者以参考和帮助,另一方面也加入很多的
介绍说明,给那些从来没有接触过LAMP的的读者介绍一下,增长点知识。Linux
这个我就不用详细介绍了吧?大家如果连Linux是什么都不知道,那可以看一下我们这期的读者投稿“Linux宣传手册”,虽然短小,但是写的很精彩呢!这里我不详细介绍Linux,但是我要从Linux的发展历史的角度给大家讲讲Linux如何在服务器领域打下一片江山的。
Linux的发展,在必然中也可以说有着很大的偶然性。1ArrayArray1年10月5日,LinusTorvalds在新闻组comp.os.minix发布了大约有一万行代码的Linux v0.01版本。那时候的Linux可谓又简又陋。说它是Linus闲暇时做出的小玩意也毫不过分。连Linus本人当时也决不会想到Linux能够迅速的发展壮大到今天的规模。Linus自己认为,操作系统的内核本身并没有多大的用途,即使不断地通过来自Hacker的补丁程序加以完善,也提高不到哪里去。这是因为一个完整的操作系统,需要太多太多的软件及
硬件的支持。光靠一个孤单的内核,即便其再精致,也是孤立无援的。
恰恰正在此时,由Stallman带领的GNU大军已经为他们梦想中的自由的操作系统奋战多年了。当时Stallman真的可谓万事俱备,只欠东风。他们几乎完成了所有Unix软件的重构(这是相当宏大且艰巨的工程,其伟大程度绝不亚于写一个Linux),单单缺一个可以支持这些软件的操作系统内核。在之后记者对Stallman的采访中,Stallman透露,其实当时GNU的内核已经开发了很久很久,但是由于GNU内核的设计非常的复杂,比Linux复杂的多,当然功能也更强大。但这带来的后果是GNU内核调试起来非常麻烦,所以在开发进度上落在了Linux后面。倒是Linux因为其粗燥,简单,虽然设计不是那么前卫,但是得到了整个黑客届的支持,所以发展迅速。很自然的Linux与GNU结合起来,构成了一个完整的操作系统。Linus一直谦逊的称Linux其实没什么大不了,也经常矫正大家不要把Linux当作一个操作系统,而应该称这个操作系统为GNU/Linux。Stallman近些年来有些默默无闻了,自由软件的概念也逐渐被开源软件所取代。其实我个人非常的同情Stallman。要是Linux不出现该多好。最终GNU的操作系统内核一定会实现。那样GNU就会是一个完美的完整的自由操作系统。而开源软件的概念虽然现在非常流行,但究其本质,不过是自由软件的一种表现形式。我个人总是觉得开源软件窃取了自由软件的革命果实。就这两点看,我非常地为Stallman惋惜。不过从科技发展的角度看,Linux和开源软件的出现绝对是一件大好事。Linux这个幸运儿从诞生起,就非常幸运的拥有了GNU温室的培育,这不能不说是一个巧合。
而Linux诞生之时所面临的挑战并不是来自Windows。当时叱诧风云的WindowsArray5估计连策划都还没开始呢。虽然85年,Windows1.0版本就已经诞生,但是当时Windows的影响力和实力真的都不算强。桌面领域,Mac,GEM及Desqview/X都是当时主流的GUI系统,人们对Windows的评价非常低。甚至到了87年微软发布Windows2.0的时候,人们还是不能认可它,都认为Windows其实借鉴了很多苹果的东西。Array0年发布的Windows3.0是微软的重要转折。相信国内的很多早期电脑用户一开始接触电脑的时候,用的都是Windows3.X版本。也正是从Array0年开始,Windows才在桌面领域开始打出一片天下。Array2年发布的Windows3.1在最初发布的两个月内,销量就超过了100万。微软也正是从Array2年起,其资本积累和研究开发才
走上良性循环的。而在服务器领域,Windows更是连小角色都算不上。Array3年Windows NT才发布,而性能上自然无法媲美Unix霸主。说了那么多Windows的发展就是想告诉大家,在Linux诞生的开始,Windows并不是Linux的直接对手,甚至可以说当时Linux的开发者眼里根本就没有Windows。Linux的出现可以说是冲着昂贵的Unix和Sun的操作系统开战的。之前提到了,Linux刚出现的时候,Windows的NT版本还没出现,服务器市场基本被Unix垄断。所以一开始Linux的繁荣冲击最大的是一些Unix及服务器操作系统厂商,比如SUN和IBM。Solaris就因为Linux的流行,一次又一次的降价,直到现在完全开源免费。到今天,在服务器领域,Linux的占有率已经超过了Unix,可惜不幸的是强大的Windows也同样超过了Unix。至于目前Linux和Windows谁在服务器领域占有率更高,我好像没能找到明确的答案。说Linux高的也有,说Windows高的也有。这不是我们今天要关注的。我们需要关注的是,为什么Linux能够在服务器领域反超Unix呢?答案就是Apache。如果大家关注一下Linux的占有率增长曲线将会发现,自从Apache飞速发展成为了服务器界当之无愧的老大之后,Linux的占有率有了稳步的增长。原因很简单,只有两个字??便宜。Windows很少有人会把它用在高端服务器上,因为不够稳定。而Unix的价格又高的惊人。所以Linux就自然而然的成为了Unix
的替代品。可以说,Apache的出现,成为Linux繁荣的另一个巨大契机。
当然Linux繁荣还得益于Unix的发展混乱,BSD的版权官司等等。这些就不在这里赘述了。总之Linux能有今天,出了其发展模式本身有一定的必然性外,运气也是一个重要因素。在这篇文章里,Rainking所用的Linux版本是Ubuntu6.10。好了,废话不多说,下面开始给大家介绍最流行的服务器Apache。
Apache
1ArrayArray5年2月,世界上最流行的互联网HTTP服务器软件是由Illinois大学Urbana-Champaign 的NCSA(National Center for Supercomputing Applications)的Rob McCool开发的。但是Array4年中期Rob离开NCSA以后,开发就一直处于停止状态了。当时很多优秀的网管开发了他们自己的扩展和补丁,这意味着需要有一个共同的发布版本来统一这种状况。于是一个由这些网管组成的小组成立了,他们通过私人电子邮件联络,为的是完善并整理各种补丁。Brian Behlendorf和Cliff Skolnick共同维护了一个邮件列表,一个信息共享空间和一个供核心开发人员登陆的由HotWired资助带宽的位于California湾地区的机器。到2月底,一共有8个人成为了这个小组的38]
核心贡献者。他们成立了现在Apache小组的雏形。他们分别是:
Brian BehlendorfRoy T. Fielding Rob Hartill
David Robinson Cliff Skolnick Randy Terbush
Robert S. ThauAndrew Wilson
以及额外的支持者:
Eric HagbergFrank Peters Nicolas Pioch
建立在NCSA httpd1.3的基础智商,他们增加了所有发布的补丁和能找到的所有改进功能,在自己的服务器上进行了测试,并且在1ArrayArray5年4月发布了第一个官方的Apache Server 0.6.2版本。碰巧的是,NCSA也同时恢复了他们的软件开发,而且他们的开发人员Brandon Long和Beth Frank也在3月份作为荣誉成员加入到Apache的邮件列表中来。于是两个项目得以共享设计理念及一些技术。
虽然一开始的Apache服务器是一个巨大的成功,但是Apache小组达成了一个共识就是所有的代码都需要重新设计。1ArrayArray5年5月到7月,一方面Rob Hartill带领着其他组员着重实现0.7.x版本的新特性以支持飞速发展的Apache用户社区,另一方面Robert Thau设计了一个新的软件架构,包括更加模块化的结构,更容易扩展的API,基于池的内存管理和一个预存的进程模型。于是
在7月份,Apache小组将开发转换到新的架构上,并将为0.7.x开发的新特性也统统加入进去。这就催生了8月份发布的Apache0.8.8。
在广泛的Beta测试,对于各种平台的移植和一套新的文档完成以后,1ArrayArray5年11月,Apache 1.0终于发布了。
在Apache小组成立不到一年的时间里,Apache服务器超过了NCSA httpd服务器成为当时互联网界占有率最高的服务器软件。并且这个排名一直保持到今天。这是相当伟大的一件事。
1ArrayArrayArray年,Apache小组的成员成立了Apache软件基金会来为Apache Http Server提供有组织的,合法的经济支持。基金会为Apache服务器软件今后的发展提供了重要的保障,并且扩展并收购了一批开源软件。
作者宣称因为这个名字好记才在最初选择它,但是流传最广的解释是(也是最显而易见的)这个名字来自这么一个事实:当Apache在1ArrayArray5年初开发的时候,它是由当时最流行的HTTP服务器NCSA HTTPd1.3 的代码修改而成的,因此是“一个修补的(a patchy)”服务器。然而在服务器官方网站的FAQ中是这么解释的“Apache这个
名字是为了纪念名为Apache(印地语)的美洲印第安人土著的一支,众所周知他们拥有高超的作战策略和无穷的耐性”。无论如何,Apache 2.x 分支不包含任何NCSA的代码。
Apache支持许多特性,大部分通过编译的模块实现。这些特性包括从服务器端的编程语言支持到身份认证方案。一些通用的语言接口支持Perl,Python,Tcl和PHP。流行的认证模块包括mod_access,mod_auth和mod_digest。其他的例子有SSL和TLS支持(mod_ssl),proxy模块,很有用的URL重写(由mod_rewrite实现),定制日志文件(mod_log_config),以及过滤支持(mod_include和mod_ext_filter)。Apache日志可以通过网页浏览器使用免费的脚本AWStats或Visitors来进行分析。
图1为Apache2 市场占有量的曲线图:可以看到Apache的霸主地位从来就不曾动摇过。
关于Apache的历史和特性,我们就了解到这里。下面我们来看看究竟如何安装Apache服务器。
截至Rainking写本文为止,Apache HttpdServer的最高版本为2.2.4,下载地址为:
http://httpd.apache.org/download.cgi
,我选择下载的是httpd-2.2.4.tar.bz2。对于Apache,我建议大家还是就用最高版本吧。稳定性兼容性基本没有问题。因为是服务器软件,一般高版本号的更加不容易被攻击。所以大家如果没有什么苛刻的兼容性要求,还是选择2.2.4版本的比较好。Rainking的Ubuntu6.10是刚装的系统。大家修改下源,具体怎么改请参阅以前杂志的“Mplayer菜鸟手册”,这里不详细讲了。然后在终端输入:
sudo apt-get install build-essential
安装编译所需要的软件。然后解压缩软件包并进入解压后的目录:
tar xvf httpd-2.2.4.tar.bz2
cd httpd-2.2.4
以上都不难,关键是下面一步编译选项。这是非常复杂的。大家先输入以下命令,让机器配置去吧,这需要好久,然后乘着等待的时间,看我下面的解释:
./configure --prefix=/usr/local/apache/ --enable-rewrite --enable-so
以上的编译参数是我根据自己的实际需要设定的。如果有些读者需要更多的参数的话请参见
http://httpd.apache.org/docs/2.2/programs/configure.html#installationdirectories
的详细说明。图1
十一年间,Apache服务器的市场占有率曲线图可以看到Apache一直是当之无愧的冠军--prefix=PREFIX 软件的安装目录,默认的安装目录是/usr/local/apache2,这里我们把它重新设置成/usr/local/apache/,这样以后使用中可以兼容一些老版本Apache安装目录的问题。--enable-rewrite rewrite模块是用意实现地址重写的模块,由于rewrite模块需要DBM支持,如果在初次安装时没有编译进apache,以后需要用到时需要重新编译整个apache才可以实现。为此除非你可以确定以后不会用到rewrite模块,否则还是建议你在第一次编译的时候把rewrite模块编译好。--enable-so 通过mod_so模块提供Apache DSO功能。那么什么是DSO呢?DSO是Dynamic Shared Objects(动态共享目标)的缩写,它是现代Unix派生出来的操作系统都存在着的一种动态连接机制,可以对比参考Windows中的DLL功能。它提供了一种在运行时将特殊格式的代码,在程序运行需要时,将需要的部分从外存调入内存执行的方法。Apache在1.3以后的版本后开始支持它。因为Apache早就使用一个模块概念来扩展它的功能并且在内部使用一个基于调度的列表来链接扩展模块到Apache核心模块.所以,Apache早就注定要使用DSO来在运行时加载它的模块。基于DSO的功能有如下优点:1 由于服务器包的装配工作可以在运行时刻使用httpd.conf的配置命令LoadModule来进行,而不是在编译中使用configure来进行,因此显得更灵活。比如:只需要安装一个Apache,就可以运行多个不同的服务器实例(如标准&SSL版本,浓缩的&功能加强版本[mod_perl, PHP3],等等)。2 服务器包可以在安装后使用第三方模块被轻易地扩展。这至少对厂商发行包的维护者有巨大的好处,他可以建立一个Apache核心包,而为诸如PHP3, mod_perl, mod_fastcgi等扩展另建附加的包。3 更简单的Apache模块原型。使用DSO配合apxs,可以脱离Apache源代码树,仅需要一个apxs-i和一个apachectlrestart命令,把开发的模块新版本纳入运行中的Apache服务器。但DSO也有如下缺点:1 由于并不是所有的操作系统都支持动态加载代码到一个程序的地址空间,因此DSO机制并不能用于所有的平台。2 由于Unix加载器有必须进行的符号解析的开销,服务器的启动会慢20%左右。3 在某些平台上,独立位置代码(positonindependent code[PIC])有时需要复杂的汇编语言技巧来实现相对寻址,而绝对寻址则不需要,因此服务器在运行时会慢5%左右。4 由于DSO模块不能在所有平台上为其他基于DSO的库所连接(ld -lfoo),比如,基于a.out的平台通常不提供此功能,而基于ELF的平台则提供,因此DSO机制并不能被用于所有类型的模块。或者可以这样说,编译为DSO文件的模块只能使用由Apache核心、C库(libc)和Apache核心所用的所有其他动态或静态的库、含有独立位置代码的静态库(libfoo.a)所提供的符号。而要使用其他代码,就只能确保Apache核心本身包含对此代码的引用,或者自己用dlopen()来加载此代码配置完以后我们就可以编译安装了!在终端输入:
make
sudo make install
编译时间不是很长。稍等片刻就好了。安装完毕以后我们来测试一下服务器是否安装成功了。在终端输入:
sudo /usr/local/apache/bin/apachectl start
如果顺利的话,会有响应如下:
不要担心,因为我们还没有设置服务器域名或IP才会发生这种情况的。出现这个响应意味着如果你人品没什么大问题,服务器就已经安装成功了。我们打开浏览器,在地址栏里面输入127.0.0.1,应该会出现一下画面:
这时候大家可以在/usr/local/apache/htdocs目录下放上你的网页文件,这样你就可以在浏览器里浏览自己的网站了。如果我不想把网站发在/usr/local/apache/htdocs目录下怎么办呢?一般情况下做服务器的Linux是不会把网页文件放在和/usr一个分区的目录下的,这时候我们就需要修改Apache的配置文件了。在终端输入:
sudo gedit /usr/local/apache/conf/httpd.conf
在ServerAdmin那行填上你的Email地址,在ServerName那一行填上你的域名或者机器的IP,当然也可以不填,这样就会每次启动出现上述的废话,在DocumentRoot那行填上你所希望的网站文件的目录。这里我喜欢把网站放在/var下的一个叫做website的目录里,所以我填上”/var/website”。特别注意,webstie后面不要加“/”。然后在终端输入:
sudo mkdir /var/website
创建网站目录。并且在这个目录里面放上一个名为index.html的测试文件,内容随便你怎么写啦,我写的是“HAHAHA!LALALA!”,仅此而已。这时候需要重启一下Apache服务器。在终端输入:
sudo /usr/local/apache/bin/apachectl stop
sudo /usr/local/apache/bin/apachectl start
重新刷新浏览器,这时候你会看见下面的画面(有可能画面没变,那是因为缓存的原因,请清空浏览器缓存后再刷新):
这是为什么呢?哈哈,Rainking一开始碰到这个问题也郁闷的半天,研究以后发现其实很简单,只要在httpd.conf配置文件里面紧跟着DomentRoot“/var/website”下面加入如下内容:
Option FollowSymLinks
AllowOverrideNone
Order allow,deny
Allow from all
然后刷新浏览器,结果却出现如下内容:
根据错误提示判断应该是index.html的权限设置的问题,在终端输入:
sudo chmod 755 /var/website/index.html
然后再刷新浏览器,哈哈,终于成功显示了!于是,Apache的介绍与安装到此结束,让我们进入Mysql的舞台!
MySQL
MySQL的安装恐怕是LAMP中最复杂的了。主要是Mysql的文档和网站组织都比较的混乱,Rainking第一次上Mysql网站下载Mysql的时候,简直有种想死的冲动。Mysql是Rainking到目前为止见过的下载版本最多的软件!不仅各个时期的高低版本号的版本共存,而且各个平台的版本共存,而且各个平台划分出的各种版本也共存。而且,还没有一个很完整的指导说明……说也没用,大家自己去
http://www.mysql.org/downloads/mysql/5.0.html
看好了,保证你也头昏…
另外,Mysql的Bug非常多,各种版本有各种各样千奇百怪的Bug。目前5.1是Beta版,5.2是Alpha版。Alpha版是什么概念?Alpha意味着如果你精力旺盛想没事找事干,就去下载了用。Beta版理应可以用,但是,Rainking可以负责任的告诉你,mysql5.1.16的二进制版本在安装的时候至少会出现3处明显的Bug,比如目录设错,文件位置不对等。并且我没能成功的让它运行起来。也许是我能力有限,但是我还是奉劝自认为能力比我还有限的读者就不要浪费时间在这种无意义的尝试上了。
这里,Rainking使用的是文件名为mysql-max-5.0.27-linux-i686-glibc23.tar.gz的二进制安装版本。之所以选用二进制安装版,是因为Mysql文档里说不推荐用户自己编译。而且我对Mysql的健壮性实在没有信心,鬼知道它编译的时候会出现什么奇怪的问题啊。所以,我还是用二进制安装版了。其实用户并不能从编译中得到任何多余的好处,所以何必自找苦吃呢?
下面我们还是照例先来了解一下Mysql的简介和发迹史吧,嘿嘿。
MySQL是目前最流行的开放源码SQL数据库管理系统,它是由MySQLAB公司开发、发布并支持的。MySQLAB是由多名MySQL开发人员创办的一家商业公司。它是一家第二代开放源码公司,结合了开放源码价值取向、方法和成功的商业模型。在最一开始,这些开发人员最初的出发点是使用mSQL来连接表,这类表采用了快速低层面(ISAM)子程序。然而,经过一些测试后,他们得出结论,mSQL的速度或灵活性不足以满足他们的要求。其结果是,他们又开发了一套系统MySQL为数据库提供了新的SQL接口,但API接口与mSQL的几乎一样。设计该API的目的在于,允许将为mSQL编写的第三方代码方便地移植到MySQL。MySQL名称的起源不明。10多年来,MySQL开发人员的基本目录以及大量库和工具均采用了前缀“my”。不过,共同创办人Monty Widenius的女儿名字也叫“My”。时至今日,MySQL名称的起源仍是一个迷,即使对MySQL开发人员也一样。MySQLDolphin的名称为“Sakila”,它是由MySQLAB公司的创办人从用户在“Dolphin命名”比赛中提供的众多建议中选定的。该名称是由来自非洲斯威士兰的开放源码软件开发者Ambrose Twebaze提出的。根据Ambrose的说法,按斯威士兰的本地语言,女性化名称Sakila源自SiSwati。Sakila也是坦桑尼亚、Arusha地区的一个镇的镇名,靠近Ambrose的母国乌干达。
其实在Mysql的历史和Linux的历史是紧密而不可分的。1ArrayArray8年是Linux迅猛发展的一年。1月,小红帽高级研发实验室成立,同年RedHat5.0获得InfoWorld的操作系统奖项。4月Mozilla代码发布,成为linux图形界面上的王牌浏览器。Redhat宣布商业支持计划,网罗了多名优秀技术人员开始商业运作。王牌搜索引擎“Google”现身,采用的也是Linux服务器。最重要的是Oracle和Informix两家数据库厂商明确表示不支持Linux,这个决定给予了MySQL数据库充分的发展机会。同年10月,微软在法国发布了反Linux公开信,这表明微软公司开始将Linux视作了一个对手来对待。十二月,IBM发布了适用于Linux的文件系统AFS 3.5以及JikesJava 编辑器和Secure Mailer及DB2测试版,IBM的此番行为,可以看作是与Linux羞答答地第一次亲密接触。迫于Windows和Linux的压力,Sun逐渐开放了Java协议,并且在UltraSparc上支持Linux操作系统。1ArrayArray8年可说是Mysql获得发展的最好时机。2001年新年伊始就爆出新闻,Oracle宣布在OTN上的所有会员都可免费索取Oracle Arrayi的Linux版本,从几年前的“绝不涉足Linux系统”到主动献媚,足以体现Linux的发展迅猛。但是这时候,MySQL已经在Linux上普及,其它数据库厂商再想抢占这块市场已经变的难上加难。
其实Rainking在一开始知道MySQL的时候,总是有种带偏见的不屑。要知道在学校学习数据库的时候听到的都是Oracle,DB2这些大名鼎鼎的玩意儿。连MS SQL Server都被老师贬为“算不上一个真正意义上的数据库”。要知道Oracle啊DB2啊都是几十万甚至几百万的,面对一个不需要一分钱的免费MySQL,我实在不能相信它有多牛逼。直到看到一个中国很著名的某电子商务网站的技术人员的采访说道:“其实MySQL的性能已经优化到可以和Oracle,DB2相媲美了。我们在针对普通用户的时候数据库也是用的MySQL。但是对于VIP用户我们还是选择了Oracle。原因很简单,万一数据库发生了崩溃,出了问题,用Oracle我们可以一个电话打过去让他们解决,但是用MySQL的话,我找谁去啊?”这时候我才知道原来开源软件的也可以做到很出色,并开始对MySQL刮目相看。
下面我们来看看怎么安装MySQL吧,比较复杂,大家做好心理准备!
首先当然还是要解压缩咯,解完压缩后顺便把文件夹移动到/usr/local/下去,并且建立一个名为Mysql的链接,方便以后输入,因为Mysql的文件名实在是太长了。在终端输入:
tar xvf mysql-max-5.0.27-linux-i686-glibc23.tar.gz
sudo mv mysql-max-5.0.27-linux-i686-glibc23 /usr/local/
sudo ln?s /usr/local/ mysql-max-5.0.27-linux-i686-glibc23 /usr/local/ mysql
这样,基本上我们就完成了等价于自己编译软件时从解压缩到make install完成时的过程。怎么样?二进制安装方便吧?所以很多时候不要总是想着编译编译编译…
现在我们来为mysqld增加一个登录用户和组:
sudo groupadd mysql
sudo useradd -g mysqlmysql
然后我们来进入mysql所在的目录执行mysql_install_db脚本,用来初始化mysql数据库的授权表,其中贮存了服务器访问允许。
cd /usr/local/mysql
TMPDIR=/tmp/
MYSQL_UNIX_PORT=/tmp/mysql.sock
export TMPDIR MYSQL_UNIX_PORT
scripts/mysql_install_db --user=mysql
如果顺利,会得到图二的结果。
最后我们将程序二进制的所有权改为root,数据目录的所有权改为运mysqld的用户。在终端输入:
chown-R root .(注意最后有个点)
chown-R mysqldata
chgrp-R mysql.(注意最后有个点)
第一个命令将/usr/local/mysql下文件的所有属性改为root用户。第二个命令将数据目录的所有属性改为mysql用户。第三个命令将组属性改为mysql组。现在安装基本就完毕了。我们来测试一下,在终端输入: sudo bin/mysqld_safe--user=mysql &
应该会进入光标不停闪动的状态,这就代表mysql顺利启动了。
这时候我们再打开一个终端,
在里面输入: bin/mysqladmin version
会得到以下画面:
再在终端里输入:
bin/mysqladmin variables
可以得到一个巨大的表格,内容太多,这里就不截图了。最后我们要进行一些配置初始MySQL账户安全。MySQL安装完以后会以用户root创建两个账户。这些账户为超用户账户,可以执行任何操作。初始root账户的密码为空,因此任何人可以用root账户不用任何密码来连接MySQL服务器,并具有所有权限。在Linux中这两个root账户均用于从本机连接,一个账户主机名应指定为localhost,另一个账户为实际的主机名或IP号。此外Mysql还创建了两个匿名用户账户,每个账户的用户名均为空。匿名账户没有密码,因此任何人可以使用匿名账户来连接MySQL服务器。这样无疑太危险了,所以我们要给这4个帐号设上密码:
/usr/local/mysql/bin/mysql-u root
mysql> SET PASSWORD FOR
[email=’’@’localhost’] ’’@’localhost’ [/email]
= PASSWORD(’newpwd’);
mysql> SET PASSWORD FOR
[email=’’@’host_name’] ’’@’host_name’ [/email]
= PASSWORD(’newpwd’);
mysql> SET PASSWORD FOR
[email=’root’@’localhost’] ’root’@’localhost’ [/email]
= PASSWORD(’newpwd’);
mysql> SET PASSWORD FOR
[email=’root’@’host_name’] ’root’@’host_name’ [/email]
= PASSWORD(’newpwd’);
用服务器主机名替换SET PASSWORD语句中的host_name。如果你不知道是哪个主机名,在SET PASSWORD之前执行下面的语句:
mysql> SELECT Host, User FROM mysql.user;
就这样,最难安装的Mysql也被我们轻松搞定了。欧耶!我们来加油进入PHP的领域吧!
PHP
PHP继承自一个老的工程,名叫PHP/FI。PHP/FI在1ArrayArray5年由RasmusLerdorf创建,最初只是一套简单的Perl 脚本,用来跟踪访问他主页的人们的信息。它给这一套脚本取名为“Personal Home Page Tools”。随着更多功能需求的增加,Rasmus写了一个更大的C语言的实现,它可以访问数据库,可以让用户开发简单的动态Web程序。Rasmus发布了PHP/FI的源代码,以便每个人都可以使用它,同时大家也可以修正它的Bug并且改进它的源代码。
PHP/FI,一个专为个人主页/表单提供解释程序的程序,已经包含了今天PHP的一些基本功能。它有着Perl样式的变量,自动解释表单变量,并可以嵌入HTML。语法本身与Perl很相似,但是它很有限,很简单,还稍微有些不协调。
到1ArrayArray7年,PHP/FI 2.0,也就是它的C语言实现的第二版在全世界已经有几千个用户(估计)和大约50,000 个域名安装,大约是Internet所有域名的1%。但是那时只有几个人在为该工程撰写少量当代码,它仍然只是一个人的工程。
PHP/FI 2.0在经历了数个beta版本的发布后于1ArrayArray7年11月发布了官方正式版本。不久,PHP 3.0的第一个alpha版本发布,PHP从此走向了成功。
PHP 3.0是类似于当今PHP语法结构的第一个版本。AndiGutmans和ZeevSuraski在为一所大学的项目中开发电子商务程序时发现PHP/FI 2.0功能明显不足,于是他们重写了代码。这就是PHP 3.0。经过Andi,Rasmus和Zeev一系列的努力,考虑到PHP/FI已存在的用户群,他们决定联合发布PHP 3.0作为PHP/FI 2.0的官方后继版本。而PHP/FI 2.0的进一步开发几乎终止了。
PHP 3.0的一个最强大的功能是它的可扩展性。除了给最终用户提供数据库、协议和API 的基础结构,它的可扩展性还吸引了大量的开发人员加入并提交新的模块。后来证实,这是PHP 3.0 取得巨大成功的关键。PHP 3.0中的其它关键功能包括面向对象的支持和更强大和协调的语法结构。
这个全新的语言伴随着一个新的名称发布。它从PHP/FI 2.0的名称中移去了暗含“本语言只限于个人使用”的部分。它被命名为简单的缩写“PHP”。这是一种递归的缩写,它的全称是――PHP: Hypertext Preprocessor。
1ArrayArray8年末,PHP 的安装人数几近10,000,有大约100,000个网站报告他们使用了PHP。在PHP 3.0的顶峰,Internet上10%的web服务器上都安装了它。
约九个月的公开测试后,官方于1ArrayArray8年6月正式发布PHP 3.0。
1ArrayArray8年的冬天,PHP 3.0官方发布不久,AndiGutmans和ZeevSuraski开始重新编写PHP代码。设计目标是增强复杂程序运行时的性能和PHP自身代码的模块性。PHP 3.0的新功能和广泛的第三方数据库、API的支持使得这样程序的编写成为可能,但是PHP 3.0没有高效处理如此复杂程序的能力。
新的被称为“ZendEngine”(这是Zeev和Andi的缩写)的引擎,成功的实现了设计目标,并在1ArrayArrayArray 年中期首次引入PHP。基于该引擎并结合了更多新功能的PHP 4.0,在PHP 3.0发布两年后,于2000年5月发布了官方正式版本。除了更高的性能以外,PHP 4.0还包含了其它一些关键功能,比如:支持更多的web 服务器;HTTP Sessions 支持;输出缓冲;更安全的处理用户输入的方法;一些新的语言结构。
今天,已经有10,000 名开发人员(估计)和几百万网站报告已安装了PHP,占整个Internet 域名的20%。
PHP的开发小组有很多优秀的开发人员,同时还有大量的优秀人才在进行PHP相关工程的开发工作,如PEAR和PHP文档的工程。
PHP 5在长时间的开发及多个预发布版本后,于2004年7月发布正式版本。它的核心是Zend引擎2代,引入了新的对象模型和大量新功能。
上完历史课,我们照例要来安装PHP。目前最新的PHP版本是5.2.1,可以在
http://www.php.net/downloads.php
页面下载。下载以后照例先要解压缩:
tar xvfphp-5.2.1.tar.gz
然后进入目录,开始编译:
cdphp-5.2.1
./configure --prefix=/usr/local/php?with-xml --with-apxs2=/usr/local/apache/bin/apxs--with-mysql=/usr/local/mysql
这时候会出错,出错信息是:
configure: error: cannot find output from lex; giving up
我们打开Ubuntu的新立得软件包管理器,在搜索里面输入flex,然后标记并安装它,然后再输入libxml-dev并顺带安装它,以后会用到。然后我们再重新配置一下,应该就没有问题啦!配置完以后再在终端输入:
make
sudo make install
就可以完成安装了。
这时候我们要再次修改一下httpd.conf文件,让Apache支持PHP。在终端输入:
sudo gedit /usr/local/apache/conf/httpd.conf
然后在里面添加:
AddTypeapplication/x-httpd-php.php
AddTypeapplication/x-httpd-php-source.phps
并且修改位于安装文件夹php-5.2.1内的文件php.ini-dist,去掉extension=php_mysql.dll之前的分号,然后把它拷贝到/usr/local/php/lib/下,并命名为php.ini:
sudo cp php.ini-dist /usr/local/php/lib/php.ini
然后我们重启Apache服务器:
sudo /usr/local/apache/bin/apachectl restart
好,最后我们来写一个测试页面测试一下PHP有没有正常工作。创建一个文件叫做test.php,将其放入/var/website目录内,一定要注意权限,不要忘记设为755,其文件内容如下:
phpphpinfo();
?>
如果看到图三画面,
那么恭喜你,LAMP全部安装成功了!
MediaWiki
MediaWiki是全球最著名的wiki程序,运行于PHP+MySQL环境。MediaWiki从2002年2月25日被作为维基百科全书的系统软件,并有大量其他应用实例。目前MediaWiki的开发得到维基媒体基金会的支持。
维基百科(Wikipedia,简称WP)是一个国际性的内容开放的百科全书协作计划,是维基媒体基金会下的维基计划,由维基媒体基金会组织运作。2005年之后,维基百科成为世界上最大的wiki工程。维基百科最初于2001年1月15日开设英文版,近年来发展迅速。其他版本此后陆续启动,2005年已有超过100多种语言的版本。中文维基百科开始于2002年10月底。截至2005年6月,其各语言版本总计超过1,000,000个有效内容页面,占据了当前互联网上文章数量前50位站点的绝大多数位置。英文维基百科有超过8Array万个条目(2006.1.3数据),排在所有维基站点的第一位。德语,日语,法语维基百科依次排在第二、三、四位。中文维基百科按条目数量排在第11位。
维基百科是一个自由、免费、内容开放的百科全书协作计划,参与者来自世界各地。这个站点使用Wiki,文内容遵循GNU自由文档协议。这意味着任何人都可以编辑维基百科中的任何文章及条目。MediaWiki是建立wik网站的首选后台程序,它一直保值着持续的高频率更新。其原作者为德国的Magnus Manske。MediaWiki的优点如下:
1 经受过重量级应用的考验,功能丰富却架设简单。全世界最大的wiki项目维基百科全书是使用mediawiki的成功范例,数据量、访问量都超级庞大。
2 功能非常丰富,支持多语言版本,充分满足知识站点的需要。
3 对运行环境要求很低,架设过程简洁,即使新手也可以迅速建立自己的站点。
4 MediaWiki是目前应用最广的wiki程序,数以万计的网站在使用它,很容易找到范例站点,有大量的热心参与人员参与研究,资料多。
5 mediawiki是受到维基媒体基金会支持的开源项目,持续开发,程序特性功能不断完善,保证未来的支持
当然Mediawiki也有很多弱点:
1 后台管理功能不是很完善,仅通过简单的特殊页面完成这些功能。
2 一般环境下,mediawiki的运行速度相对其他wiki程序有一定差距。mediawiki的目标是为维基媒体项目服务,很多华丽的性能特征要在高端设备环境(多服务器,多数据库,反向缓冲squid服务器阵列,大量额外的PHP缓冲引擎)中才能体现。
3 在界面方面关注不够,导致外观美化的修改繁琐,甚至需要一定的技术背景
目前MediaWiki的官方网站已经被中国政府屏蔽,大家下载MediaWiki可以去
http://sourceforge.net/projects/wikipedia/
下载最新版本mediawiki-1.Array.3.tar.gz。
MediaWiki的安装比较简单,但是首先要在Mysql里面创建一个数据库和用户名:
CREATE DATABASE wikidb;
SHOW DATABASES;(查看新建的数据库有没有成功创建)
GRANT ALL PRIVILEGES ON *.* TO
[email=’wikiuser’@’localhost’]’wikiuser’@’localhost’[/email]
IDENTIFIED BY ’password’ WITH GRANT OPTION;(注意替换password为你所设置的密码)
解压缩文件:
tar xvfmediawiki-1.Array.3.tar.gz
sudorm-rf/var/website
sudomvmediawiki-1.Array.3 /var/website
sudochmod777 /var/website/config
然后打开浏览器,输入:127.0.0.1/index.php点击进入安装页面,填上该填的,这就不用我教了吧?那么简单…关键是数据库用户名密码要按照上面设立的填。填完以后点击安装按钮,顺利地话就会出现以下画面:
最后在终端里把配置文件转移到上层目录里去:
sudo mv /var/website/config/LocalSettings.php /var/website/
现在我们再次访问127.0.0.1/index.php终于可以见到Wiki的页面了,哈哈,全部搞定!
后记
在配置过程中,如果读者和我的操作系统初始状态及软件版本完全一致,那么应该不会碰到什么大问题。但是如果读者的操作系统或软件版本跟我不完全一致,那么极有可能会碰到各种各样诡异的问题。如果遇到这种情况,请不要着急,首先把出错提示:
拷贝下来,去Google或者Baidu搜答案。如果搜不到,请去我们Linuxer论坛的十万个为什么版发问,我会尽量解答。我写这篇文章之前在单位的机器上成功配置了一遍,写文章的时候在虚拟机上成功配置了一遍。但是因为内容实在太多,可能会有一些疏漏,请大家包含。文中有些内容直接摘自网络,来源比较多,这里就不一一列出出处了。另外抱怨一句,虽然Apache,Mysql等最多的应用都是在Linux上,但是普遍的,Windows版的安装配置都要比Linux版简单的多,也不容易出错。事实上现在WAMP也逐渐赶超LAMP成为流行。这不得不让我们产生思考,在很多Linux的支持者痛骂Windows的时候,是否应该反思一下如何向Windows学习呢?
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/36243/showart_478826.html