Bugzilla アイコン Bugzilla 日本語版

Bugzilla - Fedora Core 1 へのインストール

バグトラッキングシステム Bugzilla 2.16 に必要なデータベースシステム (MySQL)・ Perl モジュール・ Web サーバ (Apache) を RPM パッケージ を利用してインストールする方法、そして設定方法について説明します。

動作環境

OS
Fedora Core 1
インストールのときパッケージグループは [ カスタム - 最小 ] を選びました。
Perl
バージョン 5.8.1 が最初から入っています。
sendmail
バージョン 8.12.10 が最初から入っています。
MySQL
入っていないので Fedora から提供されている最新版をいれます。
httpd (Apache)
入っていないので Fedora から提供されている最新版をいれます。
Perl モジュール
RPM で用意されているものは それをインストールします。RPM パッケージの無いものは RPM を作成してインストールします。

Fedora の設定

OS のインストールのときパッケージグループは [ カスタム - 最小 ] を選びました。

プロキシの設定

プロキシを使用している人はこの設定が必要です。私が Fedora Core を動作させる環境はファイアウォールの中でしたので apt のためにプロキシの設定をしました。

$ vi ~/.bashrc
$ source ~/.bashrc
HTTP_PROXY='http://iproxy.foo.bar.co.jp:10080/'
export HTTP_PROXY

apt の設定

RPM パッケージは手でダウンロード・インストールする方法もありますが、apt という便利な補助ツールを使うこともできます。

apt は Fedora Core 1 には最初からは入っていないので以下を参考に apt をインストールしました。

http://www.fedora.us/wiki/FedoraHOWTO http://linux2ch.bbzone.net/index.php?FaqDistributionFedora#content_1_9
$ wget http://download.fedora.us/fedora/fedora/1/i386/RPMS.stable/apt-0.5.15cnc1-0.fdr.3.1.i386.rpm
$ su
# rpm -ivh apt-0.5.15cnc1-0.fdr.3.1.i386.rpm

apt がうまく動作するか確かめます。

# apt-get update

データベースシステム (MySQL) のインストールと設定

Perl モジュールより前に MySQL をインストールする必要があります。Perl モジュールの中には MySQL をどこにインストールしたのか質問してくるものがあるためです。

ファイル取得・インストール

MySQL 関連パッケージが提供されているかを調べます。

$ apt-cache search mysql
MyODBC - ODBC driver for MySQL
MySQL-python - An interface to MySQL
libdbi-dbd-mysql - MySQL plugin for libdbi
mod_auth_mysql - Basic authentication for the Apache web server using a MySQL database.
mysql - MySQL client programs and shared libraries.
mysql-bench - MySQL benchmark scripts and data.
mysql-devel - Files for development of MySQL applications.
mysql-server - The MySQL server and related files.
openoffice.org-libs - OpenOffice.org shared libraries
perl-DBD-MySQL - A MySQL interface for perl
qt-MySQL - MySQL drivers for Qt's SQL classes.
tora - A GUI-based database development program.
freeradius-mysql - MySQL bindings for freeradius
php-mysql - A module for PHP applications that use MySQL databases.
moodss - Modular Object Oriented Dynamic SpreadSheet

必要なのは MySQL のサーバとクライアントです。バージョンは

$ apt-cache show mysql

とすると分かりますが Version: 3.23.58-4 となっています。末尾の「-4」の部分は RPM パッケージのリリース番号なので、ソフトウェアのバージョンは 3.23.58 です。

今は mysql-server と mysql だけインストールしましょう。

# apt-get install mysql-server mysql
The following extra packages will be installed:
  perl-DBD-MySQL perl-DBI

なんと、後で必要になる perl-DBD-MySQL, perl-DBI も同時にインストールしてくれます。便利ですね。

インストールはこれで終わりです。

RPM tips

どこにファイルがインストールされたのかを知りたい場合は

$ rpm -ql <パッケージ名>

と入力します。たとえば

$ rpm -ql mysql-server

「-ql」の意味は q が query(問い合わせ) で l がファイルリスト表示になります。 「-qlv」とすればファイルサイズ・パーミッションも分かります。

MySQL の設定

インストールされたファイルの場所を調べます。

$ rpm -ql mysql-server

MySQL サーバを起動するためのスクリプトファイルは /etc/init.d/mysqld になっています。 その中身を見ると、MySQL データベースファイルは /var/lib/mysql 以下に置かれます。最初は中身が空っぽですが、サーバを起動したときに /var/lib/mysql がカラなら自動的に MySQL 管理テーブルが作成されます。

