メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

チュートリアル: Amazon Linux への LAMP ウェブサーバーのインストール

次の手順では、Apache ウェブサーバーを PHP と MySQL のサポートとともに Amazon Linux インスタンスにインストールします(LAMP ウェブサーバーまたは LAMP スタックとも呼ばれます)。このサーバーを使用して静的ウェブサイトをホストしたり、データベースとの情報の読み取りと書き込みを行う動的な PHP アプリケーションをデプロイしたりできます。

前提条件

このチュートリアルでは、インターネットからアクセス可能なパブリック DNS 名を持つインスタンスを既に起動したことを前提にしています。詳細については、「ステップ 1: インスタンスを起動する」を参照してください。また、セキュリティグループを設定して、SSH(ポート 22)、HTTP(ポート 80)、HTTPS(ポート 443)接続を有効にしている必要もあります。前提条件の詳細については、Amazon EC2 でのセットアップ を参照してください。

Important

Ubuntu インスタンスでの LAMP ウェブサーバーのセットアップは、このチュートリアルの範囲外です。これらの手順は Amazon Linux で使用するためのものです。その他のディストリビューションの詳細については、各ドキュメントを参照してください。Ubuntu の LAMP ウェブサーバーについては、Ubuntu コミュニティのドキュメントの ApacheMySQLPHP トピックを参照してください。

Amazon Linux に LAMP ウェブサーバーをインストールして起動するには

  1. インスタンスに接続します

  2. すべてのソフトウェアパッケージが最新の状態であることを確認するため、インスタンスでソフトウェアの更新を実行します。この処理には数分かかりますが、最新の更新とバグ修正を確実に適用することが重要です。

    Note

    -y オプションを指定すると、確認メッセージを表示せずに更新をインストールできます。インストール前に更新を検査する場合は、このオプションを省略できます。

    [ec2-user ~]$ sudo yum update -y
  3. これでインスタンスが最新状態になったので、Apache ウェブサーバー、MySQL、PHP ソフトウェアパッケージをインストールできます。yum install コマンドを使用すると、複数のソフトウェアパッケージと関連するすべての依存関係を同時にインストールできます。

    [ec2-user ~]$ sudo yum install -y httpd24 php56 mysql55-server php56-mysqlnd
  4. Apache ウェブサーバーを起動します。

    [ec2-user ~]$ sudo service httpd start
    Starting httpd:                                            [  OK  ]
  5. chkconfig コマンドを使用して、システムがブートするたびに Apache ウェブサーバーが起動するように設定します。

    [ec2-user ~]$ sudo chkconfig httpd on

    Tip

    chkconfig コマンドでは、サービスを正常に有効にしたときに確認メッセージは一切表示されません。httpd が有効であることは、次のコマンドを実行して確認できます。

    [ec2-user ~]$ chkconfig --list httpd
    httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

    ここで、httpd は実行レベル 2、3、4、および 5 で on です(これらの値である必要があります)。

  6. ウェブサーバーをテストします。ウェブブラウザで、インスタンスのパブリック DNS アドレス(またはパブリック IP アドレス)を入力すると、Apache テストページが表示されます。Amazon EC2 コンソールを使用して、インスタンスのパブリック DNS を取得できます([Public DNS] 列をチェックします。列が非表示の場合は、[Show/Hide] を選択して、[Public DNS] を選択します)。

    Tip

    Apache テストページが表示されない場合、使用しているセキュリティグループに、HTTP(ポート 80)トラフィックを許可するルールが含まれていることを確認します。HTTP ルールをセキュリティグループに追加する方法については、セキュリティグループへのルールの追加 を参照してください。

    Important

    Amazon Linux を使用していない場合は、それらの接続を許可するようにインスタンスのファイアウォールを設定する必要があるかもしれません。ファイアウォールの設定方法の詳細については、ディストリビューション用のドキュメントを参照してください。

    Apache テストページ

    Note

    このテストページが表示されるのは、/var/www/html にコンテンツがない場合のみです。ドキュメントルートにコンテンツを追加すると、コンテンツはこのテストページではなく、インスタンスのパブリック DNS アドレスに表示されます。

