Linux 搭建 Nodebb 论坛指南 - 安装篇

本贴最后更新于 2845 天前,其中的信息可能已经东海扬尘

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 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 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

  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖 • 43 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...