Amazon Linux 2 での WordPress ブログのホスト - Amazon Elastic Compute Cloud

Amazon Linux 2 での WordPress ブログのホスト

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

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

重要

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

前提条件

このチュートリアルは、Amazon Linux 2 の Amazon Linux 2 での LAMP のインストールAmazon Linux への 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 のインストール

オプション: オートメーション を使用してこのチュートリアルを完了する

以下のタスクを行う代わりに AWS Systems Manager オートメーションを使用してこのチュートリアルを完了するには、オートメーションドキュメントを実行します。

インスタンスに接続して、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. データベースサーバーを起動します。

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

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

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

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

    一意のユーザー名とパスワードを入力して、次のコマンドを入力します。

    CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_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.phpnano など) を使って vim ファイルを編集し、インストール用の値を入力します。お好みのテキストエディタがない場合、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 端末内でマウスを右クリックします。

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

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

      [ec2-user ~]$ cp -r wordpress/* /var/www/html/
    • 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 systemctl stop httpd コマンドを入力します。次の手順に移動する場合、Apache ウェブサーバーを停止する必要はありません。

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

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

  1. お好みのテキストエディタ (httpd.confnano など) で、vim ファイルを開きます。お好みのテキストエディタがない場合、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. ファイルを保存し、テキストエディタを終了します。

PHP グラフィック描画ライブラリを Amazon Linux 2 にインストールするには

PHP 用の GD ライブラリを使用すると、イメージを変更することができます。ブログのヘッダーイメージをトリミングする必要がある場合は、このライブラリをインストールします。インストールするバージョンの phpMyAdmin は、このライブラリの特定の最小バージョン (バージョン 7.2 など) を必要とする場合があります。

PHP グラフィック描画ライブラリを Amazon Linux 2 にインストールするには、次のコマンドを使用します。例えば、LAMP スタックをインストールする一環として amazon-linux-extras から php7.2 をインストールした場合、このコマンドは PHP グラフィック描画ライブラリのバージョン 7.2 をインストールします。

[ec2-user ~]$ sudo yum install php-gd

インストールしたバージョンを検証するには、次のコマンドを使用します。

[ec2-user ~]$ sudo yum list installed php-gd

出力例を次に示します。

php-gd.x86_64 7.2.30-1.amzn2 @amzn2extra-php7.2
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 [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
  4. /var/www およびそのサブディレクトリのファイル許可を繰り返し変更します。

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

    WordPress を FTP サーバーとして使用する場合も、これよりも制限の少ないグループ設定が必要になります。これを実行するには、「WordPress で推奨されている手順とセキュリティ設定」を参照してください。

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

    • [ec2-user ~]$ sudo systemctl restart httpd
Amazon Linux 2 で WordPress インストールスクリプトを実行する

WordPress をインストールする準備ができました。使用するコマンドは、オペレーティングシステムによって異なります。この手順のコマンドは、Amazon Linux 2 で使用するためのものです。

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

    [ec2-user ~]$ sudo systemctl enable httpd && sudo systemctl enable mariadb
  2. データベースサーバーが実行中であることを確認します。

    [ec2-user ~]$ sudo systemctl status mariadb

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

    [ec2-user ~]$ sudo systemctl start mariadb
  3. Apache ウェブサーバー (httpd) が実行中であることを確認します。

    [ec2-user ~]$ sudo systemctl status httpd

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

    [ec2-user ~]$ sudo systemctl start httpd
  4. ウェブブラウザで WordPress ブログの URL を入力します (インスタンスのパブリック DNS アドレス、または blog フォルダに続くアドレス)。WordPress インストールスクリプトが表示されます。WordPress のインストールに必要な情報を入力します。[WordPress のインストール] を選択して、インストールを完了します。詳細については、WordPress のウェブサイトの Step 5: Run the Install Script を参照してください。

次のステップ

WordPress ブログをテストしたら、設定の更新を検討します。

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

EC2 インスタンスの EIP アドレスに関連付けられたドメイン名がある場合、EC2 パブリック DNS アドレスの代わりにその名前を使用するようにブログを設定できます。詳細については、WordPress ウェブサイトの「サイトの URL の変更」を参照してください。

ブログを設定する

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

容量を増やす

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

  • インスタンスストレージ領域を拡張する。詳細については、「Amazon EBS Elastic Volumes」を参照してください。

  • MySQL データベースを Amazon RDS に移動して、サービスが持つ容易にスケールする機能を活用する。

インターネットトラフィックのネットワークパフォーマンスを向上させる

ブログにより世界中のユーザーからのトラフィックが増加すると予想される場合は、AWS Global Accelerator をご検討ください。Global Accelerator を使用すると、ユーザーのクライアントデバイスと AWS で実行中の WordPress アプリケーションとの間で、インターネットトラフィックのパフォーマンスを向上でき、低レイテンシーを実現できます。Global Accelerator では、AWS グローバルネットワークを使用して、トラフィックをクライアントから最も近い AWS リージョンにある正常なアプリケーションエンドポイントに送信します。

WordPress の詳細

WordPress の詳細については、「http://codex.wordpress.org/」にある WordPress Codex ヘルプ文書を参照してください。インストールのトラブルシューティングの詳細については、https://wordpress.org/support/article/how-to-install-wordpress/#common-installation-problems にアクセスしてください。WordPress ブログのセキュリティ向上の詳細については、https://wordpress.org/support/article/hardening-wordpress/ にアクセスしてください。WordPress ブログを最新状態に維持する方法の詳細については、https://wordpress.org/support/article/updating-wordpress/ にアクセスしてください。

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

WordPress のインストールは、EC2 インスタンスのパブリック DNS アドレスを使用して自動的に設定されます。インスタンスを停止および再開した場合、パブリック DNS アドレスが変更され (Elastic IP アドレスに関連付けられている場合を除く)、ブログが存在しなくなった (または別の EC2 インスタンスに割り当てられた) アドレスにあるリソースを参照することになるため、ブログは機能しなくなります。問題および考えられるいくつかの解決策の詳細については、https://wordpress.org/support/article/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 を入力し、サイトが再び正しく動作していることを確認します。それ以外の場合、詳細については、https://wordpress.org/support/article/changing-the-site-url/ および https://wordpress.org/support/article/how-to-install-wordpress/#common-installation-problems を参照してください。