Amazon EC2を利用した
              サーバ構築セミナーの実践報告
                       それと...
              AWS SDK for Rubyを使用した
                 EC2インスタンス管理

                     @tamochia


                       K-Ruby
                    Sep. 27, 2012
                                      1
12年10月1日月曜日
はじめに


        • 「サーバ構築セミナー」とは...
         - 某大学の某情報系センターにて,毎年,教職員向
           けにLinuxのサーバ構築,いわゆるLAMP環境を構
                   築して,Web-DBコンテンツを実装しましょうと
                   いうセミナー
             -     2008年度から実施,今回5度目
             -     3時間/日 5日間連続 = 計15時間
             -     内容は...
                 ‣     Linuxセットアップ,Linux概要,Linuxシステム管理,Webサーバ構
                       築,MySQLサーバセットアップ,PHP概要,Web-DB連携など


 K-Ruby, 15th. September 27, 2012                                2
12年10月1日月曜日
サーバ構築プラットフォームをどうするか
            (悩みどころ)

        • 前年度までは,受講者ノートパソコン持参
         - HDDをフォーマットし,Linuxをインストール
           (2008∼2009年度)
             -     仮想環境(VirtualBox)をセットアップし,その
                   上の仮想マシンにLinuxをインストール
                   (2010∼2011年度)




                       ノートパソコンのスペックの差が,
                       セミナーの進行を左右してしまう (ToT)
 K-Ruby, 15th. September 27, 2012                3
12年10月1日月曜日
今年度(2012年度)は...

        • 「受講生持込みPC」→いりません(端末室利用)
        • Linuxサーバは,クラウド上で構築
         - Amazon Web Service,Amazon EC2を利用
         - 最もスペックの低いmicroインスタンスを利用
        • 受講者全員のLinuxサーバ構築環境が同一


                                    http://aws.amazon.com/jp

 K-Ruby, 15th. September 27, 2012                              4
12年10月1日月曜日
配布したパンフレット




                                       情報システムの構築・運用は,クラウド
                                      コンピューティングの市場拡大に伴い,
                                      ユーザ自身がサーバを所有し,システムを構
                                      築していくという形態から,パブリックに
                                      提供されるサーバシステムやサービスを利用
                                      する形態に変わっていっています.
                                       このセミナーでは,Amazon Web
                                      Service上のLinuxによるWebサイト環境の
                                      構築(Linuxのシステム管理,Web DB連
                                      携)等,パブリッククラウドの各種サービ
                                      スを利用した,新しいスタイルのシステム構
                                      築について,実操作を通して学習します.




 K-Ruby, 15th. September 27, 2012                                  5
12年10月1日月曜日
5日間の内容

        • 1日目
         - クラウドサービス(AWS)について,Linux概要
        • 2日目
         - Linuxシステム管理,セキュリティ対策
        • 3日目
         - Web-DB開発環境構築
        • 4日目
         - PHPとMySQLによる動的Webページの作成
        • 5日目
         - Git入門,phpfogの利用,SaaSについて
 K-Ruby, 15th. September 27, 2012            6
12年10月1日月曜日
クラウドサービスについて確認

       • クラウドの「構成要素」
        - SaaS (Software as a Service)
        - PaaS (Platform as a Service)
        - IaaS (Infrastructure as a Service)
              アプリケーション
                   ミドルウェア
                               OS   SaaS
                                           PaaS
             CPU/メモリ/HDD                          IaaS
                   ネットワーク
 K-Ruby, 15th. September 27, 2012                        7
12年10月1日月曜日
使用テキスト(資料)について

        • NPO法人LPI-Japanが公開しているテキスト(標準
          教科書)を利用(使用許諾確認済み)
             -     Linux標準教科書
             -     Linuxサーバー構築標準教科書
                 ‣     http://www.lpi.or.jp/linuxtext/server.shtml




 K-Ruby, 15th. September 27, 2012                                    8
12年10月1日月曜日
使用テキスト(資料)について

        • PukiWikiサイトを利用し,適時情報更新




 K-Ruby, 15th. September 27, 2012      9
12年10月1日月曜日
Linuxサーバ構築関連内容


        • SSHログイン
         - 公開鍵暗号方式について
        • viエディタの使い方
         - すべてコンソールからの操作に対応
        • Webサーバ構築
         - htaccessによるアクセス制御,ベーシック認証
        • ファイアウォール設定
         - iptablesによるポート制御
 K-Ruby, 15th. September 27, 2012             10
12年10月1日月曜日
PaaSについて

        • PaaSの例として「phpfog」を利用
         - PHP,MySQLの実行環境を無償で提供
         - メールアドレスでのサインアップで即利用可能




 K-Ruby, 15th. September 27, 2012              11
12年10月1日月曜日
PaaSについて
        • Gitについて
         - デプロイツールとして必須(herokuも同様)
         - リポジトリの管理についての最低限の知識
         - git add / commit / push / clone / pullなどは
            最低限知っておく必要がある




 K-Ruby, 15th. September 27, 2012                      12
12年10月1日月曜日
PaaSについて

        • ここで問題事が...
         - 最初のアプリのひな形作成で,10∼20分以上か
           かってしまう問題が発生
             -     シェアサーバを利用しているので,全員が一度に処
                   理しようとすると負荷がかかるのは当然かも.




                                      タダだから仕方がない... (ToT)


 K-Ruby, 15th. September 27, 2012                           13
12年10月1日月曜日
SaaSについて

        • Microsoft Office 365 を例に説明
         - 当大学でも今後使用する可能性があるかも
         - オフィスソフトが使える
         - メッセージアプリ「Lync」について実践




 K-Ruby, 15th. September 27, 2012              14
12年10月1日月曜日
セミナー風景
        •     実習室環境
             -     端末室のPC(Windows XP),7名受講(定員10名)




 K-Ruby, 15th. September 27, 2012                   15
12年10月1日月曜日
アンケート結果
        • 最終日にアンケートをとりました
         - 紙ではなくWebで!
         - Google DocsのFormを利用(ここでもSaaS)




                                       アンケート項目数は14個

 K-Ruby, 15th. September 27, 2012                     16
12年10月1日月曜日
アンケート結果(質問2,3)


   質問2. 講習期間(5日間                            質問3. 講習時間(3時間/
   という期間)について                               日という時間)について


                     17%
                                    33%
                                                   100%


                     50%


               長い                    やや長い      長い         やや長い
               ちょうど良い                やや短い      ちょうど良い     やや短い
               短い                              短い


 K-Ruby, 15th. September 27, 2012                                17
