ピックアップ記事
WordPressで運営しているサイトのサーバを移行する【お名前からLightsailへ】(複数サイト)

WordPressで運営しているサイトのサーバを移行する【お名前からLightsailへ】(複数サイト)

まず始めに

自身が運営しているサイトのサーバをお名前.comの共有SDからAwsのLightsailへ移行しようと思います。

移行理由は、サイト表示速度改善のため, 面白そうだったから等の理由です。

また、私の契約していたお名前サーバの共有SDでは、cronが使用できなかったりと制限があったのですが、lightsailではそのようなことがないため、少し快適になりそうです。

 

対象サイトは、このサイト(took.jp)とそのサブドメインで運営しているサイトの全てです。

 

lightsailでは、様々なアプリケーションを簡易インストールする仕組みがあり、この中の「WordPress」を使用していきます。

 

WordPress Multisiteを使用しない理由

理由としては以下の2点です。

 

WP Migrationは、WordPressサイトの移行で有名なプラグインで、通常のWordPressサイトであれば、無料で移行することが可能です。

しかし、WordPressMultisiteで使用するためには、拡張機能である「Multisite Extension」が必要なようで、これの利用には$199が必要となります。

 

https://servmask.com/products/multisite-extension

 

また、WordPressMultisiteでは一つのWordPressで複数サイトを運営しますが、今までの管理方法は、サイトごとにWordPressを用意し、運営している状態のため、同じような形で移行したいと思います。

 

サイト移行 下準備

まずは、サイト移行手順の確認のため、適当なドメインを取得し、なるべく料金が発生しないよう、移行手順を確認しようと思います。

そのため、ドメイン取得等、実際の移行時には関係ない情報もあります。

 

Lightsailインスタンスの作成

awsマネジメントコンソールにログインし、Lightsailページを開きます。

https://lightsail.aws.amazon.com/

 

インスタンスの作成より、Lightsailインスタンスを作成します。

 

プラットフォームの選択: Linux/Unix

設計図の選択:WordPress

を選択します。

 

インスタンスプランは、3.5$プランであれば、最初の1ヶ月間無料で利用することが出来るため、こちらを利用します。

注意
Lightsailではインスタンス停止中も稼働中と同じように料金が発生します。
もし、利用しなくなった場合にはインスタンスを確実に削除してください。

 

静的IPを作成し、インスタンスにアタッチ

現在の状態では、Lightsailインスタンスが起動するたびにIPアドレスが変わってしまうようなので、静的IPを作成し、インスタンスにアタッチします。

 

Lightsail管理画面のネットワーキングより、静的IPを作成を選択します。

インスタンスのアタッチでは、先ほど作成したインスタンスを選択しましょう。

注意
静的IPはインスタンスにアタッチされている場合には、料金が発生しないですが、どこにもアタッチされていない場合には、料金が発生してしまいます。
インスタンス削除時には、静的IPも必ず削除するようにしましょう。

 

取得できるドメインを確認

ドメインは、無料でドメインを取得できると有名なFreenomを利用し、取得します。

http://www.freenom.com/en/index.html

まずは、使用しようと思っているドメインが取得できるか確認だけ行います。

テスト環境で利用するドメインのため、ドメイン名はなんでも良いです。

 

DNSゾーンを作成

先ほど、取得できることを確認したドメイン名を入力し、DNSゾーンを作成します。

 

作成が完了すると、ネームサーバが4つ表示されます。

次の手順で使用するため、メモしておいてください。

 

ドメインを取得する

先ほど、取得できることを確認したドメインを取得します。

http://www.freenom.com/en/index.html

 

Registerを押下し、次の画面に進むと以下のような画面になっているかと思います。

Use DNS > Use your own DNSと選択し、先ほどLightsailで指定されたネームサーバをNameserver欄に入力します。

(4つ中、適当に2つ入力すれば良いです)

 

 

入力が完了したら、Continueを押し、ドメインを取得します。

 

