2010年10月8日

Install Diaspora on Windows

Diaspora を Windows 上にインストールします。 Windows 用のインストーラパッケージはありませんので、ちょっとした作業メモです。 このエントリは Diaspora の Wiki を参考にして、順番に進めた記録です。

Diaspora は Ruby on Rails で構築されたシステムであるため、 Ruby の実行環境およびそれに関連するツールをインストールする必要があります。 なお、Ubuntu だと一発でインストールできるスクリプトがあります。

まずは MongoDB をインストールしておきます。 MongoDB の動作を確認したら、必要なパッケージを順次インストールしていき、ローカルの Diaspora サーバにログインしてみます。

ツールのインストール

Cygwin で Ruby と ImageMagic と git をインストールします。 その他に XSLT のパッケージも必要になる模様なので、それもインストールします。 次の5つのパッケージを選択してインストールします。

  • Ruby-1.8.7-p72-2
  • ImageMagic-6.4.0.6-2
  • git-1.7.2.3
  • libxslt-1.1.26-2
  • libxslt-devel-1.1.26-2

次に Ruby のパッケージ管理システムである Gem をインストールします。

$ cd /usr/local/src

$ wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz && tar xzf rubygems-1.3.7.tgz

$ mv rubygems-1.3.7 /usr/local && cd /usr/local

$ ln -s rubygems-1.3.7 rubygems && cd rubygems

$ ruby setup.rb

$ which gem
/usr/bin/gem

$ gem -v
1.3.7

さらに Ruby の依存性解決プログラムである bundler をインストールします。

$ gem install bundler
Successfully installed bundler-1.0.2
1 gem installed
Installing ri documentation for bundler-1.0.2...
Installing RDoc documentation for bundler-1.0.2...

$ bundle -v
Bundler version 1.0.2

Diaspora のセットアップ

Diaspora のソースコードと、依存するライブラリを取得します。

$ cd $HOME/work

$ git clone http://github.com/diaspora/diaspora.git
Cloning into diaspora...
remote: Counting objects: 21270, done.
remote: Compressing objects: 100% (6403/6403), done.
remote: Total 21270 (delta 14977), reused 20695 (delta 14442)
Receiving objects: 100% (21270/21270), 4.65 MiB | 190 KiB/s, done.
Resolving deltas: 100% (14977/14977), done.

$ cd diaspora

$ bundle install
(snip)

$ bundle show mongo
/usr/lib/ruby/gems/1.8/gems/mongo-1.0.8

ヘッダーファイルが足りない場合には途中で次のようなエラーメッセージが出力されます。 この場合は Cygwin の setup.exe を起動して libxslt-devel をインストールします。

/usr/bin/ruby.exe extconf.rb
checking for libxml/parser.h... yes
checking for libxslt/xslt.h... no
-----
libxslt is missing.  please visit http://nokogiri.org/tutorials/installing_nokog
iri.html for help with installing dependencies.
-----

MongoDB を起動します。

C:\Users\shigeru\work\mongodb-win32-i386-1.6.2\bin>mongod.exe
mongod.exe --help for help and startup options
Thu Oct 07 21:04:13 MongoDB starting : pid=4768 port=27017 dbpath=/data/db/ 32-b
it

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data

**       see http://blog.mongodb.org/post/137788967/32-bit-limitations

Thu Oct 07 21:04:14 db version v1.6.2, pdfile version 4.5
Thu Oct 07 21:04:14 git version: aef371ecf5d2a824f16ccdc3b745f3702165602f
Thu Oct 07 21:04:14 sys info: windows (5, 1, 2600, 2, 'Service Pack 3') BOOST_LIB_VERSION=1_35
Thu Oct 07 21:04:14 [initandlisten] waiting for connections on port 27017
Thu Oct 07 21:04:14 [websvr] web admin interface listening on port 28017

Diaspora のサーバを起動させます。 サーバは3000番ポートと8080番ポートを使用しますので、他のサーバ (例えば AppEngine の開発サーバ) が起動している場合には停止しておきます。