12年10月1日月曜日
アンケート結果(質問6,7)



   質問6. 事前知識について                          質問7. セミナーの内容レ
                                          ベルについて

                                    17%
                 33%
                                             50%      50%


                                    50%


                     ほとんど知らない                高い       やや高い
                     2割程度は知っていた              ちょうど良い   やや低い
                     半分は知っていた                低い
                     ほとんど知っていた
 K-Ruby, 15th. September 27, 2012                            18
12年10月1日月曜日
アンケート結果(質問9,13)



   質問9. 講習環境について                               質問13. セミナー全体に
                                               ついて

                     17%                            17%


                                    50%
                 33%
                                                           83%


            満足                やや満足        普通     満足       やや満足   普通
            やや不満              不満                 やや不満     不満



 K-Ruby, 15th. September 27, 2012                                     19
12年10月1日月曜日
アンケート結果(質問12)

    • 今後,どのような講座を希望しますか?
     - 新しいWeb技術やサーバ管理の知識についてのもので
       あれば何でも受けてみたいです.
         -     今回のセミナーでやったPHPをもう少しやってみたい
               です.
         -     情報処理技術者応用以上の午後試験に対応した講座.
         -     PHPの概要とMySQLデータベースとの連携の講座が
               途中混乱してしまったので,もう少し詳細にあればい
               いと思いました.
         -     もう少し優しくし,多くの人がきて勉強してほしいと
               思います.

 K-Ruby, 15th. September 27, 2012          20
12年10月1日月曜日
アンケート結果(質問14)

        • セミナーについてのご意見・ご感想をご自由にご記
          入ください
             -     講師の先生達の努力を感謝します.
             -     とても有意義な1週間でした.ありがとうござい
                   ました.ウインドウを複数開いて作業したので,
                   ディスプレイを2つ以上,もしくはもう少し(か
                   なり)大きめのディスプレイがあると良いと思い
                   ました.
             -     興味深く聞きました.ありがとうございました.
                   これから安全にクラウドを利用する方法を逐次セ
                   ミナーを開いてほしい.

 K-Ruby, 15th. September 27, 2012           21
12年10月1日月曜日
アンケート結果(質問14)

             -     わかりやすく教えていただけてよかったです.セミ
                   ナー後にまた復習して身につけたいと思います.あ
                   りがとうございました.
             -     各先生方,お疲れ様でした.のんびりメモをとる時
                   間がなく,進行が若干速かったような感じですが非
                   常に貴重な実習体験ができました.時間を見つけて
                   は復習して身につけていきたいと思います.
             -     とても勉強になりました.このセミナーでプログラ
                   ムに触れたことでもう少し積極的にプログラムを
                   触ってみようと思いました.コンピュータへの興味
                   も増えたので,またセミナーが開催された時には参
                   加します.5日間ありがとうございました.


 K-Ruby, 15th. September 27, 2012          22
12年10月1日月曜日
セミナーも無事に終わり...
        • インスタンスの使用状況を確認
         - AMS Management Console により,インスタ
           ンス利用の統計データが取得できる
                 ‣     クラウド利用の利点




 K-Ruby, 15th. September 27, 2012            23
12年10月1日月曜日
CPU Utilization (%)

                     1日目  2日目  3日目  4日目  5日目
                                                    最大値


                                                     4日目:
                                                     Web-DB連携,PHPプログラミング




                              平均値


 K-Ruby, 15th. September 27, 2012                                      24
12年10月1日月曜日
Network In (Bytes)
                        1日目  2日目  3日目  4日目  5日目

                                                   最大値
                                                   2日目: yum update
                                                   1日目: 不明
                                                   特定のユーザのよう




                              平均値


 K-Ruby, 15th. September 27, 2012                                    25
12年10月1日月曜日
Network Out (Bytes)
                       1日目  2日目  3日目  4日目  5日目

                                                   最大値


                                                    後半高い:
                                                    クライアントからのWebアクセス




                              平均値


 K-Ruby, 15th. September 27, 2012                                      26
12年10月1日月曜日
EC2インスタンス利用のまとめ

        • 一番低いスペック(最大2ECU,RAM: 約600MB)
          microインスタンスで,常時約10台稼動.

        • 一斉に「yum update」を行っても問題なし.
        • 5日間,コマンドの応答不能,コンソールの異常終了
          などのトラブルは一切なかった.

                       Amazonすごい! 受講生20名(20台)
                       くらいでも問題ないのでは!(゚ ゚)

                       しかし... 問題がただ1つ...
                       AWSはタダ(無償)ではないということ...
 K-Ruby, 15th. September 27, 2012               27
12年10月1日月曜日
EC2インスタンスの利用環境構築について


        • Amazon Web Serviceは,基本,有償である.
         - クレジットカード決済
         - カード番号を登録しなければサインアップ不可
        • 施設として某支払い代行業者と契約し,講習会用の
          経費で,本セミナー用アカウントを準備する予定
              だった.

        • しかし,間に合わず,私個人のアカウントを利用
        • さて,支払いどうする...
 K-Ruby, 15th. September 27, 2012         28
12年10月1日月曜日
まずはEC2インスタンスタイプの選択

       •     料金の一番安い(約0.03ドル/時)のmicroタイプに一決
                                                                                   Linux 料金
              タイプ                     CPU             メモリ          ストレージ
                                                                                   (1時間)
               small                  1ECU            1.7GB          160GB           $0.092
            medium                    2ECU           3.75GB          410GB           $0.184
               large                  2ECU            7.5GB          850GB           $0.368
          extra large                 4ECU            15GB          1,690GB          $0.736
              micro                 Max. 2ECU        613MB          8GB, EBS         $0.027
       ※1 microタイプ以外のストレージは,すべてインスタンスストレージ
       ※2 「ECU(EC2 Compute Unit)」は,Amazon独自のCPU計算性能単位「1ECU 1CPU」
          1ECUは,1つの1.0∼1.2GHz 2007 Opteron または 2007 Xeon プロセッサ相当,らしい.
                                                Amazon EC2 Pricing ¦ アマゾン ウェブ サービス(AWS 日本語)
                                                http://aws.amazon.com/jp/ec2/pricing/
                                                Amazon EC2 インスタンスタイプ ¦ アマゾン ウェブ サービス(AWS 日本語)
                                                http://aws.amazon.com/jp/ec2/instance-types/


 K-Ruby, 15th. September 27, 2012                                                               29
12年10月1日月曜日
利用費負担をどうするか

        • 幸い「無料使用範囲」適用中なう




                      AWSに新規登録した人対象に,1年間の無料利用枠を提供

                   Amazon EC2 microインスタンスを1年間無料で利用できる!

 K-Ruby, 15th. September 27, 2012                        30
