メニュー
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 への LAMP ウェブサーバーのインストール」のすべての手順に従って、PHP と MySQL をサポートする機能的なウェブサーバーを含む Amazon Linux インスタンスを起動したことを前提としています。このチュートリアルでは、セキュリティグループで HTTP および HTTPS トラフィックを許可するように設定する手順や、ウェブサーバー用にファイルアクセス許可が正しく設定されていることを確認する手順も示します。まだそうしていない場合は、「チュートリアル: Amazon Linux への LAMP ウェブサーバーのインストール」を参照してこれらの前提条件を満たした後、このチュートリアルに戻って WordPress をインストールします。セキュリティグループへのルール追加の詳細については、セキュリティグループへのルールの追加 を参照してください。

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

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

WordPress のインストール

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

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

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

    Copy
    [ec2-user ~]$ wget https://wordpress.org/latest.tar.gz --2013-08-09 17:19:01-- https://wordpress.org/latest.tar.gz Resolving wordpress.org (wordpress.org)... 66.155.40.249, 66.155.40.250 Connecting to wordpress.org (wordpress.org)|66.155.40.249|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 4028740 (3.8M) [application/x-gzip] Saving to: latest.tar.gz 100%[======================================>] 4,028,740 20.1MB/s in 0.2s 2013-08-09 17:19:02 (20.1 MB/s) - latest.tar.gz saved [4028740/4028740]

  2. インストールパッケージを解凍します。インストールフォルダは、wordpress という名前のフォルダに解凍されます。

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

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

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

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

    Copy
    [ec2-user ~]$ sudo service mysqld start

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

    重要

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

    Copy
    [ec2-user ~]$ mysql -u root -p Enter password:

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

    Copy
    mysql> CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password'; Query OK, 0 rows affected (0.00 sec)
    ユーザー用に強力なパスワードを作成してください。パスワードに一重引用符 (') を使用しないでください。この文字は前述のコマンドを中断させるためです。安全なパスワードの作成の詳細については、http://www.pctools.com/guides/password/ を参照してください。既存のパスワードを再利用しないでください。また、このパスワードは必ず安全な場所に保管してください。

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

    注記

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

    Copy
    mysql> CREATE DATABASE `wordpress-db`; Query OK, 1 row affected (0.01 sec)

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

    Copy
    mysql> GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost"; Query OK, 0 rows affected (0.00 sec)
  6. すべての変更を有効にするため、MySQL 権限をフラッシュします。

    Copy
    mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.01 sec)

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

    Copy
    mysql> exit Bye

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

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

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

    Copy
    [ec2-user ~]$ cd wordpress/ [ec2-user wordpress]$ cp wp-config-sample.php wp-config.php

  2. お好みのテキストエディタ (nanovim など) を使って wp-config.php ファイルを編集し、インストール用の値を入力します。お好みのテキストエディタがない場合は、nano が非常に使いやすくてお勧めです。

    Copy
    [ec2-user wordpress]$ nano wp-config.php

    1. DB_NAME を定義する行を探して、database_name_hereWordPress インストール用に MySQL ユーザーとデータベースを作成するにはステップ 4 で作成したデータベース名に変更します。

      Copy
      define('DB_NAME', 'wordpress-db');

    2. DB_USER を定義する行を探して、username_hereWordPress インストール用に MySQL ユーザーとデータベースを作成するにはステップ 3 で作成したデータベースユーザーに変更します。

      Copy
      define('DB_USER', 'wordpress-user');

    3. DB_PASSWORD を定義する行を探して、password_hereWordPress インストール用に MySQL ユーザーとデータベースを作成するにはステップ 3 で作成した強力なパスワードに変更します。

      Copy
      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 にアクセスしてください。

      注記

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

      Copy
      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 ドキュメントルートに移動するには

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

  • ブログが使用できる場所を選択し、その場所に関係する mv だけを実行します。

    重要

    以下の両方のコマンドセットを実行する場合、2 番目の mv コマンドでエラーメッセージが表示されます。これは、移動しようとしたファイルが存在していないことを意味します。

    • my.public.dns.amazonaws.com でブログを使用できるようにするには、wordpress フォルダ内のファイル (フォルダ自体ではありません) を Apache ドキュメントルート (Amazon Linux インスタンスの /var/www/html) に移動します。

      Copy
      [ec2-user wordpress]$ mv * /var/www/html/

    • または、その代わりにブログを my.public.dns.amazonaws.com/blog で使用できるようにするには、Apache ドキュメントルート内に blog という名前の新規フォルダを作成し、wordpress フォルダ内のファイル (フォルダ自体ではありません) を新しい blog フォルダに移動します。

      Copy
      [ec2-user wordpress]$ mkdir /var/www/html/blog [ec2-user wordpress]$ mv * /var/www/html/blog

重要

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

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

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

  1. お好みのテキストエディタ (nanovim など) で、httpd.conf ファイルを開きます。お好みのテキストエディタがない場合は、nano が非常に使いやすくてお勧めです。

    Copy
    [ec2-user wordpress]$ sudo vim /etc/httpd/conf/httpd.conf

  2. <Directory "/var/www/html"> で始まるセクションを見つけます。

    Copy
    <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"> セクションの行を変更してください。

    Copy
    AllowOverride All

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

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

WordPress で使用できる機能の中には、Apache ドキュメントルートへの書き込み権限が必要なものがあります (管理画面を使った、メディアのアップロードなど)。ウェブサーバーは apache ユーザーとして実行されるため、そのユーザーを LAMP ウェブサーバーチュートリアルで作成した www グループに追加する必要があります。

  1. apache ユーザーを www グループに追加します。

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

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

    Copy
    [ec2-user wordpress]$ sudo chown -R apache /var/www

  3. /var/ とそのコンテンツのグループ所有権を wwwwww グループに変更します。

    Copy
    [ec2-user wordpress]$ sudo chgrp -R www /var/www

  4. /var/www およびそのサブディレクトリのディレクトリ許可を変更してグループの書き込み許可を設定し、将来のサブディレクトリにグループ ID を設定します。

    Copy
    [ec2-user wordpress]$ sudo chmod 2775 /var/www [ec2-user wordpress]$ find /var/www -type d -exec sudo chmod 2775 {} \;

  5. /var/www およびそのサブディレクトリのファイル許可を繰り返し変更してグループの書き込み許可を追加します。

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

  6. Apache ウェブサーバーを再起動して、新しいグループと許可を有効にします。

    Copy
    [ec2-user wordpress]$ sudo service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]

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

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

    Copy
    [ec2-user wordpress]$ sudo chkconfig httpd on [ec2-user wordpress]$ sudo chkconfig mysqld on

  2. MySQL サーバー (mysqld) が実行中であることを確認します。

    Copy
    [ec2-user wordpress]$ sudo service mysqld status mysqld (pid 4746) is running...
    mysqld サービスが実行されていない場合は、起動します。
    Copy
    [ec2-user wordpress]$ sudo service mysqld start Starting mysqld: [ OK ]

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

    Copy
    [ec2-user wordpress]$ sudo service httpd status httpd (pid 502) is running...
    httpd サービスが実行されていない場合は、起動します。
    Copy
    [ec2-user wordpress]$ sudo service httpd start Starting httpd: [ OK ]

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

    Copy
    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 を使用して調べることができます。

    Copy
    [ec2-user ~]$ curl localhost | grep wp-content
    古いパブリック DNS 名への参照が出力に表示されます。次に例を示します (古いサイト URL は赤色になっています)。
    Copy
    <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 をダウンロードします。

    Copy
    [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) を置き換えます。

    Copy
    [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 を参照してください。