Ubuntu

如何使用原始佈局、配置和配置選項在 ubuntu 上編譯最新的 apache2

  • July 2, 2015

我需要在 ubuntu 上編譯 apache2,但我希望它使用原始配置和佈局。我花了很長時間才找到這樣做的資訊,所以我想我會創建這個問題和答案來幫助其他人。

注意:我需要我的 ubuntu 版本還不支持的最新版本的 apache,我不想升級我的 ubuntu 版本。

前言

這對我有用。如果有更簡單的方法,我相信你會告訴我的。

理論上,這些步驟應該適用於任何 linux 發行版,您只需要找到用於為您的發行版編譯 apache 的原始配置選項。也許您可以在此答案中添加關於您在何處找到這些選項的評論。

重要的選項是:

--enable-layout=Debian

Debian 可以在 apache 建構目錄的 config.layout 文件中更改為任何一種支持的佈局,選項定義為:

<Layout x>
...
</Layout>

其中 x 將是佈局選項。嘗試使用Google搜尋“–enable-layout=x”,其中 x 是您的發行版以查找您的選項。嘗試查找您的發行版使用的原始選項,而不是一些隨機建議。

編輯:正如faker所提到的,這個問題是當你使用apt升級並且有新版本的apache2時,編譯的版本將被覆蓋。他關於建立一個新的 deb 的建議是一個很好的建議。不幸的是,由於各種 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

我還建議您複製您希望更改的伺服器,在複製上完成整個過程並使其工作,然後再在生產環境中嘗試它。在 prod 環境中破壞 apache 一天或更長時間並不是您生活中需要的壓力。這是虛擬機很棒的地方,拍攝快照並從快照創建新實例。或者複製您希望更改的環境並在那裡進行更改。

我使用數字海洋,他們搖擺不定,使用此連結獲取 $ 10 off your subscription. Disclaimer I get $ 我的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

然後重啟apache

/etc/init.d/apache2 啟動

希望這對您有用,如果有任何語法錯誤,請告訴我,以便我修復它們。其中大部分是憑記憶重寫的。

祝你好運!

特別感謝 jrwren 的文章,這是我謎題中缺失的部分:

如何建構-配置-選項-最新-apache-on-ubuntu

引用自:https://unix.stackexchange.com/questions/177255