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

チュートリアル: Amazon Linux を使った WordPress ブログのホスティング

次の手順では、お客様の Amazon Linux インスタンスで、WordPress ブログのインストール、構成を実行し、安全性を確立します。このチュートリアルは、WordPress ブログをホストするウェブサーバーを完全に制御する (これは従来のホスティングサービスでは一般的なことではありません) という点で、Amazon EC2 を使用するための優れた手引きになります。

サーバーに対するソフトウェアパッケージの更新とセキュリティパッチの維持は、お客様の責任となります。ウェブサーバー構成との直接的な対話操作を必要としない、より自動化された WordPress をインストールする場合、AWS CloudFormation サービスは、迅速に始められる WordPress テンプレートを提供します。詳細については、AWS CloudFormation ユーザーガイド の「ご利用開始にあたって」を参照してください。Windows インスタンスで WordPress ブログをホスティングする場合は、Windows インスタンスの Amazon EC2 ユーザーガイドDeploying a WordPress Blog on Your Amazon EC2 Windows Instance を参照してください。データベースが分離された高可用性のソリューションが必要な場合は、AWS Elastic Beanstalk 開発者ガイド の「高可用性の WordPress ウェブサイトをデプロイする」を参照してください。

重要

これらの手順は Amazon Linux で使用するためのものです。その他のディストリビューションの詳細については、各ドキュメントを参照してください。このチュートリアルの多くの手順は、Ubuntu インスタンスには使用できません。Ubuntu インスタンスでの WordPress のインストールについては、Ubuntu のドキュメントで「WordPress」を参照してください。

前提条件

このチュートリアルでは、Amazon Linux AMI の「チュートリアル: Amazon Linux AMI を使用して LAMP ウェブサーバーをインストールする」または Amazon Linux 2 の「チュートリアル: Amazon Linux 2 に LAMP ウェブサーバーをインストールする」のすべての手順に従って、PHP とデータベース (MySQL または MariaDB) をサポートする機能的なウェブサーバーを含む Amazon Linux インスタンスを起動したことを前提としています。このチュートリアルでは、セキュリティグループで HTTP および HTTPS トラフィックを許可するように設定する手順や、ウェブサーバー用にファイルアクセス許可が正しく設定されていることを確認する手順も示します。セキュリティグループへのルール追加の詳細については、セキュリティグループへのルールの追加 を参照してください。

Elastic IP アドレス (EIP) は、WordPress ブログのホストに使用しているインスタンスに関連付けることを強くお勧めします。これにより、インスタンスのパブリック DNS アドレスが変更されて、インストールが破損することを防止できます。ドメイン名を所有していてそのドメインをブログに使用する場合、EIP アドレスをポイントするようにドメイン名の DNS レコードを更新できます (これを行うには、ドメイン名レジストラに問い合わせてください)。実行中のインスタンスに関連付けられた EIP アドレスを無料で 1 つ取得できます。詳細については、「Elastic IP アドレス」を参照してください。

ブログのドメイン名がまだない場合は、Route 53 にドメイン名を登録し、インスタンスの EIP アドレスをドメイン名に関連付けることができます。詳細については、Amazon Route 53 開発者ガイドの「Amazon Route 53 を使用したドメイン名の登録」を参照してください。

WordPress のインストール

インスタンスに接続して、WordPress インストールパッケージをダウンロードします。

WordPress インストールパッケージをダウンロードして解凍するには

  1. wget コマンドを使って、最新の WordPress インストールパッケージをダウンロードします。次のコマンドを実行すると、最新リリースが必ずダウンロードされます。

    [ec2-user ~]$ wget https://wordpress.org/latest.tar.gz
  2. インストールパッケージを解凍します。インストールフォルダは、wordpress という名前のフォルダに解凍されます。

    [ec2-user ~]$ tar -xzf latest.tar.gz

WordPress インストール用にデータベースユーザーとデータベースを作成するには

