初心者には難関である、AWSを使用したデプロイ手順を書いてみます
AWSはUIもよく変化するので、
現在のもの(2019/10)で書いています、
(AWSはUIが頻繁に変わるので、バージョンによっては少し表示違うかもしれません。。。)
※アカウントがない人はまず新規で申し込みしておいてください
今回内容
STEP1 ネットワーク環境設定
1.VPCの作成
2.サブネットの作成
3.インターネットゲートウェイの作成
4.ルートテーブルの作成
5.サブネットとの紐付け
6.セキュリティグループの作成
[STEP2 EC2の設定]
(https://qiita.com/tksh8/items/9a8e88a777a3a4ee7a09#step2-ec2%E3%81%AE%E8%A8%AD%E5%AE%9A)
1.EC2にてインスタンスの作成
2.Elastic IPの割り当て
3.インスタンスにSSHでログイン
次回内容
[STEP3以降
AWSでデプロイするまでの手順②サーバー(EC2インスタンス)環境設定]
(https://qiita.com/tksh8/items/3d2f2eeaf0e8de291b6d)
※ここでいうサーバーとはAWS EC2インスタンス (Amazon Linux) のこととする
STEP1 ネットワーク環境設定
1.VPCの作成
VPCとは(AWSクラウド上で論理的に分離されたプライベートな仮想ネットワークです)
https://aws.amazon.com/
Amazon Web Servicesでサインインします
ヘッダーにあるリージョンを東京に設定し、
「VPC」を検索し「VPC」にいきます

作成画面になるので
今回は下のように設定し、[作成]を押下します
・ネームタグ :testVPC
・IPv4 CIDRブロック:10.0.0.0/16
・IPv4 CIDRブロック:ブロックなし
・テナンシー :デフォルト

2.サブネットの作成
サブネットとは(最初にVPCによって作られているCIDRブロックを分割したネットワーク群のことです)
今回のサブネットは[RDS]を配置するためのサブネットを2つを作成する構成です。
サイドメニューのサブネットより[サブネットの作成]を押下します
作成画面になるので
下のように設定し、[作成]を押下します
・ネームタグ:testSubnet
・VPC:先ほど作成したものを選択
・アベイラビリティゾーン:ap-northeast-1a
・CIDRブロック:10.0.0.0/24
同様にもう一つ作成します
・ネームタグ:testSubnet2
・VPC:先ほど作成したものを選択
・アベイラビリティゾーン:ap-northeast-1c
・CIDRブロック:10.0.1.0/24

3.インターネットゲートウェイの作成
インターネットゲートウェイとは(インターネットと通信するために必要なゲートウェイです)
サイドメニューのインターネットゲートウェイより
[インターネットゲートウェイの作成]を押下します

作成画面になるので
下のように設定し、[作成]を押下します
名前タグ:testGateway

下のように設定し、[アタッチ]を押下する
VPC:先ほど作成したものを選択

4.ルートテーブルの作成
ルートテーブルとは(サブネット内にあるインスタンス等がどこに通信にいくかのルールを定めたものです)
サイドメニューのルートテーブルより[ルートテーブルの作成]を押下

作成画面になるので
下のように設定し、[作成]を押下します
名前タグ:testTable
VPC:先ほど作成したものを選択

作成したルートテーブルを選択した状態で、
下のタブ「ルート」>「ルートの編集」を押下、[ルートの追加]を押下

下のように設定し[ルールの保存]を押下します
送信先:0.0.0.0/0
ターゲット:Internet Gatewayを選択し、先ほど作成したゲートウェイIDを選択

5.サブネットとの紐付け
サブネットとは(最初にVPCによって作られているCIDRブロックを分割したネットワーク群のことです)
→左側の「サブネット」を選択します
→関連付けを変更するサブネットを選択します
→画面下のルートテーブルを選択します
→[ルートテーブルの関連付けの編集]を押下します

→先ほど作成したルートテーブルIDを選択します
→[保存]を押下します

6.セキュリティグループの作成
セキュリティグループとは(セキュリティのルールをまとめた仮想ファイアウォールです)
サイドメニューの
セキュリティ>セキュリティグループより>[セキュリティグループの作成]を押下します
下のように設定し、[作成]を押下する
セキュリティグループ名:testSecurityGroup
説明:そのセキュリティグループの説明
VPC:先ほど作成したものを選択

画面下のインバウンドのルールの[ルールの編集]を押下し、[ルールの追加]を押下、
下のように設定し、[ルールの保存]を押下する
タイプ:SSH
ソース:マイIP

STEP2 EC2の設定
AWSでDBを利用したい場合、
・EC2にてインスタンスの作成
・RDSを利用する
※ ただRDSを使用すると料金が掛かるので、
使用しない場合はサーバーに直接データベースを作成してください。
この2種類の方法があります。
今回は
EC2にてインスタンスの作成(サーバーに直接データベースを作成)
をメインに行なっていきます
1.EC2にてインスタンスの作成
インスタンスは起動のままだと
課金請求されるので、使わない場合は
停止状態にすることをお勧めします
AWS マネジメントコンソールにて"EC2"を検索しアクセスする

サイドメニューのインスタンスより[インスタンスの作成]を押下する

[次の手順: インスタンスの詳細の設定]をクリックする

下を設定し,[次の手順: ストレージの追加]を押下する
ネットワーク:先ほど作成したVPCを選択
サブネット:先ほど作成したサブネットを選択
自動割り当てパブリック IP:有効
他はデフォルトのまま

デフォルトのままで,[次の手順: タグの追加]を押下する
タグを追加する
キー:Name
値:testInstance
で[次の手順: セキュリティグループの設定]を押下する
セキュリティグループの設定する
セキュリティグループの割り当て:既存を
選択し、先ほど作成したセキュリティグループを選択し、
[確認と作成]を押下する
一覧画面になるので、
最後に[起動]を押下します
下ような表示になり、
新しいキーペアを作成を選択、
キーペア名を入力し、
[キーペアのダウンロード]を押下します
(一度作成されたファイルは再度ダウンロードができなくなるので注意)
ダウンロードしたら[インスタンスの作成]を押下します
しばらくするとインスタンスが作成されます!!
2.Elastic IPの割り当て
サイドメニューの
ネットワーク&セキュリティ>
Elastic IP[新しいアドレスの割り当て]を押下する

[閉じる]で戻り
インスタンスを先ほど作成したものを選択し、[関連付け]を押下する
※停止していたインスタンスにElastic IPを関連付けたままにしていると小額の料金が発生してしまうので、
インスタンスを停止している場合は解放することをお勧めします
Elastic IPをアタッチ(関連付け)しているインスタンスが起動している状態であれば、料金は発生しません。しかし、インスタンスが「停止」している状態や、Elastic IPを使っていない場合、料金が発生します。そのため、使わないElastic IPは削除しなければいけません。
Elastic IPがまだインスタンスにアタッチしている場合は、Elastic IPから該当のIPを選択し、「アクション」→「アドレスの関連付けの解除」をクリックします。確認画面が表示されますので、間違いなければ、「アドレスの関連付けの解除」をクリックし、EIPをデタッチします。
その後、再度該当のIPを選択し、「アクション」→「アドレスの解放」をクリックし、EIPを削除します。これで、料金が発生しなくなります。
AWS側での設定は一旦終了です
3.インスタンスにSSHでログイン
PCでターミナルを開きます
各種インストールする
python
$ brew install python
pip(pythonのパッケージ管理システム)
$ easy_install pip
awscli(awsをPCのコンソール上から扱うためのもの)
$ pip install awscli
できない場合はこちら
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-macos.html
ec2-userでインスタンスにログインする
AWSでは、
EC2インスタンスにログインできるユーザーとして、
デフォルトでec2-userという名のユーザーが用意されています
こちらではまずec2-userでログインします
ターミナルで以下を入れていきます
(※testKey.pemは、先ほどSTEP2でダウンロードしたキーです)
$ mv Downloads/testKey.pem .ssh/
(#作成した公開鍵をsshフォルダに移動)
$ cd .ssh/
(#ディレクトリをsshに移動)
$ chmod 600 testKey.pem
(#公開鍵に600番で定義されたアクセス権を付与する)
$ ssh -i testKey.pem ec2-user@(@以降のURLは、作成したEC2インスタンスと紐付けたElastic IPを使用してください。)
(#公開鍵を利用してec2-userとしてログイン)
例:
($ ssh -i testKey.pem ec2-user@13.112.140.56)
yes/noを聞かれるので
無事にログインできました!!!
※
ssh port 22 Operation timed out
エラーになる場合はこちら
https://qiita.com/yokoto/items/338bd80262d9eefb152e
ユーザー作成(EC2上での操作)
上記方法でインスタンスにログインしている状態で
[ec2-user|~]$ sudo adduser testuser
(#新規ユーザー名の登録)
[ec2-user|~]$ sudo passwd testuser
(#新規ユーザー名のパスワード登録)
パスワードを登録します
vimでユーザーに権限を追加する記述する
$ sudo visudo
vimモードになります
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
# %users localhost=/sbin/shutdown -h now
検索モードにし下の
"wheel"を探します
(キーボードで"/wheel"を入力し押下、"N"を押下すると次にいけます)
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
キーボードの「i」を押下し、編集モードで
# %wheel ALL=(ALL) NOPASSWD: ALL
のコメントアウトを外します
## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL
さらに
次に下のように作成したユーザーに権限を追加する記述
testuser ALL=(ALL) ALL
を追加します
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
testuser ALL=(ALL) ALL
キーボードの「esc」を押下します
「:wq」を入力しEnterで保存します
こちらでユーザーの切り替えを行ってください。
[ec2-user|~]$ sudo su - testuser
(#ユーザー名の切り替え)
[testuser@ ~]
無事に[ec2-user|がtestuser(作成したユーザー名)と切り替わればOKです。
exit
を二回いれて
で一度ログアウトする
追加ユーザ用キーペアを作成
こちらはローカルでの作業です
$ cd .ssh
[.ssh]$ ssh-keygen -t rsa
(#公開鍵を作成)
-----------------------------
Enter file in which to save the key ():
(#ここでファイルの名前を記述して、エンターを押す)
test_key_rsa
Enter passphrase (empty for no passphrase):
(#何もせずそのままエンター)
Enter same passphrase again:
(#何もせずそのままエンター)
-----------------------------
[.ssh]$ ls
#「test_key_rsa」と「test_key_rsa.pub」が生成されたことを確認
[.ssh]$ vi config
(#VIMを起動し、設定ファイルを編集する)
-----------------------------
キーボードの「i」を押下し、編集モードで
# 以下を追記
Host test_key_rsa
Hostname 前出のElastic IP (#自分の設定に合わせて)
Port 22
User testuser (#先ほどのユーザー名)
IdentityFile ~/.ssh/test_key_rsa (#秘密鍵の設定)
* ()部分は削除する。
-----------------------------
キーボードの「esc」を押下します
「:wq」で保存します
[.ssh]$ cat test_key_rsa.pub (#鍵の中身をターミナル上に出力)
★ ssh-rsa~~~~localまでをコピーしておく
サーバー側作業
続いてサーバーでの作業です
ec2-userでログインします
$ cd .ssh
$ ssh -i testKey.pem ec2-user@(@以降のURLは、作成したEC2インスタンスと紐付けたElastic IPを使用してください。)
[ec2-user|~]$ sudo su - testuser
[testuser@ ~]$ mkdir .ssh
[testuser@ ~]$ chmod 700 .ssh
[testuser@ ~]$ cd .ssh
[testuser@ |.ssh~]$ vi authorized_keys
(vimがオープンするので、「i」を押し、
先ほど ★ で、コピーしたssh-rsaをペーストする)
キーボードの「esc」を押下します
「:wq」で保存します
[testuser@ |.ssh~]$ chmod 600 authorized_keys
$ exit
もう一度
$ exit
ログアウト
[~]$ ssh test_key_rsa
ログインできれば、無事ユーザー設定は終了です。
なお、時間が経つとローカルからログインできなくなることがあるので、その場合は、
セキュリティグループ>インバウンド>編集で
SSHのソースで
マイIPを選択し[保存]すると繋がるようになります
続きはこちら
[AWSでデプロイするまでの手順②サーバー(EC2インスタンス)環境設定]
(https://qiita.com/tksh8/items/3d2f2eeaf0e8de291b6d)