甘党エンジニアのkanjiです。
今回はAWSを用いたデプロイ・本番環境の構築の流れついて書きたい。
そもそもAWSとは何か?
AWSとはAmazon Web Servisesの略で、通販で有名なあの米Amazonが提供しているクラウドコンピューティングサービスの総称。
代表的なサービスにAmazon EC2(仮想サーバ)・Amazon S3(クラウドストレージ)・Amazon RDS(データベース)などがある。
Amazonといえば通販サービスが真っ先に頭に浮かぶが、こういった事業も展開している。
そんなAmazonが展開するサービス、さぞシンプルで扱いやすいだろうと高を括っていたら、そんな事はなかった。
簡単にデプロイしたいだけなのであれば、「Heroku」を使うことをオススメする。

AWSを用いての本番環境構築は(1)〜(3)まで、全3回に分けて書いた。
今回の(1)では「AWSのアカウント作成」から、「データベースの設定」までを記述する。
AWSアカウント作成
まずはAWSのサイトにアクセスし、アカウントを作成する。
トップページ右上の「まずは無料で始める」ページからアカウント情報(アドレス・住所・連絡先・クレジットカード情報など)を登録する。
登録が完了したら、作成したアカウントでサインインする。
AWSアカウントのリージョンを設定する。
リージョンとは、AWSの物理的なサーバの場所を指定するもの。
(最近大規模障害が起きて話題になったアレである。)
世界各地に10箇所以上存在する中の1つ、東京をトップページの右上から「アジアパシフィック(東京)」を選択すればOK。
EC2インスタンスの作成
この「仮想マシン」を「EC2インスタンス」と呼んでいる。
EC2インスタンスを作成する。
①トップページの「サービス」からEC2インスタンスをクリック
②AMI(サーバのデータをまるごと保存したデータ)を選択
③EC2インスタンスのタイプ選択(無料枠で利用できる「t2.micro」でOK)
④キーペアをダウンロードする
EC2インスタンスにログイン時必要となるので、必ずどこかに保存しておく。
※名前はご自身で決めて大丈夫。
キーペアダウンロード完了後、「インスタンスの作成」がクリックできるようになっている。
作成が出来た後はインスタンス一覧画面に戻り、作成した「インスタンスID」をコピーしておく(後ほど使用)。
Elastic IPの作成と紐付けを行う。
サイドバーの「Elastic IP」をクリック→「新しいアドレス」→「関連づける」をクリック
先程コピーした「インスタンスID」をインスタンスに貼り付ける(※プライベートIDは選択しない)
「関連付け」をクリック
一覧画面に戻り、「Elastic IP」が設定されていればOK。
ポートを開く
HTTPにつなげるための設定。
ポートの設定をするためには、「セキュリティグループ」のポートを設定する。
EC2インスタンス一覧画面から対象のインスタンスを選択し、「セキュリティグループ」のリンクをクリック
インスタンスの属するセキュリティグループの設定画面に移動するので、「インバウンド」タブの中の「編集」をクリック
「ルールの追加」をクリックし、タイプを「HTTP」、プロトコルを「TCP」、ポート範囲を「80」、送信元を「カスタム / 0.0.0.0, ::/0」に設定。
ec2-userでログインする
ターミナルで下記のコマンドを実行する。
$ cd ~ $ mv Downloads/ダウンロードした鍵の名前.pem .ssh/ $ cd .ssh/ $ chmod 600 ダウンロードした鍵の名前.pem $ ssh -i ダウンロードした鍵の名前.pem ec2-user@作成したEC2インスタンスと紐付けたElastic IP
#(例えばElastic IPが555.432.111なら、「shh -i ダウンロードした鍵の名前.pem ec2-user@555.432.111 )
#(ダウンロードした鍵を用いて、ec2-userとしてログイン)
下記の画面になればログイン成功
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
[ec2-user@ip-555-432-111 ~]$
#(ターミナルのコマンド待ちの際の左側の表示が、表記のように[ec2-user・・|となればOK)
EC2インスタンスの環境構築に必要なパッケージのインストール
yumコマンドを実行することでパッケージを一括アップデートできる。
ターミナルで以下のコマンドを順に実行する。
[ec2-user@ip-555-432-111 ~]$ sudo yum update
ターミナルで以下のコマンドを全て一度に打ち込む。
[ec2-user@ip-555-432-111 ~]$ sudo yum install \
git make gcc-c++ patch \
libyaml-devel libffi-devel libicu-devel \
zlib-devel readline-devel libxml2-devel libxslt-devel \
ImageMagick ImageMagick-devel \
全てインストールしますか?という旨の確認画面が出てきたら、
総ダウンロード容量: 120 M
Is this ok [y/d/N]:
「y」と入力してenterキーを押す。yはYESの略。
無事に入力画面に戻れば、インストール完了。
最後にopenssl-develというRubyのインストールに必要なパッケージも合わせてインストールしておく。
sudo yum install -y openssl-devel
ターミナルで以下のコマンドを実行し、Node.jsをインストールする。
[ec2-user@ip-555-432-111 ~]$ sudo curl -sL https://rpm.nodesource.com/setup_6.x | sudo bash -
[ec2-user@ip-555-432-111 ~]$ sudo yum install nodejs
ターミナルで以下のコマンドを実行し、rbenvとruby-buildをインストールする。
#rbenvのインストール
[ec2-user@ip-555-432-111 ~]$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
#パスを通す
[ec2-user@ip-555-432-111 ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
#rbenvを呼び出すための記述
[ec2-user@ip-555-432-111 ~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
#.bash_profileの読み込み
[ec2-user@ip-555-432-111 ~]$ source .bash_profile
#ruby-buildのインストール
[ec2-user@ip-555-432-111 ~]$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
#rehashを行う
[ec2-user@ip-555-432-111 ~]$ rbenv rehash
ターミナルで以下のコマンドを実行し、Rubyをインストールする。
[ec2-user@ip-555-432-111 ~]$ rbenv install 2.5.1
[ec2-user@ip-555-432-111 ~]$ rbenv global 2.5.1
[ec2-user@ip-555-432-111 ~]$ rbenv rehash #rehashを行う
[ec2-user@ip-555-432-111 ~]$ ruby -v # バージョンを確認
データベースのセットアップ
MySQLの設定と起動を行うことで、デプロイするアプリケーションのデータベースが適切に使えるようにしていく。
ターミナルで以下のコマンドを実行し、MySQLをインストールする。
[ec2-user@ip-555-432-111 ~]$ sudo yum install mysql56-server mysql56-devel mysql56
インストールが出来たら、ターミナルで以下のコマンドを実行する。
[ec2-user@ip-555-432-111 ~]$ sudo service mysqld start
[ec2-user@ip-555-432-111 ~]$ sudo service mysqld status
mysqld (pid 15692) is running…
「running」と表示されればMySQLの起動は成功している。
ターミナルで以下のコマンドを実行しパスワードを設定する。
[ec2-user@ip-555-432-111 ~]$ sudo /usr/libexec/mysql56/mysqladmin -u root password '設定したいパスワード'
以下のコマンドで設定したパスワードが使えるか確認する。
[ec2-user@ip-555-432-111 ~]$ mysql -u root -p
以下の表示が出ていれば、MySQLの設定は終了。
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.33 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
次回(2)では本番環境構築を終え、自分のアプリケーションがサーバーで公開できるようになる所まで書いている。
(1)が終わった方はお進み頂きたい。

コメントを残す