メニュー
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 でのセットアップ を参照してください。

重要

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

To install and start the LAMP web server on Amazon Linux

  1. Connect to your instance.

  2. To ensure that all of your software packages are up to date, perform a quick software update on your instance. This process may take a few minutes, but it is important to make sure you have the latest security updates and bug fixes.

    The -y option installs the updates without asking for confirmation. If you would like to examine the updates before installing, you can omit this option.

    Copy
    [ec2-user ~]$ sudo yum update -y
  3. Now that your instance is current, you can install the Apache web server, MySQL, and PHP software packages.

    注記

    Some applications may not be compatible with the following recommended software environment. Before installing these packages, check whether your LAMP applications (for example, WordPress or phpMyAdmin) are compatible with them. If there is a problem, you may need to install an alternative environment as described in サーバーで実行するアプリケーションソフトウェアに、インストールされている PHP バージョンまたは他のソフトウェアとの互換性がありません。

    Use the yum install command to install multiple software packages and all related dependencies at the same time.

    Copy
    [ec2-user ~]$ sudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd
  4. Start the Apache web server.

    Copy
    [ec2-user ~]$ sudo service httpd start Starting httpd: [ OK ]
  5. Use the chkconfig command to configure the Apache web server to start at each system boot.

    Copy
    [ec2-user ~]$ sudo chkconfig httpd on

    The chkconfig command does not provide any confirmation message when you successfully use it to enable a service.

    httpd が有効になっていることは、次のコマンドを実行して確認できます:
    Copy
    [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. Test your web server. In a web browser, enter the public DNS address (or the public IP address) of your instance; you should see the Apache test page. You can get the public DNS for your instance using the Amazon EC2 console (check the Public DNS column; if this column is hidden, choose Show/Hide and select Public DNS).

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

    重要

    If you are not using Amazon Linux, you may also need to configure the firewall on your instance to allow these connections. For more information about how to configure the firewall, see the documentation for your specific distribution.

    
                    Apache test page

    注記

    This test page appears only when there is no content in /var/www/html. When you add content to the document root, your content appears at the public DNS address of your instance instead of this test page.

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

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

To set file permissions

  1. Add the apache group to your instance.

    Copy
    [ec2-user ~]$ sudo groupadd apache
  2. Add your user (in this case, ec2-user) to the apache group.

    Copy
    [ec2-user ~]$ sudo usermod -a -G apache ec2-user

    重要

    You need to log out and log back in to pick up the new group. You can use the exit command, or close the terminal window.

  3. Log out and then log back in again, and verify your membership in the apache group.

    1. Log out.

      Copy
      [ec2-user ~]$ exit
    2. Reconnect to your instance, and then run the following command to verify your membership in the apache group.

      Copy
      [ec2-user ~]$ groups ec2-user wheel apache
  4. Change the group ownership of /var/www and its contents to the apache group.

    Copy
    [ec2-user ~]$ sudo chown -R ec2-user:apache /var/www
  5. Change the directory permissions of /var/www and its subdirectories to add group write permissions and to set the group ID on future subdirectories.

    Copy
    [ec2-user ~]$ sudo chmod 2775 /var/www [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
  6. Recursively change the file permissions of /var/www and its subdirectories to add group write permissions.

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

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

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

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

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

To test your LAMP web server

If your server is installed and running, and your file permissions are set correctly, your ec2-user account should be able to create a simple PHP file in the /var/www/html directory that will be available from the Internet.

  1. Create a simple PHP file in the Apache document root.

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

    If you get a "Permission denied" error when trying to run this command, try logging out and logging back in again to pick up the proper group permissions that you configured in To set file permissions.

  2. In a web browser, enter the URL of the file you just created. This URL is the public DNS address of your instance followed by a forward slash and the file name. For example:

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

    You should see the PHP information page:

    注記

    If you do not see this page, verify that the /var/www/html/phpinfo.php file was created properly in the previous step. You can also verify that all of the required packages were installed with the following command (the package versions in the second column do not need to match this example output):

    Copy
    [ec2-user ~]$ sudo yum list installed httpd24 php70 mysql56-server php70-mysqlnd Loaded plugins: priorities, update-motd, upgrade-helper Installed Packages httpd24.x86_64 2.4.25-1.68.amzn1 @amzn-updates mysql56-server.x86_64 5.6.35-1.23.amzn1 @amzn-updates php70.x86_64 7.0.14-1.20.amzn1 @amzn-updates php70-mysqlnd.x86_64 7.0.14-1.20.amzn1 @amzn-updates

    If any of the required packages are not listed in your output, install them with the sudo yum install package command.

  3. Delete the phpinfo.php file. Although this can be useful information to you, it should not be broadcast to the Internet for security reasons.

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

To secure the MySQL server

The default installation of the MySQL server has several features that are great for testing and development, but they should be disabled or removed for production servers. The mysql_secure_installation command walks you through the process of setting a root password and removing the insecure features from your installation. Even if you are not planning on using the MySQL server, performing this procedure is a good idea.

  1. Start the MySQL server.

    Copy
    [ec2-user ~]$ sudo service mysqld start Initializing MySQL database: ... PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! ... Starting mysqld: [ OK ]
  2. Run mysql_secure_installation.

    Copy
    [ec2-user ~]$ sudo mysql_secure_installation
    1. When prompted, enter a password for the root account.

      1. Enter the current root password. By default, the root account does not have a password set, so press Enter.

      2. Type Y to set a password, and enter a secure password twice. For more information about creating a secure password, see http://www.pctools.com/guides/password/. Make sure to store this password in a safe place.

        注記

        Setting a root password for MySQL is only the most basic measure for securing your database. When you build or install a database-driven application, you typically create a database service user for that application and avoid using the root account for anything but database administration.

    2. Type Y to remove the anonymous user accounts.

    3. Type Y to disable remote root login.

    4. Type Y to remove the test database.

    5. Type Y to reload the privilege tables and save your changes.

  3. (Optional) Stop the MySQL server if you do not plan to use it right away. You can restart the server when you need it again.

    Copy
    [ec2-user ~]$ sudo service mysqld stop Stopping mysqld: [ OK ]
  4. (Optional) If you want the MySQL server to start at every boot, enter the following command.

    Copy
    [ec2-user ~]$ sudo chkconfig mysqld on

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

(Optional) Install phpMyAdmin

phpMyAdmin is a web-based database management tool that you can use to view and edit the MySQL databases on your EC2 instance. Follow the steps below to install and configure phpMyAdmin on your Amazon Linux instance.

重要

We do not recommend using phpMyAdmin to access a LAMP server unless you have enabled SSL/TLS in Apache; otherwise, your database administrator password and other data will be transmitted insecurely across the Internet. For information about configuring a secure web server on an EC2 instance, see Tutorial: Configure Apache Web Server on Amazon Linux to use SSL/TLS.

注記

These instructions assume that the same default PHP version is specified in Amazon Linux and in Extra Packages for Enterprise Linux (EPEL). If you encounter compatibility issues with EPEL packages, we recommend installing phpMyAdmin manually. See the phpMyAdmin download page for the latest release. Be sure to verify that the installation requirements match the environment of your Amazon Linux (or other Linux) instance.

See also the troubleshooting help below: サーバーで実行するアプリケーションソフトウェアに、インストールされている PHP バージョンまたは他のソフトウェアとの互換性がありません。.

  1. Enable the Extra Packages for Enterprise Linux (EPEL) repository from the Fedora project on your instance.

    Copy
    [ec2-user ~]$ sudo yum-config-manager --enable epel
  2. Install the phpMyAdmin package.

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

    Answer y to import the GPG key for the EPEL repository when prompted.

  3. Configure your phpMyAdmin installation to allow access from your local machine. By default, phpMyAdmin only allows access from the server that it is running on, which is not very useful because Amazon Linux does not include a web browser.

    1. Find your local IP address by visiting a service such as whatismyip.com.

    2. Edit the /etc/httpd/conf.d/phpMyAdmin.conf file and replace the server IP address (127.0.0.1) with your local IP address with the following command, replacing your_ip_address with the local IP address that you identified in the previous step.

      Copy
      [ec2-user ~]$ sudo sed -i -e 's/127.0.0.1/your_ip_address/g' /etc/httpd/conf.d/phpMyAdmin.conf
  4. Restart the Apache web server to pick up the new configuration.

    Copy
    [ec2-user ~]$ sudo service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
  5. Restart the MySQL server to pick up the new configuration.

    Copy
    [ec2-user ~]$ sudo service mysqld restart Stopping mysqld: [ OK ] Starting mysqld: [ OK ]
  6. In a web browser, enter the URL of your phpMyAdmin installation. This URL is the public DNS address of your instance followed by a forward slash and phpmyadmin. For example:

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

    You should see the phpMyAdmin login page:

    注記

    If you get a 403 Forbidden error, verify that you have set the correct IP address in the /etc/httpd/conf.d/phpMyAdmin.conf file. You can see what IP address the Apache server is actually getting your requests from by viewing the Apache access log with the following command:

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

    Repeat ステップ 2, replacing the incorrect address that you previously entered with the address returned here; for example:

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

    After you've replaced the IP address, restart the httpd service with ステップ 4.

  7. Log into your phpMyAdmin installation with the root user name and the MySQL root password you created earlier. For more information about using phpMyAdmin, see the phpMyAdmin User Guide.

トラブルシューティング

このセクションでは、新しい LAMP サーバーの設定時に発生する可能性がある一般的な問題の解決案を提供します。

ウェブブラウザを使用してサーバーに接続できません。

以下のチェックを行って、Apache ウェブサーバーが実行されていて、アクセス可能であるかどうかを確認します。

  • ウェブサーバーが実行されていますか?

    httpd が有効になっていることは、次のコマンドを実行して確認できます:
    Copy
    [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 になります (これが表示したい対象です)。

    httpd プロセスが実行されていない場合は、To install and start the LAMP web server on Amazon Linux に記載されているステップを繰り返します。

  • ファイアウォールは正しく設定されていますか?

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

サーバーで実行するアプリケーションソフトウェアに、インストールされている PHP バージョンまたは他のソフトウェアとの互換性がありません。

このチュートリアルでは、最新バージョンの Apache ウェブサーバー、PHP、MySQL をインストールすることをお勧めします。追加の LAMP アプリケーションをインストールする前に、そのシステム条件を調べて、インストール済みの環境と互換性があることを確認してください。最新バージョンの PHP がサポートされていない場合は、古いサポートされている設定にダウングレードすることが可能です (また完全に安全です)。PHP は、複数のバージョンを並行してインストールすることもできます。これにより、最小限の労力で特定の互換性の問題を解決できます。複数バージョンの PHP の優先順位を設定する方法については、「Amazon Linux AMI 2016.09 Release Notes」を参照してください。

ダウングレード方法

このチュートリアルの十分にテストされた前バージョンでは、次のコア LAMP パッケージを推奨しています。

  • httpd24

  • php56

  • mysql55-server

  • php56-mysqlnd

このチュートリアルの最初の推奨に従って最新のパッケージをインストールした場合は、最初にそれらのパッケージとその他の依存関係を次のようにアンインストールする必要があります。

Copy
[ec2-user ~]$ sudo yum remove -y httpd24 php70 mysql56-server php70-mysqlnd perl-DBD-MySQL56

次に、代替環境をインストールします。

Copy
[ec2-user ~]$ sudo yum install -y httpd24 php56 mysql55-server php56-mysqlnd

後で推奨環境にアップグレードすることを決定した場合は、最初に、カスタマイズされたパッケージと依存関係を削除する必要があります。

Copy
[ec2-user ~]$ sudo yum remove -y httpd24 php56 mysql55-server php56-mysqlnd perl-DBD-MySQL55

このチュートリアルの最初に説明したように、ここで最新のパッケージをインストールできます。

関連トピック

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

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

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