人間と人間が交差するとき、
次世代ディスカッションプラットフォーム「Discourse」
人はどんな些細なネタでも他人と論争できる生き物です
これまでのネット上での議論と言えば、
なぜDiscourse?
今回紹介するDiscourseは、
どんなことができるの?
Discourse自体はRuby on Rails、
マルチプラットフォームに対応
IEやFirefox、
ページの自動ロード機能
旧来のフォーラムは1ページあたり何件かのコメントが表示され、
閲覧中に新しいコメントが追加された場合は、
返信、引用だけでなくメンションによる通知機能
最近のSNSでは、
返信や引用、
ソーシャルログイン機能
Discourseは、
より直感的な編集機能
投稿の編集部分の見た目は既存のフォーラムとそれほど違いはありません。しかしながら、
REST API
最近のインターネットサービスの例に漏れず、
Discourseのサイトにはテスト用のサンドボックス環境が用意されています。さらにUbuntuでも、
それではUbuntuにインストールしてみましょう
Discourseは生まれたばかりのプロジェクトなので、
必要なパッケージをインストール
Discourseを動かすためには、
まずは、
$ sudo apt-get update $ sudo apt-get install tasksel $ sudo tasksel install mail-server $ sudo tasksel install postgresql-server $ sudo apt-get install build-essential libssl-dev libyaml-dev git libtool \ libxslt1-dev libxml2-dev redis-server libpq-dev gawk curl pngcrush
メールサーバの設定については、
Webサーバの準備
DiscourseはWebサービスなので、
Ubuntu 12.
$ sudo apt-get remove '^nginx.*$' $ cat <<'EOF' | sudo tee -a /etc/apt/sources.list.d/nginx.list > > deb http://nginx.org/packages/ubuntu/ precise nginx > deb-src http://nginx.org/packages/ubuntu/ precise nginx > EOF $ curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add - $ sudo apt-get update $ sudo apt-get install nginx
RVMを使ったRubyのインストール
前述のとおり、
$ \curl -s -S -L https://get.rvm.io | sudo bash -s stable $ sudo adduser $USER rvm $ newgrp rvm $ . /etc/profile.d/rvm.sh $ rvm requirements $ rvm install 2.0.0 $ gem install bundler
やっていることは、
Discourseのインストールと設定
次にDiscourseをインストール、
$ sudo adduser --shell /bin/bash discourse $ sudo adduser discourse rvm $ sudo -u postgres createuser -s discourse $ sudo -u postgres psql -c "alter user discourse password 'TESTDISCOURSE';" $ sudo su - discourse $ git clone git://github.com/discourse/discourse.git $ cd discourse/ $ git checkout latest-release
RVMでdiscourseアカウントのRubyのバージョンを2.
$ rvm install 2.0.0 $ gem install bundler $ bundle install --deployment --without test
さらに細かい設定を行うために、
$ cd ~/discourse/config $ cp database.yml.production-sample database.yml $ cp redis.yml.sample redis.yml $ cp discourse.pill.sample discourse.pill $ cp environments/production.rb.sample environments/production.rb
最低限編集しなければいけないのは、
database.yml
productionのusernameとpasswordのコメントアウトを解除し、
discourse.pill
"host to run on"を現在のホスト名に変更します。
initializers/secret_token.rb
SET_
さらにProductionのデータベースを作成し、
$ createdb discourse_prod $ RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production rake db:migrate $ RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ENV=production rake assets:precompile $ exit
Nginxの設定
最後のコマンドで一旦、
$ sudo cp ~discourse/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf $ sudo mv /etc/nginx/conf.d/default.conf{,.disabled}
Nginxの設定である/etc/
server_names_hash_bucket_size 64;
さらに、
$ sudo /etc/init.d/nginx reload
BluepillによるDiscourseの起動
BluepillはRubyで書かれたプロセス監視ツールです。
$ sudo su - discourse $ gem install bluepill $ echo 'alias bluepill="NOEXEC_DISABLE=1 \ bluepill --no-privileged -c ~/.bluepill"' >> ~/.bash_aliases $ rvm wrapper $(rvm current) bootup bluepill $ rvm wrapper $(rvm current) bootup bundle
既にこれまでの作業でDiscourseのためのBluepillの設定は終わっているので、
$ RUBY_GC_MALLOC_LIMIT=90000000 RAILS_ROOT=~/discourse \ RAILS_ENV=production NUM_WEBS=4 bluepill --no-privileged \ -c ~/.bluepill load ~/discourse/config/discourse.pill
さらにインストールガイドにあるように、
さっそくアクセスしてみましょう
あとは設定したホスト名

さっそくログインしてみましょう。トップページの


他にもいろいろ試してみると、
それ、Jujuなら簡単にできますよ
これまで見てきたように、
Jujuの導入については第265回の2ページ目を参照してください。簡単にまとめると、
$ sudo apt-get install juju-core $ juju generate-config -w ここで、~/.juju/environments.yamlを編集する。 $ juju bootstrap $ juju status
この段階でJuju用のインスタンスが1つ立ち上がった状態になります。
DiscourseとPostgreSQLをそれぞれインストールしましょう。
$ juju deploy cs:~marcoceppi/discourse $ juju deploy postgresql
Discourseのインストールは環境によって20分ぐらいかかります
次にDiscourseとPostgreSQLを関連付けます。
$ juju add-relation discourse postgresql:db-admin
おそらくこれを実行して少し待ってからstatusを確認すると、
agent-state-info: 'hook failed: "relation-changed"'
これはinitializers/
$ juju ssh discourse/0 (これでインスタンスにログインできる) $ cat /etc/init/discourse.conf | grep SECRET_TOKEN (ここでSECRET_TOKENを確認する) $ sudo vi ~discourse/discourse/config/initializers/secret_token.rb (「Discourseのインストールと設定」と同じように編集する) $ exit $ juju resolved -r discourse/0
最後のコマンドで、
最後に、
$ juju expose discourse
juju statusでdiscourseサービスに表示される、
このように、