12年10月1日月曜日
無料利用枠内容

        • EC2
         - microインスタンス(Linux,Windows Server)
           共に750時間分
             -     EBS 30GBまで,100万I/O,スナップショット用
                   2GBまで

        • S3
         - ストレージ5GBまで
         - 20,000get/2,000putリクエスト
        • データ転送
         - 全サービス,帯域幅「送信(アウト)」15GB
                                       http://aws.amazon.com/jp/free/
 K-Ruby, 15th. September 27, 2012                                       31
12年10月1日月曜日
料金計算

        • セミナー5日間 24時間 10名分=1,200時間
          →450時間 overで,$12.15(約970円)ナリ∼

        • 担当者の準備期間(事前5日間)を入れると,プラス
          5日間 24時間 3名分=360時間($9.72,約770
              円)で$21.87(約1,740円)ナリ∼

        •       セミナーに本当に必要な利用時間:610時間→OK!
             -     セミナー5日間 5時間 10名分=250時間
             -     準備期間5日間 24時間 3名分=360時間

        • 公開用サーバではないので,常時稼動必要なし
        • インスタンスを無駄に稼動させない工夫が必要
 K-Ruby, 15th. September 27, 2012           32
12年10月1日月曜日
EC2 Management Console
      • 通常,インスタンスの管理はコレなんですが...




 K-Ruby, 15th. September 27, 2012                33
12年10月1日月曜日
さてここで問題



        • インスタンスのStart/Stopは,基本「Amazon
          Management Console」で操作(ログイン必須)

        • しかし,私個人のアカウントパスワードを教えるの
          はちょっと...

        • インスタンスのStart/Stopを綿密にスケジューリン
          グするか...

        • 利用者(受講生,担当職員)が自由にインスタンス
          を制御できる機構があれば...


 K-Ruby, 15th. September 27, 2012             34
12年10月1日月曜日
さらに問題

        • 外から引けるホスト名(Public DNS Name)や,IP
          アドレス(Public IP Address)が,インスタンス再
              起動の度に変化してしまう.

        • その都度,利用者に最新の情報(ホスト名,IPアド
          レス)をお知らせしなければならない.


             コレよ∼(・ ・)




 K-Ruby, 15th. September 27, 2012            35
12年10月1日月曜日
結局,インスタンス管理どうする?

      • 利用者によるインスタンス制御,状態監視は必須
      • 利用者は...
       - 現在のインスタンスの状態を知る必要がある.
         (Running or Stopped)
           -     現在のインスタンスのホスト名,IPアドレスを知る
                 必要がある.
           -     無駄な課金を抑止するために,インスタンスを適時
                 Start/Stopする必要がある.


               独自のインスタンス管理ツールを作るしかない...

 K-Ruby, 15th. September 27, 2012           36
12年10月1日月曜日
AWS SDK for Ruby

        • 「AWS SDK」とは?
         - Amazonの各種サービスAPIを利用するための開発
           キット

        • それの,Ruby版公式SDK!(2011年07月公開)

    「gem install aws-sdk」
    でおk(・ ・)b



 参考資料
 AWS SDK for Ruby ¦ アマゾン ウェブ サービス(AWS日本語)
 http://aws.amazon.com/jp/sdkforruby/

 K-Ruby, 15th. September 27, 2012                      37
12年10月1日月曜日
AWS SDK for Rubyを使ってみる

        • とりあえず試しに使ってみる
         - Bundlerでaws-sdkを入れてみる
         - 適当なディレクトリを作って,Gemfileを作成
     $ mkdir awstest
     $ cd awstest/

     $ bundle init
     Writing new Gemfile to /Users/hoge/work/awstest/Gemfile


     Gemfile

       source "https://rubygems.org"

       gem "aws-sdk"

 K-Ruby, 15th. September 27, 2012                              38
12年10月1日月曜日
AWS SDK for Rubyを使ってみる

        • PATHを指定して,「bundle install」
        • irbでrequireできるか確認
     $ bundle install --path vendor/bundle
     Fetching gem metadata from https://rubygems.org/........
      :
     Post-install message from httparty:
     When you HTTParty, you must party hard!

     $ bundle exec irb

     irb(main)> require 'aws'
     => true



 K-Ruby, 15th. September 27, 2012                               39
12年10月1日月曜日
AWS SDK for Rubyを使ってみる

        • AWSへアクセスするために必要な「アクセスキー」
          と「シークレットアクセスキー」等を設定するコン
              フィグファイルを作成する.

   config.yml

     access_key_id: REPLACE_WITH_ACCESS_KEY_ID
     secret_access_key: REPLACE_WITH_SECRET_ACCESS_KEY
     simple_db_endpoint: ec2.ap-northeast-1.amazonaws.com


   irb(main)> conf_path = File.join(Dir::getwd, "config.yml")
   => "/Users/hoge/work/awstest/config.yml"

   irb(main)> AWS.config(YAML.load_file(conf_path))
   => <AWS::Core::Configuration>


 K-Ruby, 15th. September 27, 2012                               40
12年10月1日月曜日
AWS SDK for Rubyを使ってみる

        • EC2のインスタンス生成はコレだけ.
     irb(main)> ec2 = AWS::EC2.new
     => <AWS::EC2>

     irb(main)> ec2.instances.count
     => 2

     irb(main)> ins = ec2.instances["i-402ed043"]
     => <AWS::EC2::Instance id:i-402ed043>

     irb(main)> ins.exists?
     => true




 K-Ruby, 15th. September 27, 2012                   41
12年10月1日月曜日
AWS SDK for Rubyを使ってみる

        • EC2インスタンスのStart/Stopメソッド
     irb(main)> ins.status
     => :stopped

     irb(main)> ins.start
     => nil

     irb(main)> ins.status
     => :pending

     irb(main)> ins.status
     => :running




 K-Ruby, 15th. September 27, 2012         42
12年10月1日月曜日
AWS SDK for Rubyを使ってみる

        •     EC2インスタンスのホスト名/IPアドレスの取得メソッド
     irb(main)> ins.private_dns_name
     => "ip-10-123-34-56.ap-northeast-1.compute.internal"

     irb(main)> ins.public_dns_name
     => "ec2-175-XXX-YYY-ZZZ.ap-northeast-1.compute.amazonaws.com"

     irb(main)> ins.instance_type
     => "t1.micro"

     irb(main)> ins.private_ip_address
     => "10.123.34.56"

     irb(main)> ins.public_ip_address
     => "175.XXX.YYY.ZZZ"


 K-Ruby, 15th. September 27, 2012                                    43
