编译具有动态模块支持的 Apache Web 服务器

Jul*_*ius 4 apache apache-modules

我刚刚在全新安装的 Ubuntu 10.04.2 上编译了 Apache 2.2.17。这是一个学习练习,旨在发现编译某些内容时实际发生的情况,而不仅仅是使用 apt-get,因此避免使用 apt-get 而有利于自己编译该内容。

我跑:

sudo ./configure --prefix=/etc/apache --enable-module=so --enable-rule=SHARED_CORE --enable-shared=max --enable-ssl=shared --enable-rewrite=shared
Run Code Online (Sandbox Code Playgroud)

接下来是强制性的:

sudo make && sudo make install
Run Code Online (Sandbox Code Playgroud)

一切似乎都很顺利(Apache 启动没有问题),除了在 Apache 模块目录中,我本来希望看到 mod_rewrite.so 和 mod_ssl.so,但我看到:

#cd /etc/apache/modules
#ls -l
mod_rewrite.a
mod_rewrite.la
mod_ssl.a
mod_ssl.la
Run Code Online (Sandbox Code Playgroud)

如何将它们转换为 .so 文件,以便可以将它们与 Apache 配置中的 LoadModule 链接?

提前致谢。

Lek*_*eyn 5

您不应该以 root 身份运行所有内容。./configure并且make无需 root 权限即可正常工作,make install需要 root 权限才能写入/etc和等目录/usr/bin

/etc不适合可执行文件,更不用说完整的 Apache 安装了。如果您想将配置文件放入 中/etc/apache,请使用--sysconfdir=/etc/apache. 安装自定义构建 Apache 的正确位置是/usr/local.

要启用共享模块,您必须传递选项--enable-so,应将应编译为共享的模块添加到--enable-mods-shared.

Apache + mod_ssl(共享模块)+ mod_rewrite(共享模块)的正确配置行是/usr/local/apache与配置文件一起安装在/etc/apache

./configure --prefix=/usr/local/apache --sysconfdir=/etc/apache --enable-so \
  --enable-rewrite --enable-ssl --enable-mods-shared='rewrite ssl'
Run Code Online (Sandbox Code Playgroud)

成功配置 Apache HTTPd 后,make运行sudo make install.

有关配置选项的更多信息可以在Apache HTTPd 文档中找到。