Smart -Web Magazine

WEB開発者に嬉しいステキ講座

MENU

Linux 版 MySQL のインストール

2009年7月6日 コメントの追加

MySQLのインストール方法はソース、バイナリ、RPMの3つが用意されています。コンパイル済みのバイナリパッケージ、もしくはRPMを使えばかなり時間が節約できますが、インストール時にカスタマイズできる範囲は限られます。ソースからインストールするにはある程度の知識とツールが必要になりますが、細かいインストールオプションを設定することが可能です。

1.MySQLのインストール概要

MySQLのバージョン

MySQLのインストールファイルには、開発バージョンと安定バージョンが用意されています。開発バージョンという名称から推測するとまだ未完成のバージョンのように感じますが、開発元でのテストが行われており、実用での採用も十分検討の余地があります。

MySQLのファイル名にはバージョン番号が付いているので、例えば、mysql-5.0.12-betaとなっていれば、バージョン番号5.0.12のベータ版と解釈することができます。

ファイル名の最後の単語(alpha/beta/gamma)でリリースの安定レベルを知ることができます。

サフィックス 内容
alpha 新しい機能の追加され、開発元でテストされている状態です。
beta 新規の開発に使用できます。新しい機能の追加はありませんが、全てのコードがテストされています。
rc リリース版候補です。安定していると考えられますが、使用事例がまだ少ない状態です。
- ファイル名最後に単語が付いていなければ、バグレポートなしでしばらくの間動作していたことを意味します。

MySQLのダウンロード

MySQLの公式ダウンロード場所

MySQLホームページ

インストール場所

バイナリとソース配布のインストールで生成される、ディレクトリのレイアウトを説明します。

バイナリ配布でのインストール先

バイナリ配布は解凍することによりインストールされ、通常は"/usr/local/mysql"の中の次のディレクトリを生成します。

ディレクトリ ディレクトリの内容
bin クライアントプログラム、mysqldサーバ
data ログファイル, データベース
include インクルードファイル
lib Libraries
scripts mysql_install_db
share/mysql エラーメッセージファイル
sql-bench ベンチマーク

ソース配布でのインストール先

ソース配布はconfigureしコンパイルした後にインストールされます。通常、"/usr/local"下に次のサブディレクトリが生成され、各種プログラムファイルがインストールされます。

ディレクトリ ディレクトリの内容
bin クライアントプログラムとスクリプト
include/mysql インクルードファイル
info Info 形式のドキュメント
lib/mysql Libraries
libexec mysqld サーバ
share/mysql エラーメッセージファイル
sql-bench ベンチマークと crash-me test
var データベースとログファイル

ソースインストールのレイアウトはバイナリインストールと次の点が異なります。

  • mysqldサーバは "/bin" ではなく "libexec" ディレクトリにインストールされます。
  • データディレクトリは "data" ではなく "var" です。
  • mysql_install_dbは "/usr/local/mysql/scripts" ではなく "/usr/local/bin" ディレクトリにインストールされます。
  • ヘッダーファイルのディレクトリは "include/mysql" で、ライブラリのディレクトリは "lib/mysql" です。

2.ソース配布でのインストール

簡単インストールコマンドのリスト

MySQLをソースからインストールするために行なわなければならない基本的なコマンドを紹介します。

> groupadd mysql
> useradd -g mysql mysql
> gunzip < mysql-VERSION.tar.gz | tar -xvf -
> cd mysql-VERSION
> ./configure --prefix=/usr/local/mysql
> make
> make install
> scripts/mysql_install_db
> chown -R root /usr/local/mysql
> chown -R mysql /usr/local/mysql/var
> chgrp -R mysql /usr/local/mysql
> cp support-files/my-medium.cnf /etc/my.cnf
> /usr/local/mysql/bin/safe_mysqld --user=mysql &

インストール手順

MySQL用のユーザとグループの作成

mysqldが動作するためのユーザとグループを作成しましょう。次のコマンドはmysqlグループとmysqlユーザを作成します。

groupadd mysql
useradd -g mysql mysql

上記コマンドがない場合は、環境によってはadduserやaddgroupコマンドを使うことになります。

ダウンロードファイルを、解凍したいディレクトリに移動し、解凍

ファイルを解凍したいディレクトリに移動 mv mysql-VERSION.tar.gz /usr/src/

ファイルを解凍 gunzip < mysql-VERSION.tar.gz | tar xvf -
...mysql-VERSIONディレクトリが作成される

解凍されたディレクトリに移動

cd mysql-VERSION

configureコマンドでコンパイル

configureの実行時、他にいくつかのオプションを指定できます。詳細は下記の【インストールオプション】を参照してください。

./configure --with-charset=ujis \
--prefix=/usr/local \
--localstatedir=/sql/data

make

コンパイルが失敗する場合は【コンパイル時の問題】を参照してください。

root権限でインストール

make install

MySQL特権テーブルを生成

./scripts/mysql_install_db

mysql_install_dbスクリプトはmysql データベースにuserdbhosttables_privcolumns_privテーブルを作ります。これらの特権はrootユーザーにMySQLの管理者権限を許可し、そして、だれもが「test」という名前のデータベースを作成、使用できるように許可されています。

※ rootのパスワードの初期値は空です。このことは、全てのユーザがパスワードなしでrootになれ、全ての特権許可を得ることができることを意味します。

mysql_install_db スクリプトを走らせるにはいくつか選択があります。

  • mysql_install_db を走らせる前に編集して、許可の初期状態を変更
  • インストール後に許可を変更したい場合、
    # mysql -u root mysql
    で MySQLの rootで接続し、SQL 文を実行
  • すでに許可テーブルが作成された状態で、完全に許可テーブルを作成し直す

データディレクトリ以下のファイルの所有者を mysql に、それ以外のファイルの所有者をrootにする手順は以下のとおりです。

chown -R root /usr/local/mysql
chown -R mysql /usr/local/mysql/data
chgrp -R mysql /usr/local/mysql

次に必要に応じて下記の操作を行う

  • Perl DBI/DBD インタフェースのサポートをインストールする場合は、 「PerlDBI/DBDインターフェイス」を参照のこと。
  • MySQL をマシン起動時に自動的に開始したい場合、 「support-files/mysql.server」 をシステムのスタートアップファイルがある場所にコピーします。詳しくは「自動起動と停止」を参照。

全てがインストールされた後、配布の初期化とテストを行なうべきです。

/usr/local/mysql/bin/safe_mysqld --user=mysql &

MySQLサーバーを開始

BINDIRはsafe_mysqldがインストールされているディレクトリ"/usr/local/bin"です。

BINDIR/safe_mysqld &

コマンドがすぐに"mysqld daemon ended"エラーで失敗する場合、"mysql-data-directory/$HOSTNAME.err"ファイルになんらかの情報を見つけることができます。

インストールオプション

configureスクリプトには、MySQLをコンフィグする際のオプションが多数用意されている。通常は、configureコマンドラインにオプションを使用して行う。いくつかの環境変数を使用してもconfigureに影響を与えることができます。

configureがサポートするオプションの一覧は、次のコマンドを実行:

/configure --help

コンパイルオプション

1) クライアントだけをコンパイルする

/configure --without-server

2) ベンチマークツールをインストールしない

/configure --without-bench

3) ドキュメントをインストールしない

/configure --without-docs

4) ログファイルとデータベースディレクトリを指定する

インストール先ディレクトリの変更:mysqlプログラムを「/usr/local/mysql」配下にインストールします。

/configure --prefix=/usr/local/mysql

データベースディレクトリの変更:データベースディレクトリを「/usr/local/mysql/data」に変更します。

/configure --localstatedir=/usr/local/mysql/data

5) ソケットの位置の変更

ソケットをデフォルト位置(通常は「/tmp」または「/var/run」)でなく他のディレクトリに変更します。

/configure --with-unix-socket-path=/path/to/socket/dir

※「/path/to/socket/dir」は絶対パス名でないといけません。

6) 静的リンクされたプログラムをコンパイル

/configure --with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static

7) 非NULL項目にデフォルトの項目値を使用しない

非 NULL 値を要求する全ての項目に値を明示的に指定しなければ、INSERTステートメントはエラーを生成します。デフォルト値の使用を抑えるには、次のように configure を実行します。

CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure

8) 文字セットの変更

./configure --with-charset=CHARSET

※ 文字セットを変更したい場合は、コンフィグレーション間でmake distcleanを行なう必要があります
※ テーブルを生成した後に文字セットを変更する場合、 isamchk -r -q を全てのテーブルに実行する必要があります。そうでないと、インデックスは正しくソートされません。

パッチの適用

MySQLのパッチは以下の場所に公開されています。

パッチエリア

FTPサイトに配布されるパッチはテキストかgzip圧縮されたファイルです。テキストの場合は、上に示したメーリングリストからのパッチと同じにします。 圧縮されたパッチを適用するには、MySQLソースツリーのトップレベルに移動し、以下のコマンドを実行します。

gunzip < patch-file-name.gz | patch -p1
rm config.cache
make clean

それから通常のソースインストールの指示をconfigureから始めます。現在実行しているMySQLをシャットダウンし、make install実行後、 MySQLサーバを再起動します。

メーリングリストのパッチを適用するには、 そのメッセージをファイルに保存した後、 MySQLソースツリーに移動して、以下のコマンドを実行します。

patch -p1 < patch-file-name
rm config.cache
make clean

3.バイナリ配布でのインストール

簡単インストールコマンドのリスト

MySQLをバイナリからインストールするための基本的なコマンドを紹介します。

> groupadd mysql
> useradd -g mysql mysql
> tar xvfz mysql-VERSION-OS.tar.gz
> ln -s mysql-VERSION-OS mysql
> cd mysql
> scripts/mysql_install_db
> chown -R root /usr/local/mysql
> chown -R mysql /usr/local/mysql/data
> chgrp -R mysql /usr/local/mysql
> chown -R root /usr/local/mysql/bin
> bin/safe_mysqld &

新しいユーザを追加するには bin/mysql_setpermission スクリプトを使用できます。使用の際はDBIとMsql-Mysql-modulesのPerlモジュールをインストールする必要があります。

インストール手順

MySQL用のユーザとグループの作成

mysqldが動作するためのユーザとグループを作成しましょう。次のコマンドはmysqlグループとmysqlユーザを作成します。

> groupadd mysql
> useradd -g mysql mysql

上記コマンドがない場合は、環境によってはadduserやaddgroupを使うことになります。使い方は同じです。

バイナリファイルを解凍する

それではインストールしてみましょう。まず、解凍したいディレクトリを選んで、そこで解凍します。以下の例では、/usr/local に解凍し、MySQLをインストールするディレクトリ /usr/local/mysql を作っています。

ファイルを解凍 tar xvfz mysql-VERSION-OS.tar.gz
...(ファイルが展開されmysql-VERSION-OSディレクトリが作成される)


リンクを作成 ln -s mysql-VERSION-OS mysql


mysqlディレクトリに移動 cd mysql

いくつかのファイルとサブディレクトリがmysqlディレクトリ中にあります。インストール目的の最も重要なものは"bin"と"scripts"ディレクトリです。

  • binディレクトリ
    このディレクトリはクライアントプログラムとサーバを含んでいます。シェルがMySQLプログラムを正しく見つけられるように、このディレクトリのフルパス名をPATH環境変数に追加します。
  • scriptsディレクトリ
    このディレクトリはmysql_install_dbスクリプトを含んでいる。これはサーバアクセスパーミッションを初期化するために使用されます。

mysqlaccessを使用し、かつMySQL配布を非標準の場所に持ちたい場合は、mysqlaccessがmysqlクライアントを見つけようとする場所を変更する必要があります。

$MYSQL = '/usr/local/bin/mysql';

見つけたらパスをmysqlが実際にシステム上におかれている場所を示すように変更します。

MySQL許可テーブルを作成します(これは初めて MySQL をインストールするときだけ行います)。

scripts/mysql_install_db

MySQL をマシン起動時に自動的に開始したい場合、 "support-files/mysql.server"をシステムのスタートアップファイルがある場所にコピーします。

データディレクトリ以下のファイルの所有者をmysqlに、それ以外のファイルの所有者をrootにする手順は以下のとおりです。

chown -R root /usr/local/mysql
chown -R mysql /usr/local/mysql/data
chgrp -R mysql /usr/local/mysql

MySQLサーバーは以下のコマンドで開始できます。

bin/safe_mysqld &

クライアントプログラムのビルド

