AWSのlightsailを使って月500円でWordPressサイトを構築する方法

AWS

このBlogサイトを立ち上げる手順をまとめてみました。
この記事の対象読者は次のとおりです。

  • 少しでもBlog運用費用を抑えたい
  • Blogサイトをちょっとだけ試したい
  • AWSのコード管理に技術的興味がある

AWS lightsailとXdomainを使うことにより、月500円でサイト立ち上げることができましたので、その構築方法について記載したいと思います。

スポンサーリンク

主な構成

本Blogサイトの構成は以下のとおりです。

  • Xdomain 初回登録料 110円
  • AWS lightsail WordPressパッケージ 月$3.5
    • 512 MB メモリ
    • 1 コアプロセッサ
    • 20 GB SSD ディスク
    • 1 TB 転送
    • 静的グローバルIPアドレス
    • DNS管理

すべての Lightsail プランには以下が含まれています。
静的 IP アドレス
DNS 管理
可用性の高い SSD ストレージ

https://aws.amazon.com/jp/lightsail/pricing/?opdp1=pricing

料金比較

料金の比較をすると、XServerのX10プランでは、年間契約にすれば、月額1,000円ですので半額で構築できたことになります。ただ、後述の通り面倒くさいので、技術的興味がない人には、おすすめできないと思います。

契約期間初期費用ご利用料金合計
3ヶ月3,000円1,200円×3ヶ月6,600円(税込7,260円)
6ヶ月3,000円1,100円×6ヶ月9,600円(税込10,560円)
12ヶ月3,000円0円1,000円×12ヶ月15,000円12,000円(税込13,200円)
24ヶ月3,000円0円950円×24ヶ月25,800円22,800円(税込25,080円)
36ヶ月3,000円0円900円×36ヶ月35,400円32,400円(税込35,640円)
https://www.xserver.ne.jp/price/price_x10.php

構築方法

ドメインを取得

Xdomainで新規ドメインを申請します。.xyzなどの安いドメインも存在しますが、.comドメインでも110円で取得できたのでこちらにしました。レジストラサービスは他に、お名前.comなど国内にいくつか存在します。DNSやレジストラサービスについては、こちらのサイトを参照ください。

Xdomainで、取得したいドメイン名を入力すると取得料金と取得可能かどうかを検索できます。ドメインによって値段はまちまちです。

Xdomain取得
ドメイン価格一覧

好きなドメインを選んで契約します。初回110円のドメインの2年目更新料は、1280円かかります。

AWSアカウントを登録

AWSアカウントを作成します。詳しくはこちらのサイトを参照ください。1年間は無料期間がありますが、クレジットカードは必須になります。

ルートアカウントのまま運用することは推奨されてませんので、こちらのサイトを参考にIAMユーザーを作成します。また、こちらを参考にIAMユーザーアカウントとシークレットキーを取得してください。

次のコマンドでaws cliをインストールします。

$ brew install awscli # Macの場合

取得したシークレットキーは、aws configureで設定します。

$ aws configure
AWS Access Key ID [ ]: (Access Keyを入力) 
AWS Secret Access Key [ ]: (Secret Access Keyを入力)
Default region name [ ]: ap-northeast-1
Default output format [ ]: json

terraform環境構築

terraformとは、コードで様々なクラウドサービスを管理するツールです。

Terraformは、IaCを実現するツールです。Terraformはオープンソースであり、HashiCorpによってGo言語で開発されました。具体的にはTerraformではインフラの構成をコードで宣言します。構造化された構成ファイルでは、手動で操作することなくインフラ構成を自動で管理できます。インフラの初期プロビジョニング、更新、破棄、いずれもTerraformではコードにより宣言し、実行します。

https://www.lac.co.jp/lacwatch/service/20200903_002270.html

MacならHomebrewでのインストールがおすすめです。

$ brew install terraform

Windowsでは、WSL2(ubuntu)のaptパッケージで導入することのがおすすめです。WSL2の構築についてはこちらの記事を参考ください。

$ apt install terraform

認証キーの作成とtfファイルの実装

次のコマンドでSSH接続のための鍵ファイルを生成します。

$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/totsu00/.ssh/id_rsa): ./id_rsa #カレントディレクトに鍵を生成
Enter passphrase (empty for no passphrase):  #そのままEnter
Enter same passphrase again: 
Your identification has been saved in ./id_rsa.
Your public key has been saved in ./id_rsa.pub

次に、terraformの管理ファイルをおく、S3バケットを作成します。–bucketでバケット名を設定するので、読み替えてください。

$ aws s3api create-bucket --bucket m-totsu-terraform --create-bucket-configuration LocationConstraint="ap-northeast-1" --region ap-northeast-1

