Apacheの設定

Apache 設定ファイルのカスタマイズ

ドキュメントルートとログディレクトリを作りましたので、次にApacheの設定ファイルを編集します。

/usr/local/etc/apache24/httpd.conf の編集

  • サーバー管理者のメールアドレスを編集(グローバルネットに公開するならオフィシャルなメールアドレスが必須ですが、身内だけならとりあえずメールが届くアドレスを設定します)
ServerAdmin wordpress@example.com
  • phpMyAdminをエイリアスするために、次の記述をコメントアウトします。
#<Directory />
# AllowOverride none
# Require all denied
#</Directory>
  • phpMyAdmin を使うためのエイリアスを定義しますが、不特定の人間がデータを盗んだり改ざんできないようにアクセス制限を行う必要がありますので、下記太字部分のようにアクセスを許可するネットワークを書きます。以下の例はプライベートアドレスからのアクセスのみを許可する場合の例です。自ネットワークのアドレスや、管理者PCのIPアドレスなど、アクセスを許可するアドレスを限定する必要があります。
# phpMyAdmin
<Directory "/usr/local/www/phpMyAdmin/">
 Options none
 AllowOverride Limit
 Order Deny,Allow
 Deny from all
 Allow from 127.0.0.1 10. 172.16.0.0/255.240.0.0 192.168.
</Directory>
  • ドキュメントルートをデフォルトの/usr/local の下から /home/wordpress に変更します。
DocumentRoot "/home/wordpress/homepage"
<Directory "/home/wordpress/homepage">
 Options Indexes FollowSymLinks
AllowOverride All #テスト環境なので None→All
Require all granted
</Directory>
  • ディレクトリインデックスに index.php を追加
DirectoryIndex index.html index.php
  • エラーログの記録位置を wordpress 以下に変更します。
ErrorLog "/home/wordpress/log/httpd-error.log"
  • アクセスログファイルの形式をより詳細なフォーマットにし、保存位置を wordpress 以下に変更します。
#CustomLog "/var/log/httpd-access.log" common
CustomLog "/home/wordpress/log/httpd-access.log" combined
  • phpMyAdmin のエイリアスを定義します。
    これは、セキュリティー対策のためです。この例ではDatabase という名称に変更していますが、何か別の利用者間でだけわかる単語に変更することをおすすめします。この記述により、http://サーバーのアドレス/Database/ というURLでphpMyAdmin にアクセス出来るようになります。
Alias /Database/ "/usr/local/www/phpMyAdmin/"
  • CGIディレクトリも同様に wordpress 以下に変更します。
    この記述により、http://サーバーのアドレス/cgi-bin/ というURLでCGIディレクトリのコマンドにアクセス出来るようになります。
#ScriptAlias /cgi-bin/ "/usr/local/www/apache24/cgi-bin/"
 ScriptAlias /cgi-bin/ "/home/wordpress/cgi-bin/"
  • CGIとして認識されるファイル拡張子とPHPとして認識される拡張子を定義します。
AddHandler cgi-script .cgi
AddHandler php5-script .php
  • Apache の動作リソース定義するファイルをコメントアウトしておきます。
Include etc/apache24/extra/httpd-mpm.conf
  • エラーメッセージを日本語で出力するために以下の行を見つけてコメントアウトします。
Include etc/apache24/extra/httpd-multilang-errordoc.conf
LoadModule include_module libexec/apache24/mod_include.so
LoadModule negotiation_module libexec/apache24/mod_negotiation.so
  • 投稿URLを通し番号から “/2015/09/10/about_apache_configure” 風に書き直してくれるリライトモジュールを登録します。
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
  • Apacheのオンラインマニュアルを有効にしたい場合はコメントアウトします。(オプション)
Include etc/apache24/extra/httpd-manual.conf
  • Apacheデフォルト設定ファイルを使用する場合コメントアウトします。
Include etc/apache24/extra/httpd-default.conf

/usr/local/etc/apache24/extra/httpd-default.conf のカスタマイズ

  • クライアントとの通信が途切れた場合のタイムアウトを長めに設定します。
Timeout 300
  • アクセスしてきたホスト情報を、可能ならIPアドレスではなくホスト名でアクセスログに記録します。
HostnameLookups On

/usr/local/etc/apache24/extra/httpd-mpm.conf

  • ネットワーク帯域とCPUパワーに合わせて同時接続可能なコネクション数を調整します。WordPressではツイッターに埋め込まれたURLなどにより同時アクセスが発生するとMySQLサーバーに異常負荷が掛かるため、あらかじめセッション数を制限しておきます。
MaxRequestWorkers       50

Apache を起動する

以上の作業で、Apache Webサーバーの設定が終了しましたので、いよいよApacheを起動させることが出来ます。

# /usr/local/etc/rc.d/apache24 start
Performing sanity check on apache24 configuration:
Syntax OK
Starting apache24.

このように、「Starting…..」とメッセージが出ればOK。
サーバーの公式名(DNSに登録されている名称)と、インストール中マシンのホスト名が異なっている場合は、エラーが発生してApacheを起動できない場合があります。

Performing sanity check on apache24 configuration:
AH00557: httpd: apr_sockaddr_info_get() failed for vwp2
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Starting apache24.
AH00557: httpd: apr_sockaddr_info_get() failed for vwp2
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

この場合、httpd.conf 中のServerName を次のようなIPアドレスで記述し直します。

# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName 192.168.1.39:80

ログファイルの所有者を root:wheel から www:www に変更しておくと後々便利です。

chown www:www /home/wordpress/log/*

余談ですが、IPアドレスをDHCPサーバーから取得している場合、FreeBSD のIPアドレスは次のようにして確認できます。

# ifconfig
de0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
 ether 00:03:ff:0b:72:99
 inet 192.168.1.39 netmask 0xffffff00 broadcast 192.168.1.255
 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
 media: Ethernet 100baseTX <full-duplex>
 status: active
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
 options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
 inet6 ::1 prefixlen 128
 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
 inet 127.0.0.1 netmask 0xff000000
 nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

Unixコマンドに親しみのない方のため、この仮想WordPressサーバーのIPアドレスを簡単に確認するためのアカウントを準備しました。”ip”というアカウントでコンソールからログインしてみてください。
下図のように、サーバーのIPアドレスが表示されます。

仮想wordpressサーバー ipアドレス確認用アカウント

仮想wordpressサーバー ipアドレス確認用アカウント

WebサーバーからURLをアクセスして次のような表示になれば、ここまでの作業は完了です。

httpd.conf 設定直後のApache起動テスト画面

httpd.conf 設定直後のApache起動テスト画面

まだ、何もコンテンツがないので、homepage ディレクトリのインデックスが表示されています。

 

関連項目