自分で書いたか、第三者が作成したMySQLクライアントプログラムをコンパイルする場合、 -lmysqlclientオプションを使用してリンクします。また -L オプションを指定して、ライブラリがどこにあるか指定する必要がある場合もあります。例えばライブラリが"/usr/local/mysql/lib"にインストールされるならば、リンクの時に"-L/usr/local/mysql/lib -lmysqlclient"と指定します。

MySQLヘッダーファイルを使用するクライアントのために、それらをコンパイルする時には、-I オプションを指定しなければならない事もあります。 (例えば、 "-I/usr/local/mysql/include") 

4.Linux RPM でのインストール

以下が使用するであろうRPM filesです。

  • MySQL-VERSION.i386.rpm
     MySQL サーバー。ただ単に他のマシン上で走っている MySQL サーバーに接続するだけなら、これは不要でしょう。 
  • MySQL-client-VERSION.i386.rpm
     MySQL クライアント標準プログラム。このパッケージはほとんどの場合インストールすることになるでしょう。
  • MySQL-bench-VERSION.i386.rpm
     ベンチマーク。perl msql-mysql-modules RPM が必要。
  • MySQL-devel-VERSION.i386.rpm
     他の MySQL クライアント(perlモジュールのような)をコンパイルするのに必要なライブラリーとインクルードファイルを含みます。
  • MySQL-VERSION.src.rpm
     上記全てのソース。これは他のアーキテクチャ用に RPM を作成する場合にのみ必要でしょう。 (例えば Alpha or SPARC)

RPMパッケージに含まれるファイルです。

rpm -qpl MySQL-VERSION.i386.rpm

インストールの最小の方法:

rpm -i MySQL-VERSION.i386.rpm MySQL-client-VERSION.i386.rpm

クライアントパッケージだけをインストール:

rpm -i MySQL-client-VERSION.i386.rpm

RPMはデータを"/var/lib/mysql"に保存します。 RPMは起動時にサーバーを立ちあげるように、"/sbin/rc.d/"に登録します。

RPM fileインストール後、「バイナリインストール」セクションに進み、 MySQL許可テーブルの作成から始めましょう。

5.インストール後の設定とテスト

各ディレクトリの説明

バイナリ配布を使用する場合、トップディレクトリはインストール先のディレクトリ"/usr/local/mysql"になります。ソース配布の場合、トップディレクトリはMySQLのソースディレクトリです。

  • SRCDIR
    mysqlのソースを展開したディレクトリです。通常は"/usr/src/mysql-version"となります。
  • BINDIR
    mysqladminやsafe_mysqldがインストールされたディレクトリ。ソースからインストールした場合、通常は"/usr/local/bin"だ。 バイナリ配布を使用しているはバイナリ配布の"bin"ディレクトリになります。
  • EXECDIR
    mysqldサーバーのインストール先。ソースからインストールした場合、"/usr/local/libexec"です。バイナリ配布を使用している場合、BINDIR ディレクトリと同一になります。

オプションファイル

MySQLのサーバー、クライアントともに、オプションファイルからデフォルトの起動オプションを読み込むことができます。

UNIXではMySQLは以下のファイルからデフォルトオプションを読み込みます。

ファイル名 説明
/etc/my.cnf グローバルオプション
データディレクトリ/my.cnf サーバ用オプション
~/.my.cnf ユーザ用オプション

「データディレクトリ」は MySQL のデータを格納するディレクトリ ("/usr/local/mysql/data"もしくは"/usr/local/var")。 

Win32ではMySQLは以下のファイルからデフォルトオプションを読み込む:

ファイル名 説明
C:\my.cnf グローバルオプション
C:\mysql\data\my.cnf ユーザ用オプション

MySQLは上記の表にかかれている順にオプションファイルを読みます。複数オプションファイルがあった場合は、後から読まれた設定が有効になります。全てのオプションはコマンドラインの引数に上書きされます。いくつかのオプションは環境変数に定義できます。オプションファイルとコマンドラインの引数は環境変数を上書きします。

以下のプログラムはオプションファイルをサポートします。

mysql, mysqladmin, mysqld, mysqldump, mysqlimport, isamchk and pack_isam.

オプションファイルには、プログラムがサポートしているコマンドラインの long オプション(例えば、-u ではなくて --user の方)を書くことができます。プログラムを --help で起動すれば、設定可能な変数名が得られます。

オプションファイルの書式

#comment
コメントは `#' か `;' 文字で始めます。空の行は無視します。
[group]
グループ宣言。 group はオプションを定義するプログラムかグループの名前です。この宣言の後、オプション か set-variable 行で、このグループにオプションを与えます。このセクションの範囲は、他のグループ宣言の行が来るか、ファイルの最後に来るまでです。
option
これはコマンドラインの --option と等価です。
option=value
これはコマンドラインの --option=value と等価です。
set-variable = variable=value
これはコマンドラインの --set-variable variable=value と等価です。これは mysqld 変数で使用される形式です。

client グループは、全ての MySQL クライアント(mysqldは除)に対してオプションを定義します。これはサーバーに接続する際に使用するパスワードを指定できるグループです(この場合、オプションファイルは自分だけが読み書きできるようにしましょう)。

オプションや値の善後にある全てのブランク文字は自動で取り除かれます。値として、`\b',`\t', `\n', `\r', `\\' and `\s' のエスケープシーケンスが使用できます。 (`\s' == blank).

オプションファイル例:

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
set-variable = key_buffer=16M
set-variable = max_allowed_packet=1M

[mysqldump]
quick

ユーザーオプションファイル例:

[client]
# The following password will be sent to all standard MySQL clients
password=my_password

[mysql]
no-auto-rehash

ソースには「my-example.cnf」 という名前のサンプルファイルが 「support-files」ディレクトリにあります。バイナリ配布を利用している場合は、 「DIR/share/mysql」ディレクトリを探すと良いでしょう(ここで DIR は MySQL がインストールされたディレクトリのパス名で、普通は `/usr/local/mysql')。この「my-example.cnf」 ファイルを自分のディレクトリに 「.my.cnf」という名前でコピーして使用できます。

MySQL プログラムにオプションファイルを読ませないようにするには、コマンドラインの一番最初に --no-defaults を追加します。これはオプションの最初でないと有効になりません。どのオプションが定義されているか確かめるには、--print-defaults を最初のオプションに指定します。

MySQLの開始

MySQLはsafe_mysqldスクリプトを使用して起動します。スクリプト自体はBourneシェルですから、編集してデフォルト値を変更することもできます。safe_mysqldにオプションを与えればMySQLデーモンのオプションとすることもできます。
MySQLを起動する場合、mySQLを直接使用しないでsafe_mysqldをバックグラウンドで起動したほうが良いでしょう。safe_mysqldスクリプトは、mysqldを起動したあとにmysqldが稼動しつづけているかチェックし、MySQLが落ちたら、自動的に再起動を行ってくれます。

許可テーブルのインストールとサーバーの開始(RPMはいらない)。

・テーブルのインストール
# SRCDIR/scripts/mysql_install_db

上記コマンドで、必要なテーブルがインストールされます。これはインストール後、1回だけ行います。

MySQLサーバーを起動します。

# BINDIR/safe_mysqld &

サーバーが接続を受け付けるか確認します。

# BINDIR/mysqladmin version
# BINDIR/mysqladmin variables

mysqladmin version の出力はインストールプラットフォームと MySQLのバージョンを出力します。mysqladmin の使用方法は、--helpオプションで起動することにより表示されます。

サーバーをシャットダウンします。

# BINDIR/mysq ladmin -u root shutdown

サーバーをリスタートするには、safe_mysqld か mysqld を直接実行します。

# BINDIR/safe_mysqld --log &

簡単なテスト方法

いくつかの簡単なテストでサーバーが動いているか確認できます。

# BINDIR/mysqlshow
+-----------+
| Databases |
+-----------+
| mysql |
+-----------+

# BINDIR/mysqlshow mysql
Database: mysql
+--------------+
| Tables |
+--------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+--------------+

# BINDIR/mysql -e "select host,db,user from db" mysql
+------+--------+------+
| host | db | user |
+------+--------+------+
| % | test | |
| % | test_% | |
+------+--------+------+

ベンチマークテスト

他のプラットフォームで MySQLのパフォーマンスを比較するために"bench"にベンチマークがあります。"bench/Results"ディレクトリには、他のデータベースやプラットフォームでベンチを実行した結果があります。全てのテストを実行するには、以下のようにします。

# cd bench
# ./run-all-tests

"tests"サブディレクトリでテストすることも可能です。例えば、"auto_increment.tst"の実行は以下のようにします。

# BINDIR/mysql -vvf test < ./tests/auto_increment.tst

これの結果は"./tests/auto_increment.res"ファイルに書き出されます。

RPM のソース配布には含まれますが、バイナリ配布には"sql-bench"ディレクトリがありません。この場合、ベンチマークをインストールする必要があります。 MySQL 3.22 のバイナリ配布から、"mysql-bench-VERSION-i386.rpm"という名前でRPMパッケージを作っており、これにはベンチマークのデータとコードが含まれます。

6.自動起動と停止

mysql.serverスクリプト

 mysql.serverスクリプトは start、stop引数を指定することによりサーバーを起動、停止できます。mysql.serverの格納場所はMySQLインストールディレクトリの「share/mysql」ディレクトリ、または MySQLソースツリーの"support-files"ディレクトリです。

MySQLの起動 mysql.server start


MySQLの停止 mysql.server stop

mysql.serverはサーバーを起動時する前にMySQLがインストールされたディレクトリをカレントディレクトリとし、safe_mysqldを起動します。

MySQLの自動起動

システムが"/etc/rc.local"を起動スクリプトとして使用しているなら、以下のようにその中に記述しよう。これでシステムが起動するたびに、MySQLも自動的に起動します。

/bin/sh -c 'cd /usr/local/mysql ;
./bin/safe_mysqld &'

 mysql.serverのオプション設定

グローバル設定ファイルである"/etc/my.cnf"に、 mysql.serverのオプションを記述することも可能です。

my.cnfファイルは以下のような記述になっています。

[mysqld]
datadir=/usr/local/mysql/var
socket=/tmp/mysqld.sock
port=3306

[mysql.server]
user=mysql
basedir=/usr/local/mysql

mysql.serverスクリプトは以下の変数を使用します。

user, datadir, basedir, bindir , pid-file

7.PerlDBI/DBDインターフェイス

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

MySQLはPerl DBI/DBDインターフェースをサポートします。Perl 5.004以上が必要です。

Perlの配布物はtarでアーカイブされ、圧縮されています。"MODULE-VERSION.tar.gz"という命名規則で配布されています(MODULE はモジュール名、VERSION はバージョン番号)。

PerlからMySQLを利用するには、Perl モジュールの Data-DumperDBIMsql-Mysql-modulesをインストールする必要があります。これをダウンロードしたら、次のようにしてインストールします。例ではData-Dumperモジュールを扱っていますが、まったく同じ手順でDBI、Msql-Mysql-modulesをインストールできます。注意してもらいたい点は、初めてこれらのモジュールをインストールする際には、Data-Dumper を最初にインストールし、次に DBI、最後に Msql-Mysql-modulesの順でなければならないということです。

これらモジュールは下記のURLにあります。

ftp.mysql.com/pub/mysql/Contrib/
MySQLサイト Download
http://www.mysql.com/downloads/index.html
MySQLサイト Download Perl/DBI modules ページ
http://www.mysql.com/downloads/api-dbi.html

1.配布物をカレントディレクトリに展開

それでは、作業ディレクトリでファイルを解凍展開しましょう。

gunzip < Data-Dumper-VERSION.tar.gz | tar xvf -

上記のコマンドで"Data-Dumper-VERSION"というディレクトリができているはずです。

2.展開したディレクトリに移動

cd Data-Dumper-VERSION

3.コンパイル、インストール

perl Makefile.PL
make
make test
make install

新しいリリースのMySQLをインストールした場合は、常に Msql-Mysql-modulesを再構築、再インストールします。

Msql-Mysql-modulesの注意点

Msql-Mysql-modulesのインストールは、"perl Makefile.PL"のときに、コマンドラインで質問されます。

perl Makefile.PL

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

MySQLがインストールしたいだけであれば 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]

MysqlPerlエミュレーション機能のインストールが必要かと聞かれていますが、よっぽど古いMySQLモジュールを使っているのでない限り、そのまま[Enter] を押します。

次の質問は、ヘッダ・ファイルとライブラリが入るディレクトリについて。MySQLをRPMでインストールしたのでなければ、 [Enter] を押します。
指定する際は、たとえば"mysql.h"が"/usr/include/mysql/mysql.h"にあるならば、"/usr/lib/mysql/libmysqlclient.a"や "/usr/lib/libmysqlclient.so"と同様に、ヘッダ・ディレクトリに"/usr"と入力します。

