序
自从手头那台老奔腾虚拟化了之后,可以虚拟出很多很多的测试环境了,于是打算着手尝试安装最近比较火的NodeBB论坛程序。
AppNode简介
AppNode 是一款 Linux 服务器集群管理软件,它基于 Web 页面实现对 Linux 服务器的可视化管理。不但可以帮助不熟悉 Linux 命令的用户无障碍地管理他们的 Linux 服务器,也可以帮助 Linux 运维人员提升运维管理效率。
AppNode 前身为 VPSMate,2012年在阿里云开发者大赛夺得超级工具大奖。VPSMate 由于小巧轻便,并首次实现了在服务器面板上按需安装软件,属国内首创,并风靡一时。2014年11月,该产品重新立项并命名为 AppNode。
AppNode已于2017年11月01日起永久免费了,详见本博博文:
AppNode VPS管理面板即日起永久免费啦!
从接触静态页面使用免费虚拟空间(隐约记得好像叫5944免费静态虚拟空间,网站底部还挂广告那种),到后来自己公司服务...
免费版的AppNode仅可以搭建三个网站,包括反代。
NodeBB简介
NodeBB 是一种基于 Node.js 构建的电子公告牌系统(Bulletin Board System)。事实上,NodeBB已经不能说是一种单纯的 BBS 系统了。相对于传统的BBS,它的风格其实更偏向于 WeCenter 这种话题类的平台(Platform),也就是说它可能并不是十分适合有 传统BBS 需求的站长。
NodeBB的优势在于 即时通讯技术 和 瀑布流消息的呈现模式,这主要得益于 Socket.io 提供的 ajax 解决方案(WebSocket > Long polling)。可以说,NodeBB能够吸引人的其实就是它这种十分友好,流畅的用户之间的交互。
NodeBB 的插件结构十分自由,也十分的开放。 与此同时 NodeBB 的原生系统其实十分的简陋 ,例如:缺少完善的权限系统,缺少完善的积分系统,未自带完善的社会化登录(SSO)等。
安装CentOS最新版
操作系统安装属于最基础的工作了,在开始之前一定要准备一个纯净的CentOS系统并update到最新,本文根据本地环境简单讲一下大致的步骤。
-
从官网下载CentOS最小化安装包。
- 官网:https://www.centos.org/
- 阿里云镜像下载地址:CentOS-7-x86_64-Minimal-1708.iso
-
使用UltraISO软碟通刻录镜像到U盘或光盘:软碟通UltraISO V9.66.3300 绿色版&单文件版
-
使用U盘或光盘引导安装界面启动。
网上有很多CentOS安装教程,这里不会请自行百度解决。
-
系统安装完成后需要做的操作如下:
安装wget
[root@localhost ~]# yum -y install wget
安装vim
[root@localhost ~]# yum install vim
关闭 SELinux
[root@localhost ~]# vim /etc/sysconfig/selinux #找到 SELINUX 然后修改成 disabled.
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
修改当前yum源为阿里yum源
备份当前的yum源
[root@localhost ~]# mv /etc/yum.repos.d /etc/yum.repos.d.backup
新建空的yum源设置目录
[root@localhost ~]# mkdir /etc/yum.repos.d
下载阿里云的yum源配置
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
重建缓存
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache
更新系统到最新:
[root@localhost ~]# yum -y update
安装AppNode面板
从AppNode官方网站获取安装命令。因为NodeBB不需要网站管理所以之选择"同时安装控制中心和受控端",如下:
[root@localhost ~]# INSTALL_AGENT=1 INIT_SWAPFILE=1 bash -c "$(curl -sS http://dl.appnode.com/install.sh)"
AppNode安装帮助详见:AppNode使用手册
特别说明:
安装好AppNode面板之后一定要记得关闭计划任务
功能,否则每天晚上4点在AppNode执行计划任务之后就会清理掉node的进程切不会自动重启,原因未知。关闭方法如下图:
在应用列表选中
计划任务
后查看右边的运行状态,如果处于运行中
请点击黄色箭头所示的位置,去掉自启
选项并点击停止
按钮。
安装node.js
1.AppNode面板安装完成之后使用http://你的IP:8888
访问AppNode面板
2.登录后进入桌面
选择软件管家
并搜索node
在搜索结果中点击Node.js
右侧的一键安装
如下图
在弹出的对话框中保持默认项并单击立即安装
即可。
3.安装结束后点击左侧应用列表
刷新按钮后可以在左侧看到新安装的应用Node.js
,选中在右侧Node.js版本管理
中选择安装新版本
,选择Node.js
下载点为淘宝镜像
,点击下一步
选择v8.9.3 LTS
点击立即安装
。
安装Redis
再次进入桌面
选择软件管理
搜索redis
在搜索结果中点击Redis服务器
右侧的一键安装
如下图
在弹出的对话框中保持默认项并单击立即安装
即可。
安装完成后点击左侧应用列表
刷新按钮选中新装的Redis服务器
勾选自启
并点击启动
按钮来启动Redis服务器。
Git客户端
再次进入桌面
选择软件管理
搜索git
在搜索结果中点击Git客户端
右侧的安装
如下图
到这一步NodeBB所需要的环境基本上都准备好了,下面开始安装NodeBB!
安装NodeBB
使用AppNode自带的命令终端
可以方便快捷的输入所需命令,如下图:
1.从 Github 上克隆 NodeBB 的发布版本分支
如果你的下载速度不理想也可以使用国内的镜像仓库(
https://gitee.com/NodeBB-CN/NodeBB.git,只需替换下面第二行代码中的https://github.com/NodeBB/NodeBB即可。
)
[root@localhost ~]# cd /home #把目录替换为你想安装到的地方
[root@localhost home]# git clone -b v1.7.x https://github.com/NodeBB/NodeBB nodebb
2.进行初始化设置
[root@localhost home]# shutdown -r now #在初始化之前你需要重启一下你的服务器,否则可能会出现异常
[root@localhost ~]# npm -v #检查npm版本信息
5.5.1
[root@localhost ~]# node -v #检查node版本信息
v9.3.0
[root@localhost ~]# cd /home/nodebb #替换为上面你修改的目录 + /nodebb
[root@localhost nodebb]# ./nodebb setup
安装过程中会有一些初始化信息需要填写,如下:
URL used to access this NodeBB (http://localhost:4567) http://192.168.0.92:4567 #这里要求输入访问的网址,可以在/home/nodebb/config.json中修改,本文为本地演示所以直接填写本机IP地址。
Please enter a NodeBB secret (4cce2df1-xxxx-4d41-8192-axxxxxxxxxx) #这里默认直接回车即可
Which database to use (mongo) redis #由于本文选择的redis数据库所以这里填写redis!
Now configuring redis database: #请求配置redis数据库服务器信息
Host IP or address of your Redis instance (127.0.0.1) #redis数据库服务器地址,默认为本机
Host port of your Redis instance (6379) #redis数据库服务器端口
Password of your Redis database #redis数据库密码
Which database to use (0..n) (0) #redis数据库名称
Configuration Saved OK #配置完成
Administrator username admin #输入论坛管理员帐号`admin`改成你的帐号
Administrator email address youremail@yourdomain.com #输入论坛管理员邮箱`youremail@yourdomain.com`改成你的邮箱
Password #输入论坛管理员密码
Confirm Password #论坛管理员密码确认
================================此处省略配置执行过程================================
NodeBB Setup Completed. Run "./nodebb start" to manually start your NodeBB server.
上面一系列的初始化配置完成之后会提示你启动NodeBB./nodebb start
。
[root@localhost nodebb]# ./nodebb start
Starting NodeBB
"./nodebb stop" to stop the NodeBB server
"./nodebb log" to view server output
"./nodebb help" for more commands
输入启动命令,抛出命令结果。
更多NodeBB命令可以使用如下方式查询:
[root@localhost nodebb]# ./nodebb ?
本文列出常用命令如下:
[root@localhost nodebb]# ./nodebb start #启动
[root@localhost nodebb]# ./nodebb stop #停止
[root@localhost nodebb]# ./nodebb restart #重启
[root@localhost nodebb]# ./nodebb status #状态
[root@localhost nodebb]# ./nodebb log #日志
到此NodeBB 安装成功,输入http://你的IP:4567
访问你的论坛吧!
Now!
Enjoy your Discuss!
优化NodeBB
默认情况下,NodeBB将在一个进程上运行,某些调用可能比其他进程更长,从而导致相同资源的延迟或队列等待。
要解决这个问题,可以通过添加多个端口到config.json中来指示NodeBB在多个进程上运行。
{
"port": ["4567", "4568", "4569"] //这将启动3个进程,分别监听这3个端口
}
请记住,使用 node loader.js
或 ./nodebb start
来启动程序,这样才会产生 3 个进程。
若使用 node app.js 将只会启动一个监听端口组第一个成员的进程!
需要像Nginx这样的代理服务器,以便在所有服务器之间进行负载均衡请求。 请将将下面的块添加到您的配置中(请根据实际修改):
upstream io_nodes {
ip_hash;
server 127.0.0.1:4567;
server 127.0.0.1:4568;
server 127.0.0.1:4569;
}
并将下文反代规则中的 proxy_pass
值改为:proxy_pass http://io_nodes;
设置反代
上一步我们安装好了nodebb,但是需要通过4567端口才能访问。现在我们设置一下反代服务,支持通过域名访问网站。
反代服务器 有很多种,但这里我们选取的是最流行也是性能最优秀的反代服务: Nginx
1.首先,安装nginx
yum install nginx
2.设置nginx反代规则
cd /etc/nginx/conf.d
nano example.conf
规则如下(www重定向至no-www,如果不需要,可以自己修改)
server {
listen 80;
server_name www.example.com;
return 301 http://example.com$request_uri;
}
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";
}
}
3.重启让 Nginx 配置生效
service nginx reload
如果出现如下错误:
nginx: [emerg] could not build server_names_hash, you should increase server_names_hash_bucket_size: 32
nginx: configuration file /etc/nginx/nginx.conf test failed
修改 nginx.conf,在 http{} 添加:
server_names_hash_bucket_size 64;
保存,退出,启动nginx
本文部分内容摘录自NodeBB热