12年10月1日月曜日
AWS SDK for Rubyを使ってみる

        • EC2のコンソール出力
     irb(main)> puts ins.console_output
     Xen Minimal OS!
       start_info: 0xac4000(VA)
         nr_pages: 0x26700
      :
      :
     Starting crond: [  OK  ]
     Starting atd: [  OK  ]
     Starting yum-updatesd: [  OK  ]
     Running cloud-init user-scripts (none found)[  OK  ]

     Amazon Linux AMI release 2012.03
     Kernel 3.2.21-1.32.6.amzn1.x86_64 on an x86_64

     ip-10-123-34-56 login:
     => nil
 K-Ruby, 15th. September 27, 2012                           44
12年10月1日月曜日
Railsでaws-sdkを利用する

        • 次に,Railsで「aws-sdk」を利用してみる
         - これもGemfileにaws-sdkを指定するだけ
         - 以下,Bundlerを使った基本的なRailsアプリ作成
     $ mkdir ccaws
     $ cd ccaws/

     $ bundle init
     Writing new Gemfile to /Users/hoge/work/ccaws/Gemfile


     Gemfile
      source "https://rubygems.org"
      gem "rails"
      gem "aws-sdk"

 K-Ruby, 15th. September 27, 2012                            45
12年10月1日月曜日
Railsでaws-sdkを利用する

        •     Bundlerを使った基本的なRailsアプリ作成手順
        •     コントローラは一つ「Main」のみとしますー
     $ bundle install --path vendor/bundle

     $ bundle exec rails new .

     $ bundle install

     $ bundle exec rails g controller Main index

                             Rails.root


                                          config             app
                                              routes.rb
                                                                  controllers
                                              ec2.yml                       main_controller.rb
                                                                  views
                                             initializers
                                                 aws.rb              main
                                                                            index.html.erb
 K-Ruby, 15th. September 27, 2012                                                                46
12年10月1日月曜日
ec2.yml
     instance_id:
         - "i-40xec201"
         - "i-46x20303"
         - "i-44x20305"
         - "i-4ax20307"                  ※ここに記載しているのは架空のIDです
         - "i-48x20309"
         - "i-4ex2030b"
         - "i-4cx2030d"
         - "i-52x2030f"
         - "i-50x20311"
         - "i-56x20315"


                     10個のインスタンスIDを記載したYAMLファイル
                     インスタンスを追加したり削除する場合はこのファイルを変更する

 aws.rb
     AWS.config ({
     	 :access_key_id => 'REPLACE_WITH_ACCESS_KEY_ID',
     	 :secret_access_key => 'REPLACE_WITH_SECRET_ACCESS_KEY',
     	 :ec2_endpoint => 'ec2.ap-northeast-1.amazonaws.com',
     })


                     AWS設定.AWSクラスを呼び出す前に必ず実行しておく必要あり
                     アクセスキー,シークレットキー,それとリージョンを指定する
 K-Ruby, 15th. September 27, 2012                                47
12年10月1日月曜日
main_controller.rb
     class MainController < ApplicationController
     	 INSTANCES_YAML_PATH = File.join(Rails.root, "config", "ec2.yml")
     	
     	 def index
     	 	 instances = []
     	 	 @infos = Hash.new{ |h, k| h[k] = {}}

     	    	   all = YAML.load_file(INSTANCES_YAML_PATH)
     	    	   @instance_ids = all["instance_id"]

     	    	   ec2 = AWS::EC2.new

     	    	   @instance_ids.each do |instance_id|
     	    	   	 instances << ec2.instances[instance_id]
     	    	   end
     	
     	    	 instances.each do |ins|
     	    	 	 @infos[ins.id]["tag"] = ins.tags["ccsemi"]
     	    	 	 @infos[ins.id]["status"] = ins.status
     	    	 	 @infos[ins.id]["public_dns_name"] = ins.public_dns_name
     	    	 	 @infos[ins.id]["public_ip_address"] = ins.public_ip_address
     	    	 end
     	    end




 K-Ruby, 15th. September 27, 2012                                           48
12年10月1日月曜日
main_controller.rb(続き)
     	    def stop_instance
     	    	 id = params[:id]
     	    	 ec2 = AWS::EC2.new

     	    	 instance = ec2.instances[id]
     	    	 if instance.status.to_s == "running"
     	    	 	 instance.stop
     	    	 end
     	    	 redirect_to main_path
     	    end
     	
     	    def start_instance
     	    	 id = params[:id]
     	    	 ec2 = AWS::EC2.new
     	    	 instance = ec2.instances[id]

     	 	 if instance.status.to_s == "stopped"
     	 	 	 instance.start
     	 	 end
     	 	 redirect_to main_path
     	 end
     end




 K-Ruby, 15th. September 27, 2012                  49
12年10月1日月曜日
<table border="1">
                                                                  index.html.erb
    <tr>
      <th>Instance ID</th>
      <th>Tag name</th>
      <th>Status</th>
      <th>Action</th>
      <th>Public DNS name</th>
      <th>Public IP address</th>
    </tr>
    <% @instance_ids.each do |id| %>
      <tr>
         <td><%= id %></td>
         <td><%= @infos[id]["tag"] %></td>
         <td><%= @infos[id]["status"] %></td>
         <td>
         <%=
            if @infos[id]["status"].to_s == "running" then
              button_to "Stop", stop_instance_path(:id => id)
            elsif @infos[id]["status"].to_s == "stopped" then
              button_to "Start", start_instance_path(:id => id)
            end
         %>
         </td>
         <td><%= @infos[id]["public_dns_name"] %></td>
         <td><%= @infos[id]["public_ip_address"] %></td>
      </tr>
    <% end %>
    </table>
 K-Ruby, 15th. September 27, 2012                                                  50
12年10月1日月曜日
routes.rb
     Ccaws::Application.routes.draw do
       root :to => 'main#index'
       match 'main' => 'main#index'
       match 'stop_instance/:id' => 'main#stop_instance', :as => 'stop_instance'
       match 'start_instance/:id' => 'main#start_instance', :as => 'start_instance'
     end


                       ルーティング設定.URLパターンは3つ


 Railsサーバの起動
     $ bundle exec rails s


                      Rails.root


                                    config             app
                                        routes.rb
                                                            controllers
                                        ec2.yml                       main_controller.rb
                                                            views
                                       initializers
                                           aws.rb              main
                                                                      index.html.erb


 K-Ruby, 15th. September 27, 2012                                                          51
