概要

この連載では、Lightsailの2023年度版イメージであるAmazon Linux2023 をLAMP構成で運用開始できるまでを、画像付きで丁寧に解説していきます。本日は第4回(最終回)、IPでアクセスできるWordpressプロジェクトに、新たにドメインを当てて、httpsでアクセスできるようにしていきます。

前回はWordpressを導入するまでの手順を解説致しましたので そちらまだの方はご覧いただけますと幸いです。

初回の記事はこちらとなります。

本連載のゴール

Amazon Linux2023カーネルのLightsailインスタンス・サーバで、インストール済みのWordpressにアクセスできるようにする。

対象読者

1. ドメインの取得・DNS設定

1-1. ドメインの取得

AWSのドメインサービスである Route53も選択肢として考えられますが、初期費用が高めに設定されており、ここは安価に取得できるお名前.comを無難に使います。

他に、ドメインが原価で買えると噂のCloudflare Registrar等もあるみたいですが、僕の方では試しておらず... よろしければご検討ください。

1-2. ドメインのDNS設定

会員登録・ログインを実行し、ドメインの購入まで完了したら、

DG設定/転送設定 - ドメイン一覧 から、設定するドメインを選択します。

aws401.png

今回僕は、取得済みのドメインのうち、個人ブログのドメインとして愛用しています、「yutatanaka.tokyo」を選択しました。

下に移動し「DNSレコード設定を利用する」の「設定する」を押します。

aws402.png

DNSレコードの登録欄がでるので、

それぞれ入れてください。

aws403.png

他の設定はそのまま、「確認画面へ進む」を押します。(ドメイン保護のおすすめダイアログが出た場合は「設定しない」で大丈夫です。)

aws404.png

変更内容が出ますので、問題なければ設定する を押すと保存します。

aws405.png?n=1

あとはTTLで設定した秒数分、疎通するまでしばらくお待ちください。

設定したドメインで、インスタンスのIPにアクセスした時と同じ表示が出たら疎通OKです。

2. サーバ側でドメインの疎通設定を行う。

2-1. 443ポートをLightsailのGUI(画面)から解放する

第2回の記事でも説明しましたが、443ポートを開けておきます。 httpsのリクエストの通り道となるこの443 ポートを解放しないと、絶対に疎通しませんのでハマらないようお気をつけください。 Lightsailのホームに移動し、インスタンスをクリック。ネットワーキング をクリックします。

aws406.png?n=1

ポートを追加 から443ポートを追加します。

IPアドレス制限は不要で、全IPを疎通させて大丈夫です。

IPアドレス制限は不要で、全IPを疎通させて大丈夫です。

2-2. Apacheのバーチャルホスト設定で、IPとドメインを一致させる。

第3回と同様に、コマンドコンソールアプリ を使い、サーバにSSHで入ってApacheの設定を直接いじります。

# SSHサーバにコンソールアプリから入る
ssh ec2-user@[インスタンスの固定IP] -i ~/.ssh/LightsailDefaultKey-ap-northeast-1.pem

# 設定ファイルに移動
cd /etc/httpd/conf.d
sudo vi virtualhost.conf

# viでconfが開くので、「a」をタイプして編集モードになる

<VirtualHost *:80>
  ServerName syumi.yutatanaka.tokyo # この行を追加し、ドメインはご自身のものにする。  DirectoryIndex index.php index.html
  DocumentRoot /var/www/projects/wordpress

  <Directory "/var/www/projects/wordpress">
    Require all granted
  </Directory>
</VirtualHost>

# Escを一回押し、 :wq で保存&viを終了

以下のコマンドでApacheを再起動して、ブラウザからhttp://ご自身のドメイン/でアクセスしてください。(今時点ではまだ、httpsではないので注意してください。)

# Apache再起動
sudo service httpd graceful

# まだhttps化(SSL化)が残っているので、そのままにしておく。

これで無事、Wordpressブログがドメインで見れるようになりました!

ただし、まだ「保護されていない通信」とでてSSL化されていないことがわかる。

ただし、まだ「保護されていない通信」とでてSSL化されていないことがわかる。

2-3. https化(SSL化)する

コマンドコンソールアプリに戻り、サクッとLet's Encryptを使って無料のhttps化(SSL化)しちゃいましょう。

Amazon Linux2よりは複雑な方法なのですが、以下のコマンドを順番に打ってください。

