概要
- AWSのEC2インスタンスで稼働しているお手製HTMLホームページを、Wordpressに移行したので、その手順を記しました。いろいろ調べても、このパターンの記事がほぼなかったので、参考になればと思います。
- 当記事はあくまで上記が目的で記載していますが、「ヴァーチャルホスト機能を使って新たなドメインを作成する方法」「Wordpress用DBの設定方法」という観点はWordpressをEc2インスタンスに導入される方であれば共通するステップだと思います。
環境
- Mac
- 機種ID:MacBookPro18,3
- macOS:Monterey
- チップ:Apple M1 Pro
- メモリ:16GB
前提
- 現在運用中のお手製HTMLホームページ(WordpressなどのCMSを利用していません)を「現行HP」、Wordpressに移行して扱う予定のホームページを「新HP」と呼称して進めます。(最終的には同じURLになります)
- 現行HPについて、AWSのEC2インスタンスのGIPとお名前.comのドメインがDNSレコード設定で紐づいています。(=EC2インスタンスごと入れ替える、という手順は検討していません)
- 現行HPのドメインを、
sample.com
とします。 - 切り替えまでの間の新HPのドメインを、
wp.sample.com
とします。(勿論、切り替え後はsample.com
になります) - EC2インスタンスのOSはUbuntu 18.04.3 LTSです。
- ウェブサーバーは、 Apache/2.4.29です。
- ApacheのVirtualHost機能を使って現行HPと新HPのURLどちらとも、今のEC2に向かうようにします。
- 現行お手製ホームページのHTML/CSS内容をそっくりそのままWordpressに移行する、というような手順の検討や記載はしていません。現行HPからサイトマップやコンテンツも変更する予定なので、そこまで高次元で考慮して実施していないことを考慮ください。あくまで、同じサーバー・同じドメインで、運用的に楽なWordpressに移行したい、というのが今回の実施目的です。
実行手順
1. お名前ドットコムのDNSレコード設定で、新HPのドメインを登録する
2. Apacheのヴァーチャルホスト設定を行い、新HPの表示を確認する
3. PHPのインストールを行う
4. DBのインストール・接続設定を行う
5. Wordpressのインストール・config設定・ファイルの所有者設定を行う
①お名前ドットコムのDNSレコード設定で、新HPのドメインを登録する
- お名前ドットコム→現行HPのURLを選択→DNSレコード設定→レコード追加で、ドメインを追加登録。以下のように記入します。
- ホスト名:wp.sample.com
- TYPE:A
- TTL:300
- VALUE:11.222.333.444
- DNSサーバのAレコードに2つのホストを「同じIPアドレス」で登録することがポイントです。
- 今回の場合でいうと、
11.222.333.444
に2つのホストがあることになります。
- 今回の場合でいうと、
- 補足:hostsファイルを使用して実行したい方は、上記必要ないと思います。別途リサーチされてください。
②Apacheのヴァーチャルホスト設定を行い、新HPの表示を確認する
ヴァーチャルホスト設定(仮想ホスト設定)とは:
- 1台のサーバーで複数のウェブサイトを運用出来る技術です。運営するドメイン単位ごとにサーバーを設置していると、コストが抑えられますよね。特に今回みたいに切り替えまでの間のホームページや検証用環境として触りたいくらいの用途であれば、そのためだけにドメインを取るのも勿体無いですのでバーチャルホストが使われることが多いと思います。
- ホストごとに異なるドキュメントルートを構築できるので管理しやすく、それもメリットの一つです。
- あくまで1台のサーバーなので、アクセス集中やサーバー障害などが発生すると、全てのドメインに負荷がかかってしまいますので要留意です。ただ、ちょっと調べたら、バーチャルホストを使ってWordpressを10個くらいのサイトにインストールしている強者がいたのでびっくりしましたが、、、笑
- バーチャルホストそれ自体に名前解決の機能はありません。上述の通り、DNSレコード設定を行うのであれば、お名前ドットコムなどで登録する必要があります。
- VirtualHostについては、以下の記事が図解もあり非常にわかりやすく解説されています。
Apacheの設定ファイルを編集する
- 該当のEC2インスタンス(現行HPが動いているサーバー)に接続します。
- UbuntuでApache2.4のヴァーチャルホスト設定を確認する場合は、
/etc/apache2/sites-available
にあるconfファイルを確認します。-
httpd.conf
を編集する場合もあるので、それぞれのOSやApacheのバージョンを確認ください。
-
CentOS版では /etc/httpd/に各種ファイルがあり、親玉は/etc/httpd/conf/httpd.confです。
Debian系では /etc/apache2/の中であり、親玉は/etc/apache2/apache2.conf。
引用元記事:ubuntu版 Apache2.4でバーチャルホストの設定
- 以下コマンドで現行HPの設定ファイルを編集します。
sudo vi sample_homepage.conf
- 具体的には、以下のように一番下に追記します。
<VirtualHost *:80>
DocumentRoot /var/www/html/wpsample_homepage
ServerAdmin sample@sample.com
ServerName wp.sample.com
ErrorLog ${APACHE_LOG_DIR}/sample_homepage-error.log
CustomLog ${APACHE_LOG_DIR}/sample_homepage-access.log combined
</VirtualHost>
-
DocumentRootは、ドメインに紐付ける公開ディレクトリ。これからWordpressをインストールするディレクトリを記載します。
- デフォルトでは
/var/www/html
です - 参考:CentOS 7 の Apache httpd 2.4 に VirutalHost の設定をする手順
- デフォルトでは
-
ServerAdminは、現行HPのものと同じです。
-
ServerNameは、DNSレコード設定を行なったドメイン名と同じになります。
-
ErrorLogやCustomLogは必須ではありません。
-
設定を有効にするコマンドを実施します。confファイルがあるディレクトリで、confファイル名を指定します。
sudo a2ensite sample_homepage
- apache2を再起動します。
sudo systemctl restart apache2
新しいURLが正常に表示されるか確認する
-
/var/www/html/
以下に、先ほど指定したものと同じ名前のディレクトリwpsample_homepage
を作成し、その中にindex.html
を新規作成します。 -
index.html
にHTMLで「TEST PAGE」などと記載しておきます - 新URL
http://wp.sample.com
にアクセスして「TEST PAGE」が表示された場合、正常にバーチャルホスト設定ができています。- もちろん、
http://wp.sample.com/index.html
と明示的に指定してあげてもOKです。 - 確認ができましたら、ここのディレクトリはあとでWordpressが入ってくるので、
index.html
は削除しておきましょう。
- もちろん、
- 補足1:
このサイトにアクセスできませんhttp://wp.sample.com のサーバーの IP アドレスが見つかりませんでした。
というエラーが表示された場合は、DNSレコード設定がうまくできていない可能性があります。もう一度、現行HPが登録されているDNSサーバーを確認し、上述の通りに登録されているか確認してください。 - 補足2: ドキュメントルート直下のファイルは、
index.html
でなくとも何でもいいです。aaa.html
などとしても、Index/of...
というページが表示されれば、正常にバーチャルホスト設定ができています。
③PHPのインストールを行う
- WordpressではPHPというサーバーサイドスクリプトやその拡張モジュールが必要になります。
- 今回は、現行HPで既にPHPを利用していたのでインストール手順は記載していません。新規にインストールが必要な方は、以下記事などに記載があるので、参照されてください。
- PHPのバージョンが古いと、Wordpressでは「PHP Update Required」が表示されることがあります。なるべく最新版にしておくと良いと思います。バージョン指定のインストールも可能です。
- phpMyAdminはブラウザからデータベースを確認することができるものですが、必須項目ではないので今回の構築手順では省いています。必要な方はこちらも上記記事にインストール手順の記載があります。
④DBのインストール・接続設定を行う
DBをインストールする
- Wordpressのデータベースとして使用するMySQLやMariaDBをインストールします。
- 今回は、現行HPで既に使用しているMySQLサーバーがありますので、新規にMySQLをインストールする手順は記載していません。新規にインストール等から必要な方は、以下記事などに記載があるので、参照されてください。
Wordpress用のDB接続設定を行う
- データベース
wordpress-db
を新規作成します。
CREATE DATABASE `wordpress-db`;
- データベースのユーザーとパスワードを作成します。
CREATE USER 'wordpress-user'@'%' IDENTIFIED BY 'sample-wp';
-
wordpress-user
ユーザーの権限を追加します。
GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"%";
- 補足:Host名の
%
について- Host にワイルドカード文字の
%
を設定すると、全てのホストにマッチします。同DBサーバー内で完結する場合は、'wordpress-user'@'localhost'
としていただいて問題ありません。 - ただし、ワイルドカード
"_"
と"%"
のマッチ順位は低く設定されており、誰でも何でも接続できるようになる完璧ワイルドカード!という訳ではありません。詳しくは以下記事にまとめられてあるので、ご参照ください。 - ちなみに、ホスト名を指定しなかった場合には暗黙的に
"%"
が割り当てられます。
- Host にワイルドカード文字の
⑤Wordpressのインストール・config設定・ファイルの所有者設定を行う
Wordpressをインストールする
- 該当のEC2インスタンス(現行HPが動いているサーバー)に接続します。
- ホームディレクトリで以下を実行。最新の WordPress を EC2 インスタンス上にダウンロードして展開(解凍)。
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
wp-config.php
を編集する
- デフォルトで存在している
wp-config-sample.php
をベースにしたwp-config.php
を作成して編集します。
cp wordpress/wp-config-sample.php wordpress/wp-config.php
vim wordpress/wp-config.php
-
wp-config.php
の編集内容は以下の通り。
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress-db' );
/** Database username */
define( 'DB_USER', 'wordpress-user' );
/** Database password */
define( 'DB_PASSWORD', 'sample-wp-1234' );
/** Database hostname */
define( 'DB_HOST', 'localhost' );
-
DB_NAME
、DB_USER
、DB_PASSWORD
は先ほど登録した通りです。 -
DB_HOST
は、先ほどDB設定を実施した同DBサーバー内であればlocalhost
で問題ありません。別のDBサーバーで設定していた場合は、そちらのIPアドレスを明示的に記載してあげる必要があります。 -
インストールしたWordpressディレクトリを今回の新HPの公開ディレクトリへ移動します。
cp -r wordpress/* /var/www/html/wpsample_homepage
-
http://wp.sample.com/wp-admin/install.php
にアクセスすると、Wordpressインストール画面が表示されます。 -
参考記事:
WordPressのファイルの所有者を「apache」とする
- 構築においてマストではないですがWordpressを運用するにあたっていずれ対応することになるTODOとして、「wordpress配下の所有者とgroupをapache所有とする」必要があります。テーマやプラグイン導入はすぐにやることだと思うので、ここで実施しておきましょう。
sudo chown -R www-data:www-data /var/www/html/wpsample_homepage
- apache所有者は、ubuntuでは
www-data
です。apache:apache
で実施するという記事が多いのは、CentOSはapache
ユーザーだからだと思います。ご自身のOSによって所有者やグループのところは置き換えてください。 - 前が所有者・後が所有グループです。
- 所有グループの情報は、
cat /etc/group
で確認できます。
- 所有グループの情報は、
Error establishing a database connection
と表示される場合
- 自分はこのエラーで少し悩まされたのですが、結論、
wp-config.php
の編集内容に誤りがある場合が多いと思います。もう一度、④で行なったDB設定の内容とwp-config.php
の内容が一致しているか確認しましょう。 - 特に、現行HPと新HPの切り替え時では、現行HPと同じDBサーバー内でWordpress用のデータベースやユーザーを新規作成しているのか?という点も大事です。しっかり自分の環境を勘案して記載内容が間違っていないか?と考えて実施することが重要です。
Wordpressを新規運用するにあたって対応したエラーなど
- 【Wordpress】PHP Update Requiredの対応方法について(EC2に接続してアップグレードする)
- 【Wordpress】アップロード時の"upload_max_filesize"エラーと"Unable to create directory"エラーを対応