使用centos的最初目的就是搭建lamp平台开始php之旅,所以在解决了前面一些问题之后,我开始研究lamp的建设。

lamp中的l自不用说了,已经装好了。其中的a也是系统自带的,只需要配置好就行。

于是我兴奋地在/var/www/html下放了个网页,在浏览器里打开localhost,结果页面出错了,原来是apache的服务没有打开。centos有个图形界面的服务管理程序,也可以在终端下service httpd start。如此,测试页打开了。

但是有一个问题,/var/www/html这个目录是属于root的,我只能在其他位置写好文件,再以root身份复制过来,才能在浏览器里看到。这样太麻烦了,所以我想把apacheDocumentRoot改到一般用户的目录里。但是改完之后图形界面的服务管理程序里重启apache时,一直显示服务在刷新,不成功也没有错误提示。

这里就不得不说,想在linux下玩得转,就必须得会在终端下用命令发号施令。终端下service httpd start,结果就有出错提示了,大意是DocumentRoot指向的必须是一个目录。我检查了好几遍,确实没输错,而且确实是一个目录,于是我只好开始搜索了。

原来,是selinux在捣鬼。不得不说,linux的安全性正是靠着一个又一个像selinux之类的安全管理策略实现的,但是对于新手来说,过多的安全策略反而会引发让人摸不着头脑的问题。

参考这篇文章,其中大致讲述了se的原理和修改DR出错的解决方法。于是我照着他的说法,修改了目录策略类型,apache服务顺利启动了。但是又一个悲剧的事情发生了,我在目录里随便写个html之后,在浏览器里打开居然出现了403错误。我的目录权限是777,而且se策略也是更改过的!

我晕了,天知道又出什么鬼问题了。文章里的解决办法是干脆禁用掉selinux,但是直接修改se的配置文件/etc/selinux/config并不能马上生效,还需要重启电脑。一方面,我懒得重启,另一方面,为了实现某个功能而禁用另一个原本没有冲突的功能实在不是什么理想的解决方案。

我从另一篇文章中得知,除了在配置文件里更改se设置外,还可以在终端里用getenforce/setenforce [1|0]实时更改。虽然不能实时关闭,但是可以将se改为permissive状态。然而,我改完之后,apache可以正常启动,但403依然存在。

现在看来,解决的方法是把/var/www/html的权限放开。我这么做了,能在里面随心所欲建文件,浏览器里也能打开了。不过这样的方法在安全性上总让我有点不安,好在这电脑只是用来学习,不是当服务器用的,就算有点安全问题也没有大碍。

接下来就是mysql了。系统自带了mysql客户端,我不知道它有什么用,但是我们得安装服务端,图形界面或yum安装轻松搞定。

然后就是参考这篇文章进行mysql的配置。主要有两点:

  1. 调整默认字符集为utf8
  2. 为root账户设定密码及删除空用户。

我还顺便下了个navicat for mysql的linux版,他们太懒了,居然动用了wine。

接下来就是php了,yum install php轻松搞定。据说还得装个php-mysql,为mysql提供php支持,我不知道到底用不用,但是我装了。

至此,lamp环境配置完成。

2012.07.23