[转]http://my.oschina.net/bfleeee/blog/268994
Nodebb是一个很酷很简洁的论坛系统。基于nodejs,使用socket.io实现实时通信。socket.io的好处在于提供了多种传输实现作为消息传输的方式(支持的传输方式WebSocket,Flash,Ajax Long Polling等,支持的浏览器IE5.5+,Chrome 4+,Firefox 3+,Android Webkit,IPhone safari等),并封装为简单一致的API以供调用。Nodebb提供了高度可定制的主题、插件系统。想做个论坛玩玩,或者想学习nodejs的同学可 以马上上手了。
示例环境:
CentOS v6.5,node.js v0.10.28 ,Redis v2.8.9 , nginx v1.6.0
一、安装基础依赖
首先安装依赖软件。这里基本上使用下载安装,各版本的Linux也可使用各自的包管理器进行更快捷的安装。Nodebb依赖node.js,数据库使用Mongo或redis。这里以redis为例。
安装nodejs
在nodejs下载页面选择需要的nodejs版本进行下载。解压后即可使用。以64位Linux版本为例:
wget http:
//nodejs.org/dist/v0.10.28/node-v0.10.28-linux-x64.tar.gz
tar -xzf node-v0.
10.28
-linux-x64.tar.gz
为了方便使用,将node包下的bin目录加入到/etc/profile中,并执行source:
cat << EOF >> /etc/profile
PATH=\$PATH:/path/to/node/bin
export PATH
EOF
source /etc/profile
注意这里为了不对PATH变量进行替换,使用了”"对$进行了转义。如果使用vi进行编辑就不用加”"了。
安装Redis
wget http:
//download.redis.io/releases/redis-2.8.9.tar.gz
tar -xvf redis-
2.8
.
9
.tar.gz
cd redis-
2.8
.
9
make
同样可以把redis的命令加入到PATH:
cat << EOF >> /etc/profile
PATH=\$PATH:/path/to/redis/src
export PATH
EOF
source /etc/profile
需要注意的是source只把脚本对应的环境变量修改了,脚本执行完毕后如果想使用新改的变量,可以在当前环境下`source /etc/profile
`或启动另一终端。
安全起见,使用redis加上密码。在redis.conf中加入`requirepass password
`
启动redis:
redis-server ./redis.conf
测试redis:
redis-cli
auth password
二、安装NodeBB
安装NodeBB需要使用git克隆代码,所以先安装git:
安装git
yum install git
除Fedora、CentOS的其他版本Linux可参考这里进行Git安装
克隆nodebb:
git clone git:
//github.com/designcreateplay/NodeBB.git nodebb
启动setup进行配置:
cd nodebb
./nodebb setup
配置完成后启动nodebb:
./nodebb start
三、使用Nginx代理
完成上一步,安装就基本完成了。如果服务器存在多个应用需要使用80端口,可以使用nginx监听80端口,对应用进行代理。
安装nginx
wget http:
//nginx.org/download/nginx-1.6.0.tar.gz
tar -xvf nginx-
1.6
.
0
.tar.gz
cd nginx-
1.6
.
0
配置nginx
在nginx目录下修改conf/nginx.conf,在http中添加upstream,这里以我的域名haofan.info和端口4567为例:
upstream nodebb {
server haofan.info:
4567
;
}
新建配置文件conf/site-enabled/nodebb.conf,内容如下:
server {
listen
80
;
server_name haofan.info www.haofan.info;
error_log logs/nodebb.error.log;
access_log logs/nodebb.access.log main;
location / {
root /root/nodebb/
public
;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy
true
;
proxy_pass http:
//nodebb;
proxy_redirect off;
proxy_buffers
8
32k;
proxy_buffer_size 64k;
# Socket.IO Support
proxy_http_version
1.1
;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection
"upgrade"
;
}
error_page
500
502
503
504
/50x.html;
location = /50x.html {
root html;
}
}
修改conf/nginx.conf文件,使用include方式引入配置文件:
include site-enabled/nodebb.conf;
启动nginx
sbin/nginx
四、附录:
nodebb及依赖安装脚本(不包含nginx部分):
#!/bin/sh
export SOFT_DIR=/usr/local/
export NodeBB_PARENT=/root
function exist_cmd()
{
if
hash
"$1"
2
>/dev/
null
; then
echo $
1
ok;
return
1
;
else
echo $
1
not ok;
return
0
;
fi
}
function install_nodebb()
{
cd $NodeBB_PARENT
git clone git:
//github.com/designcreateplay/NodeBB.git nodebb
cd nodebb
npm install
./nodebb setup
}
exist_cmd node;
if
[ $? -eq
0
] ; then
cd $SOFT_DIR
wget http:
//nodejs.org/dist/v0.10.28/node-v0.10.28-linux-x64.tar.gz
tar -xzf node-v0.
10.28
-linux-x64.tar.gz
cd node-v0.
10.28
-linux-x64
echo
"PATH=\$PATH:`pwd`/bin"
>> /etc/profile
echo
"export PATH"
>> /etc/profile
source /etc/profile;
fi
exist_cmd redis-server;
if
[ $? -eq
0
] ; then
cd $SOFT_DIR
wget http:
//download.redis.io/releases/redis-2.8.9.tar.gz
tar -xvf redis-
2.8
.
9
.tar.gz
cd redis-
2.8
.
9
make
echo
"PATH=\$PATH:`pwd`/src"
>> /etc/profile
echo
"export PATH"
>> /etc/profile
source /etc/profile
redis-server ./redis.conf
fi
exist_cmd git;
if
[ $? -eq
0
] ; then
yum install git
fi
if
[ -d
"$NodeBB_PARENT/nodebb"
] ; then
echo
"Exists NodeBB,Delete it ? [yes/no]"
read deleteIt
if
[[ $deleteIt == y* ]] ; then
rm -rf $NodeBB_PARENT/nodebb
install_nodebb
fi
else
echo
"Installing nodebb..."
install_nodebb
fi