トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Webサーバ(Apache)

Webサーバ(Apache)

RedHat9.0には標準でApache(httpd)がRPM形式でインストールされています(2.0.40)。Apacheは「httpd」というサービスで提供されるWebサーバです。HTTP/HTTPSを使用したサイトを立ち上げる場合のサーバプログラムとしてよく使われます。

http://httpd.apache.org/

からソースをダウンロードし、ビルド作業を行います(2005/06現在は2.0.54が最新)。Webサーバはセキュリティに気を使う必要があるため、常に最新版でアップデートすることをおすすめします。

Apacheのインストール前に

RPM形式でApacheが存在するか、

rpm -qa | grep httpd

にて確認します。最新をソースからビルドする場合は

rpm -e httpd

のように関連ファイルをアンインストールしていきます。

Apacheのビルド

ソースをダウンロードし「htpd-2.0.54.tar.gz」を解凍して、展開したディレクトリに移動します。

tar xvfz httpd-2.0.54.tar.gz
cd httpd-2.0.54

ビルドは以下の手順で行ってます。なお、SSL対応/WebDAV対応のオプションを有効にしています。

./configure --enable-module=all --enable-mods-shared=most --enable-ssl --enable-shared=yes enable-dav=yes

make
make install

「./configure」は1行で入力します。その後、「make」を実行、「make install」を実行で、「/usr/local/apache2」にApacheの関連ファイルがインストールされます。

configureのオプション指定は御本家の「http://httpd.apache.org/docs-2.0/」に日本語で詳しく乗ってますので(というよりもApacheについての設定なども含めて)まずはこちらを見るほうがいいかもしれません。

設定ファイルを調整

そのままApacheを起動すればWebサーバが立ち上がることになりますが、デフォルトではテストページなども参照できるようになってます。ですので、自分で作ったテストページが表示できるように調整します。

設定ファイルとして「/usr/local/apache2/conf/httpd.conf」を編集することになります。要チェックの部分のみ説明します。

ServerRoot

Apacheをインストールしたディレクトリです。たぶん、そのままでOKです(インストーラが自動で設定してくれています)。

ServerRoot "/usr/local/apache2"

ServerAdmin

ServerAdmin admin@xxxx.co.jp

これは、エラーページで表示されている管理者のメールアドレスです。特にWebサーバのシステムで使用するわけではないですが、設定しておきましょう。

ServerName

Webブラウザでアクセスする場合のURLを指定します(つまり、これがサーバ名)。

ServerName www.xxxx.co.jp:80

クライアントからは「www.xxxx.co.jp」でアクセスできることになります。コロンの後の80はHTTPでのポート番号です(省略可能)。

DocumentRoot

実際のHTMLファイルを置く位置(ディレクトリ)を指定します。

DocumentRoot "/var/html/htdocs"

これは、ユーザから参照できないようなところにするのが無難です。ここでは「/var/html/htdocs」にHTMLファイルを配置するものとします。

HTMLを配置するディレクトリの設定

Webサーバ上で管理するルートディレクトリでのアクセス情報などを指定します。Directoryの後のダブルクォーテーションでDocumentRootで指定したディレクトリを入れてます。

<Directory "/var/html/htdocs">
  Options FollowSymLinks Indexes Includes MultiViews ExecCGI
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

Optionsの「FollowSymLinks」でシンボリックリンクもたどる対象にしています。「Indexes」でURLでディレクトリ指定された場合に、ディレクトリ内のファイル一覧を列挙します。「ExecCGI」はPerlなどのCGI実行を有効にします。「AllowOverride All」で、各ディレクトリごとの「.htaccess」ファイルの指定を有効にします。「Order allow,deny」で、許可・拒否の順にアクセス制御を行います。「Allow from all」アクセスを許可するホスト(IPアドレスなど)を指定しますが、ここではallでフルアクセスしてます。制限をかけたい場合に使用します。

しかし、ディレクトリ内のファイルが表示されたり、ルートでCGI実行ができてしまうのは怖いです。ので、必要な項目以外はカットしてしまいます。

<Directory "/var/html/htdocs">
  Options FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

CGIが必要な場合や「.htaccess」が必要な場合は、別ディレクトリを作れば対処できますので、ルートはただ単にHTMLファイルがみることができるだけ、としておきます。

なお、

Alias /icons/ "/usr/local/apache2/icons/"

<Directory "/usr/local/apache2/icons">
...
</Directory>

みたいな「Alias」「Directory」の組み合わせが複数あります。特に使用しないのであれば、これらをコメントにしてアクセスできないようにします。

たとえば、「/icons」が有効な場合、「www.xxxx.co.jp/icons/xxx.gif」みたいにしてアクセスできるようになります。実体(実際のディレクトリ)は「/usr/local/apache2/icons/xxx.gif」です。

DirectoryIndex

ファイル名が省略して指定された場合の、とりあえず呼び出すファイル名を指定します。

DirectoryIndex index.html index.html.var index.htm

CGIを置くディレクトリを指定

ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

これで「/usr/local/apache2/cgi-bin/」内にPerlなどのファイルを置くことにより、CGI実行が可能になります。このときのURLのディレクトリは「cgi-bin」となります。

http://www.xxxx.co.jp/cgi-bin/hoehoe.pl

みたいにアクセスできます。なお、ScriptAliasのディレクトリ名の最後が「/」である点に注意してください。

ルート以外のディレクトリを参照

上記では「/var/html/htdocs」をルートとしましたが、それ以外のディレクトリを参照したい場合もあります。

Alias /test/ "/home/htdocs/"

<Directory "/home/htdocs">
  Options FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

上記のような追加を行うと、「www.xxxx.co.jp/test/hoehoe.html」みたいにブラウザから呼ぶときに「/home/htdocs/hoehoe.html」をみることができるようになります。

コンテンツを分けて管理したい場合に、このような方法は使えますね。また、各Aliasごとに「.htaccess」の使用やアクセス許可設定を行うことができます。

なお、Aliasのディレクトリ指定では最後に「/」をつける、<Directory>のところでは「/」を末尾につけない、という点に注意してください。

日本語文字化け対策

Linux上でApacheを運用する場合、2バイト全角が化けてしまう、という現象にまれに出くわします。設定ファイル「httpd.conf」にて、以下の二カ所を見直すことで回避できることが多いです。

AddDefaultCharset off

「AddDefaultCharset」の記述部分でoffを指定します。デフォルトの文字列はApache内では「iso-8859-1」らしく、これを使用しないようにしてます。

また、

LanguagePriority ja en ca cs da ...

のように、「LanguagePriority」で日本語(ja)を先頭に持ってきます。

Apacheサービス起動

/usr/local/apache2/bin/apachectl start

Apacheサービス停止

/usr/local/apache2/bin/apachectl stop

Apacheサービス再起動

/usr/local/apache2/bin/apachectl restart

Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.