敝公司幾年前買了套很舊的架站機,它用Zend 編碼PHP,因此只能用PHP 4.1.2+Apache 1.3.X,我只能默默的更新。
這兩天開始會神奇的無回應,檢查error_log發現是達到MaxClients,看了access_log似乎是Sogou web spider有些問題,而我也不想去擋偉大的祖國蜘蛛(誰知道還會有哪隻呢?),所以檢查httpd.conf,發現TimeOut居然被設成1800(秒),原本預設值是300,所以我改成100,這樣httpd的數量就維持在50左右。
因為每天都有不少試漏洞的robots,所以更新是必要的,在此記錄如何編譯Apache 1.3+PHP 4.1.2+mod_ssl。
除了更新mod_ssl外,當然也要更新OpenSSL,因為mod_ssl一陣子未更新,所以目前mod_ssl 2.8.31只支援OpenSSL 0.9.8o 而不支援OpenSSL 1.0.0a(API有改變)。OpenSSL這次改版似乎變更key的型式,因此必須重新產生key,更新後使用舊的key會顯示錯誤。
mod_ssl目前只支援到Apache 1.3.41所以若要使用Apache 1.3.42必須在解開mod_ssl-2.8.31-1.3.41.tar.gz後,在 mod_ssl-2.8.31-1.3.41/pkg.sslmod 目錄下修改 libssl.version 將其內容改為
在Ubuntu可能會發現Apache在configure時錯誤,顯示
這兩天開始會神奇的無回應,檢查error_log發現是達到MaxClients,看了access_log似乎是Sogou web spider有些問題,而我也不想去擋偉大的祖國蜘蛛(誰知道還會有哪隻呢?),所以檢查httpd.conf,發現TimeOut居然被設成1800(秒),原本預設值是300,所以我改成100,這樣httpd的數量就維持在50左右。
因為每天都有不少試漏洞的robots,所以更新是必要的,在此記錄如何編譯Apache 1.3+PHP 4.1.2+mod_ssl。
除了更新mod_ssl外,當然也要更新OpenSSL,因為mod_ssl一陣子未更新,所以目前mod_ssl 2.8.31只支援OpenSSL 0.9.8o 而不支援OpenSSL 1.0.0a(API有改變)。OpenSSL這次改版似乎變更key的型式,因此必須重新產生key,更新後使用舊的key會顯示錯誤。
mod_ssl目前只支援到Apache 1.3.41所以若要使用Apache 1.3.42必須在解開mod_ssl-2.8.31-1.3.41.tar.gz後,在 mod_ssl-2.8.31-1.3.41/pkg.sslmod 目錄下修改 libssl.version 將其內容改為
mod_ssl/2.8.31-1.3.42以下是我的編譯方法,不見得適用所有人:
#tar xzf apache_1.3.42.tar.gz; tar xzf mod_ssl-2.8.31-1.3.41.tar.gz; tar xzf openssl-0.9.8o.tar.gz
$echo 'mod_ssl/2.8.31-1.3.42' > mod_ssl-2.8.31-1.3.41/pkg.sslmod/libssl.version
$cd apache_1.3.42
$./configure --enable-module=so --enable-module=proxy --enable-module=rewrite
$cd ../openssl-0.9.8o
$./Configure; make; make install
$cd ../php-4.1.2
$./configure --with-apache=../apache_1.3.42 --with-zlib=/usr/local --with-png-dir=/usr/local --with-gd=/usr/local --with-sybase=/usr/local/sybase --enable-track-vars --disable-debug
$make clean; make ; sudo make install
$cd ../mod_ssl-2.8.31-1.3.41
$./configure --with-apache=../apache_1.3.41 --with-ssl=../openssl-0.9.8o
$cd ../apache_1.3.42
$./configure --activate-module=src/modules/php4/libphp4.a --enable-module=so --enable-rule=EAPI --enable-module=ssl --enable-module=proxy --enable-module=rewrite
$make clean; make;
$make certificate #如果沒有要做簽章,就不要make certificate這步
$sudo make install
$/usr/local/apache/bin/apachectl stop #重新啟動Apache 1.3
$/usr/local/apache/bin/apachectl startssl
在Ubuntu可能會發現Apache在configure時錯誤,顯示
Syntax error --- The configuration file is used only to解決方法很簡單,是因為/bin/sh連結到/bin/dash,所以只要兩個步驟就搞定
define the list of included modules or to set Makefile in src
options or Configure rules, and I don't see that at all:
`$(SRCDIR)/apaci`
sudo rm -f /bin/sh;其實我的內心,是希望不要再用到Apache 1.3,趕快把這套程式丟掉呀呀呀...
sudo ln -s /bin/bash /bin/sh
留言
能說服公司用新的架站機,然後把舊資料轉過來嗎?雖然說轉過來這部份可能要自己寫。
不過這個方式的效益比就不清楚了,未來要是 Apache 和 PHP 都不再更新時,那麼這個系統大概就真的只能一直這樣擺著了。
沒什麼建設的意思,僅供參考 :P
之前有請人估價重做約需30萬~50萬,等到老闆再願意花錢時,再請Jace來估價囉 ^_^