Where is your MySQL installed? Please tell me the directory that
contains the subdir 'include'. [/usr/local]

これでインストール完了。

もし、下記のようなエラーが表示されたら、1時間ほど悩んでほしいですね。

Cannot find one of include/mysql/mysql.h, include/mysql.h in
 /Msql-Mysql-modules

これは、mysql-develがインストールされていないのが原因。RPMかなにかでインストールしておきましょう。
ライブラリが足りなくてインストールができない、というケースが結構多いです。

Perl DBI/DBD 使用時の問題

もしPerlが "../mysql/mysql.so"モジュールが見つからないとメッセージを出した場合、シェアードライブラリ "libmysqlclient.so"を取りこめなかった可能性があります。この場合は、以下の方法で解決できます。

  • Msql-Mysql-modulesのコンパイルでは、 perl Makefile.PL のかわりに perl Makefile.PL --static --config とします。
  • libmysqlclient.so を他のシェアードライブラリがあるところ("/usr/lib"とか "/lib")にコピーします。Linux の場合、"/etc/ld.so.conf" ファイルに、"libmysqlclient.so" があるディレクトリを書き加え、ldconfig -v を実行することもできます。
  • LD_RUN_PATH (LD_LIBRARY_PATH) 環境変数にlibmysqlclient.so があるディレクトリを書き加えます。make LD_RUN_PATH=/usr/lib

もし DBD-mysql で以下のエラーが出た場合、 gcc (あるいは、gccでコンパイルされた古いバイナリ) を使用している可能性があります。

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

上記のエラーの際は、"mysql.so" を作成する時のリンクコマンドに -L/usr/lib/gcc-lib/... -lgcc を追加します。 (Perlクライアントを作る際の make の出力をチェックしましょう) -L オプションに指定するのは、システム内の"libgcc.a"があるディレクトリです。

PerlとMySQLがgccを使用して作られていない場合も原因としてあります。この場合、両方をgccでコンパイルすることにより、ミスマッチを避けることができます。

8.アップグレード/ダウングレード

アップデートのリリース

MySQL のアップデート時には次のポリシーが使われています。

  • それぞれのマイナーアップデートで、バージョン文字列中の最後の数値が増加します。主要な新機能や前のバージョンとのマイナーな非互換があった時には、バージョン文字列中の2番目の数値が増加します。また、ファイル形式が変更した時、最初の数値が増加します。
  • 安定にテストされたリリースは年に約 1、2 回公開。その他、必要に応じてバグフィックスされたリリースを公開。
  • 作業中のリリースは約 1、8 週間毎に公開。
  • いくつかのプラットフォームのためのバイナリ配布も行っています。
  • バグ修正後、パッチを公開。
  • 危険ではないがやっかいなバグは、TCXに通知すればパッチが作成されます。その他の場合、製作中のパッチに含められます。

MySQLのアップグレード/ダウングレード

MySQL のリコンパイルによって文字セットが変更された場合、全てのテーブルに isamchk -r -q を行なう必要があります。そうしなければ、インデックスが正しい順になりません。

アップグレード時には、古いデータベースをバックアップもしておきます。もし新しい mysqldが予期せぬ何かを行った場合、それをシャットダウンし、古い mysqld を再起動することができます。

アップグレード後、再コンパイルされたクライアントプログラムで、予期せぬ問題が起きる場合、おそらく、プログラムのコンパイル時に古いヘッダやライブラリファイルを使用しています。この場合、"mysql.h"ファイルと"libmysql.a"ライブラリが、新しいMySQL配布からのものであるかどうかを確かめるために、日付をチェックします。もし違っていれば、プログラムを再コンパイルしましょう。

もし新しいmysqldサーバーが起動できないとか、パスワード無しで接続できないとか、いくつかの問題が発生した場合、以前のインストールでできた古い "my.cnf" ファイルがあるかどうかを確認しましょう。 program-name --print-defaults で確認できます。もしこの出力がプログラムの名称以外の物を返した場合、有効になっている "my.cnf" ファイルがあります。

新しいリリースの MySQL をインストールした場合に常に Msql-Mysql-modules を再構築、再インストールします。すべての DBI スクリプトがMySQLのアップグレード後にコアダンプする兆候に気づいた場合は、特に必要です。

他のアーキテクチャへのアップグレード

もし、MySQL 3.23 を使用しているならば、違うアーキテクチャのマシンに、".frm"、".MYI"、".MYD" ファイルをコピーすることができます。ただし、両者間で、同じ浮動小数点のフォーマットをサポートしている場合に限ります。

現在MySQLデータとインデックスファイル (ISAM "*.ISD" と "*.ISM" ファイル) はアーキテクチャ依存で、いくつかのケースではOS依存だ。アプリケーションを、現在のマシンとは異なるアーキテクチャ/OSを持つ他のマシンに移したい場合は、mysqldump を使用します。

有効なオプションが何かを見るためには、mysqldump --help を試そう。データを MySQLのより新しいバージョンに移す場合、速くコンパクトなダンプを得るために、より新しいバージョンで mysqldump --opt を使用します。

2つのマシン間でデータベースを移動する最も簡単な方法は、データベースが置かれているマシン上で次のコマンドを実行するです。

mysqladmin -h '任意のホスト名' create データベース名
mysqldump --opt データベース名 | mysql -h '任意のホスト名' データベース名

遅いネットワーク上でリモートマシンからデータベースをコピーしたい場合

mysqladmin create データベース名
mysqldump -h '任意のホスト名' --opt --compress データベース名 | mysql データベース名

ファイル内の結果を格納(この例では圧縮されている)

mysqldump --quick データベース名 | gzip > データベース名.contents.gz

データベースの中身を含んでいるファイルを、目的のマシンに転送して、次のコマンドを実行

mysqladmin create データベース名
gunzip < データベース名.contents.gz | mysql データベース名

データベース転送を実行するために、mysqldump と mysqlimportも使用できます。大きなテーブルでは、これは単純な mysqldumpの使用よりもとても速いです。次に示すコマンドでは、DUMPDIR は mysqldumpからの出力を格納するために使用するディレクトリの完全なパス名を表わしています。 

まず、出力ファイルのためのディレクトリを作成して、データベースをダンプ

mkdir DUMPDIR
mysqldump --tab=DUMPDIR データベース名

それから、DUMPDIRディレクトリ内のファイルを目的のマシン上の対応するディレクトリに転送し、MySQL にファイルをロード

データベースの作成 mysqladmin create データベース名