一度手動で MySQL サーバを起動して、MySQL 管理テーブルを作成しましょう。

MySQL サーバを手動で起動・停止させるにはそれぞれ以下のようにおこないます。

# /etc/init.d/mysql start

# /etc/init.d/mysql stop

一度起動させてから停止しました。/var/lib/mysql を見るとファイルが作成されているのが分かります。

文字コード設定

MySQL で日本語 (EUC-JP) を使うために、MySQL 設定ファイル /etc/my.cnf を以下のように書き換えます。

# diff -u /etc/my.cnf.org /etc/my.cnf
--- /etc/my.cnf.org     2003-10-28 05:04:18.000000000 +0900
+++ /etc/my.cnf 2004-02-18 16:07:42.000000000 +0900
@@ -1,6 +1,7 @@
 [mysqld]
 datadir=/var/lib/mysql
 socket=/var/lib/mysql/mysql.sock
+default-character-set=ujis

 [mysql.server]
 user=mysql
@@ -9,3 +10,9 @@
 [safe_mysqld]
 err-log=/var/log/mysqld.log
 pid-file=/var/run/mysqld/mysqld.pid
+
+[mysql]
+default-character-set=ujis
+
+[mysqldump]
+default-character-set=ujis

tips

文字コードが変更されたかの確認は MySQL サーバを起動させたあとで MySQL クライアントから接続して確認です。

# mysql -p
Enter password: (パスワード設定してないなら Enter を押せばいい)
mysql> status
--------------
...
Client characterset:    ujis
Server characterset:    ujis
..

となっていれば OK。

Bugzilla からアクセスするための設定

MySQL サーバにアクセスするためには、MySQLユーザというものを作る必要があります。これは Unix のユーザとは別物なので、Unix では rootユーザになっていなくても MySQL の rootユーザは使用できます。

Bugzilla はデフォルトでは bugs というユーザ名で MySQLサーバにアクセスします。このユーザは手動で作る必要があります。

MySQLクライアント (mysql コマンド) で MySQLサーバにアクセスして、SQL文を手で入力します。 データベース・テーブル・カラムといった DB 用語に詳しくない場合は DB の基礎をあらかじめご覧になっておいてください。

$ mysql -uroot -p
Enter password: (パスワード設定してないなら Enter を押せばいい)
mysql> use mysql;
             (mysql データベースを使用します)
mysql> grant select,insert,update,delete,index,
    -> alter,create,drop,references on bugs.* to bugs@localhost
    -> identified by 'password';
             (bugs ユーザを作り、bugs というデータベースに対して
             書き込み読み込みができる権限を与えます。ちなみに
             bugs データベースはまだ作成していませんが権限は与えられ
             ます。"password" の部分は自分で考えたものを入力して
             ください)

mysql> flush privileges;
             (権限を今すぐ有効にします)
mysql> quit;

これで MySQL は Bugzilla からも使えます。

ところで、Linux を起動したとき MySQL サーバは自動的には起動しません。

$ ls /etc/rc3.d/

と見てみると、MySQL サーバのファイルは K12mysqld となっていました。ファイル名の頭が K になっていると自動起動しません。
毎回手動で立ち上げてもいいですが、自動で立ち上げるなら

# /sbin/chkconfig mysql on

とすれば

# ls /etc/rc3.d/
S78mysqld

ファイル名の頭が S になったので、Linux 起動のとき MySQL サーバも自動起動します。

Perl モジュールのインストール

Perl モジュールの一覧 にあるものを MIME::Parser を除きすべてインストールします。(MIME::Parser は作業が面倒なうえ <bugzilla>/contrib/ の下にあるスクリプトを使うとき以外必要ないので今回はパスです)

OS をインストールした直後から入っているのはこれだけでした。

$ rpm -qa | grep perl
perl-NKF-2.03-1
perl-5.8.1-92
perl-Filter-1.29-8
perl-File-MMagic-1.16-3
perl-Text-Kakasi-1.05-8

しかし、perl 本体 (perl-5.8.1-92) 自体が かなりの perl モジュールを最初から含んでいます。Perl 5.005 には同梱されていなかったモジュールが Perl 5.8.1 には同梱されるようになったということもあります。

自作の Perl モジュールチェッカを実行してみると以下のようになりました。

# sh bzperlmod.sh.txt
not found: /Template
not found: /AppConfig
not found: /Date/Parse
not found: /GD/
not found: /Chart/Base
not found: /XML/Parser
not found: /MIME/Parser