12年10月1日月曜日
実行結果画面                                                公開サーバにデプロイ
                                                       ・Apache + Passenger 構成
                                [ Start ]: インスタンス起動    ・ベーシック認証
                                [ Stop ]: インスタンス停止




     インスタンスの状態
                                       ホスト(FQDN)とIPアドレスを表示(インスタンス稼動時のみ)
 K-Ruby, 15th. September 27, 2012                                               52
12年10月1日月曜日
おわりに


        • クラウドサービスを利用したセミナーということ
          で,色々と不安要素があったが無事に終わった.
             -     クラウドサービスがダウンしたら,セミナーはで
                   きない.→Amazon EC2 SLA(99.95%)

        • メリットはたくさん!
         - 受講者が同一の環境でセミナー構築実習できる
         - クライアントの環境はSSHクライアントのみ
         - スナップショットによるバックアップ/リストア
         - グローバルIPアドレスが利用できる
 K-Ruby, 15th. September 27, 2012                53
12年10月1日月曜日
おわりに



        • 来年度は,インフラ関係とプログラム開発と分けて
          も良いかも...
             -     「クラウド利用とLinux構築(3日間)」
             -     「Web-DB連携プログラミング(3日間)」
                   もちろんRuby on Railsでも

        • 本学の教職員だけでなく,一般向けにも実施しても
          良いかも...

        • 参加募集してみて,人が集まるかな...?
 K-Ruby, 15th. September 27, 2012           54
12年10月1日月曜日

