如何使用原始布局、配置和配置选项在 ubuntu 上编译最新的 apache2

如何使用原始布局、配置和配置选项在 ubuntu 上编译最新的 apache2

我需要在 ubuntu 上编译 apache2,但我希望它使用原始配置和布局。我花了很长时间才找到执行此操作的信息,所以我想我应该创建这个问题和答案来帮助其他人。

注意:我需要最新版本的 apache,但我的 ubuntu 版本尚不支持该版本,并且我不想升级我的 ubuntu 版本。

答案1

前言

这对我有用。如果有更简单的方法,我相信您会告诉我。

理论上,这些步骤应该适用于任何 Linux 发行版,您只需要找到用于为您的发行版编译 apache 的原始配置选项。也许您可以在这个答案中添加关于您在哪里找到选项的评论。

重要的选项是:

--enable-layout=Debian

Debian 可以在 apache 构建目录中的 config.layout 文件中更改为任何一种支持的布局,选项定义为:

<Layout x>
...
</Layout>

其中 x 是布局选项。尝试使用谷歌搜索“--enable-layout=x”(其中 x 是您的发行版)来查找您的选项。尝试找到您的发行版使用的原始选项,而不是一些随机的建议。

编辑:正如 faker 提到的,问题是当你使用 apt 升级并且有新版本的 apache2 时,编译的版本将被覆盖。他关于建立一个新债务的建议是一个很好的建议。不幸的是,由于各种 deb 依赖问题需要解决太多工作,我无法做到这一点。不过我建议您先尝试该路线,这应该对您有帮助:

http://blog.wpkg.org/2014/06/29/building-apache-2-4-x-deb-packages-for-debian-wheezy-7-x/

我选择保持原样,但是我已经对 apache2 设置了保留,因此在我准备好释放保留之前它不会升级。或者,您可以从计算机中删除 apache,并在准备好时再次添加它。

持有:

sudo apt-mark hold apache2

释放保持:

sudo apt-mark unhold apache2

我还建议您对要更改的服务器进行克隆,在克隆上完成整个过程并使其正常工作,然后再在生产环境中尝试。在生产环境中破坏 apache 一天或更长时间并不是您生活中需要的压力。这就是虚拟机的伟大之处,拍摄快照并从快照创建新实例。或者复制您想要更改的环境并在那里进行更改。

我使用 Digital Ocean,他们很摇滚,使用此链接即可享受订阅优惠 10 美元。免责声明 我可以享受 25 美元折扣:

https://www.digitalocean.com/?refcode=9287fc77c7ae

以下是如何按照承诺在 ubuntu 上执行此操作

这假设您已经通过之前运行以下命令在系统上安装了默认的 apache 版本:

sudo apt-get install apache2

你已经跑了

sudo apt-get upgrade

将所有软件包升级到最新版本,包括 apache。

如果从您的 apache 版本到最新版本的配置发生了重大更改,您需要自己进行这些更改。这可能需要一段时间,因此建议在序言中提到的服务器克隆上尝试此操作。

您需要安装依赖项才能进行构建

sudo apt-get build-dep apache2

您需要下载 apache 源代码并解压它,这将被称为构建目录。

备份您当前的配置:不要跳过此步骤

sudo cp -r /etc/apache2 ~/apache2_conf_back

您需要确定您的发布代码名称:

sudo cat /etc/lsb-release

我的值得信赖

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"

然后,您应该能够替换以下 url 中出现的 2 次“trusty”一词,以获取用于构建您的 apache 发行版本的选项

bazaar.launchpad.net/~ubuntu-branches/ubuntu/trusty/apache2/trusty/view/head:/debian/rules

我使用了为变量“AP2_COMMON_CONFARGS”和“AP2_worker_CONFARGS”定义的选项。另外我添加了选项:

--with-pcre=/usr \
--enable-mpms-shared=all \
--enable-unixd=static \

当我最终尝试了几次才得到这个正确结果时,我在每次运行的 apache 构建目录中创建了以下文件。将其命名为 myconfig.sh

