我想在 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)附带的文档。
一个可能的解决方案是复制init
Apache 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。