Apache は ウェブサーバであり、ホームページの公開などを行う。
%su Password: # cd /usr/ports/www/apache22 # make install clean # rehash
インストールが完了すると、/usr/local/etc/rc.d/ に apache22 の起動/終了シェルスクリプトが作られる。
# vi /etc/rc.conf
/etc/rc.conf の中に次の1行を加える。ファイル末尾でよい。
apache22_enable="YES"
ここでは、バーチャルドメインを利用して、1台のWWWサーバで複数のドメインを運用する方式として記載する。
先に、ログファイルを保管するディレクトリを作成しておく(変更する場合のみ)。
# cd /var/log # mkdir httpd # chown www:www httpd # vi /usr/local/etc/apache22/httpd.conf
次の部分を適切に変更する。
#ディレクトリ・インデックス(以下は参考であり実際には使いかたによって変更する)。 <IfModule dir_module> #DirectoryIndex index.html DirectoryIndex index.html index.htm index.shtml index.php index.cgi </IfModule> #エラーログファイルのパス #(この様に変更する場合は、必ず/var/log/httpdディレクトリを作っておくこと)。 #ErrorLog "/var/log/httpd-error.log" ErrorLog "/var/log/httpd/httpd-error.log" #ログファイルのパス(上と同様にディレクトリを作成、)。 <IfModule log_config_module> #CustomLog "/var/log/httpd-access.log" combined SetEnvIf Request_URI "default\.ida" nolog SetEnvIf Request_URI "cmd\.exe" nolog SetEnvIf Request_URI "root\.exe" nolog SetEnvIf Request_URI "Admin\.dll" nolog SetEnvIf Request_URI "NULL\.IDA" nolog SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(ico)|(css)$" nolog CustomLog /var/log/httpd/httpd-access.log combined env=!nolog #SetEnvIfの行は、 #Request_URIに"root\.exe"などの正規表現がマッチする場合にnologという環境変数を設定。 #末尾のCustomLogの行は、 #nologが設定されていない場合に、ログを記録する。という意味。 </IfModule> #mimeタイプの設定 <IfModule mime_module> # phpを利用する場合に追加 AddType application/x-httpd-php .php # cgiを利用する場合に有効にする AddHandler cgi-script .cgi </IfModule> #エラー時に表示するファイルやメッセージ #ErrorDocument 500 "The server made a boo boo." #ErrorDocument 404 /missing.html #ErrorDocument 404 "/cgi-bin/missing_handler.pl" #ErrorDocument 402 http://www.example.com/subscription_info.html #ヴァーチャルドメインを利用する場合は有効にして、該当ファイルを変更する。 Include etc/apache22/extra/httpd-vhosts.conf
# vi /usr/local/etc/apache22/extra/httpd-vhosts.conf
なお、下記の場合、次の3つのディレクトリを作成し、そこにウェブデータを入れると仮定する。
#サーバのIPアドレスに変えておく。 NameVirtualHost 192.168.0.111 #http://IPアドレス/ で閲覧された場合など #想定外のアクセスがあった場合に表示する設定 <VirtualHost 192.168.0.111> ServerName any DocumentRoot /usr/local/www/apache22/data/ </VirtualHost> #ディレクトリの作り方にルールを定めて設定する場合の例 #大量にドメインを設定する場合に有用。 #もちろんディレクトリ個別に設定してもよい。 <Directory "/home/domain_type1/*/web"> Options FollowSymLinks Includes ExecCGI AllowOverride ALL Order allow,deny Allow from All </Directory> <Directory "/home/domain_type2/*/web"> Options FollowSymLinks ExecCGI AllowOverride ALL Order allow,deny Allow from All </Directory> # ドメインごとの設定を個別に行う。 <VirtualHost 192.168.0.111> ServerName www.vdobv.com ServerAfmin yourname@vdobv.com DocumentRoot /home/domain_type1/vdobv/web ErrorLog /var/log/httpd/vdobv-error.log CustomLog /var/log/httpd/vdobv-access.log combined env=!nolog </VirtualHost> <VirtualHost 192.168.0.111> ServerName www2.vdobv.net ServerAdmin yourname@vdobv2.net DocumentRoot /home/domain_type2/vdobv2/web ErrorLog /var/log/httpd/vdobv2-error.log CustomLog /var/log/httpd/vdobv2-access.log combined env=!nolog </VirtualHost> <VirtualHost 192.168.0.111> ServerName www3.vdobv.net ServerAdmin yourname@vdobv3.net DocumentRoot /home/domain_type2/vdobv3/web ErrorLog /var/log/httpd/vdobv3-error.log CustomLog /var/log/httpd/vdobv3-access.log combined env=!nolog </VirtualHost>
次のように起動してみる。
# /usr/local/etc/rc.c/apache22 start
エラーが出る場合は設定ミスが無いかを確認。
*httpd: Syntax error
httpd.confあるいは、httpd-vhosts.confなどの、該当する行(近く)に記述ミスがないか確認する。
*Warning: DocumentRoot /home/domain_type1/vdobv/web] does not exist
そのディレクトリを作ればよい。
*httpd: apr_sockaddr_info_get() failed for mugen.vdobv.com
*httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
/etc/hosts に、例えば次のように、自分自身を記述してみる。
127.0.0.1 mugen.vdobv.com
LAN側やWAN側に関わらずdnsサーバを用意していない場合は、ドメインとIPアドレスを関連付けるために、パソコン本体のhostsファイルなどに(一時的に)記述する。
例えば、windowsXPの場合は、C:\WINDOWS\system32\drivers\etc\hosts ファイルに次のように記述して保存。
192.168.0.111 www.vdobv.com
続けて、サーバの/home/domain_type1/vdobv/webにindex.htmlを作り、中に適当な文字を記述する。
そして、ブラウザで、http://www.vdobv.com/ を閲覧する。
正しく表示できたら、hostsファイルに追記したものは消しておくこと。