ec2にappacheを入れて起動しよう

まず、ec2にssl接続している状態。
httpdを入れる。

sudo yum -y install httpd

Dependency Installed:
apr.x86_64 0:1.5.2-5.13.amzn1
apr-util.x86_64 0:1.5.4-6.18.amzn1
apr-util-ldap.x86_64 0:1.5.4-6.18.amzn1
httpd-tools.x86_64 0:2.2.34-1.16.amzn1
Complete!

続いて、起動する。自動起動も一緒に設定する。

sudo service httpd start
sudo chkconfig httpd on

public ip addressでアクセス。
あれ?

セキュリティホールの設定が必要
consoleより、インスタンス→セキュリティグループ
http port80でルールを追加

再度ipアドレスでアクセスする。
ぎゃーーーーーーーーーーーーー

では、LAMP環境でも作っていきますかね。

mac consoleからEC2に接続しよう

ec2のkey pairパーミッションを変更する。
600 所有者:C

$ chmod 400 .pem

続いてssh接続でログインする。

$ ssh -i .pem <ユーザ名>@<パブリックIP or パブリックDNS名>

ログインできました。Gooooooooooooal

とりあえず sudo yum updateしておきます。
cloud-init.noarch 0:0.7.6-2.16.amzn1
dhclient.x86_64 12:4.1.1-53.P1.28.amzn1
dhcp-common.x86_64 12:4.1.1-53.P1.28.amzn1
gnupg2.x86_64 0:2.0.28-2.31.amzn1
ntp.x86_64 0:4.2.8p11-2.38.amzn1
ntpdate.x86_64 0:4.2.8p11-2.38.amzn1
openssh.x86_64 0:7.4p1-16.69.amzn1
openssh-clients.x86_64 0:7.4p1-16.69.amzn1
openssh-server.x86_64 0:7.4p1-16.69.amzn1
openssl.x86_64 1:1.0.2k-12.109.amzn1
rpcbind.x86_64 0:0.2.0-13.10.amzn1
wget.x86_64 0:1.18-4.29.amzn1

public ipにアクセスしてみましょう。
18.179.111.111

む? web serverが入っていないようです。appacheを入れます。

EC2を作成する

Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type
Amazon Linux AMI は、AWS がサポートする EBS-backed イメージ。デフォルトのイメージには、AWS コマンドラインツール、Python、Ruby、Perl、および Java が含まれます。レポジトリには、Docker、PHP、MySQL、PostgreSQL、およびその他のパッケージが含まれます。

VPCを作成する

AWSを構築していきます。まず、VPC

CIDR blockとは?
CIDRはClassless Inter-Domain Routingの略。
クラスを使わないIPアドレスの割り当てと、経路情報の集成を行う技術
クラスとは、IPアドレスのネットワーク部とホスト部を決められたブロック単位で区切る方法で、簡単ですがアドレス空間の利用に無駄が生じてしまう。これに対しクラスを使わないCIDRでは、任意のブロック単位で区切ることができるため、IPアドレス空間を効率的に利用することができる。

CIDRブロックをさらに小さく分割したCIDRブロックを、サブネットと呼ぶ。「10.0.0.0/16」で作成したCIDRブロックを「/24」の大きさで今度は256分割する、などが一般的。

「10.0.0.0/16」
10.0.0.0/8 = 10(ネットワーク部)+ 0.0.0(ホスト部)
大きいネットワークを作る場合(最大16,777,216個のアドレス配布が可能)
/16はネットワーク部の長さを示す値で、IPアドレスを2進数表記にした場合の先頭から桁数
ネットワーク部はこの数字の羅列の先頭から「16」桁まで
このようなプライベートIPを「クラスフル」と呼ぶ

AWS DBの起動

AWSのDBはRDSにありますので、そこからインスタンスを起動します。
%e7%84%a1%e9%a1%8c

Multi-AZ Deploymentの設定は通常「はい」にして、セキュリティを高めます。

