如何在 Ubuntu 22.04 上安装 NodeBB 论坛
NodeBB 是一款由 Node.js 框架提供支持的现代论坛软件。 它使用 MongoDB、PostgreSQL 或 Redis 数据库来存储数据。 它利用网络套接字进行实时通知和即时交互。 它具有社交网络集成、插件支持、移动响应能力和完整的 REST 读/写 API 等现代功能。
NodeBB 可作为开源自托管项目和云服务使用。 在本教程中,您将学习如何在 Ubuntu 22.04 服务器上使用 Nginx 安装 NodeBB 论坛。 Ubuntu 22.04 并未正式支持 MongoDB; 因此,我们将使用PostgreSQL来存储数据。
先决条件
-
运行 Ubuntu 22.04 且 RAM 至少为 1GB 的服务器。
-
具有 sudo 权限的非 root 用户。
-
简单的防火墙(UFW)已启用并正在运行。
-
指向服务器的完全限定域名 (FQDN),例如:
forum.example.com
。 -
一切都更新了。
$sudo apt update && sudo apt upgrade
第 1 步 – 配置防火墙
在安装任何软件包之前,第一步是将防火墙配置为允许 HTTP 和 HTTPS 连接。
检查防火墙的状态。
$sudo ufw status
您应该会看到类似以下内容的内容。
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
允许 HTTP 和 HTTPs 端口。
$sudo ufw allow http $sudo ufw allow https
再次检查状态以确认。
$sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
第 2 步 – 安装 PostgreSQL
安装 PostgreSQL 的第一步是添加其 GPG 密钥。
$curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
将 APT 存储库添加到您的源列表中。
$sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
更新系统存储库。
$sudo apt update
现在,您可以安装 PostgreSQL。
$sudo apt install postgresql postgresql-contrib
检查 PostgreSQL 服务的状态。
$sudo systemctl status postgresql ? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Sat 2022-09-10 06:25:11 UTC; 13s ago Process: 12083 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 12083 (code=exited, status=0/SUCCESS) CPU: 1ms Sep 10 06:25:11 nodebb systemd[1]: Starting PostgreSQL RDBMS... Sep 10 06:25:11 nodebb systemd[1]: Finished PostgreSQL RDBMS.
步骤 3 – 配置 PostgreSQL
我们需要为 Postgres 默认管理用户设置密码 postgres
。 首先,登录 Postgres Shell。
$sudo -u postgres psql
输入以下命令更改密码。
postgres=# \password postgres
系统将提示您输入新密码。
Enter new password for user "postgres": Enter it again:
为 NodeBB 创建一个新用户。
postgres=# CREATE ROLE nbbuser WITH LOGIN ENCRYPTED PASSWORD 'YourNodeBBPassword';
为 NodeBB 创建一个新数据库。
postgres=# CREATE DATABASE nodebbdb OWNER nbbuser;
类型 \q
退出外壳程序。
postgres=# \q
第 4 步 – 安装 Node.js
由于Nodebb论坛是使用Node.js框架编写的,因此我们需要安装它才能运行。
发出以下命令来安装 Nodejs 的 LTS(v16.x) 版本。
$curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash - $sudo apt install nodejs
验证 Node.js 和 NPM 的安装。
$node -v v16.17.0 $npm -v 8.15.0
第 5 步 – 安装 Git
在继续安装 NodeBB 之前,我们需要安装 Git。 运行以下命令来安装 Git。
$sudo apt install git
执行以下命令,完成Git的初始配置。
$git config --global user.name "Your Name" $git config --global user.email "[email protected]"
第 6 步 – 安装 NodeBB
不建议以 root 用户身份运行 NodeBB。 创建一个没有密码的非特权系统用户。
$sudo adduser nodebb --disabled-password
跳过所有其他选项。
创建 NodeBB 论坛所在的目录。
$sudo mkdir /var/www/html/nodebb -p
将文件夹的所有权更改为新创建的用户。
$sudo chown -R nodebb:nodebb /var/www/html/nodebb
登录新创建的用户。
$sudo su - nodebb
切换到NodeBB安装目录。
$cd /var/www/html/nodebb
要安装 NodeBB,首先,我们需要克隆其 GitHub 存储库。
将 NodeBB 克隆到 /var/www/nodebb
目录。 命令末尾的点表示当前目录。
$git clone -b v2.x https://github.com/NodeBB/NodeBB.git .
在这里,我们克隆了 NodeBB 的 v2.x 分支,其中包含 NodeBB 的最新稳定版本。 您可以从 NodeBB 的最新分支页面找到最新的稳定分支。
NodeBB 附带了一个命令行实用程序。 使用以下命令安装 NodeBB。
$./nodebb setup
您可以按 Enter 键选择默认值。
2022-09-10T10:10:27.957Z [2633] - info: NodeBB Setup Triggered via Command Line Welcome to NodeBB v2.5.2! This looks like a new installation, so you'll have to answer a few questions about your environment before we can proceed. Press enter to accept the default setting (shown in brackets). URL used to access this NodeBB (http://localhost:4567) https://forum.example.com Please enter a NodeBB secret (44fd62bc-5047-4414-a4ca-83105740b624) Would you like to submit anonymous plugin usage to nbbpm? (yes) no Which database to use (mongo) postgres 2022-09-10T10:10:43.237Z [2633] - info: Now configuring postgres database: Host IP or address of your PostgreSQL instance (127.0.0.1) Host port of your PostgreSQL instance (5432) PostgreSQL username nbbuser Password of your PostgreSQL database PostgreSQL database name (nodebb) nodebbdb Enable SSL for PostgreSQL database access (false) ........
对于用于访问此 NodeBB 的 URL 的值,请选择您要访问论坛的最终 URL。 如果您将通过服务器 IP 访问论坛,请输入该 IP 或输入论坛的完整域名。 这里我们将输入 https://forum.example.com
。 选择 no
作为有关提交匿名插件使用情况的问题的答案。 类型 postgres
作为数据库类型。
然后按 Enter 键选择默认主机 IP 和端口,并输入您的 PostgreSQL 用户名(即输入 nbbuser 时的用户名)以及您之前在配置 MongoDB 时为该用户名选择的密码。 应选择您的数据库nodebbdb。
您还将被要求创建管理员用户及其详细信息。
..... 2022-09-10T10:11:14.121Z [2633] - warn: No administrators have been detected, running initial user setup Administrator username navjot Administrator email address [email protected] Password Confirm Password ..... .... 2022-09-10T10:14:28.160Z [2633] - info: [build] Asset compilation successful. Completed in 118.777sec. ================================================================================================================================================================= NodeBB Setup Completed. Run "./nodebb start" to manually start your NodeBB server.
设置完成后,运行以下命令启动 NodeBB。
$./nodebb start Starting NodeBB "./nodebb stop" to stop the NodeBB server "./nodebb log" to view server output "./nodebb help" for more commands
退出NodeBB用户。
$exit
第 7 步 – 将 NodeBB 作为系统服务运行
系统重新启动后,NodeBB 服务将不会运行。 为了避免每次都启动 NodeBB,我们需要将其安装为系统服务。
首先停止NodeBB服务。 切换到NodeBB目录,然后直接运行命令 sudo -u
命令。
$cd /var/www/html/nodebb
$sudo -u nodebb ./nodebb stop
运行以下命令创建并编辑 nodebb.service
systemd 单元配置文件。
$sudo nano /etc/systemd/system/nodebb.service
将以下代码粘贴到编辑器中。
[Unit] Description=NodeBB Documentation=https://docs.nodebb.org After=system.slice multi-user.target postgresql.service [Service] Type=simple User=nodebb StandardError=syslog SyslogIdentifier=nodebb Environment=NODE_ENV=production WorkingDirectory=/var/www/html/nodebb ExecStart=/usr/bin/env node loader.js --no-silent --no-daemon Restart=always [Install] WantedBy=multi-user.target
这里我们选择的用户名是 nodebb
我们在步骤 6 中创建了它,并选择了在其中安装 NodeBB 的路径。
启用NodeBB服务。
$sudo systemctl enable nodebb
启动NodeBB服务。
$sudo systemctl start nodebb
检查服务的状态。
$sudo systemctl status nodebb ? nodebb.service - NodeBB Loaded: loaded (/etc/systemd/system/nodebb.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-09-11 21:41:07 UTC; 2s ago Docs: https://docs.nodebb.org Main PID: 26844 (node) Tasks: 18 (limit: 2237) Memory: 94.1M CPU: 2.114s CGroup: /system.slice/nodebb.service ??26844 node loader.js --no-silent --no-daemon ??26855 /usr/bin/node /var/www/html/nodebb/app.js Sep 11 21:41:07 forum systemd[1]: Started NodeBB. Sep 11 21:41:07 forum nodebb[26844]: NodeBB v2.5.2 Copyright (C) 2013-2022 NodeBB Inc. Sep 11 21:41:07 forum nodebb[26844]: This program comes with ABSOLUTELY NO WARRANTY. Sep 11 21:41:07 forum nodebb[26844]: This is free software, and you are welcome to redistribute it under certain conditions. Sep 11 21:41:07 forum nodebb[26844]: For the full license, please visit: http://www.gnu.org/copyleft/gpl.html Sep 11 21:41:07 forum nodebb[26844]: Clustering enabled: Spinning up 1 process(es). Sep 11 21:41:08 forum nodebb[26855]: 2022-09-11T21:41:08.002Z [4567/26855] - info: Initializing NodeBB v2.5.2 https://forum.example.com
第 8 步 – 安装 Nginx
Ubuntu 22.04 附带旧版本的 Nginx。 要安装最新版本,您需要下载官方 Nginx 存储库。
导入 Nginx 的签名密钥。
$curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
添加 Nginx 稳定版本的存储库。
$echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
更新系统存储库。
$sudo apt update
安装 Nginx。
$sudo apt install nginx
验证安装。
$nginx -v nginx version: nginx/1.22.0
启动 Nginx 服务器。
$sudo systemctl start nginx
第 9 步 – 安装 SSL
我们需要安装 Certbot 来生成 SSL 证书。 您可以使用 Ubuntu 的存储库安装 Certbot,也可以使用 Snapd 工具获取最新版本。 我们将使用 Snapd 版本。
Ubuntu 22.04 默认安装了 Snapd。 运行以下命令以确保您的 Snapd 版本是最新的。
$sudo snap install core $sudo snap refresh core
安装证书机器人。
$sudo snap install --classic certbot
使用以下命令确保 Certbot 命令可以通过创建指向该命令的符号链接来运行 /usr/bin
目录。
$sudo ln -s /snap/bin/certbot /usr/bin/certbot
运行以下命令生成 SSL 证书。
$sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d forum.example.com
上述命令将下载证书到 /etc/letsencrypt/live/forum.example.com
您服务器上的目录。
生成 Diffie-Hellman 组证书。
$sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
要检查 SSL 续订是否正常工作,请试运行该过程。
$sudo certbot renew --dry-run
如果没有看到任何错误,则一切都已准备就绪。 您的证书将自动更新。
第10步-配置Nginx
打开文件 /etc/nginx/nginx.conf
进行编辑。
$sudo nano /etc/nginx/nginx.conf
在该行之前添加以下行 include /etc/nginx/conf.d/*.conf;
。
server_names_hash_bucket_size 64;
按 Ctrl + X 并在出现提示时输入 Y 保存文件。
创建并打开文件 /etc/nginx/conf.d/nodebb.conf
进行编辑。
$sudo nano /etc/nginx/conf.d/nodebb.conf
将以下代码粘贴到其中。 代替 forum.example.com
与您的域名。 确保的值 client_max_body_size
设置为25MB来设置论坛的上传大小。
server { listen 80 default_server; server_name forum.example.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name forum.example.com; http2_push_preload on; # Enable HTTP/2 Server Push ssl_certificate /etc/letsencrypt/live/forum.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/forum.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/forum.example.com/chain.pem; ssl_session_timeout 1d; # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC). ssl_protocols TLSv1.2 TLSv1.3; # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to # prevent replay attacks. # # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data ssl_early_data on; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; client_max_body_size 25M; gzip on; gzip_min_length 1000; gzip_proxied off; gzip_types text/plain application/xml text/javascript application/javascript application/x-javascript text/css application/json; add_header X-Early-Data $tls1_3_early_data; location / { # Socket.IO Support proxy_set_header Connection "upgrade"; proxy_set_header Upgrade $http_upgrade; proxy_http_version 1.1; proxy_set_header Host $http_host; 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 X-NginX-Proxy true; proxy_set_header X-Frame-Options SAMEORIGIN; proxy_pass http://127.0.0.1:4567; # no trailing slash proxy_redirect off; } location @nodebb { proxy_pass http://127.0.0.1:4567; } location ~ ^/assets/(.*) { root /var/www/html/nodebb/; try_files /build/public/$1 /public/$1 @nodebb; } } # This block is useful for debugging TLS v1.3. Please feel free to remove this # and use the `$ssl_early_data` variable exposed by NGINX directly should you # wish to do so. map $ssl_early_data $tls1_3_early_data { "~." $ssl_early_data; default ""; }
按 Ctrl + X 并在出现提示时输入 Y 保存文件。
验证您的 Nginx 配置。
$sudo nginx -t
重新启动 Nginx 服务器。
$sudo systemctl restart nginx
第 11 步 – 访问和配置论坛
您可以通过访问URL访问论坛 https://forum.example.com
在您的浏览器中。 您将看到以下页面。
单击登录页面并输入您在步骤 6 中创建的管理员凭据。
您将登录。接下来,单击菜单栏顶部最右侧的图标以访问管理面板。
从这里开始,您可以管理论坛。 通过安装主题和插件来扩展它。
安装任何主题和插件后,您必须使用管理仪表板右上角的按钮重建并重新启动论坛,如下所示。
确保通过转到仪表板>>设置>>电子邮件来配置您的电子邮件服务,以便您的论坛用户可以接收电子邮件。 选择以下设置以确保设置最佳的电子邮件传送设置。
向下滚动到该页面,然后从下拉列表中选择自定义邮件程序,或者如果您的 SMTP 服务不在列表中,则使用自定义邮件程序。 在我们的教程中,我们使用 SES 服务。
单击右下角的软盘保存图标以保存设置。
向下滚动到页面底部以发送测试电子邮件。 默认情况下,它将发送禁止的电子邮件模板。 您可以选择任何其他邮件模板进行测试。 我们将发送欢迎邮件。
您将收到如下所示的测试电子邮件,确认设置。
结论
关于在 Ubuntu 22.04 服务器上使用 PostgreSQL 数据库和 Nginx 安装 NodeBB 论坛的教程到此结束。 如果您有任何疑问,请在下面的评测中发表。
资讯来源:由a0资讯编译自THECOINREPUBLIC。版权归作者A0资讯所有,未经许可,不得转载