SSブログ

たぶん難しくないApache2・初期設定編その2~普通のWebサーバらしく~ [Linux(Apache)]

 さて。これまでに設定した内容で、雰囲気的にWebサーバとして振舞っているような気がする設定は完了しているのだが、どう贔屓目に見てもまだまだ「足りない子」であることは否めない。(笑)そこで、今度は「ちゃんとできる子」に調ky…じゃないしつけを施したいと思う。


 試してもらった人なら、ツッコミどころが判っていると思うのだけども、

  1.「 http://server/ 」ではエラーになる。「 http://server/index.html 」といちいちファイルまで指定しなければならない
  2.ブラウザによっては日本語の文字がどう選択しても化け化けになる(ブラウザによっては普通に表示されちゃう)
  3.バイナリファイルをダウンロードするとファイルがなぜか壊れる

 と、なかなかの「足りない子」っぷりを発揮していると思う。(笑)
 これはひとえにhttpd.confに設定が足りないからに他ならない。ここでは、これらの問題を解決してゆきたいと思う。

 1.ファイル名を省略したら、「index.html」が表示されるようにする

 http://server/  とか、 http://server/directory/  とか指定すれば、なにがしかのhtmlページが表示されるのが、世の一般的なWebサーバとしての常識的な振る舞いであろうということは誰もが認めるところだと思う。そこで、目下調ky…じゃない設定中のWebサーバにもそれらしく振舞ってもらおうじゃないか。

 この場合には、「DirectoryIndex」ディレクティブを使用する。このディレクティブで、URLにディレクトリまでが指定されている場合に表示させる(ダウンロードさせる)ファイルを指定することができる。
 使い方は実に簡単で、httpd.confに

DirectoryIndex index.html

 とか書けばよい。
 ちなみに、このディレクティブには複数のファイル名を列挙することが出来る。例えば、「DirectoryIndex index.html main.html」とか書けば、そのディレクトリに「index.html」があればそれを表示させ、index.htmlが無い場合に、「main.html」があればそれを表示…ということになる。
 なお、このディレクティブにはCGIを指定することも可能で、CGIの動作環境が適切に用意されhttpd.confにも適切に指定されていれば、「DirectoryIndex index.cgi」とか指定することも可能だ。

 なお、詳細は後日別アーティクルで紹介するが、ディレクトリやロケーションごとにファイル名を変えることも可能である。


2.文字コードを正しく認識させる。

 賢いブラウザであれば、ブラウザ側が勝手にフォローしてくれるので困った事態にならなかったと思うが、そうでないブラウザもまだ多いんじゃないかと思うので、サーバとして文字コードを正しく認識するように、設定を追加しよう。
 ま、「あいきゃんすぴーくいんぐりっしゅおんりー」みたいなガイジンさんには無用の長物かもしれないが、そんな人はこんなblog読まないはずなので以下略。

 まず、apache2のバージョンによっては、htmlファイル内のmetaタグでどんな言語設定をしようとも、そんなの無視して英語だ!と宣言してしまう挙動をする困ったちゃんがいるので、この動作を抑止する。(apacheの2.2系以降は抑止された状態になっている…はず
 「AddDefaultCharset off」というディレクティブを追加する。これで、なんでもかんでも英語化されてしまうことを抑止できる。(2.2以降はすでにこの設定になっている)


3.ファイルのMIMEタイプを正しく認識させる

 ファイルの内容に応じて、「MIME(マイム)タイプ」という情報をWebサーバ側に設定しておくことで、クライアントの振る舞いを規定することができるのだが、逆を言えばこの指定が無ければクライアントはトンチンカンな挙動をしてしまうかもしれない。(クライアント側のブラウザが賢ければ何事も無かったかのように振舞うかもしれない)

 で、サーバ側にMIMEタイプを正しく認識させる必要性に迫られるのだが、これが簡単な話ではないのだ。(いや、簡単に解決させるのであるが…)というのも、「MIMEタイプ」はすでに大量に存在する上に、次々と新しいものが作られているからやっかいなのである。つまり、Webサーバの管理者はそれらをいちいちメンテナンスしていかないと、サーバの利用者からいろいろ文句を言われてしまうかもしれない…ということなのである。

 が、世の中にはありがたい人がいて、それを簡単に解決するようにその仕組みを準備してくれたのである。それが「mod_mime_magic」というモジュール。
 yumでapacheをインストールすると、httpd.confと同じディレクトリに「magic」というファイルが作成されていたことに気がついただろうか。これをhttpd.confの中から読み込ませてやると、これらの問題がいとも簡単に解決してしまうのであった。ありがたやありがたや…

 で、その記述はたったの1行。「MimeMagicFile conf/magic」と書くだけ。これでたいていのファイルは正しくダウンロードできるようになる。もし、オリジナルのファイルを配布したい場合は、「AddType」ディレクティブや「AddEncoding」ディレクティブをhttpd.confの中に追記することで対応可能となる…が、このblogを見に来る人がそこまで要求するとも思えないので詳細な解説はここでは割愛する。(笑)

#どうしても今すぐやりたいならzipで圧縮するとかして対応すれば、小難しいことは必要ないはず。

そんな訳で、ここまでに完成したhttpd.confを以下に示そう。
[root@kagami conf]# cat httpd.conf
ServerRoot      "/etc/httpd"
PidFile         run/httpd.pid
Listen          80
User            apache
Group           apache

ServerName      kagami.hiiragi.com:80
DocumentRoot    "/var/www/html"

LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule dir_module modules/mod_dir.so
LoadModule mime_magic_module modules/mod_mime_magic.so

<Directory      />
        Order   Allow,Deny
        Deny from       All
</Directory>

<Directory      /var/www/html>
        Order   Deny,Allow
        Allow from      All
</Directory>

<Files  ~       "^\.ht">
        Deny from       All
</Files>

DirectoryIndex  index.html
AddDefaultCharset       off
MimeMagicFile   conf/magic

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。