如何在Fedora 28上安装NodeBB论坛

NodeBB是一个基于Node.js的论坛。它利用Web套接字进行即时交互和实时通知。NodeBB源代码公开托管在Github上。本指南将引导您在新的Fedora 28 Vultr实例上使用Node.js,MongoDB作为数据库,Nginx作为反向代理以及Acme.sh获得SSL证书,从而完成NodeBB的安装过程。

要求

NodeBB要求安装以下软件:

  • 吉特
  • Node.js版本6.9.0或更高版本
  • MongoDB 2.6或更高版本
  • Nginx的
  • 最小1024MB RAM
  • 带有A/ AAAA记录的域名

在你开始之前

检查Fedora版本。

cat /etc/fedora-release
# Fedora release 28 (Twenty Eight)

创建一个具有访问权限的新非root用户帐户sudo并切换到该帐户。

useradd -c "John Doe" johndoe && passwd johndoe
usermod -aG wheel johndoe
su - johndoe

注意用您的用户名替换johndoe

设置时区。

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

确保您的系统是最新的。

sudo dnf check-upgrade || sudo dnf upgrade -y

安装必要的软件包。

sudo dnf install -y git wget vim gcc-c++ make

为简单起见,请禁用SELinux和防火墙。

sudo setenforce 0
sudo systemctl stop firewalld
sudo systemctl disable firewalld

安装Node.js

NodeBB由Node.js驱动,因此需要安装。建议安装当前LTS版本的Node.js。

安装Node.js。

sudo dnf install -y nodejs

验证Node.js和npm的安装。

node -v && npm -v
# v8.11.3
# 5.6.0

安装和配置MongoDB

MongoDB是NodeBB的默认数据库。

安装MongoDB。

sudo dnf install -y mongodb mongodb-server

检查版本。

mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v3.6.3
# db version v3.6.3

启用并启动MongoDB服务。

sudo systemctl enable mongod.service
sudo systemctl start mongod.service

为NodeBB创建MongoDB数据库和用户。

首先连接到MongoDB服务器。

mongo

切换到内置admin数据库。

> use admin

创建一个管理用户。

> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )

注意: 用您自己选择的密码替换占位符<Enter a secure password>

添加一个名为的新数据库nodebb

> use nodebb

将创建数据库并将上下文切换到nodebb。接下来nodebb,使用适当的权限创建用户。

> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

注意: 同样,请<Enter a secure password>使用您自己选择的密码替换占位符。

退出Mongo Shell。

> quit()

重新启动MongoDB,并验证先前创建的管理用户是否可以连接。

sudo systemctl restart mongod.service
mongo -u admin -p your_password --authenticationDatabase=admin

安装和配置Nginx

安装Nginx。

sudo dnf install -y nginx

检查版本。

sudo nginx -v
# nginx version: nginx/1.12.1

启用并启动Nginx。

sudo systemctl enable nginx.service
sudo systemctl start nginx.service

默认情况下,NodeBB在port上运行4567。为避免输入http://example.com:4567,我们将Nginx配置为NodeBB应用程序的反向代理。端口80443如果使用SSL)上的每个请求都将转发到端口4567

运行sudo vim /etc/nginx/conf.d/nodebb.conf并使用下面的基本反向代理配置填充它。

server {

  listen [::]:80;
  listen 80;

  server_name forum.example.com;

  root /usr/share/nginx/html;

  client_max_body_size 50M;

  location /.well-known/acme-challenge/ {
    allow all;
  }

  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_hide_header X-Powered-By;
    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";
  }

}

在上面的配置中,server_name使用您的域名/主机名更新指令。

检查配置。

sudo nginx -t

重新加载Nginx。

sudo systemctl reload nginx.service

安装Acme.sh客户端并获取Let's Encrypt证书(可选)

不需要使用HTTPS保护论坛安全,但这可以保护您网站的流量。Acme.sh是一个纯unix shell软件,用于以零依赖关系从Let's Encrypt获得SSL证书。

下载并安装Acme.sh。

sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~
source ~/.bashrc

检查版本。

/etc/letsencrypt/acme.sh --version
# v2.7.9

获取forum.example.com域名/主机名的RSA和ECDSA证书。

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d forum.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo systemctl reload nginx.service" --accountemail [email protected] --ocsp-must-staple --keylength 2048
# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d forum.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo systemctl reload nginx.service" --accountemail [email protected] --ocsp-must-staple --keylength ec-256

运行上述命令后,您的证书和密钥将位于以下目录中:

  • RSA: /etc/letsencrypt/forum.example.com
  • ECC / ECDSA: /etc/letsencrypt/forum.example.com_ecc

从“加密”获取证书后,我们需要配置Nginx来使用它们。

sudo vim /etc/nginx/conf.d/nodebb.conf再次运行,并将Nginx配置为HTTPS反向代理。

server {

  listen [::]:443 ssl http2;
  listen 443 ssl http2;
  listen [::]:80;
  listen 80;

  server_name forum.example.com;

  root /usr/share/nginx/html;

  client_max_body_size 50M;

  location /.well-known/acme-challenge/ {
    allow all;
  }

  # RSA
  ssl_certificate /etc/letsencrypt/forum.example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/forum.example.com/forum.example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/forum.example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/forum.example.com_ecc/forum.example.com.key;

  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";
  }

}

检查配置。

sudo nginx -t

重新加载Nginx。

sudo systemctl reload nginx.service

安装NodeBB

创建一个文档根目录。

sudo mkdir -p /var/www/nodebb

/var/www/nodebb目录的所有权更改为johndoe

sudo chown -R johndoe:johndoe /var/www/nodebb

导航到文档根文件夹。

