Nodebb是一個很酷很簡潔的論壇系統。基於nodejs,使用socket.io實現實時通訊。socket.io的好處在於提供了多種傳輸實現做爲消息傳輸的方式(支持的傳輸方式WebSocket,Flash,Ajax Long Polling等,支持的瀏覽器IE5.5+,Chrome 4+,Firefox 3+,Android Webkit,IPhone safari等),並封裝爲簡單一致的API以供調用。Nodebb提供了高度可定製的主題、插件系統。想作個論壇玩玩,或者想學習nodejs的同窗能夠立刻上手了。html
示例環境:node
<p>CentOS v6.5,node.js v0.10.28 ,Redis v2.8.9 , nginx v1.6.0</p> ## 1、安裝基礎依賴 首先安裝依賴軟件。這裏基本上使用下載安裝,各版本的Linux也可以使用各自的包管理器進行更快捷的安裝。Nodebb依賴node.js,數據庫使用Mongo或redis。這裏以redis爲例。 ### 安裝nodejs 在[nodejs下載頁面][6]選擇須要的nodejs版本進行下載。解壓後便可使用。以64位Linux版本爲例: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:nginx
cat << EOF >> /etc/profile PATH=\$PATH:/path/to/node/bin export PATH EOF source /etc/profile
注意這裏爲了避免對PATH變量進行替換,使用了""對$進行了轉義。若是使用vi進行編輯就不用加""了。git
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:github
cat << EOF >> /etc/profile PATH=\$PATH:/path/to/redis/src export PATH EOF source /etc/profile
須要注意的是source只把腳本對應的環境變量修改了,腳本執行完畢後若是想使用新改的變量,能夠在當前環境下source /etc/profile
或啓動另外一終端。redis
安全起見,使用redis加上密碼。在redis.conf中加入requirepass password
數據庫
啓動redis: redis-server ./redis.confnpm
測試redis: redis-cli auth password瀏覽器
安裝NodeBB須要使用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
完成上一步,安裝就基本完成了。若是服務器存在多個應用須要使用80端口,可使用nginx監聽80端口,對應用進行代理。
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目錄下修改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;
sbin/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