リード開発メモ

大阪のソフトウェア会社です。 技術的な事柄についてのメモとしてブログを始めます。

Apache

Apache localhost でバーチャルホストを使う

ローカル環境でバーチャルホストを使いたい場合、サーバー名を aaa.localhost と bbb.localhost などとして設定すればいい。

まず、hosts ファイルを以下のように編集しておく。hosts ファイルは Windows XP では C:\WINDOWS\system32\drivers\etc にある。

127.0.0.1       localhost aaa.localhost bbb.localhost

つぎに C:\pleiades\xampp\apache\conf\extra\httpd-vhosts.conf にバーチャルホストの設定を追記する。

<VirtualHost *:80>
  ServerAdmin postmaster@aaa.localhost
  DocumentRoot "C:\pleiades\xampp\htdocs\aaa"
  ServerName aaa.localhost
  ErrorLog "logs/aaa.localhost-error.log"
  CustomLog "logs/aaa.localhost-access.log" combined
  
  <Directory "C:/pleiades/xampp/htdocs/aaa/">
    Options FollowSymLinks Includes ExecCGI MultiViews
    AllowOverride All
    Allow from all
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  ServerAdmin postmaster@bbb.localhost
  DocumentRoot "C:\pleiades\xampp\htdocs\bbb"
  ServerName bbb.localhost
  ErrorLog "logs/bbb.localhost-error.log"
  CustomLog "logs/bbb.localhost-access.log" combined
  
  <Directory "C:/pleiades/xampp/htdocs/bbb/">
    Options FollowSymLinks Includes ExecCGI MultiViews
    AllowOverride All
    Allow from all
  </Directory>
</VirtualHost>

Apache どのバーチャルホストにもマッチしないリクエストの場合

どのバーチャルホストにもマッチしないリクエストの場合、最初に設定されているバーチャルホストが使われる。

つまり、もしIPアドレスでリクエストされたら意図しないページが返されてしまう。Apache のサイトによれば、現在のブラウザはそういうことはなく、ちゃんと名前ベースのリクエストを送ってくれるらしいが、かなり古いブラウザではそういうことがあるそうだ。

Apache バーチャルホストの設定

バーチャルホストを設定することで、ひとつのIPアドレスで複数のドメインのWebサイトを公開することができる。たとえば1台のマシンだけで aaa.com と bbb.com の Webサイトを運用できる。

(XAMPP 付属の)Apache での設定の仕方は次のとおり。ただし既存の設定はバーチャルホストとして設定しなおす必要がある。

まず C:\pleiades\xampp\apache\conf\http.conf の下記の行を有効にする(XAMPP 環境であれば最初から有効かもしれない)。

Include "conf/extra/httpd-vhosts.conf"

次に C:\pleiades\xampp\apache\conf\extra\httpd-vhosts.conf に以下のように記述する。

NameVirtualHost *:80

<VirtualHost *:80>
  ServerAdmin postmaster@aaa.com
  DocumentRoot "C:\pleiades\xampp\htdocs\aaa"
  ServerName aaa.com
  ErrorLog "logs/aaa.com-error.log"
  CustomLog "logs/aaa.com-access.log" combined
  
  <Directory "C:/pleiades/xampp/htdocs/aaa/">
    Options FollowSymLinks Includes ExecCGI MultiViews
    AllowOverride All
    Allow from all
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  ServerAdmin postmaster@bbb.com
  DocumentRoot "C:\pleiades\xampp\htdocs\PriceWeb"
  ServerName bbb.com
  ErrorLog "logs/bbb.com-error.log"
  CustomLog "logs/bbb.com-access.log" combined
  
  <Directory "C:/pleiades/xampp/htdocs/bbb/">
    Options FollowSymLinks Includes ExecCGI MultiViews
    AllowOverride All
    Allow from all
  </Directory>
</VirtualHost>

Apache パフォーマンスを調べる

Apache 付属の ApacheBench でパフォーマンスを調べることができる。

ab -n 100 -c 10 http://xxxx.com/

これで、同時接続数を「10」で、計「100」リクエストを発行する。

結果で注目すべきは以下の項目。

・Failed requests
失敗したリクエスト数。この数値は、負荷試験にて処理できなかったリクエスト数が表示される

・Requests per second
1秒間あたりで処理されたリクエスト数

・Transfer rate
1秒間あたりで転送された容量

Apache php ファイルの拡張子をなくす

SEO対策などのために、拡張子なしでphp ファイルを公開するというテクニックがあるらしい。
方法は2つ。

一つ目は .htaccess を設置する方法。

<FilesMatch "^$">
ForceType application/x-httpd-php
</FilesMatch>

と .htaccess に書いて、実際に php ファイルの拡張子をなくす。
しかし、実際に php ファイルの拡張子をなくすというのは何かと不便。。。

二つ目は http.conf を編集する方法。

C:\pleiades\xampp\apache\conf\httpd.conf のディレクトリの設定に MutiViews を追加する。
Options Indexes FollowSymLinks Includes ExecCGI

Options Indexes FollowSymLinks Includes ExecCGI MutiViews

こちらのほうが簡単だが、拡張子ありでもアクセスできてしまうのが難点か。。。
とりあえず後者の方法で。

アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

livedoor 天気