ApacheとPHPをインストールして設定していきます。今回はバーチャルホストを設定してドメインを運用します。通常、単一サーバーに複数のSSLは設定できませんが、EC2の場合はElastic Load Brancerを利用することで可能になりますので、マルチドメイン対応にしておく方が応用が利くと思います。
使用したインスタンスのイメージは、『Basic 32-bit Amazon Linux AMI 2011.02.1 Beta (AMI Id: ami-300ca731)』です。
管理者権限になる
インストールと設定は管理者権限で行いますので権限を取ります。
$sudo su -
デフォルトではOS、PHPともにタイムゾーンの設定がされていませんので設定しておきます。設定は日本のタイムゾーンとします。
#cp -i /usr/share/zoneinfo/Japan /etc/localtime
ApacheとPHPのインストール
yumを使って ApacheとPHPをインストールします。この記事を書いている時点では、Apacheがバージョン2.2.16、PHPはバージョン5.3.6がインストールされました。いくつかのライブラリもあわせてインストールしました。(なお、PHP5.3.7はcrypt関数に致命的な脆弱性が報告されていますので、5.3.8を待つか、5.3.6を明示的にインストールするようにしてください。)
#yum -y install httpd php php-pear php-mysql php-mbstring php-gd php-mcrypt php-pecl-apc
php-pear
|
PHPから利用可能なライブラリを提供しているサービス
|
php-mysql
|
PHPからMySQLを利用するためのライブラリ
|
php-mbstring
|
マルチバイトの文字列を操作するmbstring関数を有効にする
|
php-gd
|
グラフィックスの動的生成ライブラリ
|
php-mcrypt
|
mcrypt暗号化関数を有効にする
|
php-pecl-apc
|
PHPの中間コードをキャッシュして高速化する。(任意)
|
php.ini はタイムゾーンの修正とあわせて、PHPのバージョンを返さない設定も行っています。
#vi /etc/php.ini date.timezone="Asia/Tokyo" expose_php = Off
Apacheの設定
各ドメインのドキュメントルートを「/home/domains/ドメイン名/public_html/」とします。今回はサイト管理のユーザーwebadmin(この記事を参照)が作成されている前提で、ディレクトリの所有権を与えています。
#cd /home/domains #mkdir www.dummydomain.com #mkdir www.dummydomain.com/public_html #chown -R webadmin:webadmin www.dummydomain.com #chmod 755 /home/domains
Apacheの設定ファイルを編集します。
#cd /etc/httpd/conf #vi httpd.conf
修正
|
ServerTokens ProductOnly
|
クライアントに送るサーバー情報を最小限にする。
|
修正
|
ServerAdmin root@dummydomain.com
|
問合わせ先のメールアドレスを設定する。
|
修正
|
UseCanonicalName On
|
OnにするとPHPの環境変数$_SERVER['SERVER_NAME']にサーバー名が返されるようになる。
|
追加
|
LogFormat "%t %v %h %l %u \"%r\" %>s %b \"%{Referer}i -> %U\" \"%{User-Agent}i\"" custom
|
ログのフォーマットをカスタマイズする。多めに取得しているので不要な値は取り除いてかまいません。
%t: 時刻
%v: ServerName
%h: リモートホスト
%l: リモートログ名(未設定時は-)%u: リモートユーザー(認証による) %r: リクエストの最初の行 %>s: 最終ステータスコード(リダイレクトコードではなく、最終のコードをとるため) %b: HTTPヘッダーを除くバイト数。0の場合は-。 %U: リクエストURL %{Referer}i: リクエストデータに含まれるリファラー %{User-Agent}i: リクエストデータに含まれるユーザーエージェント |
修正
|
CustomLog logs/access_log custom env=!nolog
|
ログ形式を前述のcustomに設定。ログを記録しないパターンを設定(後述)。その他のCustomLogはコメントアウトにする。
|
追加
|
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(css)|(js)$" nolog
SetEnvIf Request_URI "favicon\.ico" nolog |
どういった場合にログを記録しないかを設定する。ここではファビコンと画像のログは取得しないようにしている。(ログサイズが大きくなるのを防ぐため)
|
修正
|
ServerSignature Off
|
エラーメッセージの表示画面でフッターに情報を付加しない。
|
追加
|
TraceEnable Off
|
HTTP TRACEメソッドを無効にする。
|
バーチャルホストの設定ファイルを作成します。httpd.conf で /etc/httpd/conf.d/ ディレクトリにある拡張子.conf ファイルを自動的に読み込むように記述がされていますので、conf.d/virtualhost.conf として作成します。
#vi /etc/httpd/conf.d/virtualhost.conf
以下設定内容です。運用するドメイン分<VirtualHost>~</VirtualHost>を記述します。(ElasticIPを割り当てていてもローカルIPが使われるようなので、*ではなくIPを指定する場合はローカールIPを記述します。)
NameVirtualHost *:80 <VirtualHost *:80> ServerName www.dummydomain.com:80 DocumentRoot /home/domains/www.dummydomain.com/public_html/ ServerAdmin admin@dummydomain.com <Directory "/home/domains/www.dummydomain.com/public_html"> Options FollowSymLinks ExecCGI AllowOverride all Order Allow,Deny Allow from all </Directory> </VirtualHost>
Apacheのバージョンによって「client denied by server configuration」が出る場合は、
Order Allow,Deny
Allow from all
ではなく、 Require all granted
とします。
Apacheの起動と自動起動設定
Apacheを起動します。自動起動のための設定もあわせておこないます。#service httpd start #chkconfig httpd on