サーバ環境で使うRVM
                  株式会社クルウィット
                  井澤 志充

                  Kanazawa.rb #8




                   「安心・安全・安定・信頼」できるインターネットサービスを

13年4月20日土曜日
RVMとは?
   •   RVM:  Ruby  Version  Manager
   •   公式サイト:  https://rvm.io/

   •   複数のバージョンのRubyを使い分けることが出来る仕組
       み
        •   複数のgemsetも使い分けれます




                             「安心・安全・安定・信頼」できるインターネットサービスを   2
13年4月20日土曜日
「安心・安全・安定・信頼」できるインターネットサービスを   3
13年4月20日土曜日
Jewelry Box
   •   RVM公式の  OSX版  RVM  GUIインタフェース
   •   公式サイト:  http://jewelrybox.unfiniti.com/

   •   RVM環境のステータス確認やメンテナスなどが簡単にで
       きる
   •   なんかいろいろできるらしいっすー




                           「安心・安全・安定・信頼」できるインターネットサービスを   4
13年4月20日土曜日
「安心・安全・安定・信頼」できるインターネットサービスを   5
13年4月20日土曜日
「安心・安全・安定・信頼」できるインターネットサービスを   6
13年4月20日土曜日
サーバ環境で使う利点
   •新しいバージョンのRuby/Gemへの容易易なアップグレード
   が可能
     • セキュリティフィックスなど



   •   複数のバージョンの共存
        • ⼀一つにサーバに複数のアプリ(サービス)




   →RVMを介することで、コードの改修なしに追従可能




                    「安心・安全・安定・信頼」できるインターネットサービスを   7
13年4月20日土曜日
RVMのインストール

   •   インストール方法は3種類
       •   Single-User install
            • ユーザ個人用に、~/.rvm へ installされる

       •   Multi-User install
            • システム全体用に、/usr/local/rvm へinstall される

       •   Mixed-User install
            • multi-Userでinstallされたものをベースに個人で使


              う部分を別途、追加/Overrideして使うモード




                           「安心・安全・安定・信頼」できるインターネットサービスを   8
13年4月20日土曜日
RVMのしくみ


   •   Shell-‐‑‒Scriptのかたまり
   •   環境変数・Shell変数を適宜設定して、使うRuby/Gemを
       変更更している
       •   $PATH,  $GEM_̲HOME,  $GEM_̲PATH,など

   •   上記の適宜設定の部分を手動でやっても使うことができ
       るということ




                            「安心・安全・安定・信頼」できるインターネットサービスを   9
13年4月20日土曜日
RVMの使い方


   •  使⽤用するrubyの切切り替え
       • rvm  use  <ruby-‐‑‒version>

   • エイリアスの設定

       • rvm  alias  create  <alias>  <origin>

    • gemsetの設定

       • rvm  gemset  create  <gemset>

       • rvm  use  <ruby>@<gemset>




                              「安心・安全・安定・信頼」できるインターネットサービスを   10
13年4月20日土曜日
サーバ環境で使う方法


   今回のポリシとして…

   •   サービスアプリごとに専⽤用のユーザを作成する
   •   アプリユーザのSingle-‐‑‒User  installで利利⽤用する
   •   全てのプロセスは、アプリユーザが実効ユーザであるよ
       うにする




                        「安心・安全・安定・信頼」できるインターネットサービスを   11
13年4月20日土曜日
rc.d/init.d Scriptの場合
 #!/usr/local/bin/bash
 start() {
          echo -n "Starting hogeapp: "
          su app_user -c "source /home/app_user/.rvm/scripts/rvm;
 cd /home/app_user/hogeapp; bin/unicorn_rails -c config/unicorn.rb -
 E production -D"
          return 0
 }
 stop() {
          kill -INT `cat ~app_user/hogeapp/tmp/pids/unicorn.pid`
          return 0
 }
 case "$1" in
   start)
          start
          ;;
   stop)
          stop
          ;;
 esac
                                「安心・安全・安定・信頼」できるインターネットサービスを           12
13年4月20日土曜日
milterとかexploder系

   •   magicで直接  Rubyを呼ぶものの場合:

 #!/home/app_user/.rvm/rubies/default/bin/ruby
 # -*- coding: utf-8 -*-
 require 'mail'
 require 'nokogiri'
                    :
                    :




                           「安心・安全・安定・信頼」できるインターネットサービスを   13
13年4月20日土曜日
ポイントは…


   •   コード側からは  rvm  の  “default”  を利利⽤用
        • 利利⽤用したい環境を”default”にしておくこと

        • rvmのdefaultを切切り替えるとそのまま追従する



   • rvmなので切切り替え前に実サーバ上で、前環境を壊さず
     にテスト可能
       • 失敗しても元に戻れる  →  重要

   • rvm  wrapper  コマンドは、バージョン@gemset直接指

     定しているのでいまいち

                       「安心・安全・安定・信頼」できるインターネットサービスを   14
13年4月20日土曜日
まとめ

   •   サーバ環境にもrvmを使うのおすすめ
       •   rubyのセキュリティfix対応などが楽にできるよ
       •   複数のアプリケーションごとに別バージョンのruby
           を共存できるよ




                      「安心・安全・安定・信頼」できるインターネットサービスを   15
