WordPressで運営しているサイトのサーバを移行する【お名前からLightsailへ】(複数サイト)
まず始めに
自身が運営しているサイトのサーバをお名前.comの共有SDからAwsのLightsailへ移行しようと思います。
移行理由は、サイト表示速度改善のため, 面白そうだったから等の理由です。
また、私の契約していたお名前サーバの共有SDでは、cronが使用できなかったりと制限があったのですが、lightsailではそのようなことがないため、少し快適になりそうです。
対象サイトは、このサイト(took.jp)とそのサブドメインで運営しているサイトの全てです。
lightsailでは、様々なアプリケーションを簡易インストールする仕組みがあり、この中の「WordPress」を使用していきます。
WordPress Multisiteを使用しない理由
理由としては以下の2点です。
WP Migrationで移行しようとした場合に料金が発生してしまうため。
今までの管理方法と異なるため。fa-chevron-circle-right
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ヶ月間無料で利用することが出来るため、こちらを利用します。
もし、利用しなくなった場合にはインスタンスを確実に削除してください。
静的IPを作成し、インスタンスにアタッチ
現在の状態では、Lightsailインスタンスが起動するたびにIPアドレスが変わってしまうようなので、静的IPを作成し、インスタンスにアタッチします。
Lightsail管理画面のネットワーキングより、静的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を押し、ドメインを取得します。
更新をすることでそれ移行も利用を続けることができますが、更新は期限切れの2週間前からしか行うことができません。
また、90日間で25アクセス以上ない場合も失効となります。
ドメインにネームサーバを設定
ドメイン取得時に、ネームサーバを2つ設定しましたが、残りも設定しておきます。
Freenomのヘッダメニュー、Services > My Domainsを選択し、先ほど取得したドメインのManage Domainを選択します。
その後、Management ToolsからNameserversを選択。
Lightsailで指定された残りのネームサーバを入力します。
DNSレコードを設定
Lightsailで作成したDNSゾーンにDNSレコードを設定します。
レコードの追加を選択し、以下を入力。
サブドメイン:@
解決先:作成した静的IP
サブドメイン:www
マップ先:取得したドメイン名
これを設定することで、ドメイン名によるアクセスが可能となります。
また、www.[ドメイン名]でアクセスしたときも動作してくれるようCNAMEレコードも設定しています。
サブドメインを設定する際にも同じように設定します。
サブドメイン名が、test.[ドメイン名]のような形の場合は、以下のように設定します。
サブドメイン:www.test
解決先:作成したIP
サブドメイン:www.test
マップ先:test.[ドメイン名]
デフォルトのWordPressを確認
作成したLightsailインスタンスには、既にWordPressがインストールされているため、念のため確認しておきます。
設定したドメイン名にアクセスします。
もし、ページが開けない場合には、どこか設定に間違いがあるか、Freenomのネームサーバ設定適用に時間がかかっている可能性があります。
また、今回はWordPressの確認のみのため、インスタンスのパブリックIPに直接アクセスしても問題ないです。
次は管理画面にアクセスしてみましょう。
URLの後ろに「/wp-admin」を追加で入力します。
ログイン画面が表示されました。
しかし、このままではログイン情報がわからず、ログインできないため、ログイン情報の確認を行います。
Lightsail管理画面のインスタンスよりコンソールを開きます。
(下の画像の赤く囲われた部分です)
https://lightsail.aws.amazon.com/
コンソールが開かれたら、以下のコマンドを実行し、パスワードを確認します。
cat bitnami_application_password
パスワードが確認できたら、WordPressの管理画面に戻り、ログイン情報を入力します。
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が作成されていれば問題ありません。
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.
上記のようなエラーの場合は、Apacheが終了できていない可能性が高いです。
解決できない場合は、以下の記事を参考にしてください。
※本番環境の場合は、おそらくネームサーバ切り替え後でないと取得できないと思います。
証明書の発行が完了したか確認を行います。
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/記事タイトル名
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>
メールの設定を行う
bitnamiのインストーラでメールの設定をしましたが、メール送信を試したところ、以下のようなメールが届きました。
どうやら、「安全性の低いアプリの許可」をしなければ、メールを送信できないようです。
しかし、セキュリティ面の問題からGoogle非推奨とのことなので、他の方法でメールを送受信したいと思います。
設定方法については別記事を作成しましたので、以下の記事を参考にしてください。