レンタルサーバーに rbenv + ruby-build + ruby 2.0 環境を作った

先日作っていたスクレイピングのスクリプト(Ruby2.0製)が完成して、借りているレンタルサーバーで動かす環境を整えました。スクリプトの内容は、RSSを提供していないあるサイトをスクレイピングして解析後、更新情報のRSSを出力させるというものです。完全にプライベートな個人用です。

スポンサーリンク

VPSだと楽にできるんだろうでしょうけど、普通の共用レンサバなので root ないし yum install とか使えない。ユーザーのホームディレクトリ以下に色々インストールしたり設定しました。結構すんなり行けたのですけど、はまるポイントは各々レンタルサーバー事業者で異なるかと思います。

以下の作業は、レンタルサーバーに ssh ログインしてから作業しました。

$HOME(~)以下に色々インストールするための準備

まずは、ユーザーのホームディレクトリ($HOME/~)に以下のディレクトリを作成。

~/local
~/local/src
~/local/bin

~/.bashrc に $HOME/local/bin のパスを先頭に追加して反映しておきます。

git をインストール

続いて git を wget でダウンロードしてインストール。configure 時に –prefix=$HOME/local を忘れないようにする。

ここで、msgfmt コマンドが見つかりませんというエラー発生。msgfmt は gettext に含まれているそうなので gettext をインストールします。

gettext および msgfmt が入りました。

git のインストールをやり直します。

git が無事に入りました。

rbenv をインストール

~/local/rbenv に rbenv をインストールします。

続いて ruby-build を rbenv のプラグインとして入れます。

~/.bashrc に rbenv のパスを先頭に追加して、起動コマンド rbenv init – も記述します。

rbenv でインストール可能な ruby のバージョンを確認。

Ruby2.0 の最新版 Ruby 2.0.0-p247 をインストール。

2.0.0-p247 をデフォルトの Ruby に設定。

インストールした Ruby を確認。*印は現在使っている Ruby。

Ruby コマンドの場所。

Ruby のバージョン確認。

gem のバージョンやインストール済みの gem を確認。

bundler をインストール

スクレイピング+RSS生成スクリプトを設置

Ruby スクリプトは public_html 以外に配置しました。ちっちゃなコードなので FTP でアップロードしました。必要に応じて実行権も付与する。

— レンタルサーバーに設置した各ファイルの場所(仮定) —
スクリプトの場所 : ~/script/build-rss/
スクリプト本体  : ~/script/build-rss/build-rss.rb
Gemfile     : ~/script/build-rss/Gemfile
RSSを吐き出す場所: ~/public_html/rss.xml

~/script/build-rss/build-rss.rb を実行して、~/public_html/rss.xml に出力させます。そして、それをRSSリーダーに登録する。

初期状態ではスクリプト本体と Gemfile だけ設置。

bundle install

スクリプトを設置後、レンタルサーバーに ssh ログインした状態で bundle install します。

bundle install を行いますが、rbenv exec gem install bundler で bundler を入れたためか、rbenv exec bundle install としないと行けない模様。ちょっと面倒臭い・・・

Gemfile に書いていた nokogiri や builder が無事にインストールされました。

続いて、スクリプトを実行テスト。こちらも rbenv exec bundle exec ruby build-rss.rb とやらないといけないみたい。ちょい面倒だけど後で cron 化するのでまあいいや。

無事に動いて、RSSが出力されました。

シェルスクリプトを作成して cron で実行する設定

レンタルサーバーの GUI 管理パネルでの cron 設定で、プログラムの絶対パスを登録するようになっていたので、Rubyスクリプトを実行するシェルスクリプトを作成しました。

【2013/10/11 追記】
cron がエラーになるのでシェルスクリプトを修正しました。上記のように、~/.bashrc に書いたのと同様に、シェルスクリプトの中で PATH を設定し、rbenv 起動コマンドを記述しました。これで、無事に cron で実行できました。

作ったシェルスクリプトに実行権を付与して実行テストします。

正常に動作しました。最後にレンタルサーバーの GUI での cron 設定画面で、1日1回 cron 実行する設定を行い終了。

スポンサーリンク
私は以下の本で Ruby を覚えました。メタプログラミングRubyは入門を超える内容で難しめです。
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)
  • 4件のコメント
  • 匿名

    綺麗にまとめられていたので参考にさせていただきました。
    —————–
    $ vim ~/.bashrc
    export PATH=$HOME/local/bin:$PATH
    $ source ~/.bashrc
    —————–
    の箇所で
    source ~/.bashrc
    と入力すると
    export : Command not found.
    と表示されてしまいます。
    検索してもいまいち原因が理解できておりません。何か助言がいただけるとありがたいです。

    • taka

      匿名さん、コメント有難うございます。
      「export : Command not found.」
      ですが、文面通りに受け取ると export コマンドが見つからない、という意味のエラーメッセージです。
      コンソールから以下のコマンドで、export コマンドを確認してみられて下さい。

      $ type export

      これで…
      「export is a shell builtin」
      と表示されたら export コマンド自体は使えますので、~/.bashrc の書き方でどこかミスがあるのかもしれません。
      以上ですが、よろしくお願いいたします。

      • 匿名

        takaさん

        とても早い回答ありがとうございますm(_ _)m。
        どうやらbashになっていなかった(?)ようで、chshでbashに変更した所、お教えいただいた「$ type export」も「export is a shell builtin」と表示され、無事にできました。ありがとうございます。

      • taka

        匿名さん、無事に動くようになったようで良かったです^^
        動いたかどうか気になっていましたので、お返事があって嬉しいです。
        ご報告ありがとうございました!

Leave Your Message!