AWS機能を網羅してみよう2.2 EC2編 〜EC2接続&アプリ構築

前回、EC2を起動させるところまで、実行しました。
今回は起動したサーバーに接続して、簡単なアプリケーションを動かしてみたいと思います。

(番外)EIP(Elastic IP Address)の取得と付与

本題に入る前に、前回盛込みきれなかった部分にEIPの話があります。
EIPはインターネット経由でアクセス可能な固定グローバルIPを取得し、インスタンスに付与することができます。
一旦、設定しておけば、削除するまでIPアドレスを保持できます。
Public IPアドレスの機能も似ていますが、これはインスタンスを停止、起動をすると変わる点で異なります。

接続

さぁ本題に入りましょう。前回の立ち上げたサーバーに接続してみましょう。
前提として、UNIX系のターミナル経由の場合です。
あなたのPCが、MacやLinuxの場合です。まずは、ターミナルを開いてください!

そしたら、早速sshで接続です。
$ssh -i first-keypair.pem ec2-user@あなたのEC2のIPアドレス

-iオプションは秘密鍵があるパスを指定してください。
今いるディレクトリが秘密鍵が存在しているディレクトリなら上記のままでOKです。

初めてのサーバーにアクセスするときは、以下聞かれると思いますので、yesを入力して、エンターです。
Are you sure you want to continue connecting (yes/no)?

すると、以下のようなWARNINGが出て、接続に失敗すると思います。
要は、秘密鍵に対するパーミッションがいけてませんということですね。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'first-keypair.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "first-keypair.pem": bad permissions
Permission denied (publickey).
$ls -ll

でパーミッションを見てみると、

-rw-r--r--@ 1 koichi staff 1696 5 7 17:51 first-keypair.pem

ファイルで、本人は読み書き、グループは読みのみ、他人は読みのみの設定です。
もっと、秘密にしなきゃなので以下を実行して、パーミッションを変更。

$chmod 600 first-keypair.pem

もう一度

$ls -ll

-rw——-@ 1 koichi staff 1696 5 7 17:51 first-keypair.pem

オッケー、秘密になりましたね!

では、気を取り直してもう一度

$ssh -i first-keypair.pem ec2-user@あなたのEC2のIPアドレス
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|

こんなのが出たら、接続成功です!!ヤター!

アプリケーション準備

■サーバーのアップデート
接続が完了すると、以下の文言も表示されていると思います。

Run "sudo yum update" to apply all updates.

言われるがままにRunしてみましょう。-y入れましょう

sudo yum -y update

最後に「完了しました!」が表示されたら、OKです。

■nginxのインストール
今回はWebサーバーとしてnginxを利用しましょう!
nginxはパッケージが用意されているので、簡単にインストール可能です。

$sudo yum -y install nginx
これまた最後に「完了しました!」が表示されたら、OKです。

Webサーバーを起動してみましょう。

$sudo service nginx start
Starting nginx: [ OK ]

ここまでできれば、該当のEIPを入力してみましょう。
http://XXXX.XXXX.XXXX.XXXX
「Welcome to nginx on the Amazon Linux AMI!」のページが表示されましたでしょうか。
もしWelcome To The Jungle になってたら、あなたは80年代好きです。

■MySQLのインストール
本日の折り返し地点でしょうか。
次にデータベースサーバーとしてMySQLをインストールします。
こちらも、nginx同様、パッケージがあるので簡単に準備できます。
$sudo yum -y install mysql-server
最後に「完了しました!」ができましたでしょうか。

mysqlを動かしておきましょう。

$sudo service mysq
ld start
Starting mysqld:

になればOKです!
一応接続しておきましょうか。

$mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.54 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> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)

バッチ、ぐー!
mysql> quit
で抜けときましょう!

アプリケーション作成

さぁメインのアプリケーションですが、サクッと作りたいのでRailsでいきましょう。
ビルドのためのパッケージをインストールします。

$sudo yum -y groupinstall 'Development Tools'

RubyとMySQLのライブラリもインストール

$sudo yum -y install ruby-devel mysql-devel

RailsではJavaScriptランタイムとしてNode.jsが必要になります。デフォルトではないため、EPELからインストールします。
$sudo yum -y –enablerepo=epel install nodejs

ここまででRailsをインストールする準備が整いましたので
Railsをインストールしましょう。
$gem install rails io-console –no-rdoc –no-ri

完了したら、Railsのバージョンを確認してみましょう。
$rails -v
-bash: rails: コマンドが見つかりません
あれ?よく見ると、
$gem install rails io-console –no-rdoc –no-ri
でエラーが発生していた。
ERROR: Error installing rails:activesupport requires Ruby version >= 2.2.2.

rubyのバージョンが古い模様
gitは既にインストールされているので、
rbenvをインストールして、
rubyのバージョンを上げましょう

$git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$mkdir -p ~/.rbenv/plugins
$git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$cd ~/.rbenv/plugins/ruby-build
$sudo ./install.sh
$echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$source ~/.bash_profile
$sudo yum install -y readline-devel
$rbenv install 2.3.4
$rbenv versions
$rbenv rehash
$rbenv global 2.3.4

思わぬ罠がありましたね、、

$ gem install rails
$rails -v
Rails 5.1.1
おー、最新が入りました。

プロジェクトを作成して、起動してみましょう。

$rails new first-app --database=mysql --skip git --skip-javascript --skip-spring --skip-test-unit
$cd first-app
$rake db:create
$rake db:migrate

確認

準備は整いました。
$rails server -b 0.0.0.0
で、railsを立ち上げて、
ブラウザからアクセスしてみましょう。
Rialsの初期画面が表示されれば成功です!

EC2を立ち上げて、アプリケーションを動かすところまでできました。
あとは、アプリケーションを作り込めばいいだけですね。

APN Consulting Partner
スーパーソフトウエアはAWSパートナーネットワーク(APN)のコンサルティングパートナーです。