テーブルの作成 cat DUMPDIR/*.sql | mysql データベース名


テーブルにデータをインポート mysqlimport データベース名 DUMPDIR/*.txt

mysql データベースのコピーも忘れないように。それは承認テーブル (user, db, host)が格納されるためです。 mysqlデータベースをその場所に置くまで、新しいマシン上ではMySQL rootユーザとしてコマンドを実行する必要があります。

新しいマシン上へmysqlデータベースを導入した後、サーバが承認テーブル情報を再ロードするために、mysqladmin flush-privilegesを実行しましょう。

9.コンパイル時の問題

多くの問題の解決のために、再configureが必要になることがあります。
再configure時に注意すべき要点を、エラーごとにまとめました。configureで失敗したときは、そのエラー内容とこのページを参考にしてください。

再 configure 時の注意点

もしconfigureを一度実行した後に再度実行するならば、以前のビルドでできたオブジェクトを消しておきましょう。

rm config.cache
make clean

もしくは

make distclean

それから、configure を実行するごとに、makeを実行してからコンパイルすることを忘れないように。

ユーザ権限の設定

新しいユーザ権限をMySQLへ追加

ユーザーは2つの違った方法で追加できます。 GRANT構文を使用して行う方法と、MySQLの許可テーブルを直接操作する方法です。

GRANTでの新規にユーザー登録

MySQLにログイン mysql -u root mysql


spadminユーザの作成 GRANT ALL PRIVILEGES ON *.* 
TO
spadmin@localhost
BY 'something' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* 
TO
spadmin@"%"
BY 'something' WITH GRANT OPTION;


adminユーザの作成 GRANT RELOAD,PROCESS ON *.*
TO admin@localhost;


guestユーザの作成 GRANT USAGE ON *.* 
TO guest@localhost;

これらGRANT構文では3つの新しいユーザを作ります。

spadmin
どこからでもサーバーに接続できる完全なスーパーユーザ。padmin@localhost とspadmin@"%" の両方にGRANT構文を発行しなくてはならない事に注意。もしlocalhost からの許可をした登録がないと、localhost から接続した時、mysql_install_db が自動で作成した localhost への匿名ユーザーが優先されます。
admin
localhost からパスワードなしで接続できるが、reload, processの使用だけが許されます。データベースへのアクセスは許可されていません。しかしこれは後でテーブル GRANT構文を発行すれば、個々のデータベースへのアクセス権限が設定できます。
guest
パスワードなしで localhost からのみ接続できるユーザー。グローバルな権限は全て 'N'に設定されます。USAGEは権限無しユーザーの設定を許可する事になります。

ユーザーの許可をGRANT構文で定義する

以下は、localhost, server.domain, whitehouse.govから接続が可能な custom ユーザーの追加する例です。
customユーザーは "db1" データーベースには localhost からの接続のみを許可され、 "db2"データベースには "other.com" からのみ接続が許可され、 "db3"データベースには全てのホストから接続できます。 customユーザーは、 "

mypasswd

"というパスワードを全てのホストで使用します。

mysql -u root mysql

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON db1.*
TO custom@localhost
IDENTIFIED BY 'mypasswd';

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON db2.*
TO custom@other.com
IDENTIFIED BY 'mypasswd';

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON db3.*
TO custom@'%'
IDENTIFIED BY 'mypasswd';

任意のドメインに属する全てのマシンに接続を許可

GRANT ...
ON *.*
TO user@"%.domain.co.jp"
IDENTIFIED BY 'mypasswd';

xmysqladmin、mysql_webadmin、そしてxmysqlを使っても権限テーブルへの値の挿入/変更/更新ができます。これらのユーティリティは MySQL Contrib directoryにあります。

パスワードの設定法

INSERTかUPDATEで空ではないパスワードを設定する場合、暗号化するためにPASSWORD()関数を使用します。これはuserテーブルはプレーンテキストでなく、暗号化されたパスワードであることを要求しています。

SET PASSWORD構文を使用する

SET PASSWORD FOR jeffrey@"%" = PASSWORD('mypasswd');

GRANT ... IDENTIFIED BY構文やmysqladmin passwordコマンドでパスワードを設定した場合は、PASSWORD()関数は必要ない。両方とも、自動的にパスワードを暗号化します。

このエントリーをはてなブックマークに追加

CGI のためのウェブサーバ設定

2009年7月6日 コメントの追加


CGIプログラムを実行可能にするいくつかの設定方法を紹介します。なかでも「CGI実行用のディレクトリを指定する」方法が最も一般的で、セキュリティ管理も容易です。まずはこの方法を検討し、もし何らかの不都合がある場合にその他の2つを検討すると良いでしょう。

CGI 実行用のディレクトリを指定する

CGIプログラムを実行させるには、CGIプログラムの設置場所を指定し、CGIプログラム用の拡張子を指定します。

CGIプログラムを格納するディレクトリを指定する

CGIプログラムを設置するディレクトリを指定するには、ScriptAlias命令を使います。ScriptAlias は Apacheにディレクトリとプログラムを関連付け、ScriptAlias  で指定した URL パスにマッチするURL はディレクトリ名で指定したディレクトリのプログラムを実行します。

ScriptAlias の設定書式

ScriptAlias    URLパス    ディレクトリ名

「URLパス」には、エイリアスになるURLを、「ディレクトリ名」には、CGIプログラム用のローカルディレクトリのパスを指定します。

ScriptAlias  /cgi-bin/  /home/httpd/cgi-bin/

この設定により、たとえば、ユーザが「http://www.rfs.jp/cgi-bin/smart.cgi」にアクセスすると、「/home/httpd/cgi-bin/smart.cgi」がサーバによって実行されることになります。

CGIプログラム用のディレクトリを複数設定することも可能です。 

ScriptAlias  /cgi-bin/  /home/httpd/cgi-bin/
ScriptAlias  /cgi-bin2/ /home/httpd/cgi-bin2/

CGIプログラム用のディレクトリを指定しておけば、すべてのプログラムが一個所に集まることになるので、管理が楽になります。また、ScriptAliasに指定したディレクトリはブラウザに表示されないので、セキュリティの向上にもつながります。

ファイル名をベースにして指定することもできます。.pl や .cgi などの拡張子を持っているファイルをCGIプログラムとして指定します。

<Files *.pl>
    SetHandler cgi-script
    AllowOverride None
    Options ExecCGI
</Files>

CGI プログラム用のファイルタイプを登録する

Apacheが画像やHTMLなどさまざまファイルに対して適切に処理できるのは、ファイルの拡張子からファイルの種類を判断しているためです。CGIプログラム用のファイルタイプを新しく登録するには AddHandler 指示子を使います。AddHandler 指示子は、ファイルタイプにハンドラを関連付けます。

AddHandler    MIMEタイプ   拡張子 拡張子 ...

ScriptAliasに設定したディレクトリにAddHandlerを設定し、CGIを実行可能にします。Option指示子の引数としてExecCGIを指定すると、対象ディレクトリでCGIの実行が可能になります。

# CGIを実行させたいディレクトリ領域に、「ExecCGI」を追加
<Directory "/home/httpd/cgi-bin">
    Options ExecCGI
    AddHandler cgi-script .cgi .pl
</Directory>

上記の例では、拡張子が「.cgi」もしくは「.pl」のファイルに対して、「cgi-script」というハンドラを関連付けています。

CGIをどこでも実行可能にする

CGI 用の拡張子を指定する

AddTypeを設定すると、サーバは指定した拡張子を持つファイルを実行できるようになります。

AddType  applications/x-httpd-cgi  .cgi

AddType を設定すればどのディレクトリでも CGIプログラムを実行できるようになるので、管理やセキュリティが難しくなるので気をつけましょう。

「.htaccess」ファイルでCGIを実行可能にする

通常、Apacheの設定ファイルは管理者だけが編集可能になっているので、一般ユーザが設定ファイルを編集し、特定のディレクトリに対してCGIプログラムを実行可能にすることはできません。そのかわり、「.htaccess」ファイルという特殊な設定ファイルを使って、アクセス権のあるディレクトリに対してCGIプログラムを実行可能にすることができます。
「.htaccess」ファイルを特定のディレクトリに設置しておくと、その中で設定した指示子はそのディレクトリ以下のすべてに適用されることになります。この機構により、一般ユーザは「httpd.conf」設定ファイルを編集することなく設定を上書きすることができるようになります。

たとえば、「/home/client/public_html/cgi-bin」ディレクトリにある拡張子が「.cgi」ファイルをCGIプログラムとして実行可能にするには、以下の内容の「.htaccess」ファイルをそのディレクトリに設置します。

AddType  applications/x-httpd-cgi  .cgi

※行の最後で改行すること。そうしないと設定が有効になりません。

「.htaccess」ファイルが外部の人間にみられないようにする

「.htaccess」ファイルが外部の人間に見られてしまうのは、セキュリティ上好ましくありません。<Files>タグを使って、読み込み不可にしておきましょう。

<Files .htaccess>
    order allow, deny
    deny from all
</Files>

「.htaccess」ファイルの名前を変更する

また、「.htaccess」というファイル名はデフォルトで、これを他の名称に変更することができます。

AccessFileName    .htaccess_conf

「.htaccess」ファイルを使用不可能にする

「.htaccess」ファイルはプロパイダのようにユーザの数が多い場合に有効ですが、通常はその使用を避けたほうが得策です。なぜなら、ユーザが勝手にウェブサーバの設定を変更できることはそれだけセキュリティがあまくなるということになりますし、アクセスがあるたびに「.htaccess」ファイルが検索されることになるので、サーバ処理速度を大幅に下げることになります。
ディレクトリごとに設定する必要がある場合は、「httpd.conf」設定ファイルの<Directory>と<Location>コンテナの中で指定することにして、「.htaccess」ファイルの使用は禁止しておくことをお勧めします。

<Directory />
    AllowOverride none
</Directory>

この設定でサイト全体で「.htaccess」ファイルの使用が禁止されます。

PAGE TOP

Apacheクイックスタート

Apacheの設定ファイルは数百行にもなりますので、最初から全てを把握するのは難しいかもしれません。そこで、最初のうちは必要最低限の設定箇所を把握しておくとよいでしょう。

※Apacheの設定用ディレクトリには「httpd.conf」以外にも、他の設定ファイルがありますが、、最新のApache は「httpd.conf」だけすべて設定できます。

標準的な設定

Apacheの設定は「conf」という設定用ディレクトリの中の「httpd.conf」で行います。特別な使い方やチューンアップをしなければ、以下の行を確認するだけで正常に動作します。

サーバルートを指定する

ServerRoot /usr/local/apache

サーバルートには、ウェブサーバの管理に必要なファイルがすべておかれている場所で、「conf」ディレクトリや「log」ディレクトリが用意されています。

DNSに登録されたドメイン名

ServerName www.domain.co.jp

インターネットに公開する際のドメイン名を設定します。

HTMLファイルを置くルートディレクトリ

DocumentRoot /home/httpd/html

ホームページ用のドキュメントを保存している場所を指定します。

設定ファイルを変更したら

設定ファイルに変更を加えてファイルを保存したら、その設定を有効にするために Apacheサーバを再起動しましょう。Apacheの起動と再起動は、ルートディレクトリの下の「bin」ディレクトリにある「apachectl」スクリプトを使います。シェルのコマンドラインから「apachectl」スクリプトをコールし、Apacheを起動させる場合は「start」オプション、再起動の場合は「restart」オプションを引数として与えます。

$ /usr/local/apache/bin/apachectl start

正常に起動されているようでしたら、DocumentRootで設定したURLをブラウザのアドレスバーに入力し、設定が正しいかテストしてみましょう。

PAGE TOP

効果的なログファイルの出力

アクセスログを分割

アクセスログは、リクエスト側の情報以外に、デフォルトの設定で要求先URLと閲覧ブラウザ名も保存しています。要求先URLは他サイトからのアクセスを調べる際、閲覧ブラウザ名はNetscapeやExplorerの使用率などを調べる際に効果的です。

アクセスログをひとつのファイルに出力するのではなく、たとえば、アクセス数用の「access_log」ファイル、要求先URL用の「referer_log」ファイル、閲覧したブラウザ名用の「agent_log」ファイルに分割します。場合によっては、「agent_log」などは省いてもいいかもしれません。
手順は次の通りです。

  1. アクセスを記録するファイルの指定コマンドTransferLogをコメントアウト
  2. LogFormatを上記3つのファイル用に設定。
  3. CustomLogにファイル名を指定。
    LogFormatで設定したコマンドを指定することを忘れないように。

# TransferLog logs/access_log

# ログファイルのフォーマットを設定
# LogFormat <format_string> <command>
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer

# agent_logがいらない場合などは思い切ってコメントアウト
# LogFormat "%{User-agent}i" agent

CustomLog access_log common
CustomLog referer_log referer

# agentコマンドをコメントアウトしていたら、忘れずにこちらもコメントアウトすること
# CustiomLog agent_log agent

GIF/JPGファイルを記録しない

GIFファイルやJPGファイルの呼び出し記録をログに記録するのはあまり効果的ではありません。通常はHTMLファイルのアクセス数を記録するだけでも十分です。ここではGIF/JPGファイルの呼び出し記録をログに書き込まないように設定します。

# 環境変数にGIF/JPGファイルを環境変数「object-is-image」に記録
SetEnvIf Request_URI "\.(gif)|(jpg)$" object-is-image

# 環境変数object-is-imageに記録されたファイルを記録しないように指定
# CustomLog <directory> <command> <ENV>
CustomLog access_log common env=!object-is-image
CustomLog referer_log referer env=!object-is-image

PAGE TOP

CGIを実行可能に設定

AddHandlerの設定と、<Direcotry>OptionsExecCGIを追加します。これで十分CGIが使えるようになります。

<Directory ディレクトリパス>~</Directory>タグの説明:

<Directory>タグの中に、指定したディレクトリパスのアクセス権を設定します。主なオプションを以下に記載します。

  • Options None/All
    指定されたディレクトリ内でアクセスに関する機能を禁止/許可
  • Options Includes
    SSIを許可
  • Options ExecCGI
    スクリプトの実行を許可

ServerName www.domain.co.jp
ScriptAlias /cgi-bin/ "/home/httpd/html/cgi-bin"
AccessConfig /dev/null
ResourceConfig /dev/null
AddHandler cgi-script .cgi

# CGIを実行させたいディレクトリ領域に、オプション「ExecCGI」を追加
<Directory "/home/httpd/html">
    Options Indexes FollowSymLinks ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

PAGE TOP

セキュリティの向上

FlollowSymLinks/FlollowSymLinksIfOwnerMatch

FollowSymLinksを無効にし、シンボリックリンクをたどれなくします。そのかわり、SymLinksIfOwnerMatchを設定し、ファイルまたはディレクトリの所有者がシンボリックリンクと同一の場合だけ、リンクをたどれるようにします。

<Directory "/home/httpd/html">
#    Options Indexes FollowSymLinks ExecCGI
    Options Indexes -FollowSymLinks 
    +SymLinksIfOwnerMatch ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

PAGE TOP

速度の向上

FlollowSymLinks/FlollowSymLinksIfOwnerMatch

セキュリティ向上させるため、FlollowSymLinksのかわりにFlollowSymLinksIfOwnerMatchを使いましたが、これでは、シンボリックリンクをチェックするために余分なシステム・コールが発生し、速度性が損なわれます。速度を重視するか、セキュリティを重視するか、それが問題・・・、ですが、とりあえずの折衷案があります。
 方法はいたって簡単。必要な場所だけセキュリティチェックを行うようにします。

<Directory />
    Options FollowSymLinks
</Directory>
<Directory /home/httpd/html>
    Options -FollowSymLinks +SymLinksIfOwnerMatch
</Directory>

こうすれば、少なくともDocumentRootパスの余分なチェックが要らなくなります。ドキュメント・ルート以外にAliasやRewriteRuleパスがある場合には、同様のセクションを追加する必要があるからお忘れないように。

AllowOverride

URL空間でoverridesを認める場合(通常は「.htaccess」)、Apacheは各ファイルネーム要素ごとに.htaccessを開こうとします。これでは、パフォーマンスの低下は避けられません。
解決策は、ルートパスでAllowOverride Noneを使います。

<Directory />
    AllowOverride None
</Directory>

ネゴシエーション 

最高の性能を絞り出したい場合には、コンテンツ・ネゴシエーションを極力避けたいところです。ですが、ネゴシエーション機能には性能の低下を補ってあまりあるものがあるため、これは有効にしておいたほうが良いかもしれません。
せめて、「DirectoryIndex index」の様なワイルドカードは使わずに、次のようにファイル名を明確にしてリストします。

DirectoryIndex index.html index.shtml

一番頻繁に使うオプションをリストの頭にしましょう。

プロセス

MaxRequestsPerChild命令は個々の子サーバプロセスが取り扱うリクエストの範囲を指定します。MaxRequestPerChild が設定されると、その設定を超えた後の子プロセスは停止します。MaxRequestsPerChild が0だと、そのプロセスは停止しません。この初期設定値は30になっていますが、子プロセスに肥大したメモリ・イメージを持たせるようなモジュールを使っているサーバでなければ、この値を10,000あたりまで上げてみましょう。
通常は、KeepAliveTimeoutは60秒以上にしないほうが良いでしょう。

設定例

# httpd.conf    2002/05/10

# サーバの基本的な動作の設定
# standalone(サーバはメモリに常駐)/Inetd(アクセスごとにサーバを起動)
ServerType standalone

# Apacheが参照する各種ファイルの起点となるディレクトリパスを設定
# httpd.conf以外の設定ファイル、およびログファイルがServerRootを参照
ServerRoot "/usr/local/apache"

# サーバのプロセス番号を記録するファイル名
PidFile /usr/local/apache/logs/httpd.pid

# ロックファイルのファイル名
# ログディレクトリがNFSの場合、ログをローカルに保存するよう指定
# 上記以外はデフォルトのままで問題ない。
#LockFile /var/run/httpd.lock

# タイムアウトを秒単位で設定
Timeout 300

# ポート番号を設定
Port 80

# ユーザ webuser、グループ webgroupでapacheを立ち上げます。
# webuserは、web専用のユーザとして作成してください。
User    webuser
Group    webgroup

# 管理者のメールアドレスを指定
ServerAdmin info@domain.co.jp

# DNSに登録されたサーバ名を設定します。
ServerName www.domain.co.jp

# HTMLファイルを置くルートディレクトリを指定
DocumentRoot "/home/httpd/html"

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/home/httpd/html">
    Options Indexes -FollowSymLinks ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>


# ユーザのホームディレクトリを指定
UserDir public_html

<Directory "/home/*/public_html">
    Options Indexes ExecCGI
    AllowOverride None
    order deny,allow
    allow from all
