バイセル Tech Blog

バイセル Tech Blogは株式会社BuySellTechnologiesのエンジニア達が知見・発見を共有する技術ブログです。

AWSのlightsailを使ってサクッとwordpressを導入する

バイセルテクノロジーズで開発部のマネージャーを努めている松榮です。

 

私がこの会社へJOINしたのは2019年1月なので、4ヶ月が経とうとしています。
この会社ではエンジニア組織が30名弱という事で開発・運用・企画・設計・アプリケーション開発・インフラ開発・その他色々を全て自分達で何でもやる必要があります。

何でもやるからこそ、幅広い知識やスキルを求められつつも、
スピード感と裁量を持って業務に取り組める環境があります。

 

今回はさくっとWordPressを立ち上げて欲しいという要望があったので、
AWSの Lightsailで構築しました。

f:id:bst-tech-admin:20190419102932p:plain

Amazon Lightsail

要件としては以下の通りでシンプル

  • WordPressの利用
  • 独自のドメインの利用
  • SSL化
  • サクッと構築

 インスタンスの作成

f:id:bst-tech:20190415101001p:plain

f:id:bst-tech:20190415101202p:plain

 

必要な情報を選択し、インスタンスの作成ボタンを押すとセットアップ

f:id:bst-tech:20190415101348p:plain

保留中から数分で

f:id:bst-tech:20190415101447p:plain

アクティブな状態に

接続する情報やIPアドレスは詳細画面に。

f:id:bst-tech:20190415102033p:plain

ドメインの適応

IPの固定化

ネットワークタブからIPアドレス欄に静的IPのボタンが表示されているので。
ボタンをおして、静的IPをインスタンスへアタッチします。

f:id:bst-tech:20190415102356p:plain

これで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利用しているので右下のバッジが出ているを消します。

f:id:bst-tech-admin:20190419103338p:plain

sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1 

 

確認

ここまでやれば、最低限のアクセスは出来て見れる状態になるかと思います。

SSL化も無事に完了。

f:id:bst-tech:20190415124521p:plain

あとは、wp-adminディレクトリ変更したり、管理画面を別ホストにしたりとセキュリティー的な対策をとってあげるなどの細かい作業をこなせば完成となります。

 

所感

lightsailを使うことで、AWSのインスタンスやロードバランサー、ネットワーク周りなどの立ち上げが容易に出来る事が分かりました。

導入までの手順としてはマニュアルなども不要なくらい簡単で躓く事もなく
片手間の時間でここまでセットアップすることが出来ました。


ベンチャーとしてまだまだ専門部門などもない現状においては
AWSやGCPといったアーキテクチャの選択肢は心強い味方だなと感じました。

 

バイセルテクノロジーズでは何事にも挑戦するマインドを持ったエンジニアを募集しております。