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
前提条件
このチュートリアルは、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 インストールパッケージをダウンロードして解凍するには
-
wget コマンドを使って、最新の WordPress インストールパッケージをダウンロードします。次のコマンドを実行すると、最新リリースが必ずダウンロードされます。
[ec2-user ~]$
wget https://wordpress.org/latest.tar.gz
-
インストールパッケージを解凍します。インストールフォルダは、
wordpress
という名前のフォルダに解凍されます。[ec2-user ~]$
tar -xzf latest.tar.gz
WordPress インストール用にデータベースユーザーとデータベースを作成するには
WordPress インストールは、ブログの投稿、ユーザーコメントなどの情報をデータベースに格納する必要があります。この手順を実行すると、ブログのデータベースを作成するのに役立ち、このデータベースに対して情報の読み取りや保存を許可されたユーザーにも有用です。
-
データベースサーバーを起動します。
-
[ec2-user ~]$
sudo systemctl start mariadb
-
-
データベースサーバーに
root
ユーザーとしてログインします。メッセージが表示されたら、データベースroot
パスワードを入力します。これは通常のroot
システムパスワードと異なることもあれば、データベースサーバーのセキュリティ確保を実行していない場合は、空のときもあります。データベースサーバーのセキュリティを確保していない場合、セキュリティ確保を行うことは重要です。詳細については、MariaDB サーバーをセキュリティで保護するには (Amazon Linux 2) を参照してください。
[ec2-user ~]$
mysql -u root -p
-
MySQL データベースのユーザーとパスワードを作成します。WordPress インストールは、これらの値を使って、MySQL データベースと通信を行います。
ユーザー用に強力なパスワードを作成してください。パスワードに一重引用符 (') を使用しないでください。この文字は前述のコマンドを中断させるためです。安全なパスワードの作成の詳細については、「http://www.pctools.com/guides/password/
」を参照してください。既存のパスワードを再利用しないでください。また、このパスワードは必ず安全な場所に保管してください。 一意のユーザー名とパスワードを入力して、次のコマンドを入力します。
CREATE USER '
wordpress-user
'@'localhost' IDENTIFIED BY 'your_strong_password
'; -
データベースを作成します。
wordpress-db
など、データベースにはわかりやすい名前を使用します。注記
次のコマンドのデータベース名を囲む区切り記号は、「バックティック」と呼ばれています。バックティック (
`
) キーは通常、標準キーボードのTab
キーの上に配置されています。バックティックは必ずしも必要ではありませんが、データベース名では使用できない文字 (ハイフンなど) の代わりに使用できます。CREATE DATABASE `
wordpress-db
`; -
データベースに対して、以前作成した WordPress ユーザーに対する完全な権限を付与します。
GRANT ALL PRIVILEGES ON `
wordpress-db
`.* TO "wordpress-user
"@"localhost"; -
すべての変更を有効にするため、データベース権限をフラッシュします。
FLUSH PRIVILEGES;
-
mysql
クライアントを終了します。exit
wp-config.php ファイルの作成と編集を行うには
WordPress インストールフォルダには、wp-config-sample.php
という名前の構成ファイル例が格納されています。この手順では、このファイルをコピーして、特定の構成に合うように編集します。
-
wp-config-sample.php
ファイルをwp-config.php
という名前でコピーします。この操作を実行すると、新しい構成ファイルが作成され、元のファイルがバックアップとしてそのまま保持されます。[ec2-user ~]$
cp wordpress/wp-config-sample.php wordpress/wp-config.php
-
お好みのテキストエディタ (
wp-config.php
、nano など) を使って vim ファイルを編集し、インストール用の値を入力します。お好みのテキストエディタがない場合、nano
が初心者に適しています。[ec2-user ~]$
nano wordpress/wp-config.php
-
DB_NAME
を定義する行を探して、database_name_here
を ステップ 4 の WordPress インストール用にデータベースユーザーとデータベースを作成するには で作成したデータベース名に変更します。define('DB_NAME', '
wordpress-db
'); -
DB_USER
を定義する行を探して、username_here
を ステップ 3 の WordPress インストール用にデータベースユーザーとデータベースを作成するには で作成したデータベースユーザーに変更します。define('DB_USER', '
wordpress-user
'); -
DB_PASSWORD
を定義する行を探して、password_here
を ステップ 3 の WordPress インストール用にデータベースユーザーとデータベースを作成するには で作成した強力なパスワードに変更します。define('DB_PASSWORD', '
your_strong_password
'); -
Authentication Unique Keys and Salts
というセクションを見つけます。これらのKEY
とSALT
の値は、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
'); -
ファイルを保存し、テキストエディタを終了します。
-
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 ドキュメントルートですべての上書きできるようにするには、次の手順を使用します。
-
お好みのテキストエディタ (
httpd.conf
や nano など) で、vim ファイルを開きます。お好みのテキストエディタがない場合、nano
が初心者に適しています。[ec2-user ~]$
sudo vim /etc/httpd/conf/httpd.conf
-
<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> -
上のセクションの
AllowOverride None
行をAllowOverride
に変更します。All
注記
このファイルには複数の
AllowOverride
行があります。必ず<Directory "/var/www/html">
セクションの行を変更してください。AllowOverride
All
-
ファイルを保存し、テキストエディタを終了します。
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 ウェブサーバーチュートリアル」を参照)。
-
/var/www
とそのコンテンツのファイル所有権をapache
ユーザーに付与します。[ec2-user ~]$
sudo chown -R apache /var/www
-
/var/www
とそのコンテンツのグループ所有権をapache
グループに付与します。[ec2-user ~]$
sudo chgrp -R apache /var/www
-
/var/www
およびそのサブディレクトリのディレクトリ許可を変更してグループの書き込み許可を設定し、将来のサブディレクトリにグループ ID を設定します。[ec2-user ~]$
sudo chmod 2775 /var/www
[ec2-user ~]$
find /var/www -type d -exec sudo chmod 2775 {} \;
-
/var/www
およびそのサブディレクトリのファイル許可を繰り返し変更します。[ec2-user ~]$
find /var/www -type f -exec sudo chmod 0644 {} \;注記
WordPress を FTP サーバーとして使用する場合も、これよりも制限の少ないグループ設定が必要になります。これを実行するには、「WordPress で推奨されている手順とセキュリティ設定
」を参照してください。 -
Apache ウェブサーバーを再起動して、新しいグループと許可を有効にします。
-
[ec2-user ~]$
sudo systemctl restart httpd
-
Amazon Linux 2 で WordPress インストールスクリプトを実行する
WordPress をインストールする準備ができました。使用するコマンドは、オペレーティングシステムによって異なります。この手順のコマンドは、Amazon Linux 2 で使用するためのものです。
-
systemctl コマンドを使って、
httpd
サービスとデータベースサービスがシステムブート時に起動することを確認します。[ec2-user ~]$
sudo systemctl enable httpd && sudo systemctl enable mariadb
-
データベースサーバーが実行中であることを確認します。
[ec2-user ~]$
sudo systemctl status mariadb
データベースサービスが実行されていない場合は、起動します。
[ec2-user ~]$
sudo systemctl start mariadb
-
Apache ウェブサーバー (
httpd
) が実行中であることを確認します。[ec2-user ~]$
sudo systemctl status httpd
httpd
サービスが実行されていない場合は、起動します。[ec2-user ~]$
sudo systemctl start httpd
-
ウェブブラウザで WordPress ブログの URL を入力します (インスタンスのパブリック DNS アドレス、または
blog
フォルダに続くアドレス)。WordPress インストールスクリプトが表示されます。WordPress のインストールに必要な情報を入力します。[WordPress のインストール] を選択して、インストールを完了します。詳細については、WordPress のウェブサイトの Step 5: Run the Install Scriptを参照してください。
次のステップ
WordPress ブログをテストしたら、設定の更新を検討します。
カスタムドメイン名を使用する
EC2 インスタンスの EIP アドレスに関連付けられたドメイン名がある場合、EC2 パブリック DNS アドレスの代わりにその名前を使用するようにブログを設定できます。詳細については、WordPress ウェブサイトの「サイトの URL の変更
ブログを設定する
読者にパーソナライズされた体験を提供するため、さまざまなテーマ
容量を増やす
WordPress ブログが人気になり処理能力やストレージを増やす必要がある場合は、次のステップを検討してください。
-
インスタンスストレージ領域を拡張する。詳細については、「Amazon EBS Elastic Volumes」を参照してください。
-
MySQL データベースを Amazon RDS
に移動して、サービスが持つ容易にスケールする機能を活用する。
インターネットトラフィックのネットワークパフォーマンスを向上させる
ブログにより世界中のユーザーからのトラフィックが増加すると予想される場合は、AWS Global Accelerator
WordPress の詳細
WordPress の詳細については、「http://codex.wordpress.org/
ヘルプ! パブリック 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 を変更するには
-
SSH を使って EC2 インスタンスに接続します。
-
インスタンスの古いサイト 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> -
次のコマンドを使って wp-cli をダウンロードします。
[ec2-user ~]$
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
-
次のコマンドを使って、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 -
ウェブブラウザで、WordPress ブログの新しいサイト URL を入力し、サイトが再び正しく動作していることを確認します。それ以外の場合、詳細については、https://wordpress.org/support/article/changing-the-site-url/
および https://wordpress.org/support/article/how-to-install-wordpress/#common-installation-problems を参照してください。