バイセルテクノロジーズで開発部のマネージャーを努めている松榮です。
私がこの会社へJOINしたのは2019年1月なので、4ヶ月が経とうとしています。
この会社ではエンジニア組織が30名弱という事で開発・運用・企画・設計・アプリケーション開発・インフラ開発・その他色々を全て自分達で何でもやる必要があります。
何でもやるからこそ、幅広い知識やスキルを求められつつも、
スピード感と裁量を持って業務に取り組める環境があります。
今回はさくっとWordPressを立ち上げて欲しいという要望があったので、
AWSの Lightsailで構築しました。
要件としては以下の通りでシンプル
- WordPressの利用
- 独自のドメインの利用
- SSL化
- サクッと構築
インスタンスの作成
必要な情報を選択し、インスタンスの作成ボタンを押すとセットアップ
保留中から数分で
アクティブな状態に
接続する情報やIPアドレスは詳細画面に。
ドメインの適応
IPの固定化
ネットワークタブからIPアドレス欄に静的IPのボタンが表示されているので。
ボタンをおして、静的IPをインスタンスへアタッチします。
これでIPが固定化されました。
ドメインの設定
今回はサブドメインを利用する予定なので、Route53側でDNS登録します。
ちなみに、SSL化するにあたり幾つか手法があります。
- EC2のインスタンスへ証明書を設定する
- ロードバランサーをEC2の前に建てて、ロードバランサーへ証明書を設定する
- その他
今回はミニマム構成でセットアップするのでEC2インスタンスへ証明書を入れます。
どの手法を取るかでDNSの設定方法が微妙に変わります。
ということで、Route53にてAレコードを追加。
これでドメインでアクセス出来るようになっているはず。
SSL化
bitnamiの手順に沿ってるだけですが
今回は Let's Encrypt にて証明書を取得を go-acme/lego を利用して証明書の設定と更新をします。
ここからの作業はSSHにて作業が必要です。lightsailで用意されているコンソールかキーを使って手元のターミナルから作業
証明書の作成
cd /tmp
curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i -
tar xf lego_vX.Y.Z_linux_amd64.tar.gz
sudo mv lego /usr/local/bin/lego
sudo /opt/bitnami/ctlscript.sh stop
sudo lego --tls --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="www.DOMAIN" --path="/etc/lego" run
証明書の設定
sudo mv /opt/bitnami/apache2/conf/server.crt /opt/bitnami/apache2/conf/server.crt.old
sudo mv /opt/bitnami/apache2/conf/server.key /opt/bitnami/apache2/conf/server.key.old
sudo mv /opt/bitnami/apache2/conf/server.csr /opt/bitnami/apache2/conf/server.csr.old
sudo ln -sf /etc/lego/certificates/DOMAIN.key /opt/bitnami/apache2/conf/server.key
sudo ln -sf /etc/lego/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/server.crt
sudo chown root:root /opt/bitnami/apache2/conf/server*
sudo chmod 600 /opt/bitnami/apache2/conf/server*
sudo /opt/bitnami/ctlscript.sh start
証明書の更新設定
/etc/lego/renew-certificate.shを作成
#!/bin/bash
sudo /opt/bitnami/ctlscript.sh stop apache
sudo /usr/local/bin/lego --tls --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/etc/lego" renew
sudo /opt/bitnami/ctlscript.sh start apache
chmod +x /etc/lego/renew-certificate.sh
sudo crontab -e
0 0 1 * * /etc/lego/renew-certificate.sh 2> /dev/null
WordPressの設定
基本的な設定は割愛しますが、bitnami利用しているので右下のバッジが出ているを消します。
sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1
確認
ここまでやれば、最低限のアクセスは出来て見れる状態になるかと思います。
SSL化も無事に完了。
あとは、wp-adminディレクトリ変更したり、管理画面を別ホストにしたりとセキュリティー的な対策をとってあげるなどの細かい作業をこなせば完成となります。
所感
lightsailを使うことで、AWSのインスタンスやロードバランサー、ネットワーク周りなどの立ち上げが容易に出来る事が分かりました。
導入までの手順としてはマニュアルなども不要なくらい簡単で躓く事もなく
片手間の時間でここまでセットアップすることが出来ました。
ベンチャーとしてまだまだ専門部門などもない現状においては
AWSやGCPといったアーキテクチャの選択肢は心強い味方だなと感じました。
バイセルテクノロジーズでは何事にも挑戦するマインドを持ったエンジニアを募集しております。