在 Ubuntu 16.04 上安装(自建二进制文件)Apache 2.2

在 Ubuntu 16.04 上安装(自建二进制文件)Apache 2.2

我想在 Ubuntu 16.04 上运行 Apache 2.2。现在发行版附带 2.4,但我不想要它(迁移配置文件太麻烦,而且没时间)。

因此我下载了 2.2 版本并通过 Make 构建了它。

好的,安装顺利,但现在我无法启动 Apache。

我试过

service apache2 restart

这给了我:无法重新启动 apache2.service:未找到单元 apache2.service。

所以我尝试了:

apachectl -k start

这给了我:程序“apachectl”当前未安装。您可以通过输入以下命令来安装它:sudo apt install apache2。但我当然不想要这个,因为它可能会安装 2.4,而我不想要那个版本。

当我输入:

which apache2

我得到了 /usr/sbin/apache2,其中包含 7 月 15 日的大约 60MB 的文件(可能是 2.4)。

所以问题是,我如何在这里完成我的配置,以便我可以使用已安装的 Apache 2.2?

感谢您的帮助。

答案1

构建过程

构建过程分为 3 个部分。配置、制作和安装。

在配置期间,您可以设置许多参数来配置 make 和 make install 的行为方式。

很常见的是,选项--prefix默认设置为/usr/local

因此,我猜测您将在 下找到 Apache 2.2 的安装/usr/local,并且apachectl位于 下/usr/local/sbin/apachectl

在里面

软件开发者/发布者有时会在软件中包含init脚本。请查看“源文件”(tar.gz)附带的文档。

一个可能的解决方案是复制initApache 2.4 附带的脚本,编辑它以适合 Apache 2.2。然后systemctl照常使用它来启动和启用它。

另一种解决方案是从较旧的 Ubuntu(附带 Apache 2.2)下载 Apache 2.2 的 deb 文件,然后init从中复制并编辑脚本以适合您的解决方案。

如果您不想使用 Apache 2.4,我也会将其从您的系统中删除。这样您就不必再疑惑哪个文件属于哪个安装。

sudo apt-get remove apache2

答案2

我通过其他方式解决了这个问题。在 16.04 版本上,我从 Apache 网站下载了 2.2.31 版本。

我使用以下配置构建它:

./configure --enable-so --enable-ssl --with-included-apr --enable-mods-shared=all --enable-load-all-modules --enable-rewrite --enable-proxy --enable-proxy_connect --enable-proxy_http --enable-proxy_ajp --enable-authn_alias --with-npm=prefork --enable-proxy_balancer --enable-proxy_ftp --enable-cache --enable-suexec --enable-disk_cache  > conf.txt

然后当然要调整 httpd.conf 和 ssl.conf 文件。

之后我只需运行 ./httpd -k start

并且它有效!

请注意,我通过 apt-get 添加了 apache2,但从未将其删除。这意味着系统启动后,我需要终止 apache2 进程。然后我就可以启动 apache2.2。

相关内容