読者です 読者をやめる 読者になる 読者になる

Perlがくしゅう帳(Rubyも)

プログラミングの勉強会の参加記録や学んだことなど。 twitter ID : @tomcha_で活動しています。 最近は主にPerl関連の勉強会やコミュニティに参加しています。移転前のブログはこちら->http://ruby.doorblog.jp/

MyWebページをMojoliciousからSinatraに移行してみたメモ

Ruby

特に必要性があった訳では無いのですが、Ruby関連でドットインストールで学んだことを試したかったので、自分のwebページをPerl製wafのMojoliciousからRuby製のSinatraに変更した作業メモ。

 

使ったもの

Sinatra

  • Ruby製のwebアプリケーションフレームワーク。記述が物凄く簡素。ちょっとしたものなら、結構楽かも。

haml

  • Ruby製のhtmlテンプレートエンジン。かなり簡素化してhtmlを書くことができる。開始タグ~終了タグをインデントで表現、属性をハッシュの記法で表現している。

passenger

  • Sinatrahamlで書いたモノをよしなにwebサイトとして公開してくれるプログラム。

さくらvps(CentOS)

  • Mojolicious公開してたVPSサーバーをそのまま利用する。

 

 

変更した点

  • 以前はベタ打ちしていた5行ほどのテキストを表示していただけだったが、hamlを使ってhtmlを書いて、favicon・backgroundの画像・cssを使って、ちゃんとしたwebページの構成っぽくしてみた。

 

現在の稼動状態

  • さくらVPS上で、Perl製ウェブアプリフレームワークMojoliciousが稼働。hypnotadコマンドで常時稼働しており、ブラウザでドメイン名(www.tomcha.net)にアクセスするとページが表示される。

やった事

  • さくらvpsに、rbenvとruby-buildをインストール。インストールはgithubから。

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

 

 

$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

  • Rubyをrbenvを使ってインストール。

$ rbenv install -list

インストールできるバージョン一覧が表示されるので、使いたいバージョンを下記の様にインストール。

$ rbenv install 2.1.0-rc1

  • gem管理にBundlerを使用。

$ gem install bundler 

 

ローカル開発環境で作ったファイル

ディレクトリ構成

プロジェクト用ディレクトリ直下に作ったファイル

  • Gemfile

source 'https:/rubygems.org/'

gem 'sinatra'

gem 'sinatra-contrib'

gem 'haml'

gem 'passenger'

 

  • Myapp.rb (コードを書いたファイル。)
  • config.ru

require File.expand_path(File.dirname(__FILE__)) + '/Myapp'

run Sinatra::Application

 

hamlテンプレートは ./views に入れる

  • ./views/index.haml

静的ファイル(htmlで指定した読み込む為のファイル群)は ./public に入れる

  • faviconファイル
  • 背景画像用gifファイル
  • cssファイル

上記のファイル群をscpコマンドでさくらVPSの任意のフォルダへアップロード。

さくらVPSSSHで接続し、config.ruのあるディレクトリで以下のコマンドを実行して、webサーバーを起動。

passenger start -p ポート番号 ―daemon 

 

詰まった事

www.tomcha.netにアクセスした時、Sinatraの get '/' にアクセスされない。

=>Sinatraの設定とは別に、80番ポートへの参照をpassengerで指定したポートへ飛ばす設定が必要。Mojolicious環境の時もやってたけれど忘れていた。

 

 

/etc/sysconfig/iptables に書き込む設定

 -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 指定ポート

iptablesの再起動 /etc/init.d/iptables restart

Mojoliciousのpidをkill

 

無事、移行完了。