Time-stamp: "Sep 04 2003"
バグトラッキングシステム Bugzilla 2.16 に必要なデータベースシステム (MySQL)・ Perl モジュール・ Web サーバ (Apache) をソースコードからコンパイル・インストールする方法、そして設定方法について説明します。
このページは FreeBSD 5.1 へのインストールを説明します。
Perl 5.8.0, Apache 2.0.x, MySQL 4.0.x という現在 (2003-08-29) の最新安定版を使用します。
Perl 5.8.0 は Packages を使用してインストールしました。MySQL, Apache なども Ports/Packages でインストールすることができますが今回は ソースコードからインストールします。
インストールの前に、セキュリティを高めるため MySQL 専用の Unixアカウントを作成します。
# echo mysql:::::::/home/mysql:tcsh:mysql | adduser -f -
グループ名・ユーザ名ともに mysql
にします。パスワードも mysql
にしました。上の方法は FreeBSD において何も聞かれることなくいっぺんにユーザを設定する方法ですが、# adduser
とすることで一つひとつ質問に答える形でアカウントを作成することもできます。
# groupadd mysql # useradd -g mysql mysql
MySQL ダウンロードページ で MySQL 4.0 を選択し、画面の一番下にある Source downloads → Tarball (tar.gz) を取得します。2003-09-01 の最新版は 4.0.14 でした。
ソースコードを展開してそのディレクトリの中で configure を実行します。詳しくは展開したソースの中にある INSTALL-SOURCE というファイルをみてください。
% ./configure --prefix=/usr/local/mysql --with-extra-charsets=all --with-charset=ujis
オプションの説明ですが、--prefix=<ディレクトリ>
でインストール先のディレクトリを指定します。デフォルトでは /usr/local なので実行ファイルは /usr/local/bin に入りますが上の指定だと /usr/local/mysql/bin 以下に入ることになります。
charset
関連は文字コードを指定しています。--with-charset=ujis
で EUC-JP という文字コードをデフォルトで使用するよう指定しています。
次にコンパイル・インストールします。上記のインストールマニュアルには GNU Make を使えと書いてあったので gmake を使用します。
% gmake # gmake install
MySQL をインストールした直後はデータベースファイルが存在しません。ソースコードを展開したときのディレクトリで scripts/mysql_install_db スクリプトを実行することでデータベースを初期化できます。
# scripts/mysql_install_db
データベースファイルのディレクトリはインストールしたままの状態だと /usr/local/mysql/var になっています。このディレクトリ以下の所有ユーザは MySQLサーバを動作させるUnixユーザ (今回は mysql
) と同じでなければならないので、chown コマンドで所有ユーザ・グループを変更しておきます。これを忘れると MySQL サーバが起動できないので気をつけましょう。
# chown -R mysql:mysql /usr/local/mysql/var
MySQL サーバを起動・停止するには次のようにします。
# /usr/local/mysql/bin/mysqld_safe --user=mysql & # /usr/local/mysql/bin/mysqladmin shutdown
もし停止がうまくいかないようなら、次のようにしてください。
# /usr/local/mysql/bin/mysqladmin -u root -p shutdown
FreeBSD を起動したとき MySQL サーバも自動的に起動させるには以下のようなスクリプトを /usr/local/etc/rc.d/ に置き、実行権を与えます。スクリプトの --skip-networking
とは他のマシンからネットワーク越しには MySQL サーバに接続できないようにしてセキュリティを高めます。
# cp mysql.sh /usr/local/etc/rc.d/ # chmod 755 /usr/local/etc/rc.d/mysql.shmysql.sh:
#!/bin/sh cd /usr/local/mysql/bin ./mysqld_safe --user=mysql --skip-networking &
MySQL サーバにアクセスするためには、MySQLユーザというものを作る必要があります。これは Unix のユーザとは別物なので、Unix では root ユーザになっていなくても MySQL の root ユーザは使用できます。
以下の図には 緑の枠で囲まれた 1つの データベース があります。その中には 2つの テーブル があります。そのテーブルの中に書いてある「名前」「性別」「年齢」といった項目が カラム です。黄色く (オレンジのも含みます) 塗ってあるのが 行 です。
名前 | 性別 | 年齢 | 職業 |
Robert | Male | 11 | Student |
David | Male | 33 | Businessman |
Michael | Male | 55 | Columnnist |
名前 | 電話番号 | 住所 |
Robert | 123-3210 | CA |
David | 888-8887 | UT |
Michael | 456-7890 | AZ |
Bugzilla はデフォルトでは bugs
というユーザで MySQL サーバにアクセスします。このユーザは手動で作る必要があります。パスワードも考えておきましょう。
MySQL クライアント (mysql コマンド) で MySQLサーバにアクセスして、SQL文を手で入力します。
% /usr/local/mysql/bin/mysql -uroot -p Enter password: (MySQL ユーザの root のパスワードを設定していない場合は 何も入力せずに Enter を押しましょう。) mysql> use mysql; (mysql データベースを使用します) mysql> grant select,insert,update,delete,index, -> alter,create,drop,references, lock tables, -> create temporary tables on bugs.* to bugs@localhost -> identified by 'password'; (bugs ユーザを作り、bugs というデータベースに対して 書き込み読み込みができる権限を与えます。ちなみに bugs データベースはまだ作成していませんが権限は与えられ ます。"password" の部分は自分で考えたものを入力して ください。MySQL 3.23.x と MySQL 4.0.x ではここの SQL 文が 少し異なるので注意) mysql> flush privileges; (権限を今すぐ有効にします) mysql> quit;
もうひとつ。
MySQLの root ユーザも Unixの root ユーザと同じくすべての権限をもっています。しかしその MySQL の root のパスワードは最初は空になっているので、適切なパスワードを設定しておいたほうがよいでしょう。
% /usr/local/mysql/bin/mysql -uroot -p
Enter password:
mysql> set password for root=PASSWORD('password');
mysql> flush privileges;
Perl モジュールのインストール方法にはいろいろ方法があります。
Bundle::Bugzilla
をインストールすると、必要なモジュールがすべてインストールされる。
CPAN.pm を使ったインストール方法は rpm からのインストールを参考にしてください。
上記の選択肢のうち 2), 3) の CPAN.pm は使うとラクなのですが、エラーが出て止まることがあり、そうなるとどうすればいいのか分かりにくいことなど欠点もあります。 今回は選択肢 1) の ソースコードからのインストール を説明します。
必要となる Perl モジュールは以下のものです。
以上のファイルのうち、いくつかは Perl 本体が既に含んでいる可能性もあります。Perl 5.005 には同梱されていなかったモジュールが Perl 5.8.0 では同梱されるようになったということもあります。
checkPerlModules.shで今たりない Perl モジュールを調べることができます。私のつくった簡易スクリプトなので信頼できないかもしれませんが。 使い方は
$ sh checkPerlModules.sh
です。not found: <モジュール名> と表示されたものが現在インストールされていない Perl モジュールです。
% sh checkPerlModules.sh not found: /DBI not found: /Data/ShowTable not found: /Mysql not found: /Date/Parse not found: /AppConfig not found: /Template not found: /XML/Parser not found: /GD/ not found: /Chart/Baseと出ました。
上記モジュールリストからファイルを取得してください。リンク先ページの画面中央くらいにある [Download] をクリックすると最新バージョンが取得できます。
Bundle::Bugzilla
を利用したときも最新バージョンがインストールされます。
参考までに私がインストールしたバージョンを示しておきます。
Perl モジュールのインストール方法は共通化されていて、どれも同じです。 ファイルを展開したあとで
% perl Makefile.PL && make && make test # make install
以上の手順でどれもインストールできます。make test
が終わったときに All tests successful と表示されればインストール OK です。
もし All tests successful と表示されない場合は問題があります。何か別の Perl モジュールが必要なのかもしれません。エラーメッセージを見て付属のドキュメントを読んで対処してから make test
し直してみてください。
インストールする順番によっても make test
がうまくいかないことがありますが、上記モジュールリストの順番でインストールすれば問題ないはずです。もしどうしても All tests successful と表示されないなら、make install
してしまってもたぶんだいじょうぶなのではないでしょうか..。
コンパイルするとき 選択肢が表示され入力まちになる Perl モジュールがあります。
Msql-Mysql-modules はその一つです。
まず以下のように聞いてきます。
Which drivers do you want to install?
1) MySQL only
2) mSQL only (either of mSQL 1 or mSQL 2)
3) MySQL and mSQL (either of mSQL 1 or mSQL 2)
4) mSQL 1 and mSQL 2
5) MySQL, mSQL 1 and mSQL 2
Enter the appropriate number: [3] 1
デフォルトの 3 ではなく 1 と答えます。 次にこう聞いてきます。
Do you want to install the MysqlPerl emulation? You might keep your old
Mysql module (to be distinguished from DBD::mysql!) if you are concerned
about compatibility to existing applications! [n] y
デフォルトの n ではなく y と答えます。 あとは Enter を押していれば問題ないはずです。なおこのモジュールは動作テストのため MySQL サーバと通信をおこないます。ですからあらかじめ MySQL サーバを起動しておいてください。
Template-Toolkit もコンパイルのとき質問してきます。私の場合全部 Enter を押しておけば All tests successful になりました。
Perl の GD モジュールの は、C言語で書かれた libgd を必要としています。グラフ画像として PNG 形式の画像を作るので libpng も必要です。
JPEG 画像の生成 (libjpg が必要) や XPM 画像は Bugzilla でグラフ画像を作るだけなら必要ないので、デフォルトの y ではなく n と答えてかまいません。
インストールの前に、MySQL と同様に Apache 専用の Unixアカウントを作成します。
# echo apache:::::::/home/apache:tcsh:apache | adduser -f -
グループ名・ユーザ名ともに apache
、パスワードも apache
です。
2003-09-02 現在の最新版は 2.0.47 でした。ダウンロードページから Unix Source: httpd-<version>.tar.gz を取得します。
コンパイル・インストール方法などで一番参考になるのは Apache HTTP サーバのドキュメントです。このページは日本語版が用意されているので、もし英語で表示された場合画面の中にある
Available Languages: de | en | ja | ko | ru
の ja
をクリックすると日本語で読めます。
それではコンパイルします。
% ./configure --enable-cgi --enable-so % make # make install
configure のときに prefix
を特になにも指定しないと、/usr/local/apache2 以下にファイルがインストールされます。
以下の条件をみたすように、設定ファイル /usr/local/apache2/conf/httpd.conf を編集します。
apache
という名にする。
--- httpd.conf.org Wed Sep 3 14:51:02 2003 +++ httpd.conf Wed Sep 3 14:53:09 2003 @@ -263,8 +263,8 @@ # when the value of (unsigned)Group is above 60000; # don't use Group #-1 on these systems! # -User nobody -Group #-1 +User apache +Group apache </IfModule> >/IfModule>
@@ -303,7 +303,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 "/usr/local/apache2/htdocs" +DocumentRoot "/var/www/bugzilla" # # Each directory to which Apache has access can be configured with respect @@ -328,7 +328,7 @@ # # This should be changed to whatever you set DocumentRoot to. # -<Directory "/usr/local/apache2/htdocs"> +<Directory "/var/www/bugzilla"> # # Possible values for the Options directive are "None", "All",
<Directory "/var/www/bugzilla">
のすぐ下の部分を以下のように書き換える。
@@ -342,7 +342,8 @@ # http://httpd.apache.org/docs-2.0/mod/core.html#options # for more information. # - Options Indexes FollowSymLinks + Options -Indexes FollowSymLinks ExecCGI + AddHandler cgi-script .cgi # # AllowOverride controls what directives may be placed in .htaccess files.
<Directory "/var/www/bugzilla">
の下にある以下の部分を書き換える。
@@ -349,7 +349,7 @@ # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # - AllowOverride None + AllowOverride Limit # # Controls who can get stuff from this server.
@@ -390,7 +390,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
@@ -791,7 +792,7 @@ # reasons in browsers, related to javascript and URL parsing # which encourage you to always set a default char set. # -AddDefaultCharset ISO-8859-1 +#AddDefaultCharset ISO-8859-1 # # Commonly used filename extensions to character sets. You probably
設定ファイルを書き換えたあとは、Apache Web サーバを再起動してください。
# /usr/local/apache2/bin/apachectl start # /usr/local/apache2/bin/apachectl stopFreeBSD を起動したとき Apache Web サーバも自動的に起動させるには 以下のスクリプトを /usr/local/etc/rc.d/ に置き、実行権を与えます。
# cp apache.sh /usr/local/etc/rc.d/ # chmod 755 /usr/local/etc/rc.d/apache.shapache.sh:
#!/bin/sh cd /usr/local/apache2/bin ./apachectl start