最小模块开发流程是:装apache2-dev等依赖→apxs -g -n hello生成模板→改mod_hello.c的ap_rputs输出→apxs -c -i -a编译加载→配<Location “/hello”>和SetHandler→重启Apache→curl http://localhost/hello验证;可用apache2ctl -M和错误日志排查。

直接从写一个能跑起来的最小模块开始,别先啃源码或研究钩子机制。核心目标是:改一行代码 → 编译 → 加载 → curl 看到输出。只要这步通了,后面才有实感。
先装好开发环境和工具链
确保系统有 Apache 开发头文件和 APR 库:
- Ubuntu/Debian:
sudo apt install apache2-dev libapr1-dev libaprutil1-dev - CentOS/RHEL:
sudo yum install httpd-devel apr-devel apr-util-devel
装完验证apxs -v能正常输出版本,这是后续所有快速编译的基础。
用 apxs 生成并编译第一个模块
执行这条命令:
apxs -g -n hello cd hello
当前目录下会生成 mod_hello.c 和 Makefile。打开 mod_hello.c,找到 hello_handler 函数,把里面 ap_rputs(...) 的字符串改成 "Hello from my Apache module!n"。
然后在 hello/ 目录里运行:
sudo apxs -c -i -a mod_hello.c
这条命令会编译成 .so、复制到 modules 目录、自动在 httpd.conf(或 mods-enabled/)里加 LoadModule hello_module modules/mod_hello.so。
配置并触发模块逻辑
编辑 Apache 配置(如 /etc/apache2/sites-enabled/000-default.conf),在 <VirtualHost> 内加:
<Location "/hello">
SetHandler hello
</Location>
重启 Apache:sudo systemctl restart apache2(或 httpd)。
最后用 curl 测试:
curl http://localhost/hello
看到那句自定义输出,就说明模块已真正加载并响应请求。
确认模块是否生效的两个快捷方式
- 查看已加载模块:
apache2ctl -M | grep hello或httpd -M | grep hello - 查看错误日志定位问题:
tail -f /var/log/apache2/error.log(Ubuntu)或/var/log/httpd/error_log(CentOS)
不复杂但容易忽略。
文章来自机圈观察员网,发布者:,转载请注明出处:https://www.jqgcy.com/shoujipingce/123489.html