0.環境準備
使った環境は以下の通り。
・vagrant
・CentOS 6.5
・Let's Chat 0.3.12
1.インストール
Let's Chatの導入要件となっている、以下のツール群を導入する。
・nodejs v0.12.4
・mongodb 3.0
・Python 2.7
ここを参照しつつ入れる!
1.2 mongodbを入れる
$ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.0.3.tgz
$ tar xvfz mongodb-linux-x86_64-rhel62-3.0.3.tgz
$ cd mongodb-linux-x86_64-rhel62-3.0.3 mongo
1.3 python2.7を入れる
$ wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
$ tar xvfz Python-2.7.6.tgz
$ cd Python-2.7.6
$ ./configure --enable-shared --with-threads
$ make
$ sudo make install
$ python -V
python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
なんだかエラーがでてる。
$ ldd /usr/local/bin/python
linux-vdso.so.1 => (0x00007fffc0ad3000)
libpython2.7.so.1.0 => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f112bed4000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f112bcd0000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f112bacd000)
libm.so.6 => /lib64/libm.so.6 (0x00007f112b848000)
libc.so.6 => /lib64/libc.so.6 (0x00007f112b4b4000)
/lib64/ld-linux-x86-64.so.2 (0x00007f112c0fb000)
同じですが、libpython2.7.so.1.0がないと言われている。ただ実際には、、
$ sudo find / -name 'libpython2.7.so.1.0'
/home/vagrant/Python-2.7.6/libpython2.7.so.1.0
/usr/local/lib/libpython2.7.so.1.0
といストールされている。のでリンクで対応する。
$ sudo ln /usr/local/lib/libpython2.7.so.1.0 /lib64/libpython2.7.so.1.0
$ python -V
Python 2.7.6
無事。インストールができたみたいです。
1.4 Let's Chatを入れる
最後にLet's Chatを入れる。
$ git clone https://github.com/sdelements/lets-chat.git
$ cd lets-chat/
$ npm install
gyp: Call to 'which icu-config > /dev/null || echo n' returned exit status 0. while trying to load binding.gyp
何やらエラーがでて失敗した。ライブラリを追加で入れる。
$ sudo yum install libicu-devel.x86_64
で、再チャレンジです
・
・
node-xmpp-core@1.0.0-alpha14 node_modules/node-xmpp-core
├- tls-connect@0.2.2
├- debug@2.2.0 (ms@0.7.1)
├- reconnect-core@0.0.1 (backoff@2.3.0)
├- node-stringprep@0.7.0 (bindings@1.2.1, debug@2.0.0, nan@1.8.4)
└- mqq ltx@0.9.0 (sax@0.6.1, node-expat@2.3.8)
をーインストール完了。
2. Let's Chatの設定
$ cp settings.yml.sample settings.yml
$ vi settings.yml
#
# See defaults.yml for all available options
#
env: production # development / production
http:
enable: true
host: '0.0.0.0'
port: 80
https:
enable: false
port: 5001
key: key.pem
cert: certificate.pem
files:
enable: true
provider: local
local:
dir: uploads
xmpp:
enable: false
port: 5222
domain: example.com
database:
uri: mongodb://localhost/letschat
secrets:
cookie: secretsauce
auth:
providers: [local]
local:
enableRegistration: true
================
# Let's Chat Settings#
# See defaults.yml for all available options
#
env: production # development / production
http:
enable: true
host: '0.0.0.0'
port: 80
https:
enable: false
port: 5001
key: key.pem
cert: certificate.pem
files:
enable: true
provider: local
local:
dir: uploads
xmpp:
enable: false
port: 5222
domain: example.com
database:
uri: mongodb://localhost/letschat
secrets:
cookie: secretsauce
auth:
providers: [local]
local:
enableRegistration: true
================
$ npm start
[Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version
あがるっちゃ、あがるんだけど、エラーがでている。いろいろググってみたけど、
npm cache clean; rm -rf node_modules ;npm install
これで再インストールすればいけるみたい。
ということでやってみたら・・・行けた!
3.検索をカスタマイズ
chatの履歴から全文検索ができるようになっているのですが、、mongodbの全文検索機能を使っており、mongodbのそれは日本語には対応していない。なので、全くといっていいほど使えない。それだったらせめてmessagesの検索だけでも意味があるかなと思い、少しソースを修正。
lets-chat/app/core/messages.js
3.検索をカスタマイズ
chatの履歴から全文検索ができるようになっているのですが、、mongodbの全文検索機能を使っており、mongodbのそれは日本語には対応していない。なので、全くといっていいほど使えない。それだったらせめてmessagesの検索だけでも意味があるかなと思い、少しソースを修正。
lets-chat/app/core/messages.js
if (options.query) {
find = find.find({$text: {$search: options.query}});
}
find = find.find({$text: {$search: options.query}});
}
if (options.query) {
var r = new RegExp(options.query, "i")
find = find.find({"text": {$regex:r}});
var r = new RegExp(options.query, "i")
find = find.find({"text": {$regex:r}});
}
に変更してみた。これだけでも結構便利!
4.ldap認証
デフォルトでは、local認証となっていて、さらに自由にアカウント登録ができてしまう。今回インターネット経由でアクセスをさせるので、この状態はよろしくない。
とうことで、openldapを立てて、アカウント管理!
※openldapの導入はこちら。
settings.yml
===
auth:
providers: [ldap]
ldap:
connect_settings:
url: ldap://192.168.x.x:389/
bind_options:
bindDN: uid=bind,ou=Account,dc=example,dc=com
bindCredentials: password
search:
base: "ou=Account,dc=example,dc=com"
opts:
scope: one
filter: (uid={{username}})
#filter: (sAMAccountName={{username}})
field_mappings:
uid: uid
firstName: givenName
lastName: sn
displayName: givenName
email: mail
===
いや~バカになるくらいで簡単にできた・・。すごい!