#!/bin/bash
./configure \
--with-pcre=/usr \
--enable-mpms-shared=all \
--enable-unixd=static \
--enable-layout=Debian --enable-so \
--with-program-name=apache2  \
--with-ldap=yes --with-ldap-include=/usr/include \
--with-ldap-lib=/usr/lib \
--with-suexec-caller=www-data \
--with-suexec-bin=/usr/lib/apache2/suexec \
--with-suexec-docroot=/var/www \
--with-suexec-userdir=public_html \
--with-suexec-logfile=/var/log/apache2/suexec.log \
--with-suexec-uidmin=100 \
--enable-suexec=shared \
--enable-log-config=static --enable-logio=static \
--enable-version=static \
--with-apr=/usr/bin/apr-1-config \
--with-apr-util=/usr/bin/apu-1-config \
--with-pcre=yes \
--enable-pie \
--enable-authn-alias=shared --enable-authnz-ldap=shared  \
--enable-disk-cache=shared --enable-cache=shared \
--enable-mem-cache=shared --enable-file-cache=shared \
--enable-cern-meta=shared --enable-dumpio=shared --enable-ext-filter=shared \
--enable-charset-lite=shared --enable-cgi=shared \
--enable-dav-lock=shared --enable-log-forensic=shared \
--enable-ldap=shared --enable-proxy=shared \
--enable-proxy-connect=shared --enable-proxy-ftp=shared \
--enable-proxy-http=shared --enable-proxy-ajp=shared \
--enable-proxy-scgi=shared \
--enable-proxy-balancer=shared --enable-ssl=shared \
--enable-authn-dbm=shared --enable-authn-anon=shared \
--enable-authn-dbd=shared --enable-authn-file=shared \
--enable-authn-default=shared --enable-authz-host=shared \
--enable-authz-groupfile=shared --enable-authz-user=shared \
--enable-authz-dbm=shared --enable-authz-owner=shared \
--enable-authnz-ldap=shared --enable-authz-default=shared \
--enable-auth-basic=shared --enable-auth-digest=shared \
--enable-dbd=shared --enable-deflate=shared \
--enable-include=shared --enable-filter=shared \
--enable-env=shared --enable-mime-magic=shared \
--enable-expires=shared --enable-headers=shared \
--enable-ident=shared --enable-usertrack=shared \
--enable-unique-id=shared --enable-setenvif=shared \
--enable-status=shared \
--enable-autoindex=shared --enable-asis=shared \
--enable-info=shared --enable-cgid=shared \
--enable-dav=shared --enable-dav-fs=shared \
--enable-vhost-alias=shared --enable-negotiation=shared \
--enable-dir=shared --enable-imagemap=shared \
--enable-actions=shared --enable-speling=shared \
--enable-userdir=shared --enable-alias=shared \
--enable-rewrite=shared --enable-mime=shared \
--enable-substitute=shared  --enable-reqtimeout=shared;

停止当前的apache

/etc/init.d/apache2 stop

要构建并安装 apache,请在构建目录中运行以下命令

./myconfig.sh
make
make install

恢复您的 apache 配置。我希望您按照前面所述备份您的配置

sudo rm -rf /etc/apache2
sudo cp -r ~/apache2_conf_back /etc/apache2

我需要在 /etc/apache2/apache2.conf 中将包含路径设置为绝对路径,以下命令在 vim 中执行此操作

:%s/^IncludeOptional /IncludeOptional \/etc\/apache2\//
:%s/^Include /Include \/etc\/apache2\// /

我还需要将 /usr/sbin/apache2ctl 中的 envvars 路径更改为 /etc/apache2/envvars

然后重启阿帕奇

/etc/init.d/apache2 启动

希望这对您有用,如果有任何语法错误,请告诉我,以便我修复它们。其中大部分是根据记忆重写的。

祝你好运!

特别感谢 jrwren 的帖子,这是我的难题中缺失的一块:

如何在 ubuntu 上构建配置选项最新 apache

相关内容