最近須要一個簡單快速的bug追蹤工具,考慮到系統環境以及學習成本,決定採用bugzilla。不試不知道,原來這裏面還有這麼多的坑須要一個個踩平~,遂隨筆一下以備後用。php
我採用的系統組成是debian+mysql+nginx+bugzilla,使用centos的親可能須要注意nginx的安裝方式和配置文件位置不同,須要靈活變通;至於使用apache的同窗,請參考其它文章設置轉發部分。mysql
不一樣於apache使用的cgi方式,nginx採用fcgi來調度php、perl等編程語言。因此咱們須要安裝並配置perl的fpm。nginx
aptitude install nginx libfcgi-perl mysql-server
我原本想經過下載編譯的方式安裝fcgi(https://metacpan.org/pod/FCGI)不料安到一半發現發行版里居然有!因而乎瞬間採用更好的方案解決了。發行版裏找不到這個包的同窗能夠自行下載安裝(nginx也是一個道理)web
安裝完後發現,這個lib沒有啓停腳本,因而上網上找了兩個腳本安上去:sql
wget http://nginxlibrary.com/downloads/perl-fcgi/fastcgi-wrapper -O /usr/bin/fastcgi-wrapper.pl wget http://nginxlibrary.com/downloads/perl-fcgi/perl-fcgi -O /etc/init.d/perl-fcgi chmod +x /usr/bin/fastcgi-wrapper.pl chmod +x /etc/init.d/perl-fcgi update-rc.d perl-fcgi defaults insserv perl-fcgi
執行完上述腳本後,咱們在/etc/init.d/裏面安裝了一個服務perl-fcgi,它將在開機後自動運行/usr/bin/fastcgi-wrapper.pl數據庫
fastcgi-wrapper.pl調用libfcgi-perl並監聽socket端口,nginx將經過該端口與之通訊。默認地址爲127.0.0.1:9000。爲了提高性能,我將其改成命名管道方式:apache
vim /usr/bin/fastcgi-wrapper.pl
找到原來的啓動監聽語句將其修改成:編程
$socket = FCGI::OpenSocket( "/tmp/perl-fcgi.sock", 10 );
保存後,啓動perl-fcgivim
service perl-fcgi start
若是啓動失敗,提示`account not available`,多是www-data用戶被禁止登錄,執行如下命令:centos
usermod -s /bin/sh www-data
進入nginx的配置目錄,建立配置文件:
cd /etc/nginx/sites-available
vim bugzilla
配置文件以下(將域名和端口替換成你的訪問地址):
server { listen 8008; # listening port server_name bugzilla.example.com; # server name root /var/www/bugzilla; # installation path
location /skin/ {}
location /js/ {}
location / { include fastcgi_params; fastcgi_pass unix:/tmp/perl-fcgi.sock; fastcgi_index index.cgi; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
接下來,將配置文件連接到sites-enabled目錄中,並啓動應用(若是以前nginx已經啓動,調用reload重載入配置文件):
cd ../sites-enabled/ ln -s ../sites-available/bugzilla .
service nginx start
mysql的安裝與配置在網上至關多,在此再也不贅述。
搞定了基礎環境,接下來開始正式安裝bugzilla
從bugzilla.org下載並解壓到/var/www
mkdir -p /var/www cd /var/www chown -R www-data . wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-4.4.5.tar.gz tar zxf bugzilla-4.4.5.tar.gz mv bugzilla-4.4.5 bugzilla cd bugzilla
接下來須要對bugzilla進行配置。bugzilla依賴某些perl組件本機可能沒有安裝,而我在使用其自帶的安裝腳本時始終沒法成功安裝,網上搜索後找到一個解決方案是使用cpanm來安裝。
下載並安裝cpanm:
sudo curl -L http://cpanmin.us | perl - --sudo App::cpanminus
接下來咱們執行checksetup.pl來進行配置。配置過程當中checksetup.pl須要執行若干次以完成環境檢查。第一次執行後,可能會提示有模塊未安裝,按照未安裝的模塊列表使用cpanm命令進行安裝便可
perl checksetup.pl cpanm YAML cpanm DateTime ...
安裝完成後,再次執行checksetup.pl,此時依賴模塊應該都檢查經過。若是有模塊已安裝但檢查不到,能夠嘗試強制從新安裝,如:
cpanm DateTime -f
模塊檢查經過後,checksetup.pl會提示mysql鏈接失敗,咱們如今進入mysql配置用戶與數據庫:
CREATE database bugs default charset utf8 collate utf8_bin; CREATE user bugs@localhost identified by 'bugs'; grant all on bugs.* to bugs@localhost; flush privileges;
修改數據庫配置:
vim localconfig
找到並修改如下項:
$webservergroup = 'www-data'; $db_pass = 'bugs';
注:若是使用遠程數據庫等,請自行進行配置用戶名、密碼等
至此,咱們完成了全部的配置。再次執行checkconfig.pl,會提示輸入管理員郵箱和密碼,並保存配置到數據庫。
嘗試打開你配置的訪問地址(如:http://bugzilla.example.com:8008/),若是能打開並排版顯示正確,就代表能夠訪問了。