這幾天一直在折騰Bugzilla,原以為應該挺簡單的,卻也是一波三折。下面是“被虐”的過程:
一、下載
由於不太習慣Linux的命令行下載方式,就先在本地的下載了當前最新的穩定版本Bugzilla3.6.1 ,然後通過scp上傳到服務器上。解壓至/usr/local/bugzilla。同時
在/var/www/html目錄中創建一個symbolic link:
# ln -s /var/local/bugzilla bugzilla
為httpd的用戶分配該文件夾的訪問權限
# chown apache.apache -R bugzilla
二、安裝和配置
注:以下操作都在root權限下完成。
完成解壓後,自然就按照官網上的指南 (以下稱指南 ),一步步開始安裝。
1、之前Perl、MySQL、Apache Httpd都已經安裝,並且版本符合要求。不過為了安全期間,還是運行了一下
# yum install perl
果真還是有不少內容更新。
2、切換到/var/www/html/bugzilla下,檢查環境配置:
# ./checksetup.pl --check-modules
很多沒有安裝的模塊都列了出來,指南上說可以用下面的命令安裝缺少的模塊:
# perl install-module.pl <modulename>
但是運行上條命令是給出了更加簡便的方式:
# ./install-module.pl --all
然後運行
# ./checksetup.pl
注意這次沒有後面的--check-modules選項,至此一切還都是按照指南上的說明順利進行。可是接下來就踏上了痛苦“旅程”。
上面命令的運行結果並沒有產生localconfig文件,而是提示有些模塊仍然沒有安裝,尤其是DBD::mysql,還有幾個可選的模塊,GD、Chart、GDGraph等。當時就想,單獨安裝一下試試,於是:
# ./install-module.pl GD
沒有成功,錯誤:
Can't call method "cpan_version" on an undefined value at /usr/local/bugzilla/Bugzilla/Install/CPAN.pm line 96.
第一反應當然就是去Google,可是搜到的結果只有區區四條,還有兩個是一個頁面。難道這個問題只有我碰到?難道別人都那麼順利?
把看起來關聯程度最高的讀完了,終於發現了一句話說是可能需要把之前的cpan刪了,重新安裝。有解決方案就行,試一下。就到root下面把.cpan目錄刪了。殊不知這下麻煩可大了。然後再次運行命令安裝,從輸出信息中看到需要安裝cpan,可是死活連不上默認的兩個ftp服務器,一直提示Connection:refused 。可是兩個ftp在pc上訪問都沒有問題,頓時著急上火。怎麼辦?還是采用笨方法,先下載到本地,然後按照目錄復制過去。實施起來才知道,這個想法太幼稚,cpan的目錄結構雖然不太復雜,但是光下載文件,也要不斷的時間,這個時間我可浪費不起。糾結呀!!
(總不能在一棵樹上吊死吧,還有Mantis可以用,轉投Mantis,還真是好用,很快就裝好了。雖然也有一點小插曲,是因為自己沒有看清楚說明,填錯了數據庫的用戶名密碼。)
一天後,心裡還是不服,真的只能這樣了嗎?不行,繼續來。既然這個辦法不行,看看是不是因為代理的問題。於是就找系統可以設置代理的地方,無功而返。那就沉下心來(唉,知名的弱點,有時候太心急)研究下cpan吧,原來可以直接設置代理。以前都是直接跳過了。
# cpan
cpan> o conf init
提示是否需要手動配置時,直接回車,默認是yes。中間略過n多選項,到了ftp_proxy和http_proxy按照本地pc上的配置填寫。最後一步步過去。退出cpan,重新開始安裝。看起來好像有效果,可是連接proxy一直超時。看來是因為防火牆的原因,ftp出不去,那麼看看有沒有使用http的協議鏡像,還真找到了http://www.perl.org/CPAN/ (如此明顯的地址,看來是我以前的方向錯了。)
重啟配置cpan,去掉ftp_proxy和http_proxy的值,在最後一項提示輸入另外一個URL時,將上面地址填入。終於解決了CPAN重新安裝的問題。
這次沒有安裝DBD::mysql,而是嘗試了GD,
# ./install-module.pl GD
得到了另外一個錯誤:
Could not find gdlib-config in the search path. Please install libgd 2.0.28 or higher.
檢查發現libgd已經安裝,並且版本符合要求,有人說是因為gdlib-config不存在,於是下載gd ,然後編譯,將產生的gdlib-config復制到/usr/bin/下面,並且添加權限:
# ./config
# cp gdlib-config /usr/bin
# chmod 774 gdlib-config
再次安裝,這次錯誤有了變化:
GD.xs:7:16: error: gd.h: No such file or directory
GD.xs:8:21: error: gdfontg.h: No such file or directory
這個是因為只安裝了gd,還需要安裝gd-devel包:
# yum install gd-devel
然後GD順利完成。
接下來安裝DBD::mysql,這次出現了的錯誤和上面的類似:
In file included from dbdimp.c:20:
dbdimp.h:22:49: error: mysql.h: No such file or directory
dbdimp.h:23:45: error: mysqld_error.h: No such file or directory
那就重新安裝mysql和mysql-devel
# yum install mysql mysql-devel
DBD::mysql完成安裝。
一切都安裝完畢了,再次運行checksetup.pl,生成了localconfig。下面就按照指南開始配置:mysql和apache。數據庫的配置很簡單,順利完成。
Apache的配置,指南中提供了兩種方式,一個是cgi運行,一個mod_perl。我想既然安裝那麼多perl相關的東西,那就用後者吧。(不知道我是不是對指南的理解有誤?)在/etc/httpd/conf.d/perl.conf中添加了:
看起來一切都完成了。那就重啟httpd服務吧。
# service httpd restart
啟動時發生錯誤:
Can't locate Template/Config.pm
除了上面信息以外,還有幾個的類似的。解決方法比較簡單,使用cpan重新安裝即可。
# cpan Template
有時候運行下面的命令,再用cpan運行一次:
# ./install-module.pl <modulename>
經過幾次反復,終於啟動了httpd服務。在浏覽器看到了Bugzilla的尊容,可是還沒有來得及高興,發現輸入用戶名和密碼後不能登陸,提示500 Internal Error。趕緊查看apache的error_log,發現裡面還有一個:
Can't locate Digest/SHA.pm in @INC (@INC contains: . lib /var/www/html/bugzilla
還是采用上面的方法,安裝缺少的Digest。
安裝成功,還是提交不成功,仍然是500 Internal Error。仔細觀察地址欄中的地址,顯示的是index.cgi,不是采用perl方式嗎,難道還要用CGI??(懇請高手指點!)
看來還要打開CGI。沒辦法,就先把perl.conf中那兩行注釋掉。再編輯/etc/httpd/conf/httpd.conf:
將下面這行前面的注釋去掉:
AddHandler cgi-script .cgi
然後,添加下面內容:
重新啟動httpd服務,bugzilla終於可以正常使用了。
三、後記
按說我應該珍惜這來之不易的勞動成果,可是實在不習慣進去後還要自己搜索bug的做法(可能這就是先入為主吧,因為之前使用近三年的mantis),同時也習慣bug的管理方式,感覺有點亂。