MyWebページをMojoliciousからSinatraに移行してみたメモ
特に必要性があった訳では無いのですが、Ruby関連でドットインストールで学んだことを試したかったので、自分のwebページをPerl製wafのMojoliciousからRuby製のSinatraに変更した作業メモ。
使ったもの
- Ruby製のhtmlテンプレートエンジン。かなり簡素化してhtmlを書くことができる。開始タグ~終了タグをインデントで表現、属性をハッシュの記法で表現している。
passenger
- Mojolicious公開してたVPSサーバーをそのまま利用する。
変更した点
- 以前はベタ打ちしていた5行ほどのテキストを表示していただけだったが、hamlを使ってhtmlを書いて、favicon・backgroundの画像・cssを使って、ちゃんとしたwebページの構成っぽくしてみた。
現在の稼動状態
- さくらVPS上で、Perl製ウェブアプリフレームワークMojoliciousが稼働。hypnotadコマンドで常時稼働しており、ブラウザでドメイン名(www.tomcha.net)にアクセスするとページが表示される。
やった事
$ 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
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 に入れる
上記のファイル群をscpコマンドでさくらVPSの任意のフォルダへアップロード。
さくらVPSにSSHで接続し、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
無事、移行完了。