</Directory>

# 要求されたURLにファイル名がない場合、デフォルトで表示されるファイル名
DirectoryIndex index.html

# ディレクトリのアクセスコントロールファイル
# ディレクトリにAccessFileNameで指定されたファイルが存在する場合、そのファイルの定義でaccess.confの定義を上書きします。
# AccessFileName .htaccess

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>


DefaultType text/plain

# DNSの逆引き解決
# このディレクティブをonに設定した場合、逆引きで得られたホスト名をログに記録し、offではIPアドレスが書き込まれます。 (on/off)
# on == DNSの逆引きを行う, off == DNSの逆引きを行わない
HostnameLookups on

# エラーを記録するファイルとそのディレクトリを指定
ErrorLog /usr/local/apache/logs/error_log

# アクセスを記録するファイルとそのディレクトリを指定
# TransferLog logs/access_log

# error_log に記録されたメッセージの数
LogLevel warn

# ログファイルのフォーマット
# フォーマット:CustomLog <directory> <command>
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent


# .gif, .jpg の呼び出し記録をログに書き込まない
SetEnvIf Request_URI "\.(gif)|(jpg)$" object-is-image
CustomLog access_log common env=!object-is-image
CustomLog referer_log referer env=!object-is-image
CustomLog agent_log agent env=!object-is-image


# 実行したいCGIディレクトリのエイリアスを指定
ScriptAlias /cgi-bin/ "/home/httpd/html/cgi-bin/"

<Directory "/home/httpd/html/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>


# INDEX表示を行う際に、ReadmeNameで指定されたファイルが要求された場合、リストの終わりにその内容を追加します。HeaderNameで指定されたファイルが要求された場合、リストの前にそのファイルの内容を表示します。
ReadmeName README
HeaderName HEADER

# 指定した拡張子を持つファイルをファイルタイプに関連付ける
AddType application/x-tar .tgz

# 指定した拡張子を持つファイルをhandler-nameに関連付ける
# 拡張子が.cgiのファイルは実行可能なCGIスクリプトとして扱われる
AddHandler cgi-script .cgi

AddType text/html .shtml
AddHandler server-parsed .shtml

PAGE TOP

アクセスログの有効活用法

ユーザ情報を記録する!

ユーザ情報をアクセスログとは別のファイルに保存するテクニックを紹介します。

アクセスログをカスタマイズする!

アクセスログのデフォルトでは、リモート・ホスト名、リモート・ユーザ名、ユーザ認証によるリモート・ユーザ名、アクセス日時、HTTPリクエストヘッダー、ステータスコード、転送バイト数が記録されるようになっています。いま挙げた情報には、どこのリンクからページが表示されたのかのリファラー情報、ユーザのブラウザ情報などが欠けています。これらを記録するには、ほんの少しの修正で実現できます。

デフォルトの httpd.conf は下記のようになっている。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
...
CustomLog /var/log/httpd/access_log common

上記では、LogFormat という命令文でログの出力フォーマットを設定しています。LogFormat命令文の末尾に combined、commonといった記述があります。これが出力フォーマットの名前です。そして、この出力フォーマットの名前を指定しているのがCustomLog とです。デフォルトでは、commonという名前の出力フォーマットを指定していますが、これを combinedという出力フォーマットに変えるだけです。

下記のように書き換えます。

CustomLog /var/log/httpd/access_log combined
# CustomLog /var/log/httpd/access_log common

LogFormat

ここからは、先ほど紹介した LogFormatについてです。デフォルトでいくつかの出力フォーマットが用意されていますが、LogFormatを追加すれば、自分の好きなように出力フォーマットを設定することができます。

ログファイルの出力形式は、LogFormatでカスタマイズすることができます。ログフォーマットは各々のリクエストを1行で格納します。1行は幾つかのスペースによって区切られた項目によって構成されます。

# デフォルトの設定
LogFormat "%h %l %u %t \"%r\" %s %b"

ログ自体にダブル・クォーテーションをつけたい場合には、バックスラッシュ(\)によってエスケープします。ただし、文字列 %r, %...i,%...o;にはエスケープが効きません。

LogFormat変数
変数 解説
%h リモート・ホスト名
%I identによるリモート・ユーザ名
%u ユーザ認証によるリモート・ユーザ名
%t アクセス日時
%r HTTPリクエストヘッダー
%s ステータスコード
%b 転送バイト数
%f ファイル名
&U リクエストされたURL
%v サーバ名(バーチャルホストなど)
%{STRING}i リクエスト内のSTRING内容
%{STRING}o レスポンス内のSTRING内容

上記の表で、%{} で示される変数は、HTTPヘッダー内の任意の内容を参照します。たとえば、%{User-Agent}i はリクエスト・ヘッダー内の User-Agent フィールドの内容を示します。

LogFormat "%h %u %t \"%r\" %s \"%{User-Agent}i\" \"%{Referer}i\""

上記では、ロギング情報は下記のように記述されます。

210.162.198.46 - [23/Mar/1998:01:09:05 +0900] "GET /game/images/recv_click.gif HTTP/1.1" 404 "Mozilla/4.0 (compatible; MSIE
4.01; Windows 95)" "http://www.rfs.jp/game/fr_main.html"

上記の例では、通常のログファイルから ident によるリモート・ユーザ名と転送バイト数を省き、かわりにアクセスを要求してきたブラウザの種類と、アクセスする直前に参照していたドキュメント、もしくはリンク先アドレスを追加しています。Refererは自サイトからのアクセスも他サイトからのアクセスも同じようにログに記録すしますが、RefererIgnoreで自サイトのアクセスを記録しないようにすれば、他サイトからのアクセスだけを記録することができます。

ある特定のステータスが発生したときに限り、%{} で参照される変数をロギングする場合は、 % と {}の間にコンマで区切ったステータス番号のリストを記述します。

LogFormat "%h %u %t \"%r\" %s \" \"%401,403{Referer}i\""

あるアクセスが401または403のステータスを発生させた場合に限り、 Referere で参照される直前のURLがログに記録されます。

エージェント・ログ

Apacheには、リクエスト元のブラウザ情報をログに書き出す機能があります。書き出されたログから、利用されているブラウザの傾向を知ることができます。
エージェント・ログ機能を有効にするには、AgentLog オプションを設定しましょう。

AgentLogの設定例は下記の通りです。

AgentLog  logs/agent_log

Apacheのサーバルートが /usr/local/apache の場合は、/usr/local/apache/ に agent_log が作成されます。

エージェントログの出力例

# InternetExplorer4.01
Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)

# NetscapeNavigator 4.04
Mozilla/4.04 [ja] (WinNT; I)

Refererログ

Apacheには、インターネット上のどのサイトのリンクをたどって自サイトへアクセスしてきたか(リンキング)をログに出力させる機能があります。
この機能を有効にするには、RefererLog オプションを設定します。

RefererLog logs/referer_log

RefererIgnore

アクセス・ログファイルには、デフォルトで他サイトからのリンキングと、自サイト内でのリンキングが記録されますが、特に他サイトからのリンキングだけを収集させることもできます。この場合、次のような設定を追加します。

RefererIgnore   www.rfs.jp

これでwww.rfs.jp内でのアクセス状況は無視され、他サイトからのリンキングだけが記録されるようになります。

ログファイルを定期的に切り出す!

ログファイルはアクセスのたびに大きくなるので、一定期間毎にログを別々のファイルに記録させたい場合もあります。とっても便利で素晴らしい機能ですが、この機能を使うにはApacheのソースを書き換える必要があります。

LogFileRotation

httpd.conf 内の TransferLog で定義したアクセス・ログファイルは、Apache サーバが稼動しつづける限り、すべてのログが指定された1つのファイルに記録されます。
一定期間ごとのログを別々のファイルに記録させることができれば、必要なログを検索しやすりますし、管理も容易です。

Apacheには、rotatelogsという簡単なログ分別ユーティリティが用意されています。指定した時間(秒)ごとに、そのログが作成された時間を示す数値を拡張子にしたログ・ファイルを作成することができます。
この機能を有効にするには、TransferLog オプションを設定しましょう。

TransferLog " | /usr/local/apache/src/support/rotatelogs
             /usr/local/apache/logs/access 86400"

この例では、86400秒(24時間)ごとに /usr/local/apache/logs ディレクトリにaccess.0880851360 というファイルが作成されます。
拡張子をわかりやすく変更したい場合は、プログラムのソースに若干の変更を加える必要があります。

/usr/local/apache/src/support ディレクトリにある rotatelogs.c ファイルの70行目から73行目を下記のように変更します。

# 元のソース・コードを「/*」と「*/」で囲んで、
# コメントアウトします。
/*
time_t tLogStart = (time(NULL) / tRotation) * tRotation;
sprintf(buf2, "%s.%010d", szLogRoot, (int) tLogStart);
*/
# 次の3行を加えます。
time_t tclock = time(NULL);
struct tm *st = localtime(&tclock);
sprintf(buf2, "%s.%.2d%.2d%.2d%",szLogRoot,st->tm_year,
    st->tm_mon+1,st->tm_mday);
# 元のソース・コードを「/*」と「*/」で囲んで、
# コメントアウトします。
/*
tLogEnd = tLogStart + tRotation;
*/
# 次の1行を加えます。
tLogEnd = tclock + tRotation;

編集が終わったら変更を保存し、rotatelogs.c ファイルのあるディレクトリで次のようにコンパイルします。

# cc -o rotatelogs rotatelogs.c

これで同じディレクトリに新しい rotatelogsが作成されるので、Apacheを再起動しましょう。再起動後は、/usr/local/apache/logs ディレクトリに、 access.980317 というファイルが作成されます。拡張子の数字を翻訳すると、「98年3月17日」という意味になります。

実はもっと簡単な方法もあります。それは次のページで説明しています。

PAGE TOP

Apacheのログを日毎に出力

Apacheのログは10,000リクエスト毎に1MB増えるので、放置しておくと大変でうs。あまりに巨大になると、アクセス数をカウントするのもおぼつかなくなってしまいます。簡単な解決策は、アクセスログ・ファイルを日ごとに出力させることです。

スクリプトファイルの作成

shの場所を見つけましょう。例では「/bin/sh」。

% which sh
/bin/sh

vi エディタ(または任意のエディタ)を起動します。

% vi access_log.sh

スクリプトファイル(上記の例では"access_log.sh")を下記のように編集します。

#! /bin/sh
# ログを出力するディレクトリに移動
cd /usr/local/apache/logs
# ログファイル名を変更(日時を付加)
mv access_log access_log.`date '+%y%m%d-%H%M'`
# Apacheを再起動
kill -USR1 `cat /usr/local/apache/logs/httpd.pid`

cronの編集

次はcronの編集です。

% crontab -e

エディタが起動し、cronの編集画面が表示されます。

0 0 * * * sh /root/sh/access_log.sh

上記の例では、0時0分にスクリプトファイルを起動しています。これで、日ごとにログファイルが出力されるようになります。

PAGE TOP

Apacheの高速チューニング

Apacheの基本的設定が終わったら、今度はパフォーマンスの改善に挑戦してみましょう。

HostnameLookups

Apache1.3では、HostnameLookupsの初期設定はOffです。この設定だと、DNSルックアップによる余分な処理がなくなるので、HTMLファイルが表示されるまでの時間がぐっと短くなります。1.3とそれ以降のバージョンでは、allow from domaindeny from domainディレクティブを使うと、二重リバースDNSルックアップという代償を払うことになります。

ディレクティブの範囲を<Location /server-status>セクションで制限することで、上記の二重リバースDNSルックアップを避けることができるます。例えば、.html ファイルと.cgiファイル以外はルックアップしないようにするには、次のように設定します。

HostnameLookups off
<Files ~ "\.(html|cgi)$">
  HostnameLookups on
</Files>

いくつかのCGIの中でホスト名が必要であれば、それを必要としている特定のCGIでだけgethostbynameコールをするように設定します。

f.<Limit GET>~</Limit>......ここに記述することによって外部からのアクセスを制限します。

<Limit GET>
order deny,allow
deny from all
allow from www.pba2.co.jp
</Limit> 

この記述によってwww.pba2.co.jp以外のホストが<Directory></Directory>タグで指定したディレクトリにアクセスするのを禁止します。

