在Apache2.2.XX下安装Mod-myvhost模块
上回提到Mod-myvhost只有for apache1.3的版本,后来google了下,发现一个葡萄牙的同学讲到了如何在2.x上安装(围观请翻墙,并自备翻译工具),才发现mod-myvhost的svn分支里边有2.0版本的代码(部分运气不好的围观群众请继续翻墙).于是费了一番功夫,我终于把这个模块装上了.下边是安装过程.
首先,因为代码里边用到了mysql的一些头文件,所以要安装mysql的开发包.
sudo apt-get install libmysql++-dev
然后,这个apache module采用apxs编译,所以apxs也要有.如果你已经编译过apache了,那么apxs就在bin下边,和apachectl在同一级目录下.
准备工作就是这些.开始安装mod-myvhost.
svn checkout代码.
svn co http://mod-myvhost.googlecode.com/svn/branches/2.0.xx/
为什么要用2.0.xx而不用2.2.xx-dbd? 因为2.2.xx-dbd编译通不过…有兴趣的同学可以自行debug去.
然后进入目录,开始编译
cd 2.0.xx/
make
呜,报错了
/bin/sh: apxs: command not found
make: *** [mod_myvhost.so] Error 127
原来是apxs没有找到.修改Makefile,指定apxs路径,vim Makefile,第四行改为
APXS = /home/easy/dev/apache2/bin/apxs(这里换成你apache2/bin目录的路径/apxs)
然后 make,make install . 一切ok. 查看apache2/conf/httpd.conf,已经自动加上了相关的配置.
LoadModule myvhost_module modules/mod_myvhost.so
试着启动下.又挂了… 提示信息如下:
undefined symbol: apr_hash_clear
grep 源代码发现只有mod_myvhost_cache.c的最后一段用到.
/* FIXME: older */
void cache_vhost_flush(myvhost_cfg_t *cfg, apr_hash_t *cache, time_t older)
{
if (!cfg->cache_enabled) {
return;
}
if (!cache) {
return;
}
apr_hash_clear(cache);
}
#endif /* WITH_CACHE */
修改Makefile,先关掉cache部分
#CFLAGS+= -DWITH_PHP -DWITH_CACHE
CFLAGS+= -DWITH_PHP
重新编译安装后启动apache.Ok了.接着测试动态host功能.
修改apache配置文件 httpd.conf,添加myvhost段.
在phpmyadmin里边导入2.0.xx/vhost.sql,会自动建立hosting库.删掉里边的示例数据,填入我们需要的数据:
在对应的目录下建立测试文件index.php.重启apache已经可以正常工作了.
mod-myvhost会自动添加open_basedir限制,写段代码测试下:
echo file_get_contents( \'../02/o.php\' );
访问页面,输入如下:
Warning: file_get_contents() [function.file-get-contents]: open_basedir restriction in effect. File(../02/o.php) is not within the allowed path(s): (/data0/myapphost/01/) in /data0/myapphost/01/index.php on line 1
Warning: file_get_contents(../02/o.php) [function.file-get-contents]: failed to open stream: Operation not permitted in /data0/myapphost/01/index.php on line 1
看起来基本的vhost功能已经完成了.
接下来要解决的几个问题是
cache是一个重要的功能,想办法把cache的问题查出来.apr的源代码里是有这个函数的,可能是因为apr的路径或者版本不对.代码访问的隔离完成了.但是代码上传的问题还没有解决,接着开始ftp server的选型.要求能通过文件或者mysql的方式方便的添加账号,能根据添加的账号指定目录的磁盘配额.这些是下个周末的功课 :] .
建议继续学习:
- Nginx模块开发入门 (阅读:9872)
- nginx模块开发 (阅读:4616)
- CommonJS 的模块系统,AMD 和 Wrappings, 以及 RequireJS (阅读:4178)
- 搭好了apache模块的开发环境 (阅读:3459)
- PHP 模块编写需要注意的一个问题---- php模块及函数名都定义成小写吧 (阅读:3366)
- 使用 Perl 来开发 Nginx 的模块 (阅读:3301)
- FarmVille(美版开心农场)谈架构:所有模块都是一个可降级的服务 (阅读:3278)
- php无法加载pcre.so的解决办法 (阅读:3018)
- mysql 的模块不能安装的解决方法 (阅读:2593)
- Perl的English模块 (阅读:2496)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Easy 来源: 方糖气球
- 标签: Mod-myvhost 模块
- 发布时间:2010-03-10 16:28:16
- [52] IOS安全–浅谈关于IOS加固的几种方法
- [52] 图书馆的世界纪录
- [51] 如何拿下简短的域名
- [50] android 开发入门
- [49] Go Reflect 性能
- [49] Oracle MTS模式下 进程地址与会话信
- [47] 【社会化设计】自我(self)部分――欢迎区
- [45] 读书笔记-壹百度:百度十年千倍的29条法则
- [37] 程序员技术练级攻略
- [29] 视觉调整-设计师 vs. 逻辑