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
あと残っているモジュールは以下になります。
- 残っている Perl モジュールのリスト
- Template Toolkit
- AppConfig (Template Toolkit が必要としているので、Template Toolkit より前にインストールするほうがいい)
- GD (Template Toolkit が使用するので、Template Toolkit より前にインストールするほうがいい)
- Chart::Base
このモジュールをインストールするために、このモジュールが依存しているパッケージもインストールする必要があります。作業が比較的大変なので、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 にあることが分かります。
以下の条件をみたすように、設定ファイルを編集します。
- Web サーバ を動作させるユーザ・グループを apache という名にする
→ rpm パッケージからインストールした場合は既に以下の部分で設定されている。User apache Group apache
- 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
- CGI スクリプトを有効にする
→ 以下の設定を追加する。この設定のOptions ExecCGI
とAddHandler
の部分で 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.
- .htaccess というアクセス制限をおこなうためのファイルを有効にする
→ 上の設定のAllowOverride
の部分で .htaccess が有効になる。 - 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
- 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 も同じなのでインストールのページで続きをご覧ください。