Archive for the ‘Web’ Category
Ubuntu+Apache+Rack+FastCGIな環境でSinatraを使う
Sinatraはあっさり動いてくれました。
以下手順のメモです。
sudo gem install sinatra
ファイルの記述
前回テストしたrack-testディレクトリ以下に次の3つのファイルを配置します。
.htaccess
ファイルやディレクトリが存在しない場合にはリクエストをすべてdispatch.fcgiへ投げるようにします。
RewriteEngine On
RewriteBase /
DirectoryIndex dispatch.fcgi
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ dispatch.fcgi/$1 [L]
start.rb
ここにはアプリケーション本体のコードを記述します。
require 'rubygems' require 'sinatra' get '/' do 'Hello, World!' end
dispatch.fcgi
start.rbを読み込んでFastCGIとして起動させているだけのコードです。
#!/usr/bin/env ruby require 'rubygems' require 'rack' require 'sinatra' require 'start' Rack::Handler::FastCGI.run Sinatra::Application
テスト
このコードを動かしてみると、うちではなぜか出力が以下のようになってしまいます。
He
ある程度出力が長ければ(30文字程度)途切れずに表示されるので実害はないのですが、よく分からない感じです。
Ubuntu+Apache+Rack+FastCGIな環境でRubyを動かしてみる
情報量が少ないのでメモ。
苦労したのは情報量が少ないというのと、fastcgiとfcgidで情報が混じっていて混乱させられるとう点だけで、実際にやることはそれほど難しくありません。
特にRubyのコードはRackがFastCGIを扱う部分をすべて吸収してくれるので、自分ではなにもする必要がありません。
すてきですね。
必要なモジュールのインストール
sudo aptitude install libapache2-mod-fastcgi libfcgi-dev sudo gem install fcgi rack
aptitudeで失敗する場合には、/etc/apt/sources.listを編集してsudo aptitude updateを行う必要があるようです。
追加すべきURLは「ubuntu パッケージ名」で検索すれば見つかると思います。
設定ファイルの編集
/etc/apache2/mods-available/fastcgi.confを編集します。
<IfModule mod_fastcgi.c> AddHandler fastcgi-script .fcgi FastCgiWrapper On FastCgiIpcDir /var/lib/apache2/fastcgi </IfModule>
FastCgiWrapperはsuEXECを利用する場合に、FastCgiIpcDirはtmpwatchが動作している場合にそれぞれ設定が必要らしいです。
Hello World
適当にVirtualHostを設定してルートにhello-world.fcgiを配置
#!/usr/bin/env ruby
require 'rubygems'
require 'rack'
app = Proc.new do |env|
Rack::Response.new.finish do |res|
res.write "Hello, Rack!"
end
end
Rack::Handler::FastCGI.run app
あとはApacheを再起動してURLにアクセスすれば、Hello, Rack!と表示されるかもしれません。
次はこの上でSinatraを動かせたらいいなぁと思ってます。
ニコニコ大百科「面白げなページ・動画」のRSSを作ってみた
ニコニコ大百科の右サイドバーにある「面白げなページ・動画」をご存じでしょうか?
個人的には比較的面白い確率が高いので気に入っています。
実はここに載っている動画はフロッグ!というサービスでピックアップされているものと同一であり、フロッグ!のサイトにあるRSSを購読すればひとまず同じ情報を手に入れることが可能です。
しかし、このRSSに含まれているリンクはフロッグ!上のクッションページを挟んでおり、直接動画が再生できないため微妙に不便です。
そこで、クッションページを経由せず、直接動画を開くことができるフィードを作ってみました。
生成にはYahoo! Pipesを使い、ニコニコ大百科のHTMLをスクレイピングして実現しています。
また、これは想定外だったのですが、HTMLをそのまま持ってきたことで動画のサムネイルを見ることができるというメリットもあります。