AWSでWEB/DBサーバをVPC内に構築する備忘録
概要
AWSでWEB/DBサーバを構築する。
以下の手順で構築を進める。
AWSにVPCを作成する
VPCにサブネットを作成する(public/private)
publicサブネット
NATゲートウェイ
privateサブネット内からは、HTTP通信ができないためNATゲートウェイが必要になる。
作成したサブネットは踏み台サーバとして使用される。
privateサブネット
- アベイラビリティゾーンAでサブネット(10.0.21.0/24)をVPCに作成する
- サブネットのルートテーブルを確認する
- localアクセス設定(10.0.0.0/16:local)
- localアクセス以外の設定(0.0.0.0/0:NATゲートウェイ)
- ルートテーブルのNameタグ追加(private-rtb)
publicサブネットにWEBサーバを作成する
# EC2-WEBへ接続 # IPv4は起動のたびに変わるため注意 $ ssh -i 秘密鍵 ec2-user@IPv4(EC2-WEB) # MacでPermission落ちする場合はPermissionを600に設定 $ chmod 600 秘密鍵 <以降、EC2-WEB> # サーバのホスト名設定 # HOSTNAME=aws-web-1a $ sudo vim /etc/sysconfig/network # 127.0.0.1の先頭にaws-web-1aを追記 $ sudo vim /etc/hosts # サーバ再起動 $ sudo reboot # 言語設定 # LANG=ja_JP.UTF-8 $ sudo vim /etc/sysconfig/i18n # タイムゾーン # Japanをlocaltimeとして配置 $ sudo cp /usr/share/zoneinfo/Japan /etc/localtime # タイムゾーン設定 # ZONE=“Asia/Tokyo” $ sudo vim /etc/sysconfig/clock # yum更新 $ sudo yum update -y # ミドルインストール(apache, mysql, git) $ sudo yum install -y httpd24 mysql git # apache設定 # ServerName aws-web-1a $ sudo vim /etc/httpd/conf/httpd.conf # Syntaxチェック $ sudo /etc/init.d/httpd configtest # サーバ起動時の自動起動設定(apache) $ sudo chkconfig httpd on # apache起動 # http://IPv4(EC2-WEB) $ sudo service httpd start
privateサブネットにDBサーバを作成する
# EC2-DB接続用の秘密鍵を踏み台EC2-WEBにSCPで渡す $ scp -i 秘密鍵 送る秘密鍵 ec2-user@IPv4(EC2-WEB):/home/ec2-user/ # EC2-WEBへ接続(踏み台) $ ssh -i 秘密鍵 ec2-user@IPv4(EC2-WEB) <以降、EC2-WEB> # EC2-DBへ接続 $ ssh -i 秘密鍵 ec2-user@privateIP(EC2-DB) <以降、EC2-DB> # EC2-WEBと同様の手順は説明割愛 # HOSTNAME=aws-db-1a $ sudo vim /etc/sysconfig/network # 127.0.0.1の先頭にaws-db-1aを追記 $ sudo vim /etc/hosts $ sudo reboot $ sudo vim /etc/sysconfig/i18n $ sudo cp /usr/share/zoneinfo/Japan /etc/localtime $ sudo vim /etc/sysconfig/clock $ sudo yum update -y # ミドルインストール(apache, mysql, git) $ sudo yum install -y mysql57-server # mysql設定 # サーバ起動時の自動起動設定(mysql) $ sudo chkconfig mysqld on # mysql起動 $ sudo service mysqld start # rootパスワード変更 $ mysqladmin -u root password # mysqlにrootログイン $ mysql -u root -p # EC2-WEBの接続設定(sql) $ grant all privileges on *.* to root@“%” identified by ‘rootパスワード’ with grant option; # EC2-DBログアウト $ exit <以降、EC2-WEB> # EC2-DBで起動しているmysqlにrootログイン $ mysql -h privateIP(EC2-DB) -u root -p
メモ
ネットワークACL
今回設定したのはセキュリティグループですが、
類似機能としてネットワークACLというものがあります。
NATゲートウェイは有料…
NATゲートウェイは有料なので削除しておく。
削除後privateサブネットはHTTP通信ができなくなるので注意が必要です。
参考
Udemy:手を動かしながら学ぶAWS基本から応用まで
SSH接続Permission落ちの対処法
*1:0.0.0.0/0=それ以外の通信全てという意味