nodebb在阿里云的安装与踩坑

nodebb是一个基于nodejs的社区论坛系统,昨天突发奇想想要安装体验一下,发现想在服务器上安装还真麻烦,找了多个教程终于搞了一天之后给安装了上去,网上的其他教程多半是一个服务器对应一个网站,但是对于我一个服务器多个网站的人来说还是走了不少弯路。

一、服务器环境

温馨提示:如果你用的是虚拟空间的话,后面的内容可以不用看了,省点力气折腾其他的吧

服务器使用的阿里云服务器,安装nodebb使用的是Redis保存数据,

1.1、文件夹分布

因为在服务器上运行着多个网站,所以需要单独为nodebb的程序建立一个文件夹,这里以文件夹的名字askdrycom为例,那么服务器多个网站的目录就是wwwroot/askdrycomwwwroot/hudongdongcom……这样的单独文件夹,每个文件夹对应每个网站。

目录绑定.png

在服务器后台,绑定域名的时候,如node.hudongdong.com,使用默认的80端口绑定的网站目录就是wwwroot/askdrycom,多个域名都是用80端口绑定即可。

文件夹绑定.png

可以自己手动创建目录并且绑定,也可以使用例如宝塔面板等可视化控制界面去创建文件夹并且绑定域名。

注意:使用控制面板创建文件夹的时候很多会默认创建index.html这种初始化数据,绑定之后,记得把这个文件夹里的这些初始化东西全删除掉,留一个干净的文件夹。后面使用git拉取nodebb的代码时,需要是空白的文件夹

1.2、端口设置

nodebb的默认端口是4567,redis的默认端口是6379,所以要将服务器的4567和6379端口打开,在阿里云的安全组里面,添加4567/4567的端口允许,6379/6379同样设置允许。

阿里云安全组.png

如果服务器使用的是宝塔控制面板,除了在阿里云的安全组里面设置,也要在控制面板里面添加放行这两个端口。

宝塔面板.png

二、搭建nodebb

搭建nodebb基本上就是复制下面的这些命令行去执行了,去阿里云服务器后台,远程连接,连接成功之后,输入创建实例时的root账号和密码登录,登录成功之后就是输入命令行搭建了,这个都不知道的话建议先百度下。

远程连接.png

2.1、进入对应的文件夹

通过执行cd命令,进入之前创建的wwwroot/askdrycom文件夹里面

2.2、更新centos的环境

可以分步执行下面的命令

yum -y update
yum -y install epel-release  (centos6可以不用运行这条命令)

2.3、安装基础必需软件

yum -y groupinstall "Development Tools"
yum -y install git redis ImageMagick npm

2.4、现在使用nvm进行安装nodejs

curl https://raw.githubusercontent.com/creationix/nvm/v0.13.1/install.sh | bash
source ~/.bash_profile
export NVM_NODEJS_ORG_MIRROR=http://npm.taobao.org/mirrors/node
export NVM_IOJS_ORG_MIRROR=http://npm.taobao.org/mirrors/iojs
nvm list-remote

执行完这个list命令之后,会列举出来nvm的版本,可以选择最新版,比如10.0.0安装

nvm install v10.0.0

2.5、使用cnpm代替npm

npm install -g cnpm --registry=https://registry.npm.taobao.org

2.6、启动redis并设置开机自启

systemctl start redis
systemctl enable redis

2.7、从github上下载nodebb安装文件

完成以上配置之后,服务器的环境配置就ok了,就可以开始安装nodebb了,

因为不是创建子文件夹,所以先移动到wwwroot目录

cd ..

然后在wwwroot目录下面执行下面的命令,将nodebb的文件下载到askdrycom的这个子目录,1.x.x修改为NodeBB最新的版本,去github查看就行了。比如1.9.0,然后再执行

git clone -b v1.x.x https://github.com/NodeBB/NodeBB askdrycom

2.8、进行安装nodebb

下载完成之后,进入到这个子目录

cd askdrycom

执行安装

cnpm install

2.9、进行初始化设置

安装完成之后,开始nodebb的配置,执行

./nodebb setup

执行这个命令会要求你填写基本配置信息,需要注意两个地方,一个是域名,一个是数据库,否则安装之后访问会报错403,因为我绑定的域名是node.hudongdong.com

填写域名的时候,默认是http://localtion:4567,设置为:http://node.hudongdong.com:4567

填写数据库的时候,默认是mangodb,设置为redis

其他全部回车使用默认值即可。

三、nginx设置

如果你已经安装过nginx,可以设置的默认规则,记得把127.0.0.1修改为你的服务器ip,example.com修改为你的域名

server {
    listen 80;

    server_name example.com;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:4567/;
        proxy_redirect off;

        # Socket.IO Support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

四、测试

可以执行

./nodebb dev

看是否有报错信息,有报错信息的话可以百度下

如果没有的话再执行

./nodebb start

开始使用即可。

五、注意事项

1、 绑定域名的时候,使用的是80端口,安装和配置的里面是4567端口,不要使用4567端口去绑定,否则会出现4567端口被占用的情况。

2、 git拉取nodebb资源过大造成超出上限报错GIT报错RPC failed;result=18, HTTP code的话,可以设置下git的资源上限,设置教程http://flarum.hudongdong.com/d/13-git-rpc-failed-result-18-http-code

3、socket.io报错403的话,是因为你在执行nodebb setup的时候填写的域名和访问的域名不一致造成的

六、参考文章

  1. 使用centos7安装nodebb
  2. WebSocket 403 Errors
Last modification:May 3rd, 2018 at 11:39 am
如果看了这个文章可以让你少加会班,可以请我喝杯可乐
已打赏名单
微信公众号

4 comments

  1. essaypinglun.wordpress.com

    收藏了,赞赞

  2. Yiveco

    你好,我在使用你的方法配置nginx时,提示了这个,请问该如何解决
    ERROR:
    nginx: [emerg] "server" directive is not allowed here in /www/server/panel/vhost/rewrite/forum.yiveco.xyz.conf:1
    nginx: configuration file /www/server/nginx/conf/nginx.conf test failed

    1. 东东
      @Yiveco

      这种报错的话基本上都是环境问题,百度一下你会发现类似答案

      比如:http://bbs.chinaunix.net/thread-4155659-1-1.html

      1. Yiveco
        @东东

        很感谢您的帮助

Leave a Comment