# ルートユーザーになっておく
sudo su -

# mod_sslを入れておく
sudo dnf install mod_ssl

# Python3の仮想環境でインストールを実行
dnf install -y python3 augeas-libs 
python3 -m venv /opt/certbot
/opt/certbot/bin/pip install --upgrade pip
/opt/certbot/bin/pip install certbot certbot-apache

# 参照を貼っておく
ln -s /opt/certbot/bin/certbot /usr/bin/certbot

# 証明書を取得
certbot

ここまで来ると、必要な設定を聞かれるので以下のように入力します。

[root@ip-172-26-0-188 ~]# certbot
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): # 連絡先となるメールアドレスを入れます

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y # 規約を確認の上同意してください

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, 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: N # メールアドレスを情報提供するかを聞かれています。判断をしてください。Account registered.

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: syumi.yutatanaka.tokyo
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1 # どのドメインをhttps化するか聞かれます。Requesting a certificate for syumi.yutatanaka.tokyo

Deploying certificate
Successfully deployed certificate for syumi.yutatanaka.tokyo to /etc/httpd/conf.d/virtualhost-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://syumi.yutatanaka.tokyo

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

https化ができました!ただこの状態だと、表示が崩れてしまうのでWordpressの管理画面から設定変更します。

http://[ip]/wp-admin/

にアクセスしてログインしてください。(httpsではなく、http、ドメインではなくIPでアクセスをお願いします。)

Setting を開くと、Wordpress AddressSite Address がIPのままになっています。

aws409.png?n=1

ここを、今回設定したhttpsかつ**ドメインに変更してください。

** 設定を変更するとすぐにエラーが出るかもしれません**が、これは基本設定を変更したものによる現象で、

https://[今回設定のドメイン]/

にアクセスするとサイトが閲覧できると思います。お疲れ様でした。

3. 運営に必要なミドルウェアの追加(必要な方だけ)

※ この作業はサーバとしての運用が必要な方だけで大丈夫です、Wordpressだけの利用など不要な方は章を飛ばしてください。

3-1. 最低限、必要だと思うミドルウェアを入れる

Amazon Linux1/2 時代にデフォルトで入っていた便利なミドルウェアがいくつか不足しているため、入れておきます。

特にcrondは入っていないと定期実行設定が行えません。また、rsyslogが入っていないとOS関連のログが出力されず 運営にあたり不便です。

sudo su -

# cron
sudo dnf -y install cronie
sudo systemctl enable crond
sudo systemctl restart crond

# rsyslog
sudo dnf -y install rsyslog
sudo systemctl enable rsyslog
sudo systemctl restart rsyslog

3-2. exiftoolのインストールが必要なので入れる

私は他にexiftoolが必要だったので、

こちらのURLを参照に wgetでバイナリをダウンロードしてきて、以下の流れで解凍=>インストールまで行いました。

# ルートになっておく。sudo su - 

# 取得
wget https://exiftool.org/Image-ExifTool-12.69.tar.gz

# 解凍
tar xvf Image-ExifTool-12.69.tar.gz
cd Image-ExifTool-12.69

# インストール
perl Makefile.PL
make
make test
make install

で入れる。Amazon Linux1 / Amazon Linux2にはperl-Image-ExifToolがあって yumで入れられたが、Amazon Linux 2023にはパッケージライブラリにない模様。dnfでも無理なようです。もし、より簡単にAmazon Linux2023に入れられる方法があればご教示いただきたいです。

3-3. ミドルウェアを入れるにあたって参考になった記事

その他、本記事を書くにあたり参考になったサイト様を列挙させていただきます。
Amazon Linux 2023 の初期設定が Amazon Linux 2 と違いすぎて戸惑ったので、その内容と対処方法のまとめ

まとめ

Amazon Linux2と違い、思ったより初期設定がめんどくさかったですね。基本的な便利ツールが入っていない理由としては、crond とは別の定期実行ツールが登場しているなど、ユーザーの選択肢に幅を 持たせたい(人によって不要なものはあらかじめ入れないようにしておきたい) というAWS側の思惑が働いた結果だと思います。

その分、カスタマイズ性が広い技術だと考えて、前向きにコーディングできればな、と思いました!


以上となります。


連載記事を最後までお読みいただきありがとうございました!
引き続き当ブログをよろしくお願いいたします。