cd /var/www/nodebb

将最新的NodeBB克隆到文档根文件夹中。

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

运行NodeBB setup命令,并在出现提示时回答每个问题。

./nodebb setup

NodeBB设置完成后,运行./nodebb start以手动启动NodeBB服务器。

./nodebb start

执行此命令后,您将能够在Web浏览器中访问您的论坛。

将NodeBB作为系统服务运行

当通过启动时./nodebb start,NodeBB将不会在系统重新启动时自动再次启���。为避免这种情况,我们需要将NodeBB设置为系统服务。

如果它正在运行,请停止NodeBB。

./nodebb stop

创建一个新nodebb用户。

sudo useradd nodebb

/var/www/nodebb目录的所有权更改为nodebbuser。

sudo chown -R nodebb:nodebb /var/www/nodebb

创建nodebb.service系统单元配置文件。该单元文件将处理NodeBB守护进程的启动。运行sudo vim /etc/systemd/system/nodebb.service并使用以下内容填充文件。

[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service

[Service]
Type=forking
User=nodebb

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodebb

Environment=NODE_ENV=production
WorkingDirectory=/var/www/nodebb
PIDFile=/var/www/nodebb/pidfile
ExecStart=/usr/bin/env node loader.js
Restart=always

[Install]
WantedBy=multi-user.target

注意: 根据您选择的名称设置用户名和目录路径。

nodebb.service在重新启动时启用并立即启动nodebb.service

sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service

检查nodebb.service状态。

sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service

而已。您的NodeBB实例现已启动并正在运行。



Leave a Comment

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Fedora 29上安装Attendize

如何在Fedora 29上安装Attendize

使用其他系统?简介Attendize是一个基于Laravel PHP框架的开源门票销售和事件管理平台。Attendiz

如何在Fedora 28上安装Bludit CMS

如何在Fedora 28上安装Bludit CMS

使用其他系统?Bludit是一个用PHP编写的简单,快速且灵活的博客CMS。Bludit使用JSON格式的文件来存储内容,因此您不必

如何在Fedora 26 LAMP VPS上安装Couch CMS 2.0

如何在Fedora 26 LAMP VPS上安装Couch CMS 2.0

使用其他系统?Couch CMS是一个简单,灵活,免费和开源的内容管理系统(CMS),可让Web设计人员进行设计

如何在Fedora 28上安装BookStack

如何在Fedora 28上安装BookStack

使用其他系统?BookStack是一个简单的自托管平台,用于组织和存储信息。BookStack是完全免费且开源的,

如何在Fedora 25上部署Ghost v0.11 LTS

如何在Fedora 25上部署Ghost v0.11 LTS

使用其他系统?Ghost是一个开放源代码博客平台,自201年以来一直在开发人员和普通用户中广受欢迎。

如何在Fedora 28上安装AWStats

如何在Fedora 28上安装AWStats

AWStats是用于分析Web流量的有用工具。可以通过浏览器访问其HTML界面,从而轻松了解谁在查看您

如何在CentOS 8,Ubuntu 18.04,Debian 10和Fedora 31上安装Golang 1.13

如何在CentOS 8,Ubuntu 18.04,Debian 10和Fedora 31上安装Golang 1.13

Go(也称为Golang)是Google开发的一种静态类型的,类似于C的编程语言。追求简单性和多功能性使其成为b

如何在Fedora 28上安装PyroCMS

如何在Fedora 28上安装PyroCMS

使用其他系统?PyroCMS是用PHP编写的开源CMS。PyroCMS源代码托管在GitHub上。在本指南中,请仔细阅读整个条目

如何在Fedora 26 LAMP VPS上安装BlogoText CMS

如何在Fedora 26 LAMP VPS上安装BlogoText CMS

使用其他系统?BlogoText CMS是一个简单,轻便,免费和开源的内容管理系统(CMS)和极简博客引擎

在Fedora 26上安装TaskServer(taskd)

在Fedora 26上安装TaskServer(taskd)

使用其他系统?TaskWarrior是一个开源时间管理工具,它是对Todo.txt应用程序及其克隆的改进。由于

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

使用其他系统?Akaunting是专为小型企业和自由职业者设计的免费,开源和在线会计软件。它是机智建造的

如何在Fedora 29上安装Kanboard

如何在Fedora 29上安装Kanboard

使用其他系统?简介Kanboard是一个免费的开源项目管理软件程序,旨在促进和可视化。

如何在Fedora 28上安装Neos CMS

如何在Fedora 28上安装Neos CMS

使用其他系统?Neos是一个以CMS和应用程序框架为核心的内容应用程序平台。本指南将向您展示如何安装

如何在Fedora 28上安装DokuWiki

如何在Fedora 28上安装DokuWiki

使用其他系统?DokuWiki是用PHP编写的开源Wiki程序,不需要数据库。它将数据存储在文本文件中。德库维克

如何在Fedora 26 LAMP VPS上安装Paste 2.1

如何在Fedora 26 LAMP VPS上安装Paste 2.1

使用其他系统?Paste 2.1是一个简单,灵活,免费和开源的pastebin应用程序,用于存储代码,文本等。最初是

如何在Fedora 26 LAMP VPS上安装Redaxscript 3.2 CMS

如何在Fedora 26 LAMP VPS上安装Redaxscript 3.2 CMS

使用其他系统?Redaxscript 3.2 CMS是一款现代,超轻量级,免费和开源的内容管理系统(CMS),具有火箭fas

如何在Fedora 30上安装和配置TaskBoard

如何在Fedora 30上安装和配置TaskBoard

使用其他系统?简介TaskBoard是一个免费的开源工具,可以用来跟踪需要完成的事情。它提供

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。