Upgrading Apache
1.
簡介
在Gentoo中Apache和其中的模組的管理上已經變成有點危險。其中有一些問題會產生
並且已經被回報,如下:
-
從其他版本轉過來Gentoo的使用者會發現在設定上與先前有明顯的差異。
-
有很多的模組使用相同的code,但是所做的事情卻全然不同。
-
有很多的模組並沒有被管理的很好 -- 大部分的原因是因為有太多可用的模組了。
- 模組並沒有相同的設定方式
-
有些模組可以支援兩種版本的Apache,但是ebuild卻不能提供如此的功能。
-
選擇的Apache的能力對於Gentoo的使用者並不允許(例如:MPMs)
- 對於Apache的Bug越積越多
怎樣解決呢?Apache小組將會被擴充,增加一些新的成員用來發展一些新的eclass,更新
所有的模組並且修正Bug。
這份文件會詳述如何更新Apache而不損害到您的系統。如果您是一位發展人員,並且希望
知道我們改變了哪些東西或是Ebuild需要怎樣修改才能擁有新的特色,可以參考
Apache 發展人員參考手冊.
2.
升級指令
我們已經將Apache改變很多使得能在Gentoo運作。每個與Apache相關的套件都必須要更新
而且原本可以使用的套件如果不更新可能會不能繼續使用。
第一您需要查看哪些套件您需要升級。您可以利用equery來查看,equery
被放在app-portage/gentoolkit套件中。
原始碼 2.1: Finding packages to update |
$ equery depends net-www/apache
[ Searching for packages depending on net-www/apache... ]
dev-db/phpmyadmin-2.5.6
dev-php/mod_php-4.3.10
dev-php/phpsysinfo-2.1-r2
net-www/mod_bandwidth-2.0.5
net-www/mod_layout-4.0.1a
net-www/mod_ldap_userdir-1.1.4
net-www/mod_loopback-1.04
net-www/mod_mp3-0.40
net-www/mod_random-2.0
net-www/mod_throttle-3.1.2-r1
net-www/mod_watch-3.18
www-apps/viewcvs-0.9.2_p20030430
|
重要:
在您系統中所安裝的套件清單與上述會不盡相同,請確定你自己執行過以上指令。
|
警告:
其中有些模組與套件與Apache相依但是還沒被更新。對於一些特殊的套件請查閱
bugzilla。
|
有很多使用webappeclass的web應用程式並不會被影響,但是您仍然應該查看是否
有更新的版本。
當所有支援我們改變的套件仍然被標示為unstable,為了要能使用他們。我們必須要把他加入
/etc/portage/package.keywords中。
注意:
/etc/portage有可能不存在,請自行建立。
|
原始碼 2.2: Additions to /etc/portage/package.keywords |
=net-www/apache-1*
net-www/gentoo-webroot-default
net-www/lingerd
net-www/apache
dev-libs/apr
dev-libs/apr-util
net-www/gentoo-webroot-default
dev-php/mod_php
net-www/mod_bandwidth
net-www/mod_layout
net-www/mod_ldap_userdir
net-www/mod_loopback
net-www/mod_mp3
net-www/mod_random
net-www/mod_throttle
net-www/mod_watch
|
因為我們新增了一些相關的USE-flag,您也許想要查閱看看並且增加到
/etc/portage/package.use中。請參考 Apache 支援的 USE-flags
來取得更訊。
原始碼 2.3: Checking USE flag settings and rebuild |
# emerge --pretend --verbose --update --newuse --deep apache subversion \
mod_php mod_bandwidth mod_layout mod_ldap_userdir mod_loopback mod_mp3 \
mod_random mod_throttle mod_watch
# emerge --verbose --update --newuse --deep apache subversion mod_php \
mod_bandwidth mod_layout mod_ldap_userdir mod_loopback mod_mp3 mod_random \
mod_throttle mod_watch
# emerge --ask --verbose --update --newuse --deep world
|
現在您需要重新設定您的Apache和相關的模組。請由etc-update或dispatch-conf
來更新/etc/init.d和/etc/conf.d中的檔案。您將會注意到
Apache的設定檔並不會在更新清單中顯示 - 這是因為設定檔被更動了。
如果您有更動過前一版的apache.conf和commonapache.conf
您將會需要將他改變到/etc/apache{|2}/httpd.conf中。而且模組和虛擬伺服器(vhost)
的相關設定檔也已經變更 -- 他們現在被移動到/etc/apache2/modules.d和
/etc/apache2/vhosts.d中。
當您把舊版本的設定檔都更新的新的上面後,您需要刪除舊的設定檔(或是將他們移動到
其他地方去)。新的設定檔/etc/init.d/apache{|2}會去檢測舊的設定檔
,如果還在將不會讓您啟動Apache,直到您將就的設定檔移走(mv)。
注意:
有很多的模組原本是被開啟的但是更新後變成關閉的。如果那些是Apache內建的模組,可以
在httpd.conf 取消註解。如果是外部的模組,請參考模組的設定檔IfDefine並且在
/etc/conf.d/apache{|2}啟動他。
|
現在可試試看重新啟動apache。
原始碼 2.4: Restarting apache |
# /etc/init.d/apache stop
# /etc/init.d/apache start
|
如果您遇到任何問題可以參考Apache 解決問題聖經
,如果上面不能解決您的問題,請回應到 Gentoo Bugzilla。
請確認您已經啟動相關的模組(如果您使用Apache2)並且注意有哪些MPM USE-flag 您在編譯時
加進去。您也許會想加入在IRC上面的 #gentoo-apache頻道來尋求支援,此頻道設立於
3.
Apache支援的USE-flag
下面有列出USE-flag對應到相關的apache和模組。Apache支援一些通用的USE-flag例如 ssl
,但是這次更動對於其他與Apache不相關的套件並沒有太大的關係,所以並沒有放在下面
清單中。請執行emerge --verbose --pretend apache來查閱所有的USE-flag清單。
| USE-flag |
Packages(套件) |
Description(描述) |
| apache2 |
depend.apache eclass (all modules) |
如果使永Apache-2.0應該使用這個flag,如果沒有將會安裝Apache-1.3。請確認
您要安裝的版本來選擇。 |
| mpm-leader |
apache-2* |
安裝leader
MPM |
| mpm-metux |
apache-2* |
安裝metux MPM |
| mpm-peruser |
apache-2* |
安裝peruser MPM
|
| mpm-prefork |
apache-2* |
安裝prefork
MPM |
| mpm-threadpool |
apache-2* |
安裝 threadpool
MPM |
| mpm-worker |
apache-2* |
安裝 worker
MPM |
| no-suexec |
apache |
取消安裝對於suexec相關的模組(對於那些不想要suid在系統上的使用者)
|
| static-modules |
apache |
靜態的連結模組到Apache的執行檔中,如此可以讓LoadModule沒作用。
Apache.
|
| lingerd |
apache-1* |
增加對於 lingerd的支援。
|
| no-htdocs |
gentoo-webroot-default |
關閉安裝預設的webroot到/var/www/localhost中,如此會讓原本在
其中的檔案不會被覆蓋過去。然而webroot會被改安裝到/usr/share/doc/gentoo-webroot-default-*/webroot/中。
|
注意:
有很多的 mpm-* USE-flags是互斥的。您應該只啟動一個mpm-* USE-flags。(如果您不啟動他
,mpm-prefork或mpm-worker將會被啟動,這是依照 USE-flag來設定的。)
|
這份文件是以
Creative Commons - 姓名標示-相同方式分享 授權條款發布
|