まずは、前提として何か独自のドメインをとって、AWS上にWordPressサイトをたてるとします。
こちらを参考にしました。

独自ドメインブログの始め方

Elastic IP アドレスの設定とRoute 53から独自ドメインの割り当て方法

WordPress certified by Bitnamiはシングルサイト用とマルチサイト用のものがあるが、マルチサイトにすると、バックアップやサーバの移行で苦労するので、シングルサイトにした方がシンプル
t3a系列でメモリが少ないものより、t2でメモリの大きいほうがストレスが少ない
EC2のインスタンス間で区別がつくように、名前をつけておく

単にEC2を立てただけだと、サーバを停止することにより割り当てられたIPを失ってしまう。そのため、Elastic IPを取得して割り当てておく。

負荷の高いサービス、バックアップシステムが必要な場合はロードバランサーを設定する。設定がややこしいので別エントリで説明する。

お名前.comからRoute53へネームサーバーを変更する時に迷子になる人へ

  • DNS設定変更:確認画面へ進む>設定する をクリックするのを忘れずに
  • Route53とお名前.comの両方でAレコードの書き換えが必要
  • ネームサーバはAWSで割り当てられたものをお名前.comの方に入れる

例えば、大学のドメインを申請して取る場合は Route53にAレコードとNS(ネームサーバ)を設定する。これができていれば大学の方でのDNSは消してよい。ロードバランサー⇒AWSでのサイト暗号化を使うのであれば、むしろ大学の方でのDNS設定は消さなければならない。そうでなければ、AWSの方のNS設定が反映されない。

MX(メール)を同じドメインで使っている場合は、その設定もAWSの方に忘れずに移しておく。

VS codeを使ってEC2にSSHアクセス

参考:VSCodeを使ってAWS EC2のソースコードを編集する

  1. ローカルPCを変えた場合特に、いきなりconnect hotするのではなく、まずadd New hostする(pemファイルへのパスと、permissionに注意)
  2. configファイルを書き換える: サーバ名の中にスペースを入れてしまうと、別のエントリとして認識されるので、スペースは入れない
  3. connect host (ユーザ名を変えろと言ってきたら、それに従って書き換える)
  4. ここまでしておくと、VS codeを立ち上げた時点で自動的にリモートサーバに接続されている。このままではローカルの作業ができないので、必要ない時はmenu > Close Remote Connection する
サイトにアクセスしようとするとDatabase Errorと出る

SQLのパスワード等を触った覚えがないのに、Database Errorが出てVS Codeでサーバにもアクセスできない

  • サーバのメモリスワップが設定されていない/設定が固定されていない
    【必要手順】 AWS Amazon Linux スワップファイル作成によりSwap領域のサイズを増やす
  • ディスクスペースを使い切っている
    >VS codeで接続するためのプログラムをサーバ側にインストールできないので接続できない。その場合、単純にコマンドプロンプト/Powershellでssh -i ... を打てば接続できる。EC2のダッシュボード>「接続」でコマンドを確認する。公開鍵へのパスと、ユーザ名を適宜変更する。
    【必要手順】 既存のEC2インスタンスのディスク容量を拡張する
  • EC2は定期的にスナップショットをとってバックアップしておくとよい
Elastic IPを使っていて、インスタンスを作成し直した場合

公開鍵の関連付けをリリースしないとSSHでログインできない

EIPのインスタンスを変更してSSH接続できなくなったら

$ ssh-keygen -R YOUR_IP_ADDRESS

ローカルPC上の設定をリリースする操作なので、ローカルのターミナル上で行う。PowershellでOK.

サイトをSSL化する

参考:【WordPress, SSL化】EC2で立てたWordPressをLet’s EncryptでSSL化してみた
← この方法は簡便だったが、cerbot autoが効かなくなったことによりこのままでは実行できなくなっている。AWSが発行する証明書でロードバランサーを設定し、SSL化する方法を別エントリで紹介する。

SSLはドメインに対して発行される
Google Analyticsの関連付けを変える。Search comsoleとAnalyticsの両方の書き換えが必要

参考:AWSでWordPressを構築したときのhttps化の簡単手順
こちらの「WordPressのhttps化」の項以下
ドメイン名でサイトが引けてくるまで少し時間がかかるので辛抱づよく待つ。
DNSの反映状況を確認したい場合、例えばネームサーバは

$ nslookup -type=ns YOURDOMIN

powershellでも使える。

もしくはこちらのサイトnslookup(dig)テスト【DNSサーバ接続確認】で確認する。
ここでhttp -> https の変更を行っている場合は、当然もとのURL http://your.domain ではアクセスできなくなっているので注意。

SSL化したら、メールを送れるようにする

メールが遅れないと、サイト管理者のアドレスも、ユーザも設定できません。
参考:WordPressからメールを送信する設定(WP Mail SMTP)

  1. Add Google Sign-In to Your Web App より、
    認証情報を作成 > OAuthクライアントIDの作成 > ウェブアプリケーション > URIを追加(IPアドレスではダメ、ドメインが割り当てられていないといけない)
  2. メールアドレスに対して設定する、より簡便な方法/他のプラグインの使っているAPIとバッティングしない方法として、「その他のSMTP」を選んでGmailなどを設定する。2段階認証を設定している場合は、もとのパスワードでは通らないので、Googleのアカウントダッシュボードでアプリパスワードを設定すればよい。

    Googleアカウントのセキュリティ画面(パスワード)のところを見ても二段階認証を設定できない場合は、Workspaceの全体設定でユーザの二段階認証作成許可がOffになっているので、Onにすると使えるようになります。

必要プラグインを入れる (一例)

  • UpdraftPlus  バックアップ用。作成中の際には頻繁に自動バックアップするように設定しておく。
    他サイトから移行する際は、プラグインは移行しない方がよい
    有償ライセンスを持っている場合は、プラグインの検索ではなく、zipファイルをアップロードする →アカウントに連携
  •  Jetpack  とても有用なもの、またこの中に含まれているのにも関わらず、別にプラグインを入れてしまいそうなもの・・・マークダウン記述、サイトダウンアラート、記事のコピー、ウィジェットの可視性のコントロール
  • Query Monitor  デバッグ用
  • Classic Editor  GutenbergエディタをOffにする
  • Shortcodes Ultimate  ボタンなどのビジュアルパーツをショートコードで簡単に埋め込む
  • なんとか、最近のテーマを使いつつ記事を書くときはMarkdownやShortcodeでの装飾も使いたい・・・となったときに、試行錯誤の結果出た結論は、JetpackでMarkdownをオン+Classic Editorでテキストビューで編集+Inline previewで横にプレビューを表示がもっとも使い勝手が良かった。
  • Crop Thumbnails サムネイル画像の切り取りヶ所を調整。AMPや、JetpackのサイトアクセラレーターはOffにしておくこと。
  • Redirection  アクセスを別ページに転送させる。サイト内でも有用だが、サイトの引っ越しをする際には、 元サーバ側に リダイレクトをしばらく設置しておかないといけない。
    サイトやドメインの移行により、新サイトが検索されなくなるのを防ぐためには古いサイトがが存在するうちにRedirectの設定をした後でSearch Comsoleの中でサイト移転の処理をしておく。
    それを行わずに元サイトを削除してしまった場合、検索のキャッシュがGoogleに残ったままになるので、古いコンテンツの削除をGoogleに依頼する。
  • アクセスコントロール用のプラグイン いろいろ・・・、いま作業中のサイトではGroupというのを使っている。使用が簡便な一方で高機能だが、バックエンドの細かいCapabilityまではコントロールできない。
  • Formidable Forms Pro フォーム作成ではこれが最高。
  • 目次とか 本サイトで使っているのはLuckyWP Table of Contents
  • Max Mega Menu  横幅の広いメニュー内にウィジェットや画像を配置したい場合
  • WP Multibyte Patch  AWSのイメージだとデフォルトでは入っていない。最近は不要?
AWSでWord Pressサイトをたてる一連の流れ(基本編)
%d人のブロガーが「いいね」をつけました。