如何使用原始佈局、配置和配置選項在 ubuntu 上編譯最新的 apache2
我需要在 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