注意
Freenomでは、最大1年間の期間を無料でドメイン取得することができます。
更新をすることでそれ移行も利用を続けることができますが、更新は期限切れの2週間前からしか行うことができません。
また、90日間で25アクセス以上ない場合も失効となります。

 

ドメインにネームサーバを設定

ドメイン取得時に、ネームサーバを2つ設定しましたが、残りも設定しておきます。

Freenomのヘッダメニュー、Services > My Domainsを選択し、先ほど取得したドメインのManage Domainを選択します。

 

その後、Management ToolsからNameserversを選択。

Lightsailで指定された残りのネームサーバを入力します。

 

DNSレコードを設定

Lightsailで作成したDNSゾーンにDNSレコードを設定します。

レコードの追加を選択し、以下を入力。

Aのレコード
サブドメイン:@
解決先:作成した静的IP
CNAMEのレコード
サブドメイン:www
マップ先:取得したドメイン名

 

これを設定することで、ドメイン名によるアクセスが可能となります。

また、www.[ドメイン名]でアクセスしたときも動作してくれるようCNAMEレコードも設定しています。

 

サブドメインを設定する際にも同じように設定します。

サブドメイン名が、test.[ドメイン名]のような形の場合は、以下のように設定します。

Aのレコード
サブドメイン:www.test
解決先:作成したIP
CNAMEのレコード
サブドメイン:www.test
マップ先:test.[ドメイン名]

 

デフォルトのWordPressを確認

作成したLightsailインスタンスには、既にWordPressがインストールされているため、念のため確認しておきます。

 

設定したドメイン名にアクセスします。

もし、ページが開けない場合には、どこか設定に間違いがあるか、Freenomのネームサーバ設定適用に時間がかかっている可能性があります。

また、今回はWordPressの確認のみのため、インスタンスのパブリックIPに直接アクセスしても問題ないです。

 

次は管理画面にアクセスしてみましょう。

URLの後ろに「/wp-admin」を追加で入力します。

 

ログイン画面が表示されました。

しかし、このままではログイン情報がわからず、ログインできないため、ログイン情報の確認を行います。

 

Lightsail管理画面のインスタンスよりコンソールを開きます。

(下の画像の赤く囲われた部分です)

https://lightsail.aws.amazon.com/

 

コンソールが開かれたら、以下のコマンドを実行し、パスワードを確認します。

cat bitnami_application_password

 

パスワードが確認できたら、WordPressの管理画面に戻り、ログイン情報を入力します。

ログイン情報
Username or Email Address: user
Password: 確認したパスワード

 

サイト移行手順

サブドメインサイト用にWordPressを新規インストール

Lightsailインスタンスには既にWordPressがインストールされていますが、サブドメインで運用中のサイトごとにWordPressをインストールします。

コンソールから作業を行います。

 

WordPressのパスワードを確認

あとで利用するため、メモしておきます。

cat bitnami_application_password

 

ホームに一時ディレクトリを作成し、移動。

mkdir ~/tmp
cd ~/tmp

 

bitnamiのwordpressインストーラを取得し、実行。

※プロジェクト名部分は、書き換えてください。

wget https://bitnami.com/redirect/to/548719/bitnami-wordpress-5.2.1-0-module-linux-x64-installer.run
chmod a+x bitnami-wordpress-5.2.1-0-module-linux-x64-installer.run
sudo bitnami-wordpress-5.2.1-0-module-linux-x64-installer.run --wordpress_instance_name [プロジェクト名]

 

インストーラを起動すると、メッセージが表示されるため、回答を入力していきます。

 

言語を選択。

1」を入力。

Language Selection

Please select the installation language
[1] English - English
[2] Spanish - Español
[3] Brazilian Portuguese - Português Brasileiro
[4] Simplified Chinese - 简体中文
[5] Korean - 한국어
[6] Hebrew - עברית
[7] German - Deutsch
[8] Romanian - Română
[9] Russian - Русский
Please choose an option [1] : 1

 

インストール先のフォルダを選択。