$ aws s3api put-bucket-versioning --bucket m-totsu-terraform --versioning-configuration Status=Enabled

$ aws s3api put-bucket-encryption --bucket m-totsu-terraform \
      --server-side-encryption-configuration '{"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]}'

id_rsaファイルと同一ディレクトリに lightsail.tfファイルを作成します。

$ vim lightsail.tf

variable "ls_name" {}

terraform {
  required_version = "0.14.3" # インストールしたバージョンに合わせる
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "3.22.0"
    }
  }

  backend "s3" {
    bucket = "m-totsu-terraform"
    key    = "terraform.tfstate1"
    region = "ap-northeast-1"
  }
}

provider "aws" {
  region = "ap-northeast-1"
}
provider "aws" {
  region = "us-east-1"
  alias  = "useast1"
}

# ドメイン設定
resource "aws_lightsail_domain" "domain" {
  domain_name = "${var.ls_name}.com"
  provider    = aws.useast1
}
# SSHアクセスキーの設定
resource "aws_lightsail_key_pair" "key_pair" {
  name       = "key_pair_${var.ls_name}"
  public_key = file("./id_rsa.pub")
}
# 静的PublicIPアドレスの作成
resource "aws_lightsail_static_ip" "static_ip" {
  name = "static_ip_${var.ls_name}"
}
# wordpressサーバー構築
resource "aws_lightsail_instance" "instance" {
  name              = var.ls_name
  availability_zone = "ap-northeast-1a"
  blueprint_id      = "wordpress"
  bundle_id         = "nano_2_0"
  key_pair_name     = aws_lightsail_key_pair.key_pair.name
}
# 静的PublicIPアドレスを設定
resource "aws_lightsail_static_ip_attachment" "static_ip_attachment" {
  static_ip_name = aws_lightsail_static_ip.static_ip.name
  instance_name  = aws_lightsail_instance.instance.name
  depends_on     = [aws_lightsail_instance.instance]
}
# 静的PublicIPアドレスを出力
output "static_ip" { value = aws_lightsail_static_ip.static_ip.ip_address }

bundle_id では、lightsailで構築するサーバーのスペックが決められます。詳細は以下のとおりです。ここでは、最小スペックのnano_2_0を設定しました。

bundle_id金額CPUメモリSSDTraffic
nano_2_0$0.351vcpu0.5GB20GB1TB
micro_2_0$51vcpu1GB40GB2TB
small_2_0$101vcpu2GB60GB3TB
medium_2_0$202vcpu4GB80GB4TB
large_2_0$402vcpu8GB160GB5TB
xlarge_2_0$804vcpu16GB320GB6TB
2xlarge_2_0$1608vcpu32GB640GB7TB

lightsail構築

次のコマンドで、lightsailの構築が可能です。

$ terraform init
$ terraform apply -var "ls_name=m-totsu" # 当サイトの場合 パラメータは各ドメインに応じて変更ください。

これで、lightsailサイトにWordPressサイトが構築できました。最後に出力されたIPアドレスにSSH接続することを確認します。

$ ssh -i ./id_rsa bitnami@{static_ipで表示されたIPアドレス}

lightsail設定

こちらのサイトを参考に、初期設定を完了します。このサイトで行った作業は次のとおりです。

  1. ステップ1:cat $HOME/bitnami_application_passwordでデフォルトパスワードを確認する
  2. ステップ4:m-totsu.comドメインを移管する
  3. sudo /opt/bitnami/bncert-toolでサーバー証明書を作成する
  4. ステップ6:スナップショットを作成する

まとめ

以上で、terraformを使って、lightsail環境を構築することができました。月額費用は抑えられましたが、最小構成であるため、可用性は低い状態です。
AWSも年に数回障害が発生するので、いずれBlogサイトの高可用性を考える必要がありそうですが、まだまだ先な気がします。

また、構築後にWordPressの設定とAWS SESを使ったSMTP設定がまだ残っているので、こちらもまとめたいと思います。

参考書籍


参考サイト

とつ

某SIer企業勤務。サーバーインフラ系でキャリアを伸ばしつつ、2020年からAWS運用にシフト。
老け顔から、「とっつあん」とあだ名で呼ばれ、それが「とつ」といつしか略されるようになったのがハンドルネームの由来。
「リベラルアーツ大学」をきっかけに、稼ぐ力を養いたいとBlogサイト運営を開始。Blogの成長とともにAWSのスキルアップももくろむ。
家族は妻と4歳長男と0歳次男。
次男の産後クライシスを乗り越えるための妻への対策と予防を模索する。

とつをフォローする
AWSIT技術
スポンサーリンク
とつをフォローする
とつブログ

コメント

タイトルとURLをコピーしました