IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

在Apache2.2.XX下安装Mod-myvhost模块

方糖气球 2010-03-10 16:28:16 累计浏览 12,991 次
本机暂存

    上回提到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段.

MyVhostOn on
MyVhostDefaultHost "appgame.cn"
MyVhostDefaultRoot "/data0/myapphost/"
MyVhostDbHost "127.0.0.1"
MyVhostDbSocket "/tmp/mysql.sock"
MyVhostDbUser "easy"
MyVhostDbPass "***"
MyVhostDbName "hosting"
MyVhostQuery "SELECT rootdir,admin,extra_php_config FROM vhosts WHERE vhost=\'%s\' AND enabled=\'yes\'"
Options Indexes
AllowOverride None
Order allow,deny
Allow from all

    在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的方式方便的添加账号,能根据添加的账号指定目录的磁盘配额.

    这些是下个周末的功课 :] .

同分类推荐文章

  1. Vibe新开源项目 - Vaala AI Gateway (2026-05-17 02:10:19)
  2. SmartPerfetto 架构文章 Q&A:8 个深度技术问答 (2026-04-10 11:00:00)
  3. 让 AI 把我的 PHP 博客重写成 Go (2026-03-27 18:33:54)

查看更多 后端 文章 →

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,173)
  2. MySQL数据库在实际应用一些方面的介绍 (累计阅读 36,333)
  3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,092)
  4. Mysql监控指南 (累计阅读 21,231)
  5. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,207)
  6. 15个最好的免费开源电子商务平台 (累计阅读 12,464)
  7. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,562)
  8. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,476)
  9. server日志的路径分析 (累计阅读 11,191)
  10. AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁) (累计阅读 10,025)