Apache httpd は、Apache ドキュメントルートと呼ばれるディレクトリに維持されるファイルを提供します。Amazon Linux Apache ドキュメントルートは /var/www/html であり、デフォルトでは root によって所有されます。

[ec2-user ~]$ ls -l /var/www
total 16
drwxr-xr-x 2 root root 4096 Jul 12 01:00 cgi-bin
drwxr-xr-x 3 root root 4096 Aug  7 00:02 error
drwxr-xr-x 2 root root 4096 Jan  6  2012 html
drwxr-xr-x 3 root root 4096 Aug  7 00:02 icons

ec2-user がこのディレクトリで複数のファイルを操作できるようにするには、ディレクトリの所有権と許可を変更する必要があります。このタスクを完了するには多くの方法があります。このチュートリアルでは、www グループをインスタンスに追加し、そのグループに /var/www ディレクトリの所有権を与え、グループの書き込み許可を追加します。そのグループの任意のメンバーは、ウェブサーバーに対してファイルの追加、削除、および変更ができるようになります。

ファイルの許可を設定するには

  1. www グループをインスタンスに追加します。

    [ec2-user ~]$ sudo groupadd www
  2. ユーザー(この場合は ec2-user)を www グループに追加します。

    [ec2-user ~]$ sudo usermod -a -G www ec2-user

    Important

    新しいグループを取得するには、ログアウトしてから再度ログインする必要があります。exit コマンドを使用するか、ターミナルウィンドウを閉じることができます。

  3. ログアウトし、再度ログインして www グループでメンバーシップを確認します。

    1. ログアウトします。

      [ec2-user ~]$ exit
    2. インスタンスに再接続し、次のコマンドを実行して www グループのメンバーシップを検証します。

      [ec2-user ~]$ groups
      ec2-user wheel www
  4. /var/ とそのコンテンツのグループ所有権を wwwwww グループに変更します。

    [ec2-user ~]$ sudo chown -R root:www /var/www
  5. /var/www およびそのサブディレクトリのディレクトリ許可を変更してグループの書き込み許可を設定し、将来のサブディレクトリにグループ ID を設定します。

    [ec2-user ~]$ sudo chmod 2775 /var/www
    [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
  6. /var/www およびそのサブディレクトリのファイル許可を繰り返し変更してグループの書き込み許可を追加します。

    [ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;

ここで、ec2-user(および www グループの将来のメンバー)は、Apache ドキュメントルートでファイルを追加、削除、編集できるようになります。これで、静的なウェブサイトや PHP アプリケーションなどのコンテンツを追加できます。

(オプション) ウェブサーバーの保護

HTTP プロトコルを実行するウェブサーバーは、送受信したデータのトランスポートセキュリティを提供しません。ウェブブラウザを使用して HTTP サーバーに接続すると、入力した URL、受信したウェブページの内容、送信した HTML フォームの内容 (パスワードなど) はすべて、ネットワーク経路上のだれでも傍受できるようになります。ウェブサーバーを保護するためのベストプラクティスとして、SSL/TLS 暗号化でデータを保護する HTTPS (HTTP Secure) のサポートをインストールしてください。

サーバーで HTTPS を有効にする方法の詳細については、「チュートリアル: Amazon Linux で SSL/TLS を使用できるように Apache ウェブサーバーを設定する」を参照してください。

LAMP ウェブサーバーをテストするには

サーバーがインストールおよび実行されており、ファイルの許可が正しく設定されている場合、ec2-user アカウントはインターネットから使用できる /var/www/html ディレクトリにシンプルな PHP ファイルを作成できます。

  1. Apache ドキュメントルートでシンプルな PHP ファイルを作成します。

    [ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

    Tip

    このコマンドを実行しようとしたときに「Permission denied」というエラーが表示された場合は、ログアウトし、再度ログインして、ファイルの許可を設定するには で設定した正しいグループ許可を取得します。

  2. ウェブブラウザで、作成したファイルの URL を入力します。この URL は、インスタンスのパブリック DNS アドレスにスラッシュとファイル名を追加したものです。例:

    http://my.public.dns.amazonaws.com/phpinfo.php

    PHP 情報ページが表示されます。

    Note

    このページが表示されない場合は、前のステップで /var/www/html/phpinfo.php ファイルが正しく作成されたことを確認します。必要なすべてのパッケージが、次のコマンドでインストールされたことも確認できます (2 番目の列のパッケージのバージョンが、この出力例に一致する必要はありません)。

    [ec2-user ~]$ sudo yum list installed httpd24 php56 mysql55-server php56-mysqlnd
    Loaded plugins: priorities, update-motd, upgrade-helper
    959 packages excluded due to repository priority protections
    Installed Packages
    httpd24.x86_64                          2.4.16-1.62.amzn1                    @amzn-main
    mysql55-server.x86_64                   5.5.45-1.9.amzn1                     @amzn-main
    php56.x86_64                            5.6.13-1.118.amzn1                   @amzn-main
    php56-mysqlnd.x86_64                    5.6.13-1.118.amzn1                   @amzn-main

    必要なパッケージのいずれかが出力に表示されていない場合は、sudo yum install package コマンドを使ってインストールします。

  3. phpinfo.php ファイルを削除します。これは有用な情報である可能性がありますが、セキュリティ上の理由から、インターネットにブロードキャストしないようにしてください。

    [ec2-user ~]$ rm /var/www/html/phpinfo.php

MySQL サーバーをセキュリティで保護するには

MySQL サーバーのデフォルトのインストールには、テストおよび開発に役立ついくつかの機能がありますが、実稼働サーバーでは無効にするか削除する必要があります。mysql_secure_installation コマンドを使用すると、ルートパスワードを設定し、安全でない機能をインストールから削除する手順が案内されます。MySQL サーバーを使用する予定がない場合でも、この手順を実行することをお勧めします。

  1. MySQL サーバーを起動します。

    [ec2-user ~]$ sudo service mysqld start
    Initializing MySQL database:  Installing MySQL system tables...
    OK
    Filling help tables...
    OK
    
    To start mysqld at boot time you have to copy
    support-files/mysql.server to the right place for your system
    
    PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
    ...
    
    Starting mysqld:                                           [  OK  ]
    
  2. mysql_secure_installation を実行します。

    [ec2-user ~]$ sudo mysql_secure_installation
    1. プロンプトが表示されたら、root アカウントのパスワードを入力します。

      1. 現在の root パスワードを入力します。デフォルトでは、root アカウントにはパスワードが設定されていないので、Enter を押します。

      2. Y」と入力してパスワードを設定し、安全なパスワードを 2 回入力します。安全なパスワード作成の詳細については、http://www.pctools.com/guides/password/ を参照してください。このパスワードは必ず安全な場所に保管します。

        Note

        MySQL のルートパスワードの設定は、データベースを保護するための最も基本的な手段にすぎません。データベース駆動型アプリケーションを構築またはインストールする必要がある場合、通常はそのアプリケーションのデータベースサービスユーザーを作成します。ルートアカウントは、データベース管理以外には使用しないでください。

    2. Y」と入力して匿名ユーザーアカウントを削除します。

    3. Y」と入力して root ログインを無効にします。

    4. Y」と入力してテストデータベースを削除します。

    5. Y」と入力して権限テーブルを再ロードし、変更を保存します。

  3. (オプション)すぐに使用する予定がない場合は、MySQL サーバーを停止します。再び必要になったときに、サーバーを再起動できます。

    [ec2-user ~]$ sudo service mysqld stop
    Stopping mysqld:                                           [  OK  ]
  4. (オプション)ブート時に必ず MySQL サーバーを起動させる場合は、次のコマンドを入力します。

    [ec2-user ~]$ sudo chkconfig mysqld on

これで、完全に機能する LAMP ウェブサーバーを設定しました。/var/www/html の Apache ドキュメントルートにコンテンツを追加する場合、そのコンテンツはインスタンスのパブリック DNS アドレスで表示できます。

(オプション) phpMyAdmin のインストール

phpMyAdmin は、EC2 インスタンスで MySQL データベースを表示して編集するために使用できる、ウェブベースのデータベース管理ツールです。Amazon Linux インスタンスで phpMyAdmin をインストールして設定には、以下の手順に従ってください。

Important

Apache で SSL/TLS を有効にしていない場合、LAMP サーバーへのアクセスに phpMyAdmin を使用することは推奨されません。そのようにすると、データベース管理者のパスワードや他のデータは、インターネット上を安全ではない状態で送信されます。EC2 インスタンスでの安全なウェブサーバーの設定については、「チュートリアル: Amazon Linux で SSL/TLS を使用できるように Apache ウェブサーバーを設定する」を参照してください。

  1. インスタンスで Fedora プロジェクトの Extra Packages for Enterprise Linux (EPEL) リポジトリを有効にします。

    [ec2-user ~]$ sudo yum-config-manager --enable epel
  2. phpMyAdmin パッケージをインストールします。

    [ec2-user ~]$ sudo yum install -y phpMyAdmin

    Note

    プロンプトが表示されたら、y と答えて EPEL リポジトリの GPG キーをインポートします。

  3. ローカルマシンからのアクセスを許可するように phpMyAdmin インストールを設定します。デフォルトでは、phpMyAdmin は実行中のサーバーからのアクセスのみを許可しますが、Amazon Linux にはウェブブラウザが含まれないため、これはあまり有益ではありません。

    1. whatismyip.com のようなサービスを参照して、ローカル IP アドレスを見つけます。

    2. /etc/httpd/conf.d/phpMyAdmin.conf ファイルを編集して、サーバーの IP アドレス (127.0.0.1) を前述のコマンドでローカル IP アドレスに置き換え、your_ip_address を、前のステップで識別したローカル IP アドレスと置き換えます。

      [ec2-user ~]$ sudo sed -i -e 's/127.0.0.1/your_ip_address/g' /etc/httpd/conf.d/phpMyAdmin.conf
  4. Apache ウェブサーバーを再起動して、新しい設定を有効にします。

    [ec2-user ~]$ sudo service httpd restart
    Stopping httpd:                                            [  OK  ]
    Starting httpd:                                            [  OK  ]
  5. MySQL サーバーを再起動して、新しい設定を有効にします。

    [ec2-user ~]$ sudo service mysqld restart
    Stopping mysqld:                                           [  OK  ]
    Starting mysqld:                                           [  OK  ]
  6. ウェブブラウザで、phpMyAdmin インストールの URL を入力します。この URL は、インスタンスのパブリック DNS アドレスにスラッシュと phpmyadmin を追加したものです。例:

    http://my.public.dns.amazonaws.com/phpmyadmin

    phpMyAdmin ログインページが表示されます。

    Note

    403 Forbidden エラーが発生した場合は、/etc/httpd/conf.d/phpMyAdmin.conf ファイルで正しい IP アドレスを設定したことを確認します。次のコマンドを使って Apache アクセスログを表示し、Apache サーバーが実際にリクエストを取得している IP アドレスを確認できます。

    [ec2-user ~]$ sudo tail -n 1 /var/log/httpd/access_log | awk '{ print $1 }'
    205.251.233.48

    以前に入力した間違ったアドレスをここで返された IP アドレスに置き換えて Step 3.b を繰り返します。例:

    [ec2-user ~]$ sudo sed -i -e 's/previous_ip_address/205.251.233.48/g' /etc/httpd/conf.d/phpMyAdmin.conf

    IP アドレスを置き換えたら、Step 4 を使用して httpd サービスを再起動します。

  7. 前に作成した root ユーザー名と MySQL のルートパスワードを使って、phpMyAdmin インストールにログインします。phpMyAdmin の使用の詳細については、『phpMyAdmin ユーザーガイド』を参照してください。

関連トピック

インスタンスへのファイルの転送、またはウェブサーバーへの WordPress ブログのインストールの詳細については、次のトピックを参照してください。

このトピックで使用されているコマンドおよびソフトウェアの詳細については、次のウェブページを参照してください。

ウェブサーバーのドメイン名の登録、または、既存のドメイン名をこのホストに移す方法については、『Amazon Route 53 開発者ガイド』の「Amazon Route 53 のドメインとサブドメインの作成と移行」を参照してください。