Seminar report (Building a Linux server and AWS SDK for Ruby)

  • 1.
    Amazon EC2を利用した サーバ構築セミナーの実践報告 それと... AWS SDK for Rubyを使用した EC2インスタンス管理 @tamochia K-Ruby Sep. 27, 2012 1 12年10月1日月曜日
  • 2.
    はじめに • 「サーバ構築セミナー」とは... - 某大学の某情報系センターにて,毎年,教職員向 けにLinuxのサーバ構築,いわゆるLAMP環境を構 築して,Web-DBコンテンツを実装しましょうと いうセミナー - 2008年度から実施,今回5度目 - 3時間/日 5日間連続 = 計15時間 - 内容は... ‣ Linuxセットアップ,Linux概要,Linuxシステム管理,Webサーバ構 築,MySQLサーバセットアップ,PHP概要,Web-DB連携など K-Ruby, 15th. September 27, 2012 2 12年10月1日月曜日
  • 3.
    サーバ構築プラットフォームをどうするか (悩みどころ) • 前年度までは,受講者ノートパソコン持参 - HDDをフォーマットし,Linuxをインストール (2008∼2009年度) - 仮想環境(VirtualBox)をセットアップし,その 上の仮想マシンにLinuxをインストール (2010∼2011年度) ノートパソコンのスペックの差が, セミナーの進行を左右してしまう (ToT) K-Ruby, 15th. September 27, 2012 3 12年10月1日月曜日
  • 4.
    今年度(2012年度)は... • 「受講生持込みPC」→いりません(端末室利用) • Linuxサーバは,クラウド上で構築 - Amazon Web Service,Amazon EC2を利用 - 最もスペックの低いmicroインスタンスを利用 • 受講者全員のLinuxサーバ構築環境が同一 http://aws.amazon.com/jp K-Ruby, 15th. September 27, 2012 4 12年10月1日月曜日
  • 5.
    配布したパンフレット  情報システムの構築・運用は,クラウド コンピューティングの市場拡大に伴い, ユーザ自身がサーバを所有し,システムを構 築していくという形態から,パブリックに 提供されるサーバシステムやサービスを利用 する形態に変わっていっています.  このセミナーでは,Amazon Web Service上のLinuxによるWebサイト環境の 構築(Linuxのシステム管理,Web DB連 携)等,パブリッククラウドの各種サービ スを利用した,新しいスタイルのシステム構 築について,実操作を通して学習します. K-Ruby, 15th. September 27, 2012 5 12年10月1日月曜日
  • 6.
    5日間の内容 • 1日目 - クラウドサービス(AWS)について,Linux概要 • 2日目 - Linuxシステム管理,セキュリティ対策 • 3日目 - Web-DB開発環境構築 • 4日目 - PHPとMySQLによる動的Webページの作成 • 5日目 - Git入門,phpfogの利用,SaaSについて K-Ruby, 15th. September 27, 2012 6 12年10月1日月曜日
  • 7.
    クラウドサービスについて確認 • クラウドの「構成要素」 - SaaS (Software as a Service) - PaaS (Platform as a Service) - IaaS (Infrastructure as a Service) アプリケーション ミドルウェア OS SaaS PaaS CPU/メモリ/HDD IaaS ネットワーク K-Ruby, 15th. September 27, 2012 7 12年10月1日月曜日
  • 8.
    使用テキスト(資料)について • NPO法人LPI-Japanが公開しているテキスト(標準 教科書)を利用(使用許諾確認済み) - Linux標準教科書 - Linuxサーバー構築標準教科書 ‣ http://www.lpi.or.jp/linuxtext/server.shtml K-Ruby, 15th. September 27, 2012 8 12年10月1日月曜日
  • 9.
    使用テキスト(資料)について • PukiWikiサイトを利用し,適時情報更新 K-Ruby, 15th. September 27, 2012 9 12年10月1日月曜日
  • 10.
    Linuxサーバ構築関連内容 • SSHログイン - 公開鍵暗号方式について • viエディタの使い方 - すべてコンソールからの操作に対応 • Webサーバ構築 - htaccessによるアクセス制御,ベーシック認証 • ファイアウォール設定 - iptablesによるポート制御 K-Ruby, 15th. September 27, 2012 10 12年10月1日月曜日
  • 11.
    PaaSについて • PaaSの例として「phpfog」を利用 - PHP,MySQLの実行環境を無償で提供 - メールアドレスでのサインアップで即利用可能 K-Ruby, 15th. September 27, 2012 11 12年10月1日月曜日
  • 12.
    PaaSについて • Gitについて - デプロイツールとして必須(herokuも同様) - リポジトリの管理についての最低限の知識 - git add / commit / push / clone / pullなどは 最低限知っておく必要がある K-Ruby, 15th. September 27, 2012 12 12年10月1日月曜日
  • 13.
    PaaSについて • ここで問題事が... - 最初のアプリのひな形作成で,10∼20分以上か かってしまう問題が発生 - シェアサーバを利用しているので,全員が一度に処 理しようとすると負荷がかかるのは当然かも. タダだから仕方がない... (ToT) K-Ruby, 15th. September 27, 2012 13 12年10月1日月曜日
  • 14.
    SaaSについて • Microsoft Office 365 を例に説明 - 当大学でも今後使用する可能性があるかも - オフィスソフトが使える - メッセージアプリ「Lync」について実践 K-Ruby, 15th. September 27, 2012 14 12年10月1日月曜日
  • 15.
    セミナー風景 • 実習室環境 - 端末室のPC(Windows XP),7名受講(定員10名) K-Ruby, 15th. September 27, 2012 15 12年10月1日月曜日
  • 16.
    アンケート結果 • 最終日にアンケートをとりました - 紙ではなくWebで! - Google DocsのFormを利用(ここでもSaaS) アンケート項目数は14個 K-Ruby, 15th. September 27, 2012 16 12年10月1日月曜日
  • 17.
    アンケート結果(質問2,3) 質問2. 講習期間(5日間 質問3. 講習時間(3時間/ という期間)について 日という時間)について 17% 33% 100% 50% 長い やや長い 長い やや長い ちょうど良い やや短い ちょうど良い やや短い 短い 短い K-Ruby, 15th. September 27, 2012 17 12年10月1日月曜日
  • 18.
    アンケート結果(質問6,7) 質問6. 事前知識について 質問7. セミナーの内容レ ベルについて 17% 33% 50% 50% 50% ほとんど知らない 高い やや高い 2割程度は知っていた ちょうど良い やや低い 半分は知っていた 低い ほとんど知っていた K-Ruby, 15th. September 27, 2012 18 12年10月1日月曜日
  • 19.
    アンケート結果(質問9,13) 質問9. 講習環境について 質問13. セミナー全体に ついて 17% 17% 50% 33% 83% 満足 やや満足 普通 満足 やや満足 普通 やや不満 不満 やや不満 不満 K-Ruby, 15th. September 27, 2012 19 12年10月1日月曜日
  • 20.
    アンケート結果(質問12) • 今後,どのような講座を希望しますか? - 新しいWeb技術やサーバ管理の知識についてのもので あれば何でも受けてみたいです. - 今回のセミナーでやったPHPをもう少しやってみたい です. - 情報処理技術者応用以上の午後試験に対応した講座. - PHPの概要とMySQLデータベースとの連携の講座が 途中混乱してしまったので,もう少し詳細にあればい いと思いました. - もう少し優しくし,多くの人がきて勉強してほしいと 思います. K-Ruby, 15th. September 27, 2012 20 12年10月1日月曜日
  • 21.
    アンケート結果(質問14) • セミナーについてのご意見・ご感想をご自由にご記 入ください - 講師の先生達の努力を感謝します. - とても有意義な1週間でした.ありがとうござい ました.ウインドウを複数開いて作業したので, ディスプレイを2つ以上,もしくはもう少し(か なり)大きめのディスプレイがあると良いと思い ました. - 興味深く聞きました.ありがとうございました. これから安全にクラウドを利用する方法を逐次セ ミナーを開いてほしい. K-Ruby, 15th. September 27, 2012 21 12年10月1日月曜日
  • 22.
    アンケート結果(質問14) - わかりやすく教えていただけてよかったです.セミ ナー後にまた復習して身につけたいと思います.あ りがとうございました. - 各先生方,お疲れ様でした.のんびりメモをとる時 間がなく,進行が若干速かったような感じですが非 常に貴重な実習体験ができました.時間を見つけて は復習して身につけていきたいと思います. - とても勉強になりました.このセミナーでプログラ ムに触れたことでもう少し積極的にプログラムを 触ってみようと思いました.コンピュータへの興味 も増えたので,またセミナーが開催された時には参 加します.5日間ありがとうございました. K-Ruby, 15th. September 27, 2012 22 12年10月1日月曜日
  • 23.
    セミナーも無事に終わり... • インスタンスの使用状況を確認 - AMS Management Console により,インスタ ンス利用の統計データが取得できる ‣ クラウド利用の利点 K-Ruby, 15th. September 27, 2012 23 12年10月1日月曜日
  • 24.
    CPU Utilization (%) 1日目  2日目  3日目  4日目  5日目 最大値 4日目: Web-DB連携,PHPプログラミング 平均値 K-Ruby, 15th. September 27, 2012 24 12年10月1日月曜日
  • 25.
    Network In (Bytes) 1日目  2日目  3日目  4日目  5日目 最大値 2日目: yum update 1日目: 不明 特定のユーザのよう 平均値 K-Ruby, 15th. September 27, 2012 25 12年10月1日月曜日
  • 26.
    Network Out (Bytes) 1日目  2日目  3日目  4日目  5日目 最大値 後半高い: クライアントからのWebアクセス 平均値 K-Ruby, 15th. September 27, 2012 26 12年10月1日月曜日
  • 27.
    EC2インスタンス利用のまとめ • 一番低いスペック(最大2ECU,RAM: 約600MB) microインスタンスで,常時約10台稼動. • 一斉に「yum update」を行っても問題なし. • 5日間,コマンドの応答不能,コンソールの異常終了 などのトラブルは一切なかった. Amazonすごい! 受講生20名(20台) くらいでも問題ないのでは!(゚ ゚) しかし... 問題がただ1つ... AWSはタダ(無償)ではないということ... K-Ruby, 15th. September 27, 2012 27 12年10月1日月曜日
  • 28.
    EC2インスタンスの利用環境構築について • Amazon Web Serviceは,基本,有償である. - クレジットカード決済 - カード番号を登録しなければサインアップ不可 • 施設として某支払い代行業者と契約し,講習会用の 経費で,本セミナー用アカウントを準備する予定 だった. • しかし,間に合わず,私個人のアカウントを利用 • さて,支払いどうする... K-Ruby, 15th. September 27, 2012 28 12年10月1日月曜日
  • 29.
    まずはEC2インスタンスタイプの選択 • 料金の一番安い(約0.03ドル/時)のmicroタイプに一決 Linux 料金 タイプ CPU メモリ ストレージ (1時間) small 1ECU 1.7GB 160GB $0.092 medium 2ECU 3.75GB 410GB $0.184 large 2ECU 7.5GB 850GB $0.368 extra large 4ECU 15GB 1,690GB $0.736 micro Max. 2ECU 613MB 8GB, EBS $0.027 ※1 microタイプ以外のストレージは,すべてインスタンスストレージ ※2 「ECU(EC2 Compute Unit)」は,Amazon独自のCPU計算性能単位「1ECU 1CPU」    1ECUは,1つの1.0∼1.2GHz 2007 Opteron または 2007 Xeon プロセッサ相当,らしい. Amazon EC2 Pricing ¦ アマゾン ウェブ サービス(AWS 日本語) http://aws.amazon.com/jp/ec2/pricing/ Amazon EC2 インスタンスタイプ ¦ アマゾン ウェブ サービス(AWS 日本語) http://aws.amazon.com/jp/ec2/instance-types/ K-Ruby, 15th. September 27, 2012 29 12年10月1日月曜日
  • 30.
    利用費負担をどうするか • 幸い「無料使用範囲」適用中なう AWSに新規登録した人対象に,1年間の無料利用枠を提供 Amazon EC2 microインスタンスを1年間無料で利用できる! K-Ruby, 15th. September 27, 2012 30 12年10月1日月曜日
  • 31.
    無料利用枠内容 • EC2 - microインスタンス(Linux,Windows Server) 共に750時間分 - EBS 30GBまで,100万I/O,スナップショット用 2GBまで • S3 - ストレージ5GBまで - 20,000get/2,000putリクエスト • データ転送 - 全サービス,帯域幅「送信(アウト)」15GB http://aws.amazon.com/jp/free/ K-Ruby, 15th. September 27, 2012 31 12年10月1日月曜日
  • 32.
    料金計算 • セミナー5日間 24時間 10名分=1,200時間 →450時間 overで,$12.15(約970円)ナリ∼ • 担当者の準備期間(事前5日間)を入れると,プラス 5日間 24時間 3名分=360時間($9.72,約770 円)で$21.87(約1,740円)ナリ∼ • セミナーに本当に必要な利用時間:610時間→OK! - セミナー5日間 5時間 10名分=250時間 - 準備期間5日間 24時間 3名分=360時間 • 公開用サーバではないので,常時稼動必要なし • インスタンスを無駄に稼動させない工夫が必要 K-Ruby, 15th. September 27, 2012 32 12年10月1日月曜日
  • 33.
    EC2 Management Console • 通常,インスタンスの管理はコレなんですが... K-Ruby, 15th. September 27, 2012 33 12年10月1日月曜日
  • 34.
    さてここで問題 • インスタンスのStart/Stopは,基本「Amazon Management Console」で操作(ログイン必須) • しかし,私個人のアカウントパスワードを教えるの はちょっと... • インスタンスのStart/Stopを綿密にスケジューリン グするか... • 利用者(受講生,担当職員)が自由にインスタンス を制御できる機構があれば... K-Ruby, 15th. September 27, 2012 34 12年10月1日月曜日
  • 35.
    さらに問題 • 外から引けるホスト名(Public DNS Name)や,IP アドレス(Public IP Address)が,インスタンス再 起動の度に変化してしまう. • その都度,利用者に最新の情報(ホスト名,IPアド レス)をお知らせしなければならない. コレよ∼(・ ・) K-Ruby, 15th. September 27, 2012 35 12年10月1日月曜日
  • 36.
    結局,インスタンス管理どうする? • 利用者によるインスタンス制御,状態監視は必須 • 利用者は... - 現在のインスタンスの状態を知る必要がある. (Running or Stopped) - 現在のインスタンスのホスト名,IPアドレスを知る 必要がある. - 無駄な課金を抑止するために,インスタンスを適時 Start/Stopする必要がある. 独自のインスタンス管理ツールを作るしかない... K-Ruby, 15th. September 27, 2012 36 12年10月1日月曜日
  • 37.
    AWS SDK forRuby • 「AWS SDK」とは? - Amazonの各種サービスAPIを利用するための開発 キット • それの,Ruby版公式SDK!(2011年07月公開) 「gem install aws-sdk」 でおk(・ ・)b 参考資料 AWS SDK for Ruby ¦ アマゾン ウェブ サービス(AWS日本語) http://aws.amazon.com/jp/sdkforruby/ K-Ruby, 15th. September 27, 2012 37 12年10月1日月曜日
  • 38.
    AWS SDK forRubyを使ってみる • とりあえず試しに使ってみる - Bundlerでaws-sdkを入れてみる - 適当なディレクトリを作って,Gemfileを作成 $ mkdir awstest $ cd awstest/ $ bundle init Writing new Gemfile to /Users/hoge/work/awstest/Gemfile Gemfile source "https://rubygems.org" gem "aws-sdk" K-Ruby, 15th. September 27, 2012 38 12年10月1日月曜日
  • 39.
    AWS SDK forRubyを使ってみる • PATHを指定して,「bundle install」 • irbでrequireできるか確認 $ bundle install --path vendor/bundle Fetching gem metadata from https://rubygems.org/........ : Post-install message from httparty: When you HTTParty, you must party hard! $ bundle exec irb irb(main)> require 'aws' => true K-Ruby, 15th. September 27, 2012 39 12年10月1日月曜日
  • 40.
    AWS SDK forRubyを使ってみる • AWSへアクセスするために必要な「アクセスキー」 と「シークレットアクセスキー」等を設定するコン フィグファイルを作成する. config.yml access_key_id: REPLACE_WITH_ACCESS_KEY_ID secret_access_key: REPLACE_WITH_SECRET_ACCESS_KEY simple_db_endpoint: ec2.ap-northeast-1.amazonaws.com irb(main)> conf_path = File.join(Dir::getwd, "config.yml") => "/Users/hoge/work/awstest/config.yml" irb(main)> AWS.config(YAML.load_file(conf_path)) => <AWS::Core::Configuration> K-Ruby, 15th. September 27, 2012 40 12年10月1日月曜日
  • 41.
    AWS SDK forRubyを使ってみる • EC2のインスタンス生成はコレだけ. irb(main)> ec2 = AWS::EC2.new => <AWS::EC2> irb(main)> ec2.instances.count => 2 irb(main)> ins = ec2.instances["i-402ed043"] => <AWS::EC2::Instance id:i-402ed043> irb(main)> ins.exists? => true K-Ruby, 15th. September 27, 2012 41 12年10月1日月曜日
  • 42.
    AWS SDK forRubyを使ってみる • EC2インスタンスのStart/Stopメソッド irb(main)> ins.status => :stopped irb(main)> ins.start => nil irb(main)> ins.status => :pending irb(main)> ins.status => :running K-Ruby, 15th. September 27, 2012 42 12年10月1日月曜日
  • 43.
    AWS SDK forRubyを使ってみる • EC2インスタンスのホスト名/IPアドレスの取得メソッド irb(main)> ins.private_dns_name => "ip-10-123-34-56.ap-northeast-1.compute.internal" irb(main)> ins.public_dns_name => "ec2-175-XXX-YYY-ZZZ.ap-northeast-1.compute.amazonaws.com" irb(main)> ins.instance_type => "t1.micro" irb(main)> ins.private_ip_address => "10.123.34.56" irb(main)> ins.public_ip_address => "175.XXX.YYY.ZZZ" K-Ruby, 15th. September 27, 2012 43 12年10月1日月曜日
  • 44.
    AWS SDK forRubyを使ってみる • EC2のコンソール出力 irb(main)> puts ins.console_output Xen Minimal OS!   start_info: 0xac4000(VA)     nr_pages: 0x26700  :  : Starting crond: [  OK  ] Starting atd: [  OK  ] Starting yum-updatesd: [  OK  ] Running cloud-init user-scripts (none found)[  OK  ] Amazon Linux AMI release 2012.03 Kernel 3.2.21-1.32.6.amzn1.x86_64 on an x86_64 ip-10-123-34-56 login: => nil K-Ruby, 15th. September 27, 2012 44 12年10月1日月曜日
  • 45.
    Railsでaws-sdkを利用する • 次に,Railsで「aws-sdk」を利用してみる - これもGemfileにaws-sdkを指定するだけ - 以下,Bundlerを使った基本的なRailsアプリ作成 $ mkdir ccaws $ cd ccaws/ $ bundle init Writing new Gemfile to /Users/hoge/work/ccaws/Gemfile Gemfile source "https://rubygems.org" gem "rails" gem "aws-sdk" K-Ruby, 15th. September 27, 2012 45 12年10月1日月曜日
  • 46.
    Railsでaws-sdkを利用する • Bundlerを使った基本的なRailsアプリ作成手順 • コントローラは一つ「Main」のみとしますー $ bundle install --path vendor/bundle $ bundle exec rails new . $ bundle install $ bundle exec rails g controller Main index Rails.root config app routes.rb controllers ec2.yml main_controller.rb views initializers aws.rb main index.html.erb K-Ruby, 15th. September 27, 2012 46 12年10月1日月曜日
  • 47.
    ec2.yml instance_id: - "i-40xec201" - "i-46x20303" - "i-44x20305" - "i-4ax20307" ※ここに記載しているのは架空のIDです - "i-48x20309" - "i-4ex2030b" - "i-4cx2030d" - "i-52x2030f" - "i-50x20311" - "i-56x20315" 10個のインスタンスIDを記載したYAMLファイル インスタンスを追加したり削除する場合はこのファイルを変更する aws.rb AWS.config ({ :access_key_id => 'REPLACE_WITH_ACCESS_KEY_ID', :secret_access_key => 'REPLACE_WITH_SECRET_ACCESS_KEY', :ec2_endpoint => 'ec2.ap-northeast-1.amazonaws.com', }) AWS設定.AWSクラスを呼び出す前に必ず実行しておく必要あり アクセスキー,シークレットキー,それとリージョンを指定する K-Ruby, 15th. September 27, 2012 47 12年10月1日月曜日
  • 48.
    main_controller.rb class MainController < ApplicationController INSTANCES_YAML_PATH = File.join(Rails.root, "config", "ec2.yml") def index instances = [] @infos = Hash.new{ |h, k| h[k] = {}} all = YAML.load_file(INSTANCES_YAML_PATH) @instance_ids = all["instance_id"] ec2 = AWS::EC2.new @instance_ids.each do |instance_id| instances << ec2.instances[instance_id] end instances.each do |ins| @infos[ins.id]["tag"] = ins.tags["ccsemi"] @infos[ins.id]["status"] = ins.status @infos[ins.id]["public_dns_name"] = ins.public_dns_name @infos[ins.id]["public_ip_address"] = ins.public_ip_address end end K-Ruby, 15th. September 27, 2012 48 12年10月1日月曜日
  • 49.
    main_controller.rb(続き) def stop_instance id = params[:id] ec2 = AWS::EC2.new instance = ec2.instances[id] if instance.status.to_s == "running" instance.stop end redirect_to main_path end def start_instance id = params[:id] ec2 = AWS::EC2.new instance = ec2.instances[id] if instance.status.to_s == "stopped" instance.start end redirect_to main_path end end K-Ruby, 15th. September 27, 2012 49 12年10月1日月曜日
  • 50.
    <table border="1"> index.html.erb <tr> <th>Instance ID</th> <th>Tag name</th> <th>Status</th> <th>Action</th> <th>Public DNS name</th> <th>Public IP address</th> </tr> <% @instance_ids.each do |id| %> <tr> <td><%= id %></td> <td><%= @infos[id]["tag"] %></td> <td><%= @infos[id]["status"] %></td> <td> <%= if @infos[id]["status"].to_s == "running" then button_to "Stop", stop_instance_path(:id => id) elsif @infos[id]["status"].to_s == "stopped" then button_to "Start", start_instance_path(:id => id) end %> </td> <td><%= @infos[id]["public_dns_name"] %></td> <td><%= @infos[id]["public_ip_address"] %></td> </tr> <% end %> </table> K-Ruby, 15th. September 27, 2012 50 12年10月1日月曜日
  • 51.
    routes.rb Ccaws::Application.routes.draw do root :to => 'main#index' match 'main' => 'main#index' match 'stop_instance/:id' => 'main#stop_instance', :as => 'stop_instance' match 'start_instance/:id' => 'main#start_instance', :as => 'start_instance' end ルーティング設定.URLパターンは3つ Railsサーバの起動 $ bundle exec rails s Rails.root config app routes.rb controllers ec2.yml main_controller.rb views initializers aws.rb main index.html.erb K-Ruby, 15th. September 27, 2012 51 12年10月1日月曜日
  • 52.
    実行結果画面 公開サーバにデプロイ  ・Apache + Passenger 構成 [ Start ]: インスタンス起動  ・ベーシック認証 [ Stop ]: インスタンス停止 インスタンスの状態 ホスト(FQDN)とIPアドレスを表示(インスタンス稼動時のみ) K-Ruby, 15th. September 27, 2012 52 12年10月1日月曜日
  • 53.
    おわりに • クラウドサービスを利用したセミナーということ で,色々と不安要素があったが無事に終わった. - クラウドサービスがダウンしたら,セミナーはで きない.→Amazon EC2 SLA(99.95%) • メリットはたくさん! - 受講者が同一の環境でセミナー構築実習できる - クライアントの環境はSSHクライアントのみ - スナップショットによるバックアップ/リストア - グローバルIPアドレスが利用できる K-Ruby, 15th. September 27, 2012 53 12年10月1日月曜日
  • 54.
    おわりに • 来年度は,インフラ関係とプログラム開発と分けて も良いかも... - 「クラウド利用とLinux構築(3日間)」 - 「Web-DB連携プログラミング(3日間)」 もちろんRuby on Railsでも • 本学の教職員だけでなく,一般向けにも実施しても 良いかも... • 参加募集してみて,人が集まるかな...? K-Ruby, 15th. September 27, 2012 54 12年10月1日月曜日