13年4月20日土曜日
•   Thank  You!
        •   If  you  have  any  comments,
              •   please  send  to:
                   •   Mail:  izawa@izawa.org  /  izawa@clwit.co.jp
                   •   Twitter:  @Yukimitsu_̲Izawa




                                          「安心・安全・安定・信頼」できるインターネットサービスを   16
13年4月20日土曜日

RVM with Server Environment

  • 1.
    サーバ環境で使うRVM 株式会社クルウィット 井澤 志充 Kanazawa.rb #8 「安心・安全・安定・信頼」できるインターネットサービスを 13年4月20日土曜日
  • 2.
    RVMとは? • RVM:  Ruby  Version  Manager • 公式サイト:  https://rvm.io/ • 複数のバージョンのRubyを使い分けることが出来る仕組 み • 複数のgemsetも使い分けれます 「安心・安全・安定・信頼」できるインターネットサービスを 2 13年4月20日土曜日
  • 3.
  • 4.
    Jewelry Box • RVM公式の  OSX版  RVM  GUIインタフェース • 公式サイト:  http://jewelrybox.unfiniti.com/ • RVM環境のステータス確認やメンテナスなどが簡単にで きる • なんかいろいろできるらしいっすー 「安心・安全・安定・信頼」できるインターネットサービスを 4 13年4月20日土曜日
  • 5.
  • 6.
  • 7.
    サーバ環境で使う利点 •新しいバージョンのRuby/Gemへの容易易なアップグレード が可能 • セキュリティフィックスなど • 複数のバージョンの共存 • ⼀一つにサーバに複数のアプリ(サービス) →RVMを介することで、コードの改修なしに追従可能 「安心・安全・安定・信頼」できるインターネットサービスを 7 13年4月20日土曜日
  • 8.
    RVMのインストール • インストール方法は3種類 • Single-User install • ユーザ個人用に、~/.rvm へ installされる • Multi-User install • システム全体用に、/usr/local/rvm へinstall される • Mixed-User install • multi-Userでinstallされたものをベースに個人で使 う部分を別途、追加/Overrideして使うモード 「安心・安全・安定・信頼」できるインターネットサービスを 8 13年4月20日土曜日
  • 9.
    RVMのしくみ • Shell-‐‑‒Scriptのかたまり • 環境変数・Shell変数を適宜設定して、使うRuby/Gemを 変更更している • $PATH,  $GEM_̲HOME,  $GEM_̲PATH,など • 上記の適宜設定の部分を手動でやっても使うことができ るということ 「安心・安全・安定・信頼」できるインターネットサービスを 9 13年4月20日土曜日
  • 10.
    RVMの使い方 • 使⽤用するrubyの切切り替え • rvm  use  <ruby-‐‑‒version> • エイリアスの設定 • rvm  alias  create  <alias>  <origin> • gemsetの設定 • rvm  gemset  create  <gemset> • rvm  use  <ruby>@<gemset> 「安心・安全・安定・信頼」できるインターネットサービスを 10 13年4月20日土曜日
  • 11.
    サーバ環境で使う方法 今回のポリシとして… • サービスアプリごとに専⽤用のユーザを作成する • アプリユーザのSingle-‐‑‒User  installで利利⽤用する • 全てのプロセスは、アプリユーザが実効ユーザであるよ うにする 「安心・安全・安定・信頼」できるインターネットサービスを 11 13年4月20日土曜日
  • 12.
    rc.d/init.d Scriptの場合 #!/usr/local/bin/bash start() { echo -n "Starting hogeapp: " su app_user -c "source /home/app_user/.rvm/scripts/rvm; cd /home/app_user/hogeapp; bin/unicorn_rails -c config/unicorn.rb - E production -D" return 0 } stop() { kill -INT `cat ~app_user/hogeapp/tmp/pids/unicorn.pid` return 0 } case "$1" in start) start ;; stop) stop ;; esac 「安心・安全・安定・信頼」できるインターネットサービスを 12 13年4月20日土曜日
  • 13.
    milterとかexploder系 • magicで直接  Rubyを呼ぶものの場合: #!/home/app_user/.rvm/rubies/default/bin/ruby # -*- coding: utf-8 -*- require 'mail' require 'nokogiri' : : 「安心・安全・安定・信頼」できるインターネットサービスを 13 13年4月20日土曜日
  • 14.
    ポイントは… • コード側からは  rvm  の  “default”  を利利⽤用 • 利利⽤用したい環境を”default”にしておくこと • rvmのdefaultを切切り替えるとそのまま追従する • rvmなので切切り替え前に実サーバ上で、前環境を壊さず にテスト可能 • 失敗しても元に戻れる  →  重要 • rvm  wrapper  コマンドは、バージョン@gemset直接指 定しているのでいまいち 「安心・安全・安定・信頼」できるインターネットサービスを 14 13年4月20日土曜日
  • 15.
    まとめ • サーバ環境にもrvmを使うのおすすめ • rubyのセキュリティfix対応などが楽にできるよ • 複数のアプリケーションごとに別バージョンのruby を共存できるよ 「安心・安全・安定・信頼」できるインターネットサービスを 15 13年4月20日土曜日
  • 16.
    Thank  You! • If  you  have  any  comments, • please  send  to: • Mail:  izawa@izawa.org  /  izawa@clwit.co.jp • Twitter:  @Yukimitsu_̲Izawa 「安心・安全・安定・信頼」できるインターネットサービスを 16 13年4月20日土曜日