PAGE TOP

ユーザ認証機能でホームページにアクセス制限をかけよう

特定のユーザのみに限定してホームページを公開したいときは、ウェブサーバでユーザ認証を行う方法が一般的です。この設定をしておけば、設定したアドレスにアクセスしたユーザに対してアカウントとパスワードを入力するダイアログボックスが表示されるようになります。アカウントとパスワードが正しければ、アクセスが許可されてページが表示され、誤っていればエラーメッセージが表示されます。

ユーザ認証の設定

ユーザ認証は割りと簡単。httpd.conf ファイルに <Directory> タグを新しく用意し、ユーザ認証の設定をするだけです。

ユーザ認証を設定する作業手順

ここでは /home/httpd/html/private をユーザ認証用のディレクトリに設定しました。

<Directory "/home/httpd/html/private">
    Options Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthType Basic
    AuthName Intra
    AuthUserFile /usr/local/apache/conf/password
    Require valid-user
</Directory>

これだけで設定は終わりです。あとは、パスワードファイルを作成します。

AuthType
認証方法を指定します。ここではBasic認証を指定しています。
AuthName
認証領域の名前を設定します。この名前は、アカウントとパスワードを入力するダイアログボックスに表示されます。
AuthUserFile
認証用ディレクトリ用のパスワードファイルの保存場所を指定します。
Require
アクセスを許可するアカウントを指定します。

パスワードファイルの作成

ユーザ認証を設定したら、次にパスワードファイルを作成しましょう。パスワードファイルを作る用に、htpasswdというユーティリティーがあるので、これを使います。まず、AuthUserFile で指定したディレクトリに移動し、 htpasswd ユーティリティーを使ってパスワードファイルを作成します。 htpasswd ユーティリティーは Apacheをインストールするときに自動的にインストールされています。このユーティリティーはシェルから実行し、次のように指定します。

htpasswd -c パスワードファイル名 ユーザ名

-c オプションで新しいパスワードファイルが作られます。ユーザを追加するだけであれば、-c オプションは不要です。コマンドを入力して Enter キーを押すと、パスワードを要求されるので、指定したユーザ用のパスワードを入力します。 詳しくは、シェル上でman htpasswd と入力してみてください。英語ですが、htpasswd ユーティリティーの詳しい説明が表示されます。

最後に、ファイルに読み取り権限を設定しましょう。groupとotherに読み取り権限を与えるには、下記のようchmodコマンドを発行します。

chmod og+r password

このエントリーをはてなブックマークに追加

WEBサーバ設定の基礎を学ぶ

2009年7月6日 コメントの追加


この章では UNIX系のOSでもっとも利用されている 『Apache』 ウェブサーバの設定方法を中心に、CGI を利用するための環境作りを解説します。
章の最後に Apacheのダウンロード場所や、インストール手順や設定方法のドキュメントのリンクを掲載しているので、まだ導入されていない方はこれを機会にぜひチャレンジしてみてください。

ウェブサーバとCGIの関係

ウェブサーバの主要な機能は、ブラウザがリクエストしたURLに該当するファイルを送信することです。リクエストがHTMLではなくCGIプログラムの場合は、プログラムの内容を表示する代わりにCGIプログラムを実行して、その出力を送信します。

この章の目的はウェブサイトを立ち上げ、CGIプログラムを起動できるようにするまでです。ウェブサーバがブラウザからのリクエストに正しく応答するには、あらかじめウェブサーバ用の設定ファイルが用意されている必要があります。
ウェブサーバの設定は複雑な面もありますが、必要最低限の設定は実はそれほど多くありません。最初にHTMLファイルを表示できるように設定し、あとからCGIプログラムの起動やそのほかさまざまな機能を設定していくのも手です。

Apache のより詳しい情報は、「Apacheの導入」を参照してください。


指示子について

Apacheの設定は、「httpd.conf」というテキスト形式の設定ファイルで行います。サーバの環境によって設定ファイルの置かれている場所が違いますから、正しい場所がわからないときは、サーバ管理者に聞きましょう。

Apache の設定ファイルは指示子とコメントで成り立っています。

指示子
指示子はウェブサーバの動作を指定するコマンドを設定します。
コメント
コメントは不要な指示子をコメントアウトしたり、注釈を記述するのに便利です。

指示子の記述方法

指示子は次のような形式になっています。

<指示子> 引数 引数

ウェブサーバのルートディレクトリの設定を例にすると、以下のような記述方法になります。指示子と引数の間はスペースかタブで区切ります。

ServerRoot   /usr/local/apache

指示子は大文字・小文字の区別はありません。以下のどれでも正しく認識されます。

ServerRoot    /usr/local/apache
SERVERROOT    /usr/local/apache
serverroot    /usr/local/apache

