!!!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で指定した
ディレクトリを入れてます。
Options FollowSymLinks Indexes Includes MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Optionsの「FollowSymLinks」でシンボリックリンクもたどる対象にしています。
「Indexes」でURLでディレクトリ指定された場合に、ディレクトリ内のファイル一覧を列挙します。
「ExecCGI」はPerlなどのCGI実行を有効にします。
「AllowOverride All」で、各ディレクトリごとの「.htaccess」ファイルの指定を有効にします。
「Order allow,deny」で、許可・拒否の順にアクセス制御を行います。
「Allow from all」アクセスを許可するホスト(IPアドレスなど)を指定しますが、ここではallでフルアクセスしてます。制限をかけたい場合に使用します。
しかし、ディレクトリ内のファイルが表示されたり、
ルートでCGI実行ができてしまうのは怖いです。
ので、必要な項目以外はカットしてしまいます。
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
CGIが必要な場合や「.htaccess」が必要な場合は、別ディレクトリを
作れば対処できますので、ルートはただ単にHTMLファイルがみることができるだけ、
としておきます。
なお、
Alias /icons/ "/usr/local/apache2/icons/"
...
みたいな「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/"
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
上記のような追加を行うと、「www.xxxx.co.jp/test/hoehoe.html」みたいに
ブラウザから呼ぶときに「/home/htdocs/hoehoe.html」をみることができるように
なります。
コンテンツを分けて管理したい場合に、このような方法は使えますね。
また、各Aliasごとに「.htaccess」の使用やアクセス許可設定を行うことができます。
なお、Aliasのディレクトリ指定では最後に「/」をつける、
のところでは「/」を末尾につけない、という点に注意してください。
!日本語文字化け対策
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