DBインスタンスを作成したら、エンドポイントを確認します。
%e7%84%a1%e9%a1%8c

そして、mysqlに接続します。

[ec2-user@ip-172-31-21-202 ~]$ mysql -h mydbinstance.c7fqvxerxxxx.ap-northeast-1.rds.amazonaws.com -u                 name -p

AWS IMAGESの作成

IMAGESはインスタンスのテンプレートのようなものです。
%e7%84%a1%e9%a1%8c

イメージは、サーバーがシャットダウンされて、snapshots、AMIsが作られます。
インスタンスがシャットダウンされると、パブリックDNSが使用できなくなるので、Elastic IPsでIPアドレスを作成します。

そして、作成済みのインスタンスと関連付けを行います。
%e7%84%a1%e9%a1%8c

すると、インスタンスに割り当てられていることがわかります。
%e7%84%a1%e9%a1%8c

バックアップはElastic block storeのvolumesでクリップスナップショットをつくれば、その時点のバックアップをとります。
%e7%84%a1%e9%a1%8c

インスタンスのスペック変更は、一旦インスタンスを停止し、インスタンスタイプの変更で簡単に変更することができます。
%e7%84%a1%e9%a1%8c

t2.nanoでウェブサーバーを立ち上げよう

AWSに接続したら、サーバーにhttpd、php、mysqlをインストールします。

[ec2-user@ip-172-31-21-202 ~]$ sudo yum -y install httpd php mysql

インストールが完了したら、httpdの立ち上げを行います。

[ec2-user@ip-172-31-21-202 ~]$ sudo service httpd start
Starting httpd:                                            [  OK  ]
[ec2-user@ip-172-31-21-202 ~]$ sudo chkconfig httpd on

そうしたら、index.htmlファイルを作成し、ウェブサーバーが稼働しているか確認してみます。

[ec2-user@ip-172-31-21-202 ~]$ sudo vim /var/www/html/index.html

すると、反映されていることが確認できます。
%e7%84%a1%e9%a1%8c

t2.nano

AWSの設定ですが、アプリケーションの規模やアクセス数に応じてスペックを決めるのが通常ですが、昨今では最小構成から始めて、必要に応じてスペックを上げていくのがトレンドのようです。
AWSの費用は、さくらインターネット・GMOクラウド社等の他のクラウドサーバに比べて高いですが、オートスケール(Amazon EC2)・インターネットストレージ(Amazon S3)・メール配信(Amazon SES)・データベース(Amazon RDS)等のサービスが充実してます。

t2.nanoですと、東京リージョンで$0.01/1時間あたりくらいです。

インスタンスをつくっていきましょう。
セキュリティグループ(ファイヤーウォール)はデフォルトでSSHの設定がありますが、web用のHTTP、ポート80を追加しましょう。
aws

インスタンスのDescriptionでパブリックDNSがアクセスする際のアドレスになります。
%e7%84%a1%e9%a1%8c

なお、インスタンスを立ち上げると、ELASTIC BLOCK STOREのVolumuesが自動的に作成されます。

インスタンスへの接続は、ターミナルから行います。
%e7%84%a1%e9%a1%8c

秘密鍵のパーミッションを設定して、ssh接続すると、t2.nanoへの接続が確認できます。

[vagrant@localhost aws]$ chmod 600 test.pem
[vagrant@localhost aws]$ ssh -i "test.pem" ec2-user@ec2-54-199-174-180.ap-northeast-1.compute.amazonaws.com
The authenticity of host 'ec2-54-199-174-180.ap-northeast-1.compute.amazonaws.com (54.199.174.180)' can't be established.
RSA key fingerprint is 62:7f:e2:a3:17:ed:52:6b:c7:65:65:fc:05:38:e1:d3.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added 'ec2-54-199-174-180.ap-northeast-1.compute.amazonaws.com,54.199.174.180' (RSA) to the list of known hosts.

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2016.09-release-notes/