/opt/bitnami/」を入力。

Installation folder
Please choose a folder that contains an installation of Bitnami.
Select a folder []: /opt/bitnami/

 

WordPressに作成するアカウント情報を入力します。

パスワードは、先ほど「cat bitnami_application_password」で確認したパスワードを入力します。

Create Admin account
Login [user]: 
Your real name [User Name]: 
Email Address [user@example.com]: 
Please enter the MySQL password for "root" for the existing Bitnami installation
Password :

 

ブログ名を入力。(適当でおっけい)

WordPress
Please configure WordPress installation
Blog name [took's Blog!]: 

 

メール設定をするか聞かれるので、「y」を入力。

Do you want to configure mail support? [y/N]: y

 

プロバイダを選択。

Gmailで設定するため、「1」を入力。

Configure SMTP Settings
This is required so your application can send notifications via email.
Default email provider:
[1] GMail
[2] Custom
Please choose an option [1] : 1

 

1.開発環境 か 2.本番環境か選択。

手順確認ではありますが、「2」を入力。

Installation type

Please select the use of this Stack

[1] Development Settings: Enables changes to file permissions and configuration settings t
hat make it easy to install plugins, themes and updates for certain applications, but that
 are not optimal from a security standpoint. Recommended if you are using this stack for d
evelopment purposes or within your company.
[2] Production settings: File permissions and configuration settings will be set with secu
rity and performance in mind. Installing certain plugins, themes and updates may require m
anual changes or installing additional services like FTP.  Recommended if this stack will 
be deployed on a public server.
Please choose an option [2] : 

 

インストールを開始するか聞かれるため、「Y」を入力。

Setup is now ready to begin installing Bitnami WordPress Module on your 
computer.

 

Bitnamiモジュールを起動するか聞かれるため、「Y」を入力。

Setup has finished installing Bitnami WordPress Module on your computer.
Launch Bitnami WordPress Module [Y/n]: 

 

これでWordPressのインストールは完了です。

/opt/bitnami/appsの中にインストーラ起動時に指定したプロジェクト名で作成されていることを確認します。

ls /opt/bitnami/apps

 

WordPressに使用するDBが作成されていることも確認します。

mysql -u root -p

パスワードは、「cat bitnami_application_password」で確認したパスワードと同じです。

 

ログイン後、DB一覧を表示させます。

show databases;

 

一覧の中に「bitnami_〇〇〇〇」のように指定したプロジェクト名でDBが作成されていれば問題ありません。

 

新規インストールしたWordPressのログイン情報は、
インストーラで入力したユーザ名と[cat bitnami_application_password]で取得できるパスワードです。

 

SSL証明書を作成する

bitnamiではSSL証明書を簡単にするためのツールが用意されています。

しかし、1つのサーバ内で複数のサイトを運営する際の証明書取得が上手く行かなかったため、通常の手順でLet's Encryptの証明書を取得しようと思います。

 

まず、証明書取得時にapacheが動作していると上手くいかないことがあるため、停止させます。

sudo /opt/bitnami/ctlscript.sh stop apache

 

証明書発行に必要なパッケージをインストールします。

Debian系のOSが入っていたため、apt-getで取得します。

sudo apt-get install -y letsencrypt certbot python-certbot-apache

 

証明書を発行します。

sudo certbot certonly --standalone -t

 

表示されるメッセージに従い、入力をします。

 

メールアドレスを入力。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): 

 

規約に同意する場合には「A」を入力。

Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

 

キャンペーンなどのメールを受け取る場合は、「Y」を入力。

Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

 

証明書を発行するドメイン名を入力。

Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'
to cancel): 

 

証明書の発行に成功した場合には、以下のようなメッセージが表示されます。

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for took.jp
Cleaning up challenges
Problem binding to port 80: Could not bind to IPv4 or IPv6.

IMPORTANT NOTES:
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

 

※本番環境の場合は、おそらくネームサーバ切り替え後でないと取得できないと思います。

 

