Qiita、いいですよね!
Qiitaの使い勝手の良さに感動し、自分のブログへのTech系投稿をやめてしまったくらい(笑)なんですが、業務で使いたいとなると当然Global Publishするわけにいかず、かといってQiita-Teamでは社内のセキュリティ基準を満たせないという人も結構多いのではないでしょうか。
SaaSのほうがメンテナビリティが高いのは重々承知ですが、様々な理由で使えない、、、、って人たちに向けて、@m-yamashita さんがローカルで動くQiitaクローンを作ってくださいました。マジすげぇ!!
↓無料でイントラネット内にナレッジ/ノウハウの共有ができる「Lodge」 - Qiita
http://qiita.com/m-yamashita/items/d6f64db461acd54095f7
↓lodge/lodge: イントラネット内で誰でも構築できる情報共有サービス
https://github.com/lodge/lodge
基本的に上記ページの記載に従ってインストールを進めればいけるはずですが、Rubyスキルの足りない私が何も考えずに見たまんまやったら一部うまく行かなかったので、私なりのコメントを加えつつ手順を解説してみます。
自分なりの手順を加えて解説してみます。
あくまで検証目的のための手順なので、いろんな設定がデフォルトのままになっています。
外に開けてLaunchする際は、キーやパスワード、セキュリティグループの設定に注意してくださいね!
インストールをした環境
AMI : amzn-ami-hvm-2016.03.0.x86_64-gp2 (ami-f80e0596)
環境: EC2/t2.micro
下準備
念のためyum updateしておきます。
$ sudo su -
$ yum update -y
今回はデータベースとしてMySQLを使うのでMySQLをインストールしておきます。
↓Amazon Linux に MySQL-Server & Client をインストールする - Qiita
http://qiita.com/mamohacy/items/268733a205eeaf60ca31
あとRails環境も必要なのでこちらも準備。
2016年3月末時点でのLodgeは、Ruby2.1.8にしないと動作しないようなので
rbenvで上記バージョンにglobal設定するようにしています。
↓Amazon LinuxにRails環境(rbenv1.0.0 + ruby-build + Ruby2.1.8 + Rails4.2.6 + Bundler1.11.2)をセットアップする - Qiita
http://qiita.com/mamohacy/items/293150602990a5a388d9
さらに、この先のbundle installで必要になるパッケージがあるので先に入れておきます。
他のディストリはわからないのですが、少なくとも今回のバージョンのアマリナでは
これを入れないといくつかのgemsがインストールできません。
$ yum install -y libicu-devel cmake mysql-devel
Lodgeインストール
いよいよLodgeのインストールです。
今回は/optにインストールしました。
$ cd /opt
$ git clone https://github.com/m-yamashita/lodge.git
$ cd lodge
$ cp -p config/database.example.yml config/database.yml
$ vi database.yml
# === mysql === ← このへんのコメントアウトを外す
adapter: mysql2
host: localhost
username: root
password: ___input-your-password___ <- ここは適宜書き換え
encoding: utf8
pool: 5
$ pwd
/opt/lodge
$ bundle install --path vendor/bundle
・・・・・・・・・・
Bundle complete! 54 Gemfile dependencies, 161 gems now installed.
Bundled gems are installed into ./vendor/bundle.
・・・・・・
ここでエラーが出るようであれば、yumパッケージが足りないので、エラーメッセージに
従ってgemのインストールとyumのインストールを繰り返せば殆どの場合でクリアになります。
おそらく問題の多くはrubyのバージョンとインストールを行っているユーザーの問題で
私もかなりこのあたりはハマりました。。。。。
次に、環境設定ファイルを編集します。
$ pwd
/opt/lodge
$ cp -p .env.example .env
$ vi .env
様々な設定をこのファイルで行えるのですが、初回起動時にメールでインビテーションを飛ばしてアカウント登録を行う関係から
最低限下記の内容については変更する必要があります。
'''console:console
### アプリケーションのドメイン
LODGE_DOMAIN = example.com ← デフォルトだとTCPの3000番ポートで起動するので、EC2に振ったEIP:3000でもOK。
ここを変更しないとレジストレーション承認のURLの先頭が「http://example.com/〜」に
なってしまい、手動で書き換えないと登録できなくなってしまうので注意。
# メールの送信元として扱われるアドレス
MAIL_SENDER = xxxxxx@gmail.com ← メールレジスト時の送付元に入るアドレスを入れます
# DELIVERY_METHOD = smtp の場合のみ
# 以下の設定が有効です(それ以外は無視されます)
SMTP_ADDRESS = smtp.gmail.com
SMTP_PORT = 587
SMTP_USERNAME = xxxxxx@gmail.com
SMTP_PASSWORD = aaaaaaaaaaaaaaaa
SMTP_AUTH_METHOD = plain
SMTP_ENABLE_STARTTLS_AUTO = true
ここでまたハマったのが、私が使ったGmailでは二段階認証を入れていたため、通常の
パスワードではSMTPが使えなかったです。この場合は「アプリパスワード」なるものを
生成し、それをここに設定することで使えるようになります。
↓メーラーからGmailへの接続時に認証(パスワード)のエラーが生じる場合の対処方法 (2/2)
http://www.atmarkit.co.jp/ait/articles/1409/03/news109_2.html#cause02
この手順で生成されたアプリパスワードを、上記ファイルの「SMTP_PASSWORD」のところに記載します。
データベースの生成と更新
$ bundle exec rake db:create RAILS_ENV=production
$ bundle exec rake db:migrate RAILS_ENV=production
絵文字の準備
$ bundle exec rake emoji
サーバ起動
$ pwd
/opt/lodge
$ bundle exec rails server thin -e production
=> Booting Thin
=> Rails 4.1.0 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
Thin web server (v1.6.4 codename Gob Bluth)
Maximum connections set to 1024
Listening on 0.0.0.0:3000, CTRL+C to stop
この状態で、http://対象のホストのIP:3000/ にアクセスすると、ログインページが表示されるはずです。
EC2設定の注意点
- EC2に当てるセキュリティグループで自分のアクセス元IPに対して、Inbound設定としてTCP:3000を許可しておく必要があります。
- IPアドレスでアクセスしてもいいですが、ドメインを持っている場合はRoute53に設定を入れて、先の.envファイルの LODGE_DOMAINにポートと一緒に設定しておくと良いと思います。デフォルトポートはTCP:3000です。
メールが送信されないときは?
だいたいSMTP設定が間違っています。
/opt/lodge/log/production.log を確認すると下記のようなエラーが出ているはずなので、メール設定を見なおして下さい。
$ cat /opt/lodge/log/production.log
・・・・・・
I, [2016-03-31T12:19:58.120956 #821] INFO -- : Rendered users/mailer/confirmation_instructions.html.erb (0.8ms)
I, [2016-03-31T12:19:59.500115 #821] INFO -- :
Sent mail to mm-oohashi@kddi.com (1377.3ms)
I, [2016-03-31T12:19:59.502487 #821] INFO -- : Completed 500 Internal Server Error in 1694ms
F, [2016-03-31T12:19:59.504597 #821] FATAL -- :
Net::SMTPAuthenticationError (534-5.7.9 Application-specific password required. Learn more at
):
config/initializers/quiet_assets.rb:6:in `call_with_quiet_assets'
・・・・・・・
総括
巷にインストールに関する情報があまり無く、Rubyスキルの低い私はrbenvやgemsやRailsの勉強をやりなおしました。
結果的に更から4回ほど作りなおして成功できました。
使い勝手はなかなかに良く、テキストベースのプライベートQiitaとして使うのにはこれで十分な感じがします。
ただ、画像ファイルのアップロード機能とかがないので単品運用ではちょっと厳しい気もします。
見た目や使い勝手といった面で、どうしても本家からは見劣りしてしまうところもありますが、
GitHub上で公開されていることですし、誰かにForkされて開発が進むことを期待します。
チーム内でももう少し使い込んでみたいと思います。
参考にさせて頂いたサイト
↓Lodgeを導入するとき注意すること - Qiita
http://qiita.com/kaho2063/items/68c66d153a1978771a02
↓CentOSにlodgeを導入する - Qiita
http://qiita.com/shu920921/items/1cc92f2958ff13602781