$ ./script/server
>> Using rack adapter
Websocket server started.
>> Thin web server (v1.2.7 codename No Hup)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop

script/server のスクリプトは ps axmongod プロセスが存在するかを確認します。 MongoDB の起動方法によってはここに表示されないかもしれませんので、 その場合は Cygwin のターミナルから起動させます。

テストまたは開発用ではなく、インターネット上にシードを公開する場合には
``config/app_config.yml.example`` を ``config/app_config.yml`` にコピーしてそれを編集してからサーバを起動します。

MongoDB を起動しているコンソールには次のようなログが出力されます。

Thu Oct 07 22:41:21 [initandlisten] connection accepted from 127.0.0.1:51668 #1
Thu Oct 07 22:41:21 [conn1] end connection 127.0.0.1:51668
Thu Oct 07 22:41:21 [initandlisten] connection accepted from 127.0.0.1:51669 #2
Thu Oct 07 22:41:21 [conn2] end connection 127.0.0.1:51669
Thu Oct 07 22:41:24 [initandlisten] connection accepted from 127.0.0.1:51670 #3
Thu Oct 07 22:41:24 [conn3] end connection 127.0.0.1:51670
Thu Oct 07 22:41:24 [initandlisten] connection accepted from 127.0.0.1:51671 #4
Thu Oct 07 22:41:24 [conn4] end connection 127.0.0.1:51671
Thu Oct 07 22:42:16 [initandlisten] connection accepted from 127.0.0.1:51685 #5

これでサーバ (いわゆるアプリケーションサーバだけでなく、websocket サーバも) が起動しましたので、 ブラウザから http://localhost:3000 にアクセスすると、次の画面が表示されます。

サンプルユーザでログイン

データベースにサンプルユーザを作成して、そのユーザアカウントでログインします。 まず、rake のインストール場所を確認し、PATH に追加します。

$ ls /usr/lib/ruby/gems/1.8/bin/rake
/usr/lib/ruby/gems/1.8/bin/rake*

$ PATH=$PATH:/usr/lib/ruby/gems/1.8/bin

次に開発者と Tom を作ります。 それぞれの詳しい情報は db/seed/dev.rb および db/seed/tom.rb を確認します。 ファイルのパスがおかしい場合にはエラーログを確認します。

$ rake db:seed:dev
(in /cygdrive/c/Users/shigeru/work/diaspora)
Seeding the database for development...

$ rake db:seed:tom
(in /cygdrive/c/Users/shigeru/work/diaspora)
Seeding the database for development...
rake aborted!
No such file or directory - /cygdrive/c/Users/shigeru/shared/app_config.yml

(See full trace by running task with --trace)

$ vim db/seed/tom.rb  # diff が下記のようになるように自力で編集する

$ git diff
diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb
index 5c418c8..317904c 100644
--- a/db/seeds/tom.rb
+++ b/db/seeds/tom.rb
@@ -9,5 +9,5 @@ def set_app_config username
   current_config[Rails.env.to_s] ||= {}
-  current_config[Rails.env.to_s]['pod_url'] = "http://#{username}.joindiaspora.
-  current_config['default']['pod_url'] = "http://#{username}.joindiaspora.com/"
-  file = File.new(Rails.root.join('..','..','shared','app_config.yml'),'w')
+  current_config[Rails.env.to_s]['pod_url'] = "#{username}.joindiaspora.com"
+  current_config['default']['pod_url'] = "#{username}.joindiaspora.com"
+  file = File.new(Rails.root.join('config','app_config.yml'),'w')
   file.write(current_config.to_yaml)

$ rake db:seed:tom
(in /cygdrive/c/Users/shigeru/work/diaspora)
Seeding the database for development...

そして、Tom でログインします。Username は tom で、Password は evankorth です。 ログインできれば成功です。次のような画面が表示されます。

コメントにはタグ付けできるようで、Facebook と同じようなタイムラインになります。

ということで、手元で Diaspora のシードを稼動できるようになりました。めでたしメデタシ :D

コメントを投稿