VPSサーバにApacheをセットアップ
少し時間ができたので、こないだ借りた CPI の VPS サーバに Apache をセットアップした。 Apache はデフォルトで起動しているけど、このままでは1つのドメインしか収容できない。 まずは、複数のドメインで使い分けることができるようにする。
バージョン管理用に Mercurial をインストール
設定ファイルを楽にバージョン管理したいので、 fedoraのサイトから Mercurial のバイナリをダウンロードしてインストールした。
$ sudo rpm -i mercurial-0.9.1-1.fc5.i386.rpm
Apache の設定ファイルディレクトリに移動して、Mercurialの管理下へ置く。
$ cd /etc/httpd/conf $ sudo hg init $ sudo hg addremove $ sudo hg commit
設定ファイルをスリムに
初期状態の Apache はたくさんのモジュールが入っている。 このまま使ってもいいんだけど、フロントの Web サーバはなるべくシンプルにしたいので設定ファイルを削る。 もちろん、これだとCGIもPHPも動かない。 PHPは別のポートでサーバを起動して、そっちにプロキシする予定。
ServerTokens OS ServerRoot "/etc/httpd" PidFile run/httpd.pid Timeout 120 KeepAlive Off <IfModule prefork.c> StartServers 1 MinSpareServers 1 MaxSpareServers 5 ServerLimit 10 MaxClients 10 MaxRequestsPerChild 4000 </IfModule> Listen 80 LoadModule authz_host_module modules/mod_authz_host.so LoadModule log_config_module modules/mod_log_config.so LoadModule env_module modules/mod_env.so LoadModule mime_magic_module modules/mod_mime_magic.so LoadModule mime_module modules/mod_mime.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule dir_module modules/mod_dir.so LoadModule alias_module modules/mod_alias.so User apache Group apache ServerAdmin root@localhost ServerName example.com:80 UseCanonicalName Off DocumentRoot "/var/www/html" <Directory /> Options FollowSymLinks AllowOverride None </Directory> DirectoryIndex index.html TypesConfig /etc/mime.types DefaultType text/plain <IfModule mod_mime_magic.c> MIMEMagicFile conf/magic </IfModule> HostnameLookups Off ErrorLog logs/error_log LogLevel warn LogFormat "%h %l %u %t ¥"%r¥" %>s %b ¥"%{Referer}i¥" ¥"%{User-Agent}i¥"" combined CustomLog logs/access_log combined ServerSignature On
設定ファイルをチェックして Apache を再起動。
$ /etc/init.d/httpd configtest $ /etc/init.d/httpd restart
top コマンドでみたところ、1プロセスあたりのメモリ消費量がだいたい1MBくらい。
圧縮設定
帯域を節約するために HTML を圧縮してクライアントに送信する設定。
LoadModule deflate_module modules/mod_deflate.so <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml </IfModule>
バーチャルホストとディレクトリを関連づけ
複数ドメインで運用する時に、ドメインとディレクトリを関連づけたい。 たとえば www.machu.jp にアクセスされると /var/www/www.machu.jp のコンテンツを表示し、 example.com だと /var/www/example.com のコンテンツを表示するように。 そのために mod_vhost_alias を使う。 もしかしたら UseCanonicalName Off と併用した方がいいかも。
LoadModule vhost_alias_module modules/mod_vhost_alias.so # DocumentRoot "/var/www/html" VirtualDocumentRoot "/var/www/%0"
他の HTTP サーバにプロキシする
Rails を Mongrel で動作させる場合などには、 Apache を他の HTTP サーバへのプロキシとして使う。 まずは mod_proxy を読み込む。ロードバランサである mod_proxy_balancer はあとで。
LoadModule proxy_module modules/mod_proxy.so # LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so # LoadModule proxy_connect_module modules/mod_proxy_connect.so
ここでは wolfbbs.jp ドメインへのアクセスを8000ポートへ転送するように設定した。 前述のように、PHPを組み込んだApacheをあとで用意する予定。
NameVirtualHost *:80 <VirtualHost *:80> ServerName wolfbbs.jp <IfModule mod_proxy.c> ProxyRequests Off ProxyPreserveHost On ProxyPass / http://127.0.0.1:8000/ ProxyPassReverse / http://127.0.0.1:8000/ </IfModule> </VirtualHost> <VirtualHost *:80> ServerName example.com </VirtualHost>
これで土台はできたかな。