この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 プランには以下が含まれています。
https://aws.amazon.com/jp/lightsail/pricing/?opdp1=pricing
静的 IP アドレス
DNS 管理
可用性の高い SSD ストレージ
料金比較
料金の比較をすると、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ヶ月 | 1,000円×12ヶ月 | ||
24ヶ月 | 950円×24ヶ月 | ||
36ヶ月 | 900円×36ヶ月 |
構築方法
ドメインを取得
Xdomainで新規ドメインを申請します。.xyzなどの安いドメインも存在しますが、.comドメインでも110円で取得できたのでこちらにしました。レジストラサービスは他に、お名前.comなど国内にいくつか存在します。DNSやレジストラサービスについては、こちらのサイトを参照ください。
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 | メモリ | SSD | Traffic |
nano_2_0 | $0.35 | 1vcpu | 0.5GB | 20GB | 1TB |
micro_2_0 | $5 | 1vcpu | 1GB | 40GB | 2TB |
small_2_0 | $10 | 1vcpu | 2GB | 60GB | 3TB |
medium_2_0 | $20 | 2vcpu | 4GB | 80GB | 4TB |
large_2_0 | $40 | 2vcpu | 8GB | 160GB | 5TB |
xlarge_2_0 | $80 | 4vcpu | 16GB | 320GB | 6TB |
2xlarge_2_0 | $160 | 8vcpu | 32GB | 640GB | 7TB |
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:
cat $HOME/bitnami_application_password
でデフォルトパスワードを確認する - ステップ4:m-totsu.comドメインを移管する
sudo /opt/bitnami/bncert-tool
でサーバー証明書を作成する- ステップ6:スナップショットを作成する
まとめ
以上で、terraformを使って、lightsail環境を構築することができました。月額費用は抑えられましたが、最小構成であるため、可用性は低い状態です。
AWSも年に数回障害が発生するので、いずれBlogサイトの高可用性を考える必要がありそうですが、まだまだ先な気がします。
また、構築後にWordPressの設定とAWS SESを使ったSMTP設定がまだ残っているので、こちらもまとめたいと思います。
コメント