証明書の発行が完了したか確認を行います。

 sudo ls /etc/letsencrypt/live/

 

証明書を取得したドメインのディレクトリが作成されていれば、問題ありません。

 

VirtualHostsの設定を行う

サイトごとにVirtualHostsの設定を行う

vi ~/apps/wordpress/conf/httpd-vhosts.conf
<VirtualHost *:80>
    ServerName [ドメイン名]
    ServerAlias www.[ドメイン名]
    DocumentRoot "/opt/bitnami/apps/wordpress/htdocs"

Include "/opt/bitnami/apps/wordpress/conf/httpd-app.conf"
</VirtualHost>

<VirtualHost *:443>
    ServerName [ドメイン名]
    ServerAlias www.[ドメイン名]
    DocumentRoot "/opt/bitnami/apps/wordpress/htdocs"
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/[ドメイン名]/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/[ドメイン名]/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/[ドメイン名]/chain.pem
    SSLCACertificateFile /etc/letsencrypt/live/[ドメイン名]/fullchain.pem

Include "/opt/bitnami/apps/wordpress/conf/httpd-app.conf"
</VirtualHost>

 

サブドメイン用のhttpd-vhosts.confも変更します。

vi ~/apps/[プロジェクト名]/conf/httpd-vhosts.conf

 

また、サブドメインサイトの場合は、WordPressの設定を変更します。

vi ~/apps/news/htdocs/wp-config.php

 

変更前

define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']  . '[プロジェクト名]');
define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] ) . '[プロジェクト名]';

 

変更後

define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] );
define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] );

 

設定が完了したら、Apacheを再起動し、それぞれのサイトにアクセスできることを確認しましょう。

 

ファイルを編集し、全てのincludeをコメントアウト 。

vi /opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf

 

各サイト用のvhostsのincludeを設定。

vi /opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf
# Bitnami applications installed in a Virtual Host
Include '/opt/bitnami/apps/[プロジェクト名]/conf/httpd-vhosts.conf'

 

bitnamiのマークを削除する

画面右下に写っているbitnamiのマークを削除します。

 

sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1

 

パーマリンクの設定を有効化

パーマリンクを基本設定で利用する場合には、問題ないですが、私の場合は投稿名で利用しているため、一部変更が必要です。

もし、パーマリンクを投稿名に設定している場合は、500エラーが発生しているはずです。

参考
基本 took.jp/?p=123
投稿名 took.jp/記事タイトル名
移行前環境から.htaccessをFTPで移行します。
LightsailインスタンスへのFTP接続方法は、以下の記事を参考にしてください。
設定ファイルを書き換えます。
vi ~/apps/wordpress/conf/httpd-app.conf 
RewriteEngine On
RewriteRule /<none> / [L,R]

<IfDefine USE_PHP_FPM>
    <Proxy "unix:/opt/bitnami/php/var/run/wordpress.sock|fcgi://wordpress-fpm" timeout=300>
    </Proxy>
</IfDefine>

<Directory "/opt/bitnami/apps/wordpress/htdocs">
    Options +MultiViews +FollowSymLinks
    AllowOverride All
    <IfVersion < 2.3 >
Order allow,deny
Allow from all
    </IfVersion>
    <IfVersion >= 2.3>
Require all granted
    </IfVersion>

 

11行目辺りにある「AllowOverride None」を「AllowOverride All」に書き換えます。
bitnamiでは以下のパスにこのようなファイルが用意されているようです。
/opt/bitnami/apps/[プロジェクト名]/conf/htaccess.conf

 

メールの設定を行う

bitnamiのインストーラでメールの設定をしましたが、メール送信を試したところ、以下のようなメールが届きました。

 

どうやら、「安全性の低いアプリの許可」をしなければ、メールを送信できないようです。

しかし、セキュリティ面の問題からGoogle非推奨とのことなので、他の方法でメールを送受信したいと思います。

 

設定方法については別記事を作成しましたので、以下の記事を参考にしてください。

おすすめの記事