これ以外の Data::Dumper などの perlモジュールは既にインストール済みです。

それではこれらをインストールしましょう。apt 提供元で RPM として用意されているのは以下のものです。

$ apt-cache search perl | grep "^perl-"
perl-Archive-Tar - A module for Perl manipulation of .tar files.
perl-BSD-Resource - BSD process resource limit and priority functions
perl-Bit-Vector - A module for high-performance Perl manipulation of bit vectors.
perl-Compress-Zlib - A module providing Perl interfaces to the zlib compression library.
perl-Crypt-SSLeay - Crypt::SSLeay - OpenSSL glue that provides LWP https support
perl-DBD-MySQL - A MySQL interface for perl
perl-DBD-Pg - A PostgresSQL interface for perl
perl-DBI - A database access API for perl
perl-Date-Calc - A module for extended and efficient date calculations in Perl.
perl-Devel-Symdump - A Perl module for inspecting Perl's symbol table.
perl-Digest-HMAC - Digest-HMAC Perl module
perl-Digest-SHA1 - Digest-SHA1 Perl module
perl-File-MMagic - A Perl module emulating the file(1) command.
perl-Filter - Filter Perl module
perl-Filter-Simple - Filter-Simple Perl module
perl-Frontier-RPC - A Perl interface for making and serving XML-RPC calls.
perl-HTML-Parser - A Perl module for parsing HTML.
perl-HTML-Tagset - HTML::Tagset - data tables useful in parsing HTML.
perl-Inline - Inline Perl module
perl-NKF - Perl extension for Network Kanji Filter
perl-Net-DNS - Net-DNS Perl module
perl-PDL - PDL Perl module
perl-Parse-RecDescent - Parse-RecDescent Perl module
perl-Parse-Yapp - Perl extension for generating and using LALR parsers.
perl-RPM2 - RPM2 Perl module
perl-SGMLSpm - Perl library for parsing the output of nsgmls.
perl-TermReadKey - A perl module for simple terminal control.
perl-Text-Kakasi - kakasi library module for perl
perl-Time-HiRes - A Perl module for precise time measurements.
perl-TimeDate - A Perl module for time and date manipulation.
perl-URI - A Perl module implementing URI parsing and manipulation.
perl-XML-Dumper - Perl module for dumping Perl objects from/to XML
perl-XML-Encoding - A module for parsing encoded map XML files.
perl-XML-Grove - A Perl module providing simple access to the information set of parsed XML, HTML, or SGML instances.
perl-XML-Parser - A low level Perl module for parsing XML either via trees or streaming.
perl-XML-Twig - A perl module for processing huge XML documents in tree mode.
perl-libwww-perl - A Perl interface to the World-Wide Web.
perl-libxml-enno - A collection of Perl modules for XML parsing and validation.
perl-libxml-perl - A collection of Perl modules for working with XML.
perl-suidperl - suidperl, for use with setuid perl scripts
perl-Archive-Zip - Perl library for accessing Zip archives
perl-DateManip - Date manipulation routines for Perl
perl-Digest-Nilsimsa - Perl interface to the Nilsima Algorithm
perl-File-Tail - Perl extension for reading from continously updated files
perl-IO-stringy - I/O on in-core objects like strings and arrays
perl-Mail-Alias - Mail::Alias perl module.
perl-Mail-Sendmail - Simple platform independent mailer for Perl
perl-MailTools - MailTools module for Perl
perl-Net-Netmask - Perl module for manipulation and lookup of IP network blocks
perl-RPM-Specfile - Perl extension for creating RPM spec files
perl-String-ShellQuote - Perl module for quoting strings for passing through the shell

今回 RPM からインストールできるのは perl-XML-Parser, perl-TimeDate (Data::Parse を含んでいる) の 2つだけですね。それではインストールします。

# apt-get install perl-TimeDate perl-XML-Parser
The following extra packages will be installed:
  perl-HTML-Parser perl-HTML-Tagset perl-URI perl-libwww-perl
..
Unknown signature /var/cache/apt/archives/perl-TimeDate_1.1301-5_noarch.rpm: (SHA1) DSA sha1 md5 (GPG) NOT OK (MISSING KEYS: GPG#db42a60e)

という表示がでて、perl-TimeDate パッケージがインストールできませんでした。

以下のように /etc/apt/apt.conf を修正すると GPG 署名のチェックをしなくなり、インストールできます。

# diff -u /etc/apt/apt.conf.org  /etc/apt/apt.conf
--- /etc/apt/apt.conf.org       2004-02-18 14:53:50.000000000 +0900
+++ /etc/apt/apt.conf   2004-02-18 17:39:02.000000000 +0900
@@ -32,7 +32,7 @@
   };
   // These are for Lua-script configuration
   // Do GPG-signature checking for packages