引数にスペースが含まれている場合は、引数をダブルクォーテーション( " )の引用符で囲む必要があります。

BrowserMatch "RealPlayer 4\.0" force-response-1.0

コメント

 指示子を削除したいときは、次のようにシャープ記号( # )でコメントアウトします。

# ServerRoot   /usr/local/apache

コンテナ指示子

指示子には特殊な使い方があります。HTMLのタグのように前タグと終わりタグで指示子を囲むことができます。コンテナタグの中で設定した指示子は、Apache 全体には影響されません。タグで指定したサーバ内のファイルやディレクトリだけに適用されます。

たとえば、任意のディレクトリのみに設定を行いたい場合、<Directory>タグを使って次のように設定します。

# CGIを実行させたいディレクトリ領域に、オプション「ExecCGI」を追加
<Directory "/home/httpd/cgi-bin">
    Options Indexes FollowSymLinks ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

これで「cgi-bin」ディレクトリとそのサブディレクトリに設定が反映されます。

コンテナタグの中にさらにコンテナタグをネストすることができます。タグをネストする場合は、インデントを使って見栄えをよくしたほうがいいでしょう。

<VirtualHost 123.123.123.12>
    ServerName    www.domain.co.jp
    DocumentRoot    /home/httpd/ssl/

    <Location /client>
        DirectoryIndex    secound.html
    </Location>

</VirtualHost>

このエントリーをはてなブックマークに追加

Apacheのインストール(ウインドウズ版)

2009年7月6日 コメントの追加

1.Apacheのインストール

Apacheのダウンロード

Apacheのインストール(ウインドウズ版)

Apacheの最新バージョン情報は、http://httpd.apache.org/ で公開されています。

ウインドウズ版 Apacheのバイナリービルドをダウンロードして下さい。ソースコードが必要な場合には、apache_1_3_#-win32-src.msiを、ソースコードを使って何かする予定がない場合には、apache_1_3_#-win32-no_src.msi をダウンロードしてください。

ソースコードは、-src.msi ディストリビューション、または、.zip ファイルのように http://httpd.apache.org/dist/httpd/ ディストリビューションディレクトリから入手可能です。ご自分で Apacheをコンパイルする場合には、msi パッケージをインストールする必要はありません。zip ファイルには、MS-DOS改行のソースコードのみが含まれます。

Apacheのインストール

ダウンロードした Apache.msiを起動してください。起動すると以下のようなインストール用のダイアログボックスが表示されます。

[Next >] ボタンを押してください。

ライセンスの同意を求められます。
とくに問題なければ、[I accept the terms in the license agreement] をチェックして、[Next >] ボタンを押してください。

[Next >] ボタンを押してください。

ドメイン名、サーバ名、管理者メールアドレスを入力してください。
すべて入力したら [Next >] ボタンを押してください。

セットアップの種類を選択します。Typical は標準的なセットアップ方法、Custom はインストールオプションを選択することができます。
ここでは Typical を選択し、  [Next >] ボタンを押してください。

[Change] ボタンを押すと、Apacheのインストール先ディレクトリを選択することができます。デフォルトは、C:\Program Files\ApacheGroup で、特に変更する必要がなければ、[Next >] ボタンを押してください。

最後に [Install] ボタンを押して終了です。

このエントリーをはてなブックマークに追加

Apacheのインストール

2009年7月6日 コメントの追加

1.Apacheのインストール

UNIX版でプログラムをインストールするには、にソースをコンパイルしてインストールします。Linuxでは、RPMパッケージとして入手できるものもあります。ここでは、ソースをコンパイルしてインストールする方法を説明します。

Webサーバに対する理解を深めよう

URL(Universal Resource Locator)は、いくつかのセクションによって構成されています。たとえば、http://www.rfs.jp/のようなURLは3つの部位に分けられます。

<メソッド>://<ホスト>/<絶対パスURL>

上の例では、メソッドはhttp、ホストはwww.rfs.jpを、絶対パスURLは、そのホストのトップディレクトリとなります。このアドレスをブラウザに入力してEnterを押すと、そのリクエストがいくつかのサーバを経由して目当てのWebサーバにたどり着きます。次に、WebサーバによってURLがファイル名に変換され、そのファイルが送り返されることになります。
上記以外にも、CGIやデータベースと連携して、高度な処理をした後にリクエストを送り返すこともありますが、それはまたの機会に説明します。

Apacheのダウンロード

インストールの準備として、上記のサイトから最新のバージョンをダウンロードしましょう。RedHat系Linuxはディストリビューションの公式ページからSRPMSをダウンロードします。

Apacheのコンパイル

Apacheを上記サイトからダウンロードしたら、設定作業用のディレクトリ(今回は「/usr/src」)にコピーし、下記の操作でインストールします。

圧縮ファイルの解凍
# tar xvfz apache_<varsion>.tar.gz
.....(ファイルが解凍される)

展開されたディレクトリに移動
# cd apache_<varsion>/

モジュールを追加する必要がない場合は、設定を行うshellスクリプトを実行します
# sh ./configure
.....

設定が完了したらコンパイルを行います
# make
.....

rootとしてログイン
# su

最後にインストール
# make install

Apacheの設定ファイル

インストール後、「<ソースディレクトリ>/apache_<viersion>/src」に「httpd」と呼ばれるバイナリファイルが作成されます。
次に、コンフィギュレーション(設定)ファイルを編集します。デフォルトでは、これらのファイルは「/usr/local/apache/conf」ディレクトリに、srm.conf-dist、access.conf-dist、httpd.conf-distが作成されます。これらのファイル名をそれぞれsrm.conf、access.conf、httpd.confとしてコピーし、必要に応じてこれらのファイルを編集します。

サーバの停止と起動

設定が終われば、あとは起動の確認です。サーバを起動するためには、単にhttpdを実行するだけです。このとき、httpd.confが読み込まれるので、もしこのファイルがどこか他にあれば、-f の引数で本当のロケーションを与えます。

# /usr/local/apache/bin/apachectl start

問題なくサーバが起動されれば、即時にコマンドプロンプトに戻ります。サーバの初期化の間になにか不都合が生じた場合、画面にエラーメッセージが表示されます。

Apacheを停止させる方法は、起動方法とよく似ています。

# /usr/local/apache/bin/apachectl stop

再起動は次のとおりです。

# /usr/local/apache/bin/apachectl restart

Apache起動の確認

ブラウザを立ち上げて、URLにlocalhostか、自分のサーバのIPアドレスを入力してEnterキーを押します。Apacheが動いていれば、デフォルトの画面が表示されます。

起動スクリプトの作成

サーバを再起動させるたびにApacheを手動で起動させなくても済むように、Apacheサーバの起動スクリプトを/etc/rc.d/rc.httpdのファイル名で作成してみましょう。

# vi /etc/rc.d/rc.httpd
#! /bin/sh
/usr/local/apache/bin/apachectl start

作成した起動スクリプトに実行権をつけます。

# chmod 755 /etc/rc.d/rc.httpd

次に、/etc/rc.d/rc.localへ、rc.httpdを起動するスクリプトを追加。

if [ -f /etc/rc.d/rc.httpd ]; then /etc/rc.d/rc.httpd; fi;

次はいよいよApacheの設定にチャレンジです。


2.httpd.conf の設定

ウェブサーバの主要な機能は、ブラウザがリクエストしたURLに該当するファイルを送信することです。リクエストがHTMLではなくCGIプログラムの場合は、プログラムの内容を表示する代わりにCGIプログラムを実行して、その出力を送信します。

ウェブサーバの設定は複雑な面もありますが、必要最低限の設定は実はそれほど多くありません。最初にHTMLファイルを表示できるように設定し、あとからCGIプログラムの起動やそのほかさまざまな機能を設定していくのも手です。

指示子について

Apacheの設定は、「httpd.conf」というテキスト形式の設定ファイルで行います。サーバの環境によって設定ファイルの置かれている場所が違いますから、正しい場所がわからないときは、サーバ管理者に聞きましょう。

Apache の設定ファイルは指示子とコメントで成り立っています。

指示子
指示子はウェブサーバの動作を指定するコマンドを設定します。
コメント
コメントは不要な指示子をコメントアウトしたり、注釈を記述するのに便利です。

指示子の記述方法

指示子は次のような形式になっています。

<指示子> 引数 引数

ウェブサーバのルートディレクトリの設定を例にすると、以下のような記述方法になります。指示子と引数の間はスペースかタブで区切ります。

ServerRoot   /usr/local/apache

Apache が自動作成するデフォルトの設定ファイルでは、指示子の頭文字が大文字で、それに小文字が続いていますが、これは見栄えを考慮したもので、実際には大文字・小文字の区別はありません。以下のどれでも正しく認識されます。

ServerRoot    /usr/local/apache
SERVERROOT    /usr/local/apache
serverroot    /usr/local/apache

引数に空白文字が含まれている場合は、引数をダブルクォーテーション( " )の引用符で囲む必要があります。

BrowserMatch "RealPlayer 4\.0" force-response-1.0

コメント

指示子を削除したいときは、次のようにシャープ記号( # )でコメントアウトします。

# ServerRoot   /usr/local/apache

コンテナ指示子

指示子には特殊な使い方があります。HTMLのタグのように前タグと終わりタグで指示子を囲むことができます。コンテナタグの中で設定した指示子は、Apache全体には影響されません。タグで指定したサーバ内のファイルやディレクトリだけに適用されます。

たとえば、任意のディレクトリのみに設定を行いたい場合、<Directory>タグを使って次のように設定します。

# CGIを実行させたいディレクトリ領域に、オプション「ExecCGI」を追加
<Directory "/home/httpd/cgi-bin">
    Options Indexes FollowSymLinks ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

これで「cgi-bin」ディレクトリとそのサブディレクトリに設定が反映されます。

コンテナタグの中にさらにコンテナタグをネストすることができます。タグをネストする場合は、インデントを使って見栄えをよくしたほうがいいでしょう。

<VirtualHost 123.123.123.12>
    ServerName    www.domain.co.jp
    DocumentRoot    /home/httpd/ssl/

    <Location /client>
        DirectoryIndex    secound.html
    </Location>

</VirtualHost>

標準的な設定

Apacheの設定は /usr/local/apache/conf (Redhat系:/etc/httpd/conf) という設定用ディレクトリの中の「httpd.conf」で行います。特別な使い方やチューンナップをしないなら、以下の行を確認するだけで正常に動作します。

  • 管理者のメールアドレス
    ServerAdmin you@domain.co.jp
  • confやlogディレクトリを格納するディレクトリ
    ServerRoot /usr/local/apache
  • エラーログ・アクセスログの出力ファイル
    ErrorLog logs/error_log
    TransferLog logs/access_log
  • サーバのプロセス番号を記録するファイル
    PidFile /var/run/httpd.pid
  • DNSに登録されたサーバ名
    ServerName www.domain.co.jp
  • HTMLファイルを置くルートディレクトリ
    DocumentRoot "/home/httpd/html"

Apacheの設定用ディレクトリにはhttpd.conf以外にも、他の設定ファイルがあります。srm.conf、access.confのことですが、これらはApacheの古いバージョン用ファイルで、最新のApacheには必要ありません。magicとmime.typeは、Apacheを実行するために編集することはめったにありません。

設定用ディレクトリには以下の設定ファイルがあります。

  • httpd.conf
  • srm.conf
  • access.conf
  • mime.type
  • magic

3.停止と再起動

Apacheの停止と再起動

Apacheは最初に起動された親プロセスと、クライアントから要求があるたびに生まれる子プロセスによって処理をこなします。通常、シグナルは親プロセスに送信します。親プロセスに送信することができるシグナルはTERM、HUP、USR1 です。

親プロセスにシグナルを送信します。

# kill -TERM 'cat /var/run/httpd.pid'

入力の結果を読むことができます。

# tail -f /var/log/httpd/error_log

Apache 1.3 からは、Apache を起動、停止、再起動するapachectlスクリプトがあります。

TERM シグナル: 停止

親プロセスに TERMシグナルを送信すると、数秒後に子プロセスが完全に終了し、それから親プロセスが終了します。

HUP シグナル: 再起動

親プロセスに HUP シグナルを送信すると、TERMシグナルのように子プロセスを終了するが、親プロセスは終了しません。親プロセスは設定ファイルを再読み込みして、ログファイルを再び開きます。それから、新しい子プロセスを生んでリクエストの受信を続行します。

※再起動したときに設定ファイルにエラーがあれば、親プロセスは再起動しないで、エラーを出して終了します。これを避けるためには、以下を参考にしてください。

USR1 シグナル: 完全再起動

USR1 シグナルは、親プロセスに子を終了させるように通知します。親プロセスは設定ファイルを再読み込みし、ログファイルを再び開きます。

このコードは常に、MaxClientsMinSpareServersMaxSpareServersStartServersに関連付けられています。

古いログについてなにかを行う前に、USR1シグナルを送った後、間を置くことをお勧めします。例えばヒットのほとんどが、低いバンド幅のユーザのために10 分以内になっていれば、古いログについてなにかを行う前に 15 分待つことができます。


4.ApacheのRPMインストール

RPMインストール

RedHad系(Vine,Turbo)のLinuxはRPMでアプリケーションをインストールできるので、ご利用のデストリビューションサイトからRPMファイルをダウンロードしてください。

Apacheのダウンロード

RPMはインストール対象のアプリケーションが既にインストール済みか、確認することができます。

rpm -q httpd

既にインストール済みの場合は、下記のようにそのバージョンも合わせて出力されます。

httpd-2.0.40-21

RPMをインストール

ダウンロードしたRPMのディレクトリに移動し、下記のコマンドでインストールします。

rmp - ivh apache-****.i386.rpm

Apacheのインストール

次に、サーバのためのコンフィギュレーションファイルを編集します。デフォルトでは、これらのファイルは/etc/http/confディレクトリに、srm.conf、access.conf、httpd.confが作成されていますから、これらのファイル名のバックアップを取った後、必要に応じて設定ファイルを編集します。

デフォルトのインストール場所
  • /etc/http/conf/ httpd.conf,srm.conf...
  • /usr/sbin/ httpd
  • /var/log/httpd/error_log, access_log, referer_log, agent_log
  • /var/run/ httpd.pid, httpd.lock

Apacheの停止と起動

サーバを起動するためには、下記のようにserviceコマンドを使ってhttpdを実行します。

service httpd start

もしサーバの起動がOKなら、サーバに接続するためにブラウザを使い、ドキュメントを読むことができます。

Apacheの終了

Apacheを終了させるには以下のようなコマンドを使用します。

service httpd stop

このエントリーをはてなブックマークに追加

ウインドウズに ActivePerlをインストール

2009年7月6日 コメントの追加

1.ActivePerlのインストール

ActivePerlの概要

ActivePerlはウインドウズ版のPerlインタプリタで、ActiveState社が無償配布しています。UNIX系のオペレーティングシステムに依存するネットワークやシステム関係の機能などで互換性がありませんが、一般的なプログラミングではあまり問題がありません。

ActiveStateのホームページ

ActivePerlのインストール準備

ActivePerlのインストール前に、必要なソフトウエアが揃っているか調べておきましょう 。

必要なシステム構成

どのバージョンでもInternet Explorer 5以上が必要になります。

ActivePerlのダウンロード

ActivePerlのダウンロード

ウインドウズ版ActivePerlはActiveState社のホームページにある『ActiveState Tool Corp.』ページから最新版をダウンロードします。ここでは、2002年10月28日時点の最新版Ver 5.6.1 build 633を前提に説明します。

ActivePerlの入手先

右メニューにある[Download]リンクをクリックします。

Email addressの欄にメールアドレス、Nameの欄に氏名、Companyの欄に国を記入します。

ActiveState

ActivePerl 5.6.1 build 633のWindows MSIをクリックします。ファイルのダウンロード場所を指定するウインドウが表示されるので、デスクトップなどわかりやすい場所を指定して保存してください。

ActivePerl 配布キットには、以下のものが含まれています。

梱包ソフトウエア 解説
Perl for Win32 コアPerl配布キット用のバイナリ
Perl for ISAPI ISAPI準拠のWebサーバで利用するためのIISプラグイン
PerlScript ActiveXスクリプトエンジン
Perl Package Manager Perlモジュールとエクステンション用のマネージャ

ActivePerlのインストール

旧バージョンのActivePerlがインストールされている場合は、アンインストールしておくほうがよいでしょう。

ActivePerlセットアップ

ダウンロードした「ActivePer-5.6.1.631-MSWin32-x86.msi」をダブルクリックしてください。セットアップウィザードが起動します。
セットアップウィザードのウェルカム画面

インストールアイコンをダブルクリックした後、以下のようなセットアップウィザードが起動します。

インストールを続ける場合は、[Next >] ボタンを押してください。

ライセンス

ソフトウェア使用許諾の同意を求められます。

テキストボックス内のライセンスに関する記述に同意できれば、[I accept the terms in the License Agreement] ラジオボタンをチェックして、[Next >] ボタンを押してください。

カスタムセットアップ

カスタムセットアップ画面では、システムにインストールするコンポーネントを選択することができます。標準ではすべてのコンポーネントをインストールする設定になっているので、特に理由がなければそのままの状態がベストです。

ここで、Perlのインストールディレクトリを指定することもできます。デフォルトでは C:\perl\ です。セットアップフォルダを変更する場合は、[Browse] ボタンを押してフォルダの変更を行います。

※UNIX環境で /usr/local/bin/perl などで利用していた場合は、ウインドウズ環境でも C:\usr\local\bin\perl にインストールした方が混乱を避けられます。次の例では、 C:\usr\local\bin\perl をインストールディレクトリに変更しています。

インストールディレクトリの選択

カスタムセットアップ画面で [Browse] ボタンを押した場合、以下のようなインストールディレクトリの選択用ダイアログボックスが表示されます。

ここでは、C:\usr\local\ をインストールディレクトリに指定します。[Folder name: テキストボックスに C:\usr\local\ と入力してください。これでPerlの実行ファイルが C:\usr\local\bin\perl にインストールされます。
最後に [OK] ボタンを押してください。カスタムセットアップ画面に戻るので、[Location:] テキストボックスのパス指定が C:\usr\local\ に変更されていることを確認しましょう。問題なければ [Next >] ボタンを押します。

以上の変更により、CGIスクリプトの先頭行に記述するPerlインタプリタのパスは #!/usr/local/bin/perl となります。

PPMのインストール指定

ActivePerlはプログラマーズ・パッケージ・マネージャー(PPM)を含みます。PPMはパッケージなどのインストールを簡略化するためのものです。

プロフィール情報をASPNに送ってもよい場合は、[Enable PPM3 to send profile info to ASPN] チェックボックスをチェックします。[Privacy Policy] ボタンを押して、プロフィール情報がどのように扱われるかを確認しておくとよいでしょう。
 次の画面に進むには、[Next >] ボタンを押してください。

セットアップオプション

セットアップするオプションの指定を行えます。

[Add perl to PATH environment variable] チェックボックス

Perlインタプリタのインストールパスを環境変数に設定するかどうかの指定です。これによりPerlインタプリタパスのインストールディレクトリが追加されます。ここにチェックを入れないと、命令文プロンプトでPerlインタプリタの場所をフルパスで指定しなければなりません。

[Create Perl file extension association] チェックボックス

CGIファイルの拡張子 .pl をActivePerlに関連付けを行うかの指定です。

さらに次のような2項目があります。インターネット・インフォメーション・サーバ(IIS)、インターネット・サーバ・アプリケーション・プログラミング・インタフェイス(ISAPI)がインストールされていないと、2つのチェックボックスは選択できない状態になります。

[Create IIS script mapping for Perl] チェックボックス
[Create IIS script mapping for Perl ISAPI] チェックボックス
セットアップの準備完了

以上ですべてのインストールの準備が整いました。

インストールを開始する場合は、 [Install] ボタンを押してください。前のオプション設定を変更する場合は、[Back] ボタンで戻ります。中止は [Cancel] ボタンです。

これで、セットアップが完了です。先ほどの環境変数を有効にする為、必ずウインドウズを再起動しましょう。

ActivePerlの起動設定

再起動後、環境変数の確認を行います。確認方法は、「マイコンピュータ」→「プロパティ」→「システムプロパティの詳細タブを押す」→「環境変数ボタンを押す」 Pathの項目にC:\usr\local\bin;となってれば、セットアップオプションの指定にてpathが追加できた事になります。もし、無いようなら手動で追加してください。

ディレクトリ、C:\PERL\BIN\MSWIN32-x86-thread か C:\PERL\BIN\MSWIN32-x86 も命令文パスに追加してください。

ActivePerl の動作確認

MS-DOSの命令文プロンプトで perl -v と入力します。バージョン情報が表示されたら、

パソコンが起動したら、ActivePerlが正しくセットアップされたかを確認します。[スタート]→[プログラム(P)]→[アクセサリ]→[コマンドプロンプト] を起動してください。コマンドプロンプトで、下記のように入力してエンターキーを押してください。

C:\>perl -v

Perlのバージョン情報が表示されれば、インストールは成功です。

このエントリーをはてなブックマークに追加

モジュールのインストール(UNIX版)

2009年7月6日 コメントの追加

簡単なCPANモジュールのインストール方法

Perl には、Perlコードをユニット単位で再利用可能にするためのモジュールという概念があります。例えば、メールを送信したりHTMLを出力するなどといった機能は何度も使いますから、そのたびに書き直したりコピーするのはめんどうですし、時間の無駄です。Perlのモジュールを利用すれば、プログラムからモジュールを呼び出すだけでメール送信機能やHTML出力機能など、そのほか様々な機能が利用できるようになっています。
モジュールは、通常は拡張子が .pm となっていて、それをコードの中から呼び出すことによりそのモジュールの機能を利用できるようになっています。モジュールを使えば、面倒な作業をショートカットでき、メール送信なんかのちょっと難しい処理も簡単にできるようになります。
自分でモジュールを製作しなくても、CPANサイトには世界中のプログラマが作ったモジュールが集められていて、無料でダウンロードすることができます。

CPANモジュールがインストールされていれば、以下のようにコマンド入力することによって、対話的に利用することができます。

% perl -MCPAN -e shell

このモジュールをはじめて使う際に、構成に関する質問が出力されますが、ほとんどの質問についてはデフォルトの答えで問題ないので、[Enter] キーで先に進めてしまいましょう。

※途中で、選択しなければ進めない箇所が出てきます。ダウンロードするサイトはどれにするかを聞いているだけですので、次のように答えていくとよいでしょう(太字になっているのが入力した番号です)。

First, pick a nearby continent and
country (you can pick several of
each, separated by spaces, or none if you just want to keep your
existing selections). Then, you will be presented with a list of URLs
of CPAN mirrors in the countries you selected, along with previously
selected URLs. Select some of those URLs, or just keep the old list.
Finally, you will be prompted for any extra URLs -- file:, ftp:, or
http: -- that host a CPAN mirror.

(1) Africa
(2) Asia
(3) Central America
(4) Europe
(5) North America
(6) Oceania
(7) South America
Select your continent (or several nearby continents) [] 2

(1) China
(2) India
(3) Indonesia
(4) Israel
(5) Japan
(6) Korea
(7) Malaysia
(8) Philippines
(9) Russian Federation
(10) Saudi Arabia
(11) Singapore
(12) South Korea
(13) Taiwan
(14) Thailand
Select your country (or several nearby countries) [] 5

(1) ftp://ftp.ayamura.org/pub/CPAN/
(2) ftp://ftp.cpan.jp/CPAN/
(3) ftp://ftp.dti.ad.jp/pub/lang/CPAN/
(4) ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
(5) ftp://ftp.kddlabs.co.jp/CPAN/
(6) ftp://ftp.meisei-u.ac.jp/pub/CPAN/
(7) ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
(8) ftp://ftp.u-aizu.ac.jp/pub/CPAN
(9) ftp://mirror.nucba.ac.jp/mirror/Perl/
Select as many URLs as you like,
put them on one line, separated by blanks [] 2

CPANモジュールの対話モードにはいったら、使えるモジュールの一覧を出力させたり、ダウンロードや、インストールを行うことができます。詳しい操作方法はコマンドラインでクエスチョン( ? )を入力することで表示することができます。

cpan> ?
Display Information
 command  argument		  description
 a,b,d,m  WORD or /REGEXP/  about authors, bundles, distributions, modules  i     WORD or /REGEXP/  about anything of above
 r     NONE   reinstall recommendations
 ls    AUTHOR     about files in the author's directory Download, Test, Make, Install...  get     download  make    make (implies get)  test   MODULES, make test (implies make)  install   DISTS, BUNDLES   make install (implies test)  clean   make clean  look    open subshell in these dists' directories  readme display these dists' README files Other  h,?    display this menu    ! perl-code   eval a perl command  o conf [opt]  set and query options   q quit the cpan shell  reload cpan   load CPAN.pm again   reload index  load newer indices  autobundle    Snapshot     force cmd unconditionally do cmd

モジュールのインストールはとても簡単です。たとえば、XML::RSSをインストールするには、下記のように入力するだけです。

cpan> install XML::RSS
PAGE TOP

モジュールの分類

ftp.cpan.jp

/CPAN

authors
モジュール製作者ごとの分類
doc
Perl に関するドキュメント類。
modules
バンドルされていないモジュール
ports
標準の配布キットでサポートされていないOSに対するPerlのポートのソースコード、バイナリ
scripts
全世界から集まった様々なスクリプトのコレクション
src
標準 Perl 配布キットのソース。最新版は常に src/latest.tar.gz という名前のファイル。

/CPAN/modules

モジュールは CPANのmodulesディレクトリで管理され、無料で利用することができます。CPANのmodulesディレクトリは目的別に3つのサブディレクトリに分類されています。

by-authors
製作者の名前で分類
by-category
モジュールの内容で分類
by-module
モジュール名で分類
dbperl
データベースに関連する DBI やスクリプト

各モジュールの説明や一覧は、modules ディレクトリ直下の 00modlist.long.html ファイルをご覧ください。

PAGE TOP

モジュールのインストールチェック

モジュールをダウンロードする前に、そのモジュールがすでにインストールされているかどうかシステムをチェックしておきましょう。以下のコマンドを実行すると、@INC配列中のライブラリを検索し、見つかったらモジュールの名前をすべて表示してくれます。

find `perl -e 'print "@INC"'` -name
'*.pm' -print

上記コマンドオプションだと、全モジュールが表示されるので、目当てのモジュールを見つけるのが大変かもしれません。たとえば、MySQL用のモジュール Msql.pm を見つけたい場合は、アスタリスク( * )の代わりに直接名前を指定するとよいでしょう。

find `perl -e 'print "@INC"'` -name 'Msql.pm' -print
PAGE TOP

ファイルダウンロードからのモジュールインストール

Perlにバンドルされていないモジュールをインストールする場合には、必要なファイルをダウンロードしてから、下記のような手順で行います。

ダウンロードしたファイルを解凍後、展開されたディレクトリに移動
% tar xvfz {ファイル名}.tar.gz
% cd {ファイル名}
Makefile の作成
% perl Makefile.PL
モジュールのビルド
% make
動作確認
% make test
インストール
% make install

※makeはコンパイル作業を自動化するためのコマンドで、カレントディレクトリにある「Makefile」を参照してコンパイルします。
※インストール前に、インストールする際のユーザ権限で、Perl 5ライブラリディレクトリにインストールすることができるか確認しましょう。ルート権限が必要になることがあります。

インストールディレクトリを指定する

モジュールをデフォルトの場所ではなく、任意の場所にインストールするのであれば、「perl Makefile.PL」を実行する前にPerlに PREFIX 引数を指定します。PREFIX 引数には、ベースのディレクトリに指定したいディレクトリパスを指示します。

% perl Makefile.PL PREFIX=/home/perl/Modules
% make....

なお、PREFIXを使ってインストールを行った場合は、プログラムを書く際にその場所を指定する必要があります。

#! /usr/local/bin/perl
use lib /home/perl/Modules;
use NewModule;
....
PAGE TOP

インストールログの確認

Perlは、全てのモジュールのインストールの際にログを記録しています。そのリストは次のコマンドで確認できます。

perldoc perllocal

次のように出力されます。

PERLLOCAL(1) User Contributed Perl Documentation PERLLOCAL(1)
Sun Jul 11 23:52:41 2021: "Module" user::PENModule
o "installed into: /usr/lib/perl5/site_perl/5.6.1"
o "LINKTYPE: dynamic"
o "VERSION: undef"
o "EXE_FILES: "
Sun Jul 11 23:59:34 2021: "Module" libwww-perl
o "installed into: /usr/lib/perl5/site_perl/5.6.1"
.....
PAGE TOP

関連リンク

CPAN

Perl の便利なモジュール

このエントリーをはてなブックマークに追加

Perlのインストール(UNIX版)

2009年7月6日 コメントの追加

1.Perl のダウンロードと CPAN

Perl は無料で入手することができます。本屋や雑誌などの付録CD-ROMでもPerlを入手できますが、オンラインなら CPAN(総合Perlアーカイブネットワーク:Comprehensive Perl Archive Network)が便利です。Perl本体やモジュール、Perlに関するドキュメントなどが豊富にそろい、常に最新のバージョンに更新されています。

Perl の入手法

Perlを利用する際に最低限必要になるのは、Perl プログラムを実行するための環境である Perl配布キットだけです。ただ、そのほかにユーティリティーやモジュール、ドキュメントなどもいずれ必要になるでしょう。それらのファイルが最も集まっているのが CPAN サイトです。

CPAN アーキテクチャ

CPAN のホームは funet.fi ですが、各国にミラーリングサーバを用意しているので、最も近い地域にあるミラーサイトを選択し、利用することができます。ローカルなミラーサイトを選択する一番簡単な方法は、ブラウザから www.perl.com のCPANマルチプレクスサービスを利用することです。『www.perl.com/CPAN/』にアクセスすると、アクセスしたユーザが利用しているネットワークに最も近いと思われるCPANのミラーサイトに接続してくれます。
また、マルチプレクスサービスで自動的に選んでもらう代わりに、自分で特定のミラーサイトを選択することもできます。『www.perl.com/CPAN』 (最後にスラッシュ( / )を付けない)にアクセスすると、現在利用できるミラーサイトが表示されます。
もしくは、アノニマスFTPの ftp.cpan.jpからFTP経由でダウンロードすることもできます。

リンク集

Perl.com

Perl のマニュアル


2.Perl のインストール

ここでは、Linux や FreeBSD などの、UNIX 系 OSのインストール方法を解説します。

まずはファイルの解凍、日本語パッチ

UNIX 版のPerlはtar形式の圧縮ファイルで配布されているので、解凍作業が必要になります。任意のディレクトリにPerlのインストールファイルをダウンロードしたら、解凍作業を行いましょう。

tarでソースを解凍
% tar xvfz perl{バージョン}.tar.gz

日本語パッチのJperlをインストールしたい場合は、以下のようにしましょう。

日本語パッチをあてるために、jperlを置いてあるディレクトリに移動
% mv ../jperl{バージョン}.pat.gz jperl{version}.pat.gz
% chmod +x t/kanji/*.t

gzipでjperlを解凍 % gzip -dc jperl{バージョン}.pat.gz | patch -p1
% ./Configure -U d_setlocale

警告メッセージについて

標準インストールでは、Perlを実行するたびに警告が発せられます。

|perl: warning: Setting locale failed.
|perl: warning: Please check that your locale settings:
| LC_ALL = (unset),
| LANG = "ja_JP.ujis"
| are supported and installed on your system.
|perl: warning: Falling back to the standard locale ("C").

この警告は環境変数 PERL_BADLANGを設定することで抑制することができます。ホームディレクトリにある「.cshrc」ファイルを下記を参考にして編集してください。

csh 系

$ setenv PERL_BADLANG 0

sh 系

$ PERL_BADLANG=0; export PERL_BADLANG

もしくはシェルで ./Configure -U d_setlocale してからmakeしましょう。

インストール

解凍で作成された「perl5.004_04」ディレクトリに移動
% cd perl{バージョン}

自動的に設定する場合は[./configure]、手動で設定する場合は[./Configure]と入力
% sh ./configure
% make

エラーがないかを確認 % make test

実際のインストール % make install

もし、Perlを以前にインストールしていた場合は、「% make realclean」で余計なファイルを削除しておきましょう。

バージョンの確認

Perlには、手持ちのバージョンとパッチ情報、著作権情報を知るためのコマンドオプションがあります。 バージョン情報が表示されたら、インストールは無事終了です。

$ perl -v

Mac版のPerlの場合は、アップルメニューから「About MacPerl」を選択します。

このエントリーをはてなブックマークに追加

Jump to the top