LAMP升级apache2.2 到 apache2.4踩过的坑

背景:要在apache中添加部署Django项目,要安装mod_wsgi这个模块,结果因为apache的apxs的版本有冲突无法安装。眼看自己的apache版本还是2.2,于是寻思着对Apache进行升级,于是踩坑之旅就此开始,熬过了2个凌晨2点钟。

Apache升级:原来考虑的最简单的思路莫过于直接yum update apache,结果有冲突,无法卸载也无法升级。最后直接下载了源码编译安装。

Apache安装完之后,原来Wordpress博客的网页无法正常加载,访问博客网址,刚开始是一访问就会直接触发一个下载动作。后面调试后,变成直接会把html文件夹根目录下的index.php文件的内容打印出来。试过执行了info.php,结果也是直接在网页上直接返回这个文件的内容。

看到测试的info.php都不能正常执行,猜测试是PHP有问题,网上一查,说是apache没有加载PHP模块导致。之前我的PHP版本刚升级过,是使用YUM操作的,服务器里没有编译生成过libphp7.so。各种尝试无果之后,果断决定升级PHP。

也是先考虑用yum update php来操作,结果也是各种冲突,升级也不行,卸载也不行。于是决定下载PHP源码自己编译安装。刚开始执行源码 ./configure的时候,参数使用官网默认提供的,装完之后,才想到没把mysql统计进php,于是又网上查找LAMP搭建时,PHP源码编译的参数,安装过程中各种包找不到,./configure失败重新补充安装缺少的组件。

PHP安装完之后,把:libphp7.so加载到apache的模块中。发现访问博客网站还是出现 Index of 的页面,直接把html根目录的文件全部暴露。这个时候,查找apache logs下的error_log,发现提示.htaccess的问题,再网上搜索,说的是apache2.4 跟apache2.2 的httpd.conf有些配置语法是不一样的。连猜带蒙改了httpd.conf, .htaccess。改完之后,error_log里这个报错是没有了,但是博客还是返回Index of,但这时info.php已经能正常返回了,说明我的PHP已经能正常工作。这中间穿插了:”AddType application/x-httpd-php” 的配置问题,没有这一句,apache无法正常处理php后缀的网页文件。

现在基本可以排除PHP的问题。

接下来继续上网查,发现会返回“Index of”是因为apache找不到网站访问初始打开的页面,默认是index.html,于是默认就会把html根目录下的文件列表返回至网页上。

需要修改httpd.conf:

把这一句:“Options Indexes FollowSymLinks”改成“Options FollowSymLinks”

这样就不会返回文件名列表,而是会直接提示 Forbidden。
再把“DirectoryIndex index.html”改成“DirectoryIndex index.html index.php”就可以让apache自动搜索index.php来加载网站了。

现已能正常打开博客网站。

但是,这个时候又发现了新的问题,网站只是主页能打开,博客文章目录里的链接点开会报链接不存在。好在这个问题以前就处理过,并且有写文章记录下解决方案,找到旧的博文,发现是mod_rewrite.so没有加载导致。编辑下httpd.conf,把mod_rewrite前的注释去掉就行了。

至此,整个博客网站的访问就全恢复正常了。

这下,原来要部署的Django网站的活可以重新排上日程了。。。

这篇博文刚写完要保存,发现还有问题,后台报:mmap() failed: [12] Cannot allocate memory, 先重启httpd服务修复。

Leave a Reply

Your email address will not be published.