-  GPG-Check "true";
+  GPG-Check "false";
   // Enable to upgrade kernel along with (dist-)upgrade
   Upgrade-Kernel "false";
   // Enable to hold back packages with modified config files in (dist-)upgrade

あと残っているモジュールは以下になります。

このモジュールをインストールするために、このモジュールが依存しているパッケージもインストールする必要があります。作業が比較的大変なので、RPM パッケージをこちらで用意しました。http://bugzilla.hp.infoseek.co.jp/fedoracore1/ から取得してすべてインストールしてください。

Perl モジュールのほかに、以下のパッケージもインストールしておいてください。

# apt-get install gd gd-devel gcc libpng-devel libjpeg-devel freetype-devel XFree86-devel

これらの RPM 作成方法を知りたい場合は Perl モジュールからの RPM 作成方法 をご覧ください。

Web サーバ (Apache)のインストール

ファイル取得・インストール

インストールします。

# apt-get install httpd
The following extra packages will be installed:
  apr apr-util

設定ファイルの場所を調べると

$ rpm -ql httpd | less

設定ファイルは /etc/httpd/conf/httpd.conf にあることが分かります。

以下の条件をみたすように、設定ファイルを編集します。

  1. Web サーバ を動作させるユーザ・グループを apache という名にする
    → rpm パッケージからインストールした場合は既に以下の部分で設定されている。
    User apache
    Group apache
    
  2. Web サーバにアクセスしたとき、Bugzilla のページが開かれるようにする
    → 今回 Bugzilla は /var/www/bugzilla/ に置くことにする。以下のように書き換える。
    @@ -271,7 +271,7 @@
     # documents. By default, all requests are taken from this directory, but
     # symbolic links and aliases may be used to point to other locations.
     #
    -DocumentRoot "/var/www/html"
    +DocumentRoot "/var/www/bugzilla"
    
     #
     # Each directory to which Apache has access can be configured with respect
    
  3. CGI スクリプトを有効にする
    → 以下の設定を追加する。この設定の Options ExecCGIAddHandler の部分で CGI スクリプトが有効になる。
    @@ -327,6 +327,13 @@
    
     </Directory>
    
    +<Directory /var/www/bugzilla>
    +    Options -Indexes FollowSymLinks ExecCGI
    +    AddHandler cgi-script .cgi
    +    AllowOverride Limit
    +</Directory>
    +
    +
     #
     # UserDir: The name of the directory that is appended onto a user's home
     # directory if a ~user request is received.
    
  4. .htaccess というアクセス制限をおこなうためのファイルを有効にする
    → 上の設定の AllowOverride の部分で .htaccess が有効になる。
  5. http://domain/ という URLが要求されたとき http://domain/index.cgi というファイルが読み込まれるようにする。
    → 以下のように DirectoryIndex の部分に追加する。
    @@ -381,7 +388,7 @@
     # negotiated documents.  The MultiViews Option can be used for the
     # same purpose, but it is much slower.
     #
    -DirectoryIndex index.html index.html.var
    +DirectoryIndex index.html index.html.var index.cgi
    
     #
     # AccessFileName: The name of the file to look for in each directory
    
  6. Apache2 では出力文字コードのデフォルトが日本語になっていないので、日本語 (EUC-JP) を通るようにする (Apache 1.3 系では必要ない。Apache 2 系で必要)
    → 以下のように AddDefaultCharset の部分をコメント化する。
    @@ -760,7 +767,7 @@
     # reasons in browsers, related to javascript and URL parsing
     # which encourage you to always set a default char set.
     #
    -AddDefaultCharset UTF-8
    +#AddDefaultCharset UTF-8
    
     #
     # Commonly used filename extensions to character sets. You probably
    

設定ファイルを書き換えたあとは、Apache Web サーバを再起動 (停止してから起動) させてください。

Apache Web サーバの停止・起動はそれぞれ以下のようにおこないます。

# /etc/init.d/httpd stop

# /etc/init.d/httpd start

ところでこのままでは Linux を再起動したとき Apache Web サーバは自動で起動しません。
Linux を起動したとき Apache Web サーバも自動的に起動させるには以下のようにします。

# /sbin/chkconfig httpd on

このあとの作業はどの OS も同じなのでインストールのページで続きをご覧ください。