monoの開発ブログ

プログラム開発の記録

Archive for the ‘Ubuntu’ tag

Ubuntu+Apache+Rack+FastCGIな環境でSinatraを使う

without comments

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文字程度)途切れずに表示されるので実害はないのですが、よく分からない感じです。

Written by mono

3月 4th, 2010 at 10:33 pm

Posted in Linux, Ruby, Ubuntu, Web

Tagged with , , , , , ,

Ubuntu+Apache+Rack+FastCGIな環境でRubyを動かしてみる

without comments

情報量が少ないのでメモ。
苦労したのは情報量が少ないというのと、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を動かせたらいいなぁと思ってます。

Written by mono

3月 4th, 2010 at 1:00 pm

Posted in Linux, Ruby, Ubuntu, Web

Tagged with , , , , ,

Dropboxでdotfilesを同期するメモ

without comments

最近VirtualBox上でUbuntuを使うようになったので、Dropboxを使ってWindows 7とUbuntuでdotfilesを同期するようにしてみました。
以下にVimの設定を例とした手順のメモをまとめておきます。

完成形のイメージ

  • 「My Dropbox/dotfiles」(Linux側では「~/Dropbox/dotfiles」)以下にdotfilesの実体が配置される。
  • シンボリックリンクを利用してホームディレクトリ直下にdotfilesへのリンクを作成する。

Dropboxアカウントの作成

アカウント作成ページからアカウントを作成し、WindowsとUbuntuにそれぞれクライアントをインストールしておきます。

Windows側の設定

Windows Vista以降ではシンボリックリンクを作成するコマンドmklinkが存在するため、これを利用します。
コマンドプロンプトをコンテキストメニューから管理者として実行し、以下のように入力すると、シンボリックリンクが作成されます。
なお、環境変数HOMEにホームディレクトリが入っていることを前提とします。

mklink "%HOME%\_vimrc" "%HOME\Documents\My Dropbox\dotfiles\.vimrc"
mklink "%HOME%\_gvimrc" "%HOME\Documents\My Dropbox\dotfiles\.gvimrc"
mklink /D "%HOME%\vimfiles" "%HOME\Documents\My Dropbox\dotfiles\.vim"

Ubuntu側の設定

Linuxではリンクを作成するコマンドlnに-sオプションを指定してシンボリックリンクを作成します。
ターミナル上で以下のように入力すると、シンボリックリンクが作成されます。
なお、引数の順番がWindowsと逆なので注意が必要です。

ln -s ~/Dropbox/dotfiles/.vimrc ~/.vimrc
ln -s ~/Dropbox/dotfiles/.gvimrc ~/.gvimrc
ln -s ~/Dropbox/dotfiles/.vim ~/.vim

Windows上のVimでの注意点

Windows上のVim(Kaoriyaで公開されているバージョン)では、シンボリックリンクを開いて保存すると通常のファイルに置き換えられてしまう問題が存在します。
そのため、Windows上でdotfilesを編集する場合にはMy Dropbox\dotfiles以下にある実体を開く必要があります。

Written by mono

1月 12th, 2010 at 9:00 pm

Posted in Linux, Ubuntu, Windows

Tagged with , , , ,