酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

21世紀の掲示板プラットホーム DISCOURSEのインストール手順

21世紀の掲示板プラットフォーム、今後10年の議論を担えると噂のDISCOURSEを導入する手順です。個人的にはとても読みやすいコードで書かれているのでコードを読んで勉強するのにも最適です!


DISOURSEとは?

discourse

DISCOURSEとはStack Overflowなどの世界No1のテック系Q&Aサイトを立ち上げたファウンダの方が新たに作っている近代的な掲示板ツールです。旧来の文字だけではなく、画像や動画を簡単に投稿できたり、わかりやすいUIが特徴的なオープンソースです。開発も非常に活発なのも魅力です。

Railsで作られていて少し読んだ限りでは、非常に読みやすいコードばかりなので、Railsのコードを読んで勉強するのにオススメです!

導入手順

(1) PostgreSQL ver9.1以上のインストール

拙著、『Mac MountainLion/CentOS 6.3へのPostgreSQL 9.2の導入手順』がオススメです。

(2) Redis ver2以上のインストール

拙著、『CentOS/Mac OSXへのRedis導入手順 - memcacheライクなKey-Value方式と、永続化対応のインメモリDB』がオススメです。

(3) Ruby 1.9.3とBundlerのインストール

Macなら『Mountain Lion Rails 最新環境 詳解 構築手順』、CentOSなら『CentOS 6.3 Ruby 1.93/RVMのインストール手順』がオススメです。

(4) DISCOURSEのclone

以下のコマンドを実行して、DISCOURSEのコードをclone。

1
git clone git://github.com/discourse/discourse.git

(5) DISCOURSEの環境構築

以下のコマンドを実行するとDISCOURSEの環境を構築します。

production環境、及びpostgreSQLのユーザーを作成する場合はこの記事の最後の方に補足を書いていますので、良かったら先に読んでみて下さい。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# database.ymlの準備
mv config/database.yml.sample config/database.yml

# redis.ymlの準備
mv config/redis.yml.sample config/redis.yml

# Gemのインストール
bundle install

# DBの作成
bundle exec rake db:create:all

# マイグレーション
rake db:migrate

# DBのテスト環境の準備
rake db:test:prepare

# seedファイル(初期データ)の読み込み
rake db:seed_fu

# seedファイルの代わりにdev環境でサンプルデータを読み込む場合
wget http://www.discourse.org/vms/dev-discourse-seed.sql
psql -d discourse_development < dev-discourse-seed.sql

# RSpecでテストを実行して動作確認
bundle exec rspec

(6) サーバの起動

webrickをサーバにする場合は下のコマンドを実行して、http://localhost:3000をブラウザで開く。

1
bundle exec rails server

もし、Powを使う場合は、Gemfileにgem 'powder'を追加してbundleを実行。そして、以下のコマンドを実行。

1
2
powder link
powder open

これで、Discouseを起動出来ると思います!

補足: postgreSQLのユーザー/DBを作成する場合

config/database.ymlにPostgreSQLのユーザーとパスワードを追加する手順です。

1
2
3
4
5
6
# ユーザーの作成
createuser -P [Railsの実行ユーザーと同名] -s
> [パスワードを設定]

# データベースの作成
createdb [データベース名] -O [Railsの実行ユーザーと同名]

続いて、config/database.ymlにユーザーの設定を追加する設定例です。

1
2
3
4
  username: [Railsの実行ユーザーと同名]
  password: [パスワード]
host_names:
  - "[ホスト名]"

補足: production環境の場合

production環境にDiscourseに設置する場合、secret_tokenを設定する必要があるようです。

まず、以下のコマンドを実行してsecret_tokenを生成。

1
2
rake secret
> "生成されたsecret-token"

続いて、vim config/initializers/ecret_token.rbで以下を変更。

1
2
3
4
5
6
7
# 変更前
if Rails.env.test? || Rails.env.development?
  Discourse::Application.config.secret_token = "secret_token"

# 変更後
if Rails.env.test? || Rails.env.development? || Rails.env.prodcution?
  Discourse::Application.config.secret_token = "生成されたsecret_tokenをセット"

さらに、assetのコンパイルも必要。

1
bundle exec rake assets:precompile RAILS_ENV=production

補足:ソースを最新状態にする

DISCOURSEはコードがものすごい勢いで開発されています。そのため、独自の変更をしていない場合は、定期的にソースを最新状態にアップデートすることをオススメします。

1
2
3
4
5
git reset --hard HEAD
git pull
bundle
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rake assets:precompile RAILS_ENV=production

Special Thanks

git - 簡単ガイド

gitでファイルの変更をすべて取り消し前回コミットした時の状態に戻す - ぬいぐるみライフ(仮)

変更来歴

03/15 08:55 『ソースを最新状態にする』を補足に追加

おすすめの書籍