トップ > Linux > Apacheでwwwサーバー構築 
Apacheでwwwサーバー構築

Apache(アパッチ)は、世界的にかなり多く使われているwebサーバーです。
ここではApacheの基本設定から、ちょっと奥深い設定まで行いたいと思います

1. Apacheのインストール

  Apacheのインストール方法や設定ファイルの設置場所は、各ディストリビューションによって異なる場合があります。
  
 yumを用いてインストールする場合(一緒にPHPとPHP-mbstringもインストールします)
 # yum -y install httpd
 # yum -y install php
 # yum -y install php-mbstring

2. Apacheの設定

 Apacheの設定は httpd.conf というファイルを編集します。
 httpd.confは /etc/httpd/conf/ という場所にあります。
(httpd.confの場所はディストリビューションによって異なる場合があります)

 まずは基本的な設定から行います。

 vi でconfファイルの編集を行います

# vi /etc/httpd/conf/httpd.conf
  ※以下の編集箇所はhttpd.confファイルの中に記載がありますが、順不同で掲載しています

2-1. ServerTokens ディレクティブの編集

ServerTokens のDefault設定は OS となっています。
Apacheのバージョン表記をさせたくない場合は Prod に変更します。

# ServerTokens OS
  ↓ 変更 ↓
# ServerTokens Prod
表示のされ方(実際の表記はバージョン等により異なります)

ServerTokens Prod = Server: Apache
ServerTokens Major = Server: Apache/2
ServerTokens Minor = Server: Apache/2.0
ServerTokens Min = Server: Apache/2.0.42
ServerTokens OS = Server: Apache/2.0.42 (Unix)
ServerTokens Full = Server: Apache/2.0.42 (Unix) PHP/5.0.15 等

2-2. ServerAdmin ディレクティブの編集

ServerAdmin のDefault設定は root@localhost となっています。
この設定は、サーバーがクライアントに送るエラーページに表記するメールアドレスを記載します。
一般的にはwebmasterやwww-admin等、ホームページ管理専用アドレスを記載することが多いです。
以下の設定では、我が家のwebmasterアドレスを表記するように設定しています

# ServerAdmin root@localhost
  ↓ 変更 ↓
# ServerAdmin webmaster@rns-cdc.net
2-3. ServerName ディレクティブの編集

ServerName のDefault設定は example.com:80 となっています。
この設定はサーバーが自分自身を示す時に使うホスト名とポート番号を記載します。
通常設定では、ポート80が利用されますが、リバースプロキシや特殊なポートを利用する場合は
ポート番号を変更する事が可能です。

# ServerName www.example.com:80
  ↓ 変更 ↓
# ServerName www.rns-cdc.net:80
もし、SSLを処理するマシンの背面でサーバーを動かす場合は以下のように設定します。
# ServerName www.example.com:80
  ↓ 変更 ↓
# ServerName https://www.rns-cdc.net:8080
2-4. ServerSignature ディレクティブの編集

ServerSignature のDefault設定は off となっています。
この設定はサーバーのエラーページ等の最下行にフッタ行を表示することができます。
表示内容には設定内容により下記のように異なります。

ServerSignature Off = 表記なし
ServerSignature On = サーバーのバージョン、ServerName
ServerSignature EMail = サーバーのバージョン、ServerNameの内容、ServerAdminの内容

# ServerSignature Off
2-5. DirectoryIndex ディレクティブの編集

DirectoryIndex のDefault設定は index.html となっています。
基本的にindex.htmlです大丈夫ですが、ホームページ作成ソフトによってはindex.htmというファイル名も
存在するので、下記の設定にする事をお勧めします。また、SSIを使う場合は、index.shtmlも入れておくと便利です。

# DirectoryIndex index.html
  ↓ 変更 ↓
# DirectoryIndex index.html index.htm index.shtml
2-6. DocumentRoot ディレクティブの編集

DocumentRoot のDefault設定は 各ディストリビューションによって異なります。
/usr/local/apache/htdocs や /var/www/html 等が指定されています。

# DocumentRoot /usr/local/apache/htdocs ※必ずしもこれが正しいわけではありません。
2-7. AddHandler ディレクティブの編集

AddHandler の中で、これは必要と思われる部分の設定を行います。
AddHandler cgi-script .cgiという項目があるので、.cgi以外に.plを実行可能にします。

# AddHandler cgi-script .cgi
  ↓ 変更 ↓
# AddHandler cgi-script .cgi .pl
2-8. メインディレクトリ内部 ディレクティブの編集

メインディレクトリとは、で囲まれた中に記述があります。
メインディレクトリはDocumentRoot で指定されたディレクトリを指します。

2-8-1. Options 〜 ディレクティブの編集

Options のDefault設定は 各ディストリビューションによって異なります。
基本的には、ファイル一覧表示の禁止、CGI・SSIの実行許可、シンボリックリンクの利用があればいいと思います

# Options All
  ↓ 変更 ↓
# Options Includes ExecCGI FollowSymLinks
オプション設定詳細

None = 全てのオプションは無効になります。
All = MultiViewsを除いた全ての機能が有効となります。
ExecCGI = CGIスクリプトの実行を許可します。※mod_cgiが必須です。
FollowSymLinks = サーバーが該当ディレクトリ内でシンボリックリンクをたどれるようになります。
Includes = SSIを有効にします。※mod_includeが必須です。
IncludesNOEXEC = SSIは有効になりますが、execとexec CGIが無効になります。
Indexes = DirectoryIndexで指定されたファイルがない場合に、ファイルの一覧を表示します。※mod_autoindexが必須です。
MultiViews = MultiViewsを許可します。※mod_negotiationが必須です。
SymLinksIFOwnerMatch = シンボリックリンク先のファイルやディレクトリが、シンボリック所有ユーザーと同じ場合にリンクをたどれます。
2-8-2. AllowOverride〜 ディレクティブの編集

AllowOverride のDefault設定は 各ディストリビューションによって異なります。
.htaccessを利用したい場合は、AllowOverride All になっている事を確認してください。

# AllowOverride All
3. その他環境設定
ここからは、apacheに関連した設定を行います。
コマンドラインの入力で済む設定や、httpd.confを書き換える設定が混在します。ご注意ください
中にはご利用環境で必要としない設定もありますので、必要でない場合、その箇所は飛ばしてください

3-1. Perlパスの確認【コマンドライン】
CGIの実行するにあたり、CGIプログラムのパスがディストリビューションによって異なる場合があります。
その為、CGIプログラム開発者の環境によって、パスが変わってくる場合があるので
一般的によく使われるパスを登録します。

# whereis perl
perl: /usr/bin/perl
whereis perl というコマンドを実行する事で、perlのパスが表示されます。
基本的には、/usr/bin/perl が表示されていると思います。
そしたら、/usr/local/bin/perl へのパスも登録します。
# ln -s /usr/bin/perl /usr/local/bin/perl
このコマンドを実行した後に、再度whreris perlでパスの確認をおこなってください。
結果は perl: /usr/bin/perl /usr/local/bin/perl と表示されるはずです

Copyright kazu-kun 2008-2011 All Rights Reserved.  Since 08/12/25