WordPress インストールは、ブログの投稿、ユーザーコメントなどの情報をデータベースに格納する必要があります。この手順を実行すると、ブログのデータベースを作成するのに役立ち、このデータベースに対して情報の読み取りや保存を許可されたユーザーにも有用です。

  1. データベースサーバーを起動します。

    • Amazon Linux AMI: sudo service mysqld start

    • Amazon Linux 2: sudo systemctl start mariadb

  2. データベースサーバーに root ユーザーとしてログインします。メッセージが表示されたら、データベース root パスワードを入力します。これは通常の root システムパスワードと異なることもあれば、データベースサーバーのセキュリティ確保を実行していない場合は、空のときもあります。

    重要

    データベースサーバーのセキュリティを確保していない場合、セキュリティ確保を行うことは非常に重要です。詳細については、「データベースサーバーをセキュリティで保護するには」を参照してください。

    [ec2-user ~]$ mysql -u root -p
  3. MySQL データベースのユーザーとパスワードを作成します。WordPress インストールは、これらの値を使って、MySQL データベースと通信を行います。一意のユーザー名とパスワードを入力して、次のコマンドを入力します。

    CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';

    ユーザー用に強力なパスワードを作成してください。パスワードに一重引用符 (') を使用しないでください。この文字は前述のコマンドを中断させるためです。安全なパスワードの作成の詳細については、http://www.pctools.com/guides/password/ を参照してください。既存のパスワードを再利用しないでください。また、このパスワードは必ず安全な場所に保管してください。

  4. データベースを作成します。wordpress-db など、データベースにはわかりやすい名前を使用します。

    注記

    次のコマンドのデータベース名を囲む区切り記号は、「バックティック」と呼ばれています。バックティック (`) キーは通常、標準キーボードの Tab キーの上に配置されています。バックティックは必ずしも必要ではありませんが、データベース名では使用できない文字 (ハイフンなど) の代わりに使用できます。

    CREATE DATABASE `wordpress-db`;
  5. データベースに対して、以前作成した WordPress ユーザーに対する完全な権限を付与します。

    GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
  6. すべての変更を有効にするため、データベース権限をフラッシュします。

    FLUSH PRIVILEGES;
  7. mysql クライアントを終了します。

    exit

wp-config.php ファイルの作成と編集を行うには

WordPress インストールフォルダには、wp-config-sample.php という名前の構成ファイル例が格納されています。この手順では、このファイルをコピーして、特定の構成に合うように編集します。

  1. wp-config-sample.php ファイルを wp-config.php という名前でコピーします。この操作を実行すると、新しい構成ファイルが作成され、元のファイルがバックアップとしてそのまま保持されます。

    [ec2-user ~]$ cp wordpress/wp-config-sample.php wordpress/wp-config.php
  2. お好みのテキストエディタ (wp-config.phpnanovim など) を使って ファイルを編集し、インストール用の値を入力します。お好みのテキストエディタがない場合、nano が初心者に適しています。

    [ec2-user ~]$ nano wordpress/wp-config.php
    1. DB_NAME を定義する行を探して、database_name_hereステップ 4WordPress インストール用にデータベースユーザーとデータベースを作成するには で作成したデータベース名に変更します。

      define('DB_NAME', 'wordpress-db');
    2. DB_USER を定義する行を探して、username_hereステップ 3WordPress インストール用にデータベースユーザーとデータベースを作成するには で作成したデータベースユーザーに変更します。

      define('DB_USER', 'wordpress-user');
    3. DB_PASSWORD を定義する行を探して、password_hereステップ 3WordPress インストール用にデータベースユーザーとデータベースを作成するには で作成した強力なパスワードに変更します。

      define('DB_PASSWORD', 'your_strong_password');
    4. Authentication Unique Keys and Salts というセクションを見つけます。これらの KEYSALT の値は、WordPress ユーザーがローカルマシンに保存したブラウザクッキーに対する暗号化レイヤーを提供します。基本的に、ここで長くてランダムな値を指定すると、サイトのセキュリティが向上します。https://api.wordpress.org/secret-key/1.1/salt/ にアクセスして、ランダムに生成されるキーセット値を取得し、wp-config.php ファイルにコピーして貼り付けることができます。PuTTY 端末にテキストを貼り付けるには、テキストを貼り付ける場所にカーソルを置き、PuTTY 端末内でマウスを右クリックします。

      セキュリティキーの詳細については、http://codex.wordpress.org/Editing_wp-config.php#Security_Keys にアクセスしてください。

      注記

      次の値はサンプル専用です。これらの値を実際のインストールには使わないでください。

      define('AUTH_KEY', ' #U$$+[RXN8:b^-L 0(WU_+ c+WFkI~c]o]-bHw+)/Aj[wTwSiZ<Qb[mghEXcRh-'); define('SECURE_AUTH_KEY', 'Zsz._P=l/|y.Lq)XjlkwS1y5NJ76E6EJ.AV0pCKZZB,*~*r ?6OP$eJT@;+(ndLg'); define('LOGGED_IN_KEY', 'ju}qwre3V*+8f_zOWf?{LlGsQ]Ye@2Jh^,8x>)Y |;(^[Iw]Pi+LG#A4R?7N`YB3'); define('NONCE_KEY', 'P(g62HeZxEes|LnI^i=H,[XwK9I&[2s|:?0N}VJM%?;v2v]v+;+^9eXUahg@::Cj'); define('AUTH_SALT', 'C$DpB4Hj[JK:?{ql`sRVa:{:7yShy(9A@5wg+`JJVb1fk%_-Bx*M4(qc[Qg%JT!h'); define('SECURE_AUTH_SALT', 'd!uRu#}+q#{f$Z?Z9uFPG.${+S{n~1M&%@~gL>U>NV<zpD-@2-Es7Q1O-bp28EKv'); define('LOGGED_IN_SALT', ';j{00P*owZf)kVD+FVLn-~ >.|Y%Ug4#I^*LVd9QeZ^&XmK|e(76miC+&W&+^0P/'); define('NONCE_SALT', '-97r*V/cgxLmp?Zy4zUU4r99QQ_rGs2LTd%P;|_e1tS)8_B/,.6[=UK<J_y9?JWG');
    5. ファイルを保存し、テキストエディタを終了します。

WordPress ファイルを Apache ドキュメントルートの下にインストールするには

  1. インストールフォルダの解凍、MySQL データベースとユーザーの作成、WordPress 構成ファイルのカスタマイズが終了したため、インストールファイルをウェブサーバーのドキュメントルートにコピーし、インストールスクリプトを実行して、インストールを終了する準備ができました。これらのファイルの場所は、ウェブサーバーの実際のルートで WordPress ブログを使用できるようにするかどうか (my.public.dns.amazonaws.com など)、またはルートの下のサブディレクトリやフォルダに格納するか (my.public.dns.amazonaws.com/blog など) によって異なります。

  2. WordPress をドキュメントルートで実行する場合は、WordPress のインストールディレクトリのコンテンツを次のようにコピーします (ただし、ディレクトリ自体はコピーしません)。

    [ec2-user ~]$ cp -r wordpress/* /var/www/html/
  3. WordPress をドキュメントルートの下の別のディレクトリで実行する場合、まず、そのディレクトリを作成してから、そこにファイルをコピーします。この例では、WordPress はディレクトリ blog から実行されます。

    [ec2-user ~]$ mkdir /var/www/html/blog [ec2-user ~]$ cp -r wordpress/* /var/www/html/blog/

重要

セキュリティ上の理由から、次の手順にすぐに進まない場合は、Apache ウェブサーバー (httpd) を直ちに停止してください。インストールを Apache ドキュメントルートの下に移動すると、WordPress インストールスクリプトは保護されなくなり、Apache ウェブサーバーが実行している場合、攻撃者はブログへのアクセス権を取得する可能性があります。Apache ウェブサーバーを停止するには、sudo service httpd stop コマンドを入力します。次の手順に移動する場合、Apache ウェブサーバーを停止する必要はありません。

WordPress がパーマリンクを使用できるようにするには

WordPress のパーマリンクが正しく機能するには Apache の .htaccess ファイルを使用する必要がありますが、Amazon Linux ではデフォルトで有効になっていません。Apache ドキュメントルートですべての上書きできるようにするには、次の手順を使用します。

  1. お好みのテキストエディタ (httpd.confnanovim など) で、 ファイルを開きます。お好みのテキストエディタがない場合、nano が初心者に適しています。

    [ec2-user ~]$ sudo vim /etc/httpd/conf/httpd.conf
  2. <Directory "/var/www/html"> で始まるセクションを見つけます。

    <Directory "/var/www/html"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.4/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # Require all granted </Directory>
  3. 上のセクションの AllowOverride None 行を AllowOverride All に変更します。

    注記

    このファイルには複数の AllowOverride 行があります。必ず <Directory "/var/www/html"> セクションの行を変更してください。

    AllowOverride All
  4. ファイルを保存し、テキストエディタを終了します。

Apache ウェブサーバーのファイル許可を修正するには

WordPress で使用できる機能の中には、Apache ドキュメントルートへの書き込み権限が必要なものがあります (管理画面を使った、メディアのアップロードなど)。まだ設定していない場合は、次のグループのメンバーシップおよびアクセス許可を適用します (プロセスの詳細は「LAMP ウェブサーバーチュートリアル」を参照)。

  1. /var/www とそのコンテンツのファイル所有権を apache ユーザーに付与します。

    [ec2-user ~]$ sudo chown -R apache /var/www
  2. /var/www とそのコンテンツのグループ所有権を apache グループに付与します。

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

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

    [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
  5. Apache ウェブサーバーを再起動して、新しいグループと許可を有効にします。

    • [Amazon Linux AMI]: sudo service httpd restart

    • [Amazon Linux 2]: sudo systemctl restart httpd

WordPress インストールスクリプトを実行するには

  1. chkconfig コマンドを使って、httpd サービスとデータベースサービスがシステムブート時に起動することを確認します。

    • [Amazon Linux AMI]: sudo chkconfig enable httpd && sudo chkconfig enable mysql

    • [Amazon Linux 2]: sudo systemctl enable httpd && sudo systemctl enable mariadb

  2. データベースサーバーが実行中であることを確認します。

    • [Amazon Linux AMI]: sudo service mysqld status

    • [Amazon Linux 2]: sudo systemctl status mariadb

    データベースサービスが実行されていない場合は、起動します。

    • Amazon Linux AMI: sudo service mysqld start

    • Amazon Linux 2: sudo systemctl start mariadb

  3. Apache ウェブサーバー (httpd) が実行中であることを確認します。

    • [Amazon Linux AMI]: sudo service httpd status

    • [Amazon Linux 2]: sudo systemctl status httpd

    httpd サービスが実行されていない場合は、起動します。

    • [Amazon Linux AMI]: sudo service httpd start

    • [Amazon Linux 2]: sudo systemctl start httpd

  4. ウェブブラウザで WordPress ブログの URL を入力します (インスタンスのパブリック DNS アドレス、または blog フォルダに続くアドレス)。WordPress インストール画面が表示されるはずです。

    http://my.public.dns.amazonaws.com
     Wordpress のインストール画面
  5. 残りのインストール情報を WordPress インストールウィザードに入力します。

    フィールド
    [Site Title] WordPress サイトの名前を入力します。
    [Username] WordPress 管理者の名前を入力します。セキュリティ上の理由から、このユーザーには一意の名前を選択します。これにより、デフォルトのユーザー名である admin よりも悪用される可能性が低くなるためです。
    パスワード 強力なパスワードを入力し、確認のために再入力します。既存のパスワードを再利用しないでください。また、このパスワードは必ず安全な場所に保管してください。
    [Your E-mail] 通知に使用する E メールアドレスを入力します。
  6. [Install WordPress] をクリックして、インストールを完了します。

これで、WordPress ブログにログインして、エントリの投稿を開始することができます。

次のステップ

最初の WordPress ブログをテストした後、構成を更新するかどうかを検討します。

カスタムドメイン名を使用する

EC2 インスタンスの EIP アドレスに関連付けられたドメイン名がある場合、EC2 パブリック DNS アドレスの代わりにその名前を使用するようにブログを設定できます。詳細については、http://codex.wordpress.org/Changing_The_Site_URL を参照してください。

ブログの構成

読者にパーソナライズされた体験を提供するため、さまざまなテーマプラグインを使用するようにブログを設定できます。ただし、インストールプロセスで問題が発生してブログ全体が失われることがあります。インストール中に問題が発生した場合もブログを復元できるように、テーマやプラグインを員ストーする前にインスタンスのバックアップ Amazon マシンイメージ (AMI) を作成しておくことを強くお勧めします。詳細については、「独自の AMI の作成」を参照してください。

容量の拡大

WordPress ブログが人気になり処理能力やストレージを増やす必要がある場合は、次のステップを検討してください。

WordPress の詳細

WordPress の詳細については、http://codex.wordpress.org/ にある WordPress Codex ヘルプ文書を参照してください。インストールのトラブルシューティングについては、http://codex.wordpress.org/Installing_WordPress#Common_Installation_Problems にアクセスしてください。WordPress ブログのセキュリティ向上の詳細については、http://codex.wordpress.org/Hardening_WordPress にアクセスしてください。WordPress ブログを最新状態に維持する方法についての詳細は、http://codex.wordpress.org/Updating_WordPress にアクセスしてください。

ヘルプ! パブリック DNS 名が変更されたため、ブログが壊れました

WordPress のインストールは、EC2 インスタンスのパブリック DNS アドレスを使用して自動的に設定されます。インスタンスを停止および再開した場合、パブリック DNS アドレスが変更され (Elastic IP アドレスに関連付けられている場合を除く)、ブログが存在しなくなった (または別の EC2 インスタンスに割り当てられた) アドレスにあるリソースを参照することになるため、ブログは機能しなくなります。問題と考えられるいくつかの解決策の詳細については、http://codex.wordpress.org/Changing_The_Site_URL で説明されています。

WordPress のインストール時にこの状況が発生した場合、WordPress の wp-cli コマンドラインインターフェイスを使用する以下の手順でブログを復元できる可能性があります。

wp-cli を使用して WordPress のサイト URL を変更するには

  1. SSH を使って EC2 インスタンスに接続します。

  2. インスタンスの古いサイト URL と新しいサイト URL を書き留めます。古いサイト URL は、WordPress をインストールした時点での EC2 インスタンスのパブリック DNS 名と考えられます。新しいサイト URL は、EC2 インスタンスの現在のパブリック DNS 名です。古いサイト URL が不明な場合、次のコマンドで curl を使用して調べることができます。

    [ec2-user ~]$ curl localhost | grep wp-content

    古いパブリック DNS 名への参照が出力に表示されます。次に例を示します (古いサイト URL は赤色になっています)。

    <script type='text/javascript' src='http://ec2-52-8-139-223.us-west-1.compute.amazonaws.com/wp-content/themes/twentyfifteen/js/functions.js?ver=20150330'></script>
  3. 次のコマンドを使って wp-cli をダウンロードします。

    [ec2-user ~]$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
  4. 次のコマンドを使って、WordPress インストールの古いサイト URL を検索し、置き換えます。EC2 インスタンスの古いサイト URL と新しいサイト URL、および WordPress のインストールパス (通常は /var/www/html または /var/www/html/blog) を置き換えます。

    [ec2-user ~]$ php wp-cli.phar search-replace 'old_site_url' 'new_site_url' --path=/path/to/wordpress/installation --skip-columns=guid
  5. ウェブブラウザで、WordPress ブログの新しいサイト URL を入力し、サイトが再び正しく動作していることを確認します。正しく動作していない場合は、詳細について http://codex.wordpress.org/Changing_The_Site_URLhttp://codex.wordpress.org/Installing_WordPress#Common_Installation_Problems を参照してください。