【初心者向け】AWSのLightsailを使ってWordPressサイトを立ち上げる
広告の貼れる自分のWebサイトを持ちたくて、AWSのLightsailを使ってWordPressサイトを立ち上げてみたので立ち上げ方法を記事にしてみます。Webサイトの立ち上げについて多少の知識はありましたが、DNSサーバの設定や、WordPressへのドメイン の反映、WordPressのマルチサイト設定、インターネット通信の暗号化(SSL化)と手間取るところもあったので、その辺りの手順について記載したいと思います。
AWSのLightsailについて
Lightsailは仮想サーバを非常に簡単にまた安価に立てられるサービスです。WordPressやRedmineなどのコンテンツ管理ソフトや、NginxなどのWebサーバがプリインストールでき、個人でも手軽にWebサーバを立ち上げることができます。最小構成であれば月々3.5ドル(約400円)から自分のWebサーバを運用することができます。※ドメイン名の取得・維持に別途年1,000円〜数千円かかります。
AWSの紹介サイトはこちら
Lightsailでの仮想サーバの立ち上げ手順
- 手順1:AWSのアカウントを作成する
- 手順2:LightsailでWordPressサーバを立ち上げる
- 手順3:固定IPアドレスを取得してWordPressサーバに紐付ける
- 手順4:ドメイン名を取得する ※
- 手順5:DNSサーバの設定を行う
- 手順6:WordPressにドメイン名を反映する
- 手順7:インターネット通信の暗号化(SSL化)を行う
- 手順8:複数のWordPressサイトを立ち上げる
※ドメイン名の取得はAWSからもサービスが提供されていますが、私は”さくらインターネット”からドメイン名を取得していたので、”さくらインターネット”での取得方法を記載しています。
手順1:AWSのアカウントを作成する
AWSのサイトにアクセスし、”コンソールにサインイン”ボタンから”新しいAWSアカウントの作成”へ進みます。
アカウントの作成ではフルネームや住所はローマ字で入力していきます。
手順2:WordPressサーバを立ち上げる
AWSのアカウントが作成できたら、AWSへログインし、AWSマネジメントコンソールのメニューから”Lightsail”を選択します。
Lightsailのコンソール画面が表示されるので、”インスタンスの作成”ボタンを押して、仮想サーバの作成を進めます。
OSはLinux/Unixを選択します。※Windowsを選択すると利用できるアプリはSQL Serverだけでした。
WordPressとWordPress Multisiteがありますが、私の場合、2名でそれぞれ独立したBlogサイトを作りたかったのでWordPress Multisiteを選択しました。
料金プランを選択します。1からBlogサイトを立ち上げるのなら、アクセスもほとんどないので最小構成のプランで問題ないと思います。
作成するインスタンス(サーバ)に名前を付けます。サーバを識別するための名前なので、自分で任意に名前を付けて構いません。最後に”インスタンスの作成”ボタンを押してインスタンスを作成します。
上記の設定でひとまずサーバが立ち上がりました。下記のように作成したサーバ(WordPress_Multisite-2)がLightsailコンソール画面に表示されます。黒墨で塗り潰したところにはサーバのIPアドレスが表示されています。
手順3:固定IPアドレスを取得してWordPressサーバに紐付ける
手順2で作成したサーバは動的IPアドレスを振られているため、サーバの再起動毎にIPアドレスが変わってしまいます。IPアドレスが変わってしまうとユーザがWebサイトにアクセス出来ませんので、静的IPアドレス(固定IPアドレス)を作成してサーバに設定します。
Lightsailコンソール画面から作成したサーバ(私の場合、WordPress_Multisite-2)を選択します。
選択したサーバのコンソール画面で”ネットワーキング”タブを表示し、”静的IPの作成”ボタンを押します。
”静的IPの指定”で作成するIPアドレスに識別するための名前(任意)を付け、作成ボタンを押します。
静的IPアドレスが作成され、サーバ(WordPress_Multisite-2)のIPアドレスとして設定が出来ました。
手順4:ドメイン名を取得する
静的IPアドレスが設定できればサーバにはアクセス出来るようになりますが、IPアドレス(例:172.217.25.227)は数字の羅列であり人には認識しづらいため、人が認識しやすい名前:ドメイン名(例:google.co.jp)を付けることが一般的です。ドメイン名を取得しIPアドレスと紐づけると、ドメイン名でサーバにアクセスすることが出来るようになります。
AWSのサービスを使ってドメイン名を取得することが出来ますが、私は”さくらインターネット”でドメイン名を取得しました。ドメイン名を取得・維持するには費用が必要で、私が取得した.comドメインだと年間1,200円ほどの費用で維持できます。
手順5:DNSサーバの設定を行う
手順4で取得したドメイン名とIPアドレスの紐付け設定を行います。Lightsailのホーム画面で”ネットワーキング”タブを開き、”DNSゾーンの作成”ボタンを押します。
DNSゾーンの作成画面で取得したドメイン名を入力します。
”DNSゾーンの作成”ボタンを押します。
DNSゾーンの設定でドメイン名とIPアドレスの紐付け設定を行います。作成したDNSゾーンを選択します。
”レコードの追加”ボタンから紐付け設定を行います。
”Aのレコード”を選択、サブドメインにはおおもとのドメインを示す”@”を入力し、”解決先”に手順3で作成した静的IPアドレスの名前を選択します。右上の緑色のチェックマークで設定を保存します。これでドメイン名(私の場合、tokyo326.com)を静的IPアドレス(私の場合、StaticIp-1)へ紐づける設定が出来ました。
のちのち複数のBlogサイトを管理するためにサブドメイン名をWordPress上で定義するので、ワイルドカード(アスタリスク”*”)を使って全てのサブドメインへのアクセスを同じ静的IPアドレス(同じサーバ)に紐づける設定を行っておきます。
これでドメイン名と静的IPアドレスの紐付けをAWSのDNSサーバ(下記サーバ)に設定することが出来ました。
インターネット上でドメイン名と静的IPアドレスの紐付けを可能にするためには、より上位のDNSサーバに、このドメイン(私の場合、tokyo326.com)のIPアドレス紐付け情報を持っているのはAWSのDNSサーバ(上記ネームサーバ)ですよっと知らせる必要があります。
私の場合、”さくらインターネット”でドメイン名を取得したので、そちらのサイトでAWSのネームサーバを参照するように設定を行いDNSの設定は完了です。
手順6:WordPressにドメイン名を反映する
手順2の時点でWordPressがインストールされていますが、まだIPアドレスでしかアクセスできない状態なので取得したドメイン名を設定に反映します。
Ligthsailコンソールのホーム画面から作成したサーバを選択し、”SSHを使用して接続”(ブラウザーベースのSSHクライアント)を押します。
ブラウザの別タブにLinuxサーバのシェル(ターミナル)画面が表示されます。この画面(シェル)はWindowsのコマンドプロンプトと同じようにテキストベースでコマンドやアプリケーションを実行できる環境です。
次のコマンドを打ち込みWordPressにドメイン名を設定します。
sudo /opt/bitnami/configure_app_domain --domain <ドメイン名>
<ドメイン名>のところは私の場合なら”tokyo326.com”を入力します。
ブラウザのURLバーにドメイン名を入力してWordPressページにアクセスできたら設定成功です。
手順7:インターネット通信の暗号化(SSL化)を行う
安全なインターネット通信(暗号化された通信)を行うための設定を行います。デフォルトの設定である通信(http)はデータが暗号化されておらず、ブラウザで入力したパスワード等がそのままインターネット上を流れる為、危険です。暗号化通信(https)を行うように設定します。
手順6と同様、”SSHを利用して接続”からLinuxサーバのシェルを開きます。
そして次のコマンドを打ち込みます。
sudo /opt/bitnami/bncert-tool
httpsの設定を行うドメインをスペース区切りで入力するように求められるので、WordPressで利用するドメインを入力して、Enterを押します。
私の場合の入力例:
Domain list []: tokyo326.com daily.tokyo326.com
※サブドメイン毎に複数回に分けてコマンド実行してみましたが、上手く設定が反映されなかったので、Domain listには利用予定のドメイン名を全て入力して、一度で設定しました。また”www”付きのドメイン名も登録するか確認があったのでYes[Y]で進めました。
httpsの証明書は90日で期限切れになるようですが、ここで利用したbncert-toolを使うと証明書を80日毎に自動更新してくれるので便利です。
参考:Enabling HTTPS on your WordPress instance in Amazon Lightsail
http通信をhttps通信にリダイレクトする設定
上記の設定で暗号化通信(https)が可能になりましたが、まだ非暗号化通信(http)でアクセス出来る状態なので、非暗号化通信を暗号化通信へ強制変換(リダイレクト)する設定を行います。
手順6と同様、”SSHを利用して接続”からLinuxサーバのシェルを開き、下記のファイルをエディタで編集します(ここではviエディタで開いています)。※bitnamiの構成変更により修正が必要なファイルが違う場合があるようなので参考のリンクを参照してください。
vi /opt/bitnami/apache2/conf/bitnami/bitnami.conf
”<VirtualHost _defalut_:80>”後ろに以下の4行を追加します。
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^(localhost|127.0.0.1)
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]
追加後の設定ファイル:
下記のコマンドを実行し、Apache(Webサーバデーモン)を再起動します。
sudo /opt/bitnami/ctlscript.sh restart apache
設定後、非暗号化通信(http://ドメイン名)でアクセスし、URLが暗号化通信(https://ドメイン名)に自動変換されればOKです。
参考:Force HTTPS Redirection With Apache
手順8:複数のWordPressサイトを立ち上げる
手順2でWordPressが既にインストールされています。”SSHを利用して接続”からLinuxサーバのシェルを開き、WordPessの管理者初期パスワードを確認します。
初期パスワードは”bitnami_application_password”というファイルに記載されているので、lessコマンドを使って中身を確認します。下記画像で赤く塗り潰したところにパスワードが表示されます。
less bitnami_application_password
WordPressのログインURLにアクセスし、管理ユーザ”user”、上記で取得したパスワードでログインします。
マルチサイトのWrodPressでは管理者がblogサイトの新規生成やユーザ登録、プラグインやテーマのインストールを一括管理しますが、blogサイトは個々のユーザが管理でき、管理者がインストールしたプラグインやテーマの中で自由に選択、設定して独立したblogサイトを構築できます。
Blogサイト1つを生成してみます。”参加サイト” > “サイトネットワーク管理” > “サイト”を選択します。
新規追加ボタンを押します。
blogサイトのURL(サブドメイン名)、サイトのタイトル、管理者メールアドレス等を入力して、”サイトを追加”ボタンでサイトを生成します。
サイト生成後、サイトの管理者のアカウントを作成し、サイトの管理者として設定します。
同様の流れで複数のblogサイトを生成することができます。