ブログ移住計画その1~AWSでインストールの下準備~
前回の記事であげたように、この夏休み中にWordPressにブログを移行しようと考えています。
で、今日はその初回。
ただ単にWordPressをインストールするだけならどこかサーバを借りてデフォルトでインストールすれば問題ないのですが、
せっかくなので自称エンジニア(?)らしく技術的な部分も取り入れつつやってみます。
今回のWordPressインストールではAnsibleを使ってAWS(EC2)上に立てたいなと思います。
構成図はこんな感じ。
セキュリティにも考慮して、 踏み台経由でのSSHログインでWordPress用のDBにするMySQLサーバはPrivateのサブネット内に入れておきます。
AWS上でインストールの下準備
VPCの構築
まずは、VPCを作ります。
項目 | 値 |
---|---|
名前 | wordpress-vpc(仮名) |
IPv4 CIDR | 10.0.0.0/16 |
サブネットの構築
次にサブネットです。
今回は踏み台+wordpress用のサブネットとDB用のサブネットを作ります。
DMZサブネット
項目 | 値 |
---|---|
名前 | dmz(仮名) |
VPC | wordpress-vpc |
アベイラビリティゾーン | 自由に設定 |
IPv4 CIDR | 10.0.1.0/24 |
設定後、自動割当IP設定の変更で
- パブリックIPv4アドレスの自動割当を有効にする
にチェックをつけておく
Privateサブネット
項目 | 値 |
---|---|
名前 | private(仮名) |
VPC | wordpress-vpc |
アベイラビリティゾーン | 自由に設定 |
IPv4 CIDR | 10.0.2.0/24 |
インターネットゲートウェイの作成
次にDMZ内のサーバ(インスタンスに)インターネットから直接アクセスさせるためのゲートウェイを作成
NATゲートウェイの作成
DMZ内のインスタンスとインターネットは接続できるのですが、
DB側インスタンスにはインターネットと接続できません。
セキュリティ的にはOKなんですけど、
これだとMySQLをインストールしたいときとかメンテナンス、アップデートするときにちょっとやっかい。
なので、
インターネット→プライベートサブネットは✕
プライベートサブネット→インターネットは○
みたいなことをうまいことしてくれるNATゲートウェイを作っておきます。
(これ結構金かかるんですよね・・・なので必要なときだけたてて、いらないときは削除予定)
NATゲートウェイの作成から、
1. サブネットでDMZサブネットのIDを指定
2. ElasticIPを設定
ルートテーブルを設定
NATゲートウェイ・インターネットゲートウェイとサブネットを紐付けるために、 ルートテーブルを作成
ルートテーブルの作成から、名前とVPCを指定して2つ作成
DMZサブネット
- サブネットの関連付けでDMZサブネットの関連付けにチェック
- ルートを編集し、以下を追加
送信先 | ターゲット |
---|---|
0.0.0.0/0 | インターネットゲートウェイID |
Privateサブネット
- サブネットの関連付けでPrivateサブネットの関連付けにチェック
- ルートを編集し、以下を追加
送信先 | ターゲット |
---|---|
0.0.0.0/0 | NATゲートウェイのID |
SSHの鍵を作成
サーバを立てる下準備の最後として公開鍵作ります。
というのも、基本的にAWS上のサーバにアクセスするときは公開鍵使うんですけど、AWSのサーバ立てるときに自動で落ちてくる鍵はパスフレーズなしなんですよね。。。
そんな鍵を使いたくないので、自作で作ってインポートさせます。
ssh-keygen -t rsa -b 4096 -f <鍵名>.pem
本当は、
ssh-keygen -t ed25519 -f <鍵名>.pem
ed25519暗号で生成した鍵を使いたかったけど、なぜかインポート時にエラーが出た
暗号はED25519は意識高すぎ、高杉くんらしい。
暗号鍵参考URL
AWSのEC2からキーペアに移動して、
キーペアインポートから作ったキーをインポート
インスタンス作成
これで心おきなくインスタンスを作成 ひとまず3台立てる
- 共通項目
- OSはCentOS7
- SSH鍵はさっき作ったものを使用
- 踏み台サーバ
- Wordpressサーバ
- MySQLサーバ
- t2.small
- SSD30GB
- サブネットはPrivateサブネット
- セキュリティグループはDMZサブネットに対して公開
これでサーバ建てられた
SSHログインの確認
3台のサーバにSSHでログインできるか確認します。 ただ、踏み台以外のサーバは直接SSHできないので、踏み台経由でログインするように設定します。
Macの場合:
# ~/.ssh/configファイルの中に記述 Host wp-bustion HostName <踏み台インスタンスのパブリックIP> User centos Port 22 GatewayPorts yes IdentityFile ~/.ssh/<公開鍵のファイル> Host wordpress HostName <WordPressインスタンスののプライベートIP> User centos Port 22 GatewayPorts yes ProxyCommand ssh -CW %h:%p wp-bustion IdentityFile ~/.ssh/<公開鍵> Host wp-mysql HostName <MySQLインスタンスのプライベートIP> User centos Port 22 GatewayPorts yes ProxyCommand ssh -CW %h:%p wp-bustion IdentityFile ~/.ssh/<公開鍵ファイル>
ssh-addコマンドで毎回パスフレーズを入力しなくていいように設定
ssh-add ~/.ssh/<公開鍵ファイル>
実際にログインして確認
ssh wp-bustion ssh wordpress ssh wp-mysql
ログイン成功。
踏み台サーバのSSHポートを変更する
ここは賛否両論あるみたいなんですが、せっかくなのでポート変えておきます。
###踏み台インスタンスにログイン ### /etc/ssh/sshd_configを開いて以下を編集 ###Port22 Port <新しいポート番号>
このあと
systemctl restart sshd
で再起動して、一旦ログアウト。
ローカルで~/.ssh/configのところで、
Host wp-bustion HostName <踏み台インスタンスのパブリックIP> User centos Port <新しいポート番号> GatewayPorts yes IdentityFile ~/.ssh/<公開鍵のファイル>
と編集。
再度SSHログイン。
うまくいった。
これで下準備完了