一、安裝準備
Bugzilla: 版本 2.18 (http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-2.18.tar.gz)
漢化包:2.18rc3-cn-0.9 (http://heanet.dl.sourceforge.net/sourceforge/bugzilla-cn/bugzilla-2.18rc3-cn-0.9.rar)-不需要,似乎不兼容
My SQL Database: 版本 4.1.10 (http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-4.1.10-win32.zip/from/http://mysql.ihostunit.com/)
ActivePerl:版本 5.8.6.811 (http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.6.811-MSWin32-x86-122208.msi)-據說這個版本有bug,但是似乎也沒什么大礙.
Perl Modules:(http://landfill.bugzilla.org/ppm)
sendmail:(http://download.ebugs.org/download/bugzilla/mailer.rar)
Apache:版本 2.0.53 (http://archive.apache.org/dist/httpd/binaries/win32/apache_2.0.53-win32-x86-no_ssl.msi)
二、相關軟件的安裝
安裝mysql。
將Mysql默認安裝到C:\Mysql是一個很不錯的主意,因為在Bugzilla的Checksetup.pl中默認Mysql安裝在C:\mysql,如果您安裝到了其他目錄,那么安裝時需要對該文件進行手工修改,指定Mysql的安裝路徑。對于Mysql的安裝,一路點擊下一步即可。
安裝完成后,手動運行C:\mysql\bin\winmysqladmin.exe文件,它會自動將mysql數據庫注冊為服務并啟動。此操作僅需運行一次,因為Mysql注冊的服務為自動類型,所以每次計算機啟動時均會自動運行。
然后,我們需要mysql中創建Bugzilla的用戶以及數據庫,主要三條命令為:
a、建立數據庫bugs
create database bugs;
b、建立用戶bugs,密碼為空,對Bugs數據庫具有一定權限
GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE, LOCK TABLES,DROP,REFERENCES ON bugs.* TO bugs@localhost IDENTIFIED BY '';
c、從 mysql 數據庫授權表中重新裝載權限。
FLUSH PRIVILEGES
執行過程如下圖:(這里我們建立的數據庫名為Bugs,數據庫用戶名為Bugs,密碼為空)
1.?
注意:剛剛建立的數據庫的超級用戶為root,沒有密碼,你可以安裝mysqlcc在圖形界面中更改密碼,也可以使用SQL語句“UPDATE user SET password = password('new_password') WHERE user = 'root';”來更改密碼。
安裝Activeperl。
Activeperl的安裝很簡單,一路點擊Next即可,它會自動安裝到C:\perl目錄。同時在系統變量Path中增加自己的 C:\perl\bin路徑信息。
Apache的配置
對于 Apache 服務器,此步驟稍微復雜一點,需要手工配置文本文件:C:\Program Files\Apache Group\Apache2\conf\httpd.conf
1、增加 cgi 和 pl 的執行,只需要在配置文件中增加如下二行
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
2、增加默認文檔,在文檔中查找DirectoryIndex index.html index.html.var一行,在后面添加index.cgi,即更改為:DirectoryIndex index.html index.html.var index.cgi
3、增加虛擬目錄映射,并設置目錄權限。增加下列幾行,這里默認Bugzilla文件目錄位于C:\Buzilla,別名為bugzilla,注意:在配置文件中是使用“/”而不是“\”
Alias /bugzilla "D:/Bugzilla/"
<Directory "D:/Bugzilla/">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#?? Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.? Please see
# http://httpd.apache.org/docs-2.0/mod/core.html#options
# for more information.
#
??? Options Indexes FollowSymLinks ExecCGI
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#?? Options FileInfo AuthConfig Limit
#
??? AllowOverride All
#
# Controls who can get stuff from this server.
#
??? Order allow,deny
??? Allow from all
#
# Tell Apache to use Perl to execute .cgi
#
??? ScriptInterpreterSource Registry-Strict
</Directory>
AddHandler cgi-script .cgi
DirectoryIndex index.html index.html.var index.cgi
#
# The location and format of the access logfile (Common Logfile Format).
# If you do not define any access logfiles within a <VirtualHost>
# container, they will be logged here.? Contrariwise, if you *do*
# define per-<VirtualHost> access logfiles, transactions will be
# logged therein and *not* in this file.
#
#CustomLog logs/access.log common
設置完成后,重新啟動 Apache 服務器設置即可生效。
Perl腳本的安裝以及Bugzilla的初步配置。
Bugzilla為我們準備了一個很好的腳本文件checksetup.pl來進行配置,我們隨時可以運行chekcsetup.pl文件來進行服務器配置而不會對Bugzilla系統造成任何影響。
運行該腳本的方法是,在命令行下進入Bugzilla的主目錄,鍵入:perl checksetup.pl,運行后,該腳本會給出系統所缺的各種元素乃至獲取辦法。
初次運行的時候,系統首先會驗證perl模塊是否足夠,一般會缺少比較多的perl模塊。如果我們是單獨下載的每個perl模塊進行安裝,則需要使用ppm install <perl模塊名.ppd> 進行。
如果是使用本文中所提供的壓縮包進行安裝的,那么一切變得很簡單,只需要雙擊運行Install.bat文件,此批處理文件會自動調用ppm安裝好運行所需要的perl模塊。
當插件安裝完后,再次運行perl checksetup.pl,系統會生成localconfig文件,此文件是包含了Bugzilla的一些配置信息,如果您的mysql安裝到C:\mysql,所創建的數據庫名稱為bugs 數據庫用戶為bugs,密碼為空,那么不需要對localconfig文件進行任何修改,否則需要對localconfig的相應條目進行修改。
修改好localconfig文件,再次運行 perl checksetup.pl,如果不出意外的話,會順利編譯模板,然后建立數據庫,最后提示輸入超級用戶信箱、用戶姓名以及口令。輸入后,Bugzilla 基本安裝完成,可以從 web 上來進行訪問了。
讓Bugzilla界面運行起來!
當我們使用 web 頁面瀏覽http://127.0.0.1/bugzilla/時,意外的發現出錯了。
如果是 IIS ,可能的信息為:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
Can't open perl script "C:\bugzilla\index.cgi": Permission denied
如果是 Apache ,可能的錯誤信息為標準的 500 號內部錯誤:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
More information about this error may be available in the server error log.
…
Apache/2.0.48 (Win32) Server at 127.0.0.1 Port 80>
雖然提示信息不同,但是二者出錯原因是類似的,對于IIS,是因為perl腳本的第一句中不支持 -wT 參數,將所有的 -wT 替換成 -w 即可
即:將 #!/usr/bin/perl –wT 替換為:將 #!/usr/bin/perl –w
對于Apache服務器,是因為Apache找不到perl文件的路徑,因此將.cgi和.pl的頂部的perl路徑由/use/bin/perl 替換成C:/perl/bin/perl即可。
即:將 #!/usr/bin/perl 替換為:#!C:/perl/bin/perl
作為一個通用的解決方法,可以將所有的#!/usr/bin/perl –wT和#!/usr/bin/perl –w替換成#!C:/perl/bin/perl
修改后,再次瀏覽http://127.0.0.1/bugzilla/,OK!我們可以看到Bugzilla的主界面了。
實現Bugzilla的Email發送功能。
因為Bugzilla更大程度是基于unix的,其發送郵件部分功能是直接調用unix下的sendmail來實現的,這就給在windows下運行造成了很大難度。對此,Bugzilla的官方文檔給出的辦法是將Sendmail部分用perl的Net::Smtp模塊來代替。但是在最新的Bugzilla版本中,一共有11個文件需要修改,且各地代碼修改方式均有所不同,且目前大部分smtp服務器均需要認證才能發信,將信箱密碼寫在程序源碼中畢竟不是一個好辦法,基于以上種種原因,我們自己編程實現了windows下的 sendmail,基本能夠完成unix下sendmail的功能。我們需要做的是用新sendmail的路徑替換舊有的sendmail路徑就可以了。
如:sendmail位于bugzilla目錄下的mailer目錄下,我們就可以使用“|Mailer/sendmail”替換“|/usr/lib/sendmail”。
除此以外,還要將contrib\bug_email.pl中的“| /usr/sbin/sendmail”替換成“|Mailer/sendmail”, contrib\mysqld-watcher.pl 中的“/usr/lib/sendmail”替換成“Mailer/sendmail”
替換完成后,我們要運行BugMailer.exe進行配置,輸入SMTP服務器的地址、端口號以及發信認證相關信息就可以了。配置后,會在當前目錄產生配置文件BugMailer.ini,當發送郵件時,如果產生錯誤,詳細信息會產生在當前目錄的BugMailer.log文件中。
對于Bugzilla,還有5個文件并不是使用配置中所輸入的信箱進行發信的,而是使用了固定的用戶“bugzilla-admin-daemon”、“bugzilla-request-daemon”來進行發送,而某些需要SMTP認證的郵件服務器是不允許驗證用戶使用其他人的名稱進行發送的,所以需要手工將其替換成BugMailer.exe中輸入的郵件地址。
包含以下幾個文件
template\en\default\account\cancel-token.txt.tmpl
template\en\default\account\password\forgotten-password.txt.tmpl
template\en\default\account\email\change-new.txt.tmpl
template\en\default\account\email\change-old.txt.tmpl
template\en\default\request\email.txt.tmpl
至此Bugzilla的郵件發送功能基本完成,同時,Bugzilla也已基本安裝完成,下一步就是以超級用戶登錄對 bugzilla進行配置了。
三、補充說明
對于Bugzilla的安裝,比較麻煩的就是安裝Perl模塊及對Bugzilla源文件的修改。安裝過程的要點是不斷的運行perl checksetup.pl腳本,隨時根據里面提示的信息進行相關操作就可以了。
記得修改Email的頭信息的編碼為GB2312.這個和語言包相關.而且MySQL最好使用gb2312的編碼,和Apache的default charset一致.
參考文獻:
Installing Bugzilla on Microsoft Windowshttp://ebugs.org/bugzilla/2.php
Bugzilla 應用(2)——Bugzilla 的安裝