在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件 - 技术宅银魂 - 科技改变生活 - 万事屋

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件

Discourse 是个看似新颖其实有20多年历史的老牌论坛软件,国内用比较少而已,但好用是真的好用。

Discourse 由 StackExchange 创始人 Jeff Atwood 创建,是一个开源互联网论坛(又名在线留言板)和邮件列表管理软件,旨在彻底改变论坛讨论。它是用 Ember.js 和 Ruby on Rails 编写的,使用 PostgreSQL 作为后端数据库管理系统。

新版现在可以有AI支撑了哦~海外服务器上…

本来Docker安装很简单,但服务器挺破旧的,怕被Docker直接干死,只能试着学习网上跳过Docker,直接在Debian11上安装Discourse 论坛软件.

Discourse的特点:

  • 无限滚动。线程中没有下一页。只需向下滚动即可阅读更多内容。
  • 实时更新,拖放附件。
  • 论坛主题可以按受欢迎程度进行排名。
  • “最佳主题”视图可以显示特定主题的最佳回复。
  • 能够记住您在线程中阅读的位置。
  • 扩展 URL 以提供 URL 的摘要。
  • 用户可以通过电子邮件回复。
  • 标记系统会自动隐藏不适当的帖子,直到工作人员可以对其进行审核。
  • 版主可以拆分、合并、本地化或存档任何主题。
  • 根据信任级别,用户可以被提升为版主,或被降级为喷子、不良行为者或垃圾邮件发送者,以保持论坛文明。内置 Akismet 垃圾邮件防护和启发式方法,包括新用户沙箱、用户标志阻止和标准 nofollow。
  • 徽章系统可以显示用户所取得的成就。
  • 适合移动设备、响应式的网页设计。用户可以通过笔记本电脑、平板电脑和手机阅读或发帖。
  • 100%免费开源。没有具有更好或更完整功能的付费商业版本。
  • 单点登录。将 Discourse 与您现有站点的登录系统无缝集成。
  • 社交登录。轻松添加常见的社交登录信息,例如 Google、Facebook、Twitter 等。
  • 提供 iOS 和 Android 应用程序。
  • 有 30 多种语言版本。
  • 双因素身份验证,提高账户安全性。
  • 还有很多。

为什么在 Debian 11 上安装 Discourse 而不使用 Docker

安装 Discourse 的官方方法是使用 Docker,这对于那些想要快速启动并运行应用程序的人来说非常有用。但 Docker 也非常消耗资源。试想一下:如果你已经启动并运行了 PostgreSQL 数据库服务器等组件,那么 Docker 方法仍然会在容器内运行单独的 PostgreSQL 数据库服务器,这会浪费服务器资源。您需要 2GB RAM 服务器才能使用 Docker 运行 Discourse。我将向您展示如何在没有 docker 的情况下在 1GB RAM 服务器上运行 Discourse。

先决条件

要运行 Discourse,您需要一台至少具有 1GB RAM 的服务器。如果您正在寻找虚拟专用服务器 (VPS),我推荐 Kamatera VPS,其特点:

  • 30 天免费试用。
  • 起价为 4 美元/月(1GB RAM)
  • 基于KVM的高性能VPS
  • 全球9个数据中心,包括美国、加拿大、英国、德国、荷兰、香港和以色列。

按照下面链接的教程在 Kamatera 创建 Linux VPS 服务器。

  • 如何在 Kamatera 上创建 Linux VPS 服务器

一旦您拥有运行 Debian 11 的 VPS,请按照以下说明操作。

您还需要一个域名。我在 NameCheap 注册了我的域名,因为价格低,而且他们终身免费提供 whois 隐私保护。

注意:我在 Debian 11 上使用 sudo 用户安装了 Discourse。为了获得最佳效果,您还应该使用 sudo 用户而不是 root 用户来遵循本教程。

要添加 sudo 用户,只需运行

sudo adduser username
sudo adduser username sudo

然后切换到新用户。

su - username

第1步:配置PostgreSQL数据库服务器

通过 SSH 登录服务器,然后运行以下命令从上游存储库安装最新版本的 PostgreSQL。最新版本提供最佳性能。

echo "deb [signed-by=/etc/apt/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list

sudo mkdir -p /etc/apt/keyrings

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/keyrings/postgresql.asc

sudo apt update

sudo apt install -y postgresql postgresql-contrib

PostgreSQL 数据库服务器将自动启动并监听 127.0.0.1:5432,如以下命令所示。

sudo ss -lnpt | grep postgres

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

如果您没有看到上述命令的任何输出,可能是因为 PostgreSQL 服务器未运行。您可以通过发出以下命令来启动 PostgreSQL 服务器。

sudo systemctl start postgresql

检查状态:

sudo systemctl status [email

示例输出:

[email  - PostgreSQL Cluster 14-main
     Loaded: loaded (/lib/systemd/system/[email ; enabled-runtime; vendor preset: enabled)
     Active: active (running) since Wed 2022-06-01 08:03:16 EDT; 3 days ago
   Main PID: 548 (postgres)
      Tasks: 8 (limit: 2340)
     Memory: 28.7M
        CPU: 4s

postgres 用户将在安装过程中在操作系统上创建。它是 PostgreSQL 数据库服务器的超级用户。运行以下命令登录 PostgreSQL 控制台。

sudo -u postgres -i psql

为 Discourse 创建数据库:

CREATE DATABASE discourse;

创建数据库用户:

CREATE USER discourse_user;

为该用户设置密码

ALTER USER discourse_user WITH ENCRYPTED PASSWORD 'your_preferred_password';

将此用户设置为discourse数据库的所有者

ALTER DATABASE discourse OWNER TO discourse_user;

连接到话语数据库

\c discourse;

创建 hstorepg_trgm 扩展

CREATE EXTENSION hstore;

CREATE EXTENSION pg_trgm;

从 PostgreSQL 控制台注销

\q

步骤 2:在 Debian 11 上安装 Ruby

Discourse 需要 Ruby 2.7 或更高版本,它包含在 Debian 11 存储库中,因此运行以下命令来安装它

sudo apt install ruby ruby-dev

要检查您的 Ruby 版本号,请运行

ruby -v

输出 :

ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux-gnu]

第 3 步:下载并配置 Discourse

安装git工具

sudo apt install git

创建 /var/www/ 目录(如果尚未创建)。

sudo mkdir -p /var/www/

让 www-data 用户作为该目录的所有者。

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

从 Github 克隆 Discourse 代码存储库。

sudo -u www-data git clone https://github.com/discourse/discourse.git

更改目录并使用 Discourse 的最新稳定版本。您可以前往 Github 发布页面查看最新的稳定版本。我现在使用的是v2.8.3。

cd /var/www/discourse/

sudo -u www-data git checkout v2.8.3

安装捆绑程序:Ruby 依赖管理器。

sudo /usr/bin/gem install bundler

安装以下软件包来编译源代码。

sudo apt-get install -y gcc build-essential ruby-dev libxslt-dev libxml2-dev zlib1g-dev libpq-dev imagemagick

然后安装Discourse的依赖项。此过程可能会使用大量 RAM。

sudo -u www-data RAILS_ENV=production /usr/local/bin/bundle config set path '/var/www/discourse/vendor/bundle/'

sudo -u www-data RAILS_ENV=production /usr/local/bin/bundle install

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

将默认配置文件复制到新文件

sudo -u www-data cp config/discourse_defaults.conf config/discourse.conf

编辑新文件

sudo -u www-data nano config/discourse.conf

配置数据库连接

# host address for db server
# This is set to blank so it tries to use sockets first
db_host = localhost

# port running db server, no need to set it
db_port = 5432

# database name running discourse
db_name = discourse

# username accessing database
db_username = discourse_user

# password used to access the db
db_password = your_password
更改您的 Discourse 论坛使用的域名。

# hostname running the forum
hostname = "community.example.com"

保存并关闭文件。

第 4 步:获取免费的 MaxMind 许可证密钥

Discourse 带有内置的网络分析工具。如果您想了解访问者的地理信息,您需要 MaxMind 许可证密钥。

在 MaxMind 创建一个帐户。 Maxmind 会向您发送一封电子邮件。单击电子邮件中的链接设置密码,然后登录您的 MaxMind 帐户。接下来,选择左侧栏上的我的许可证密钥

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

单击生成新许可证密钥按钮

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

为您的许可证密钥命名。然后选择否,因为我们不需要使用geoipupdate程序。然后点击确认按钮

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

创建许可证密钥后,复制许可证密钥。打开 Discourse 配置文件

sudo -u www-data nano config/discourse.conf

找到以下行并在此处添加您的许可证密钥

maxmind_license_key=

保存并关闭文件。

第五步:开始讨论

安装所需的软件包

sudo apt install redis-server optipng pngquant jhead jpegoptim gifsicle nodejs npm

sudo npm install -g svgo

编辑生产环境配置文件

sudo -u www-data nano /var/www/discourse/config/environments/production.rb

添加以下代码作为第五行

require 'uglifier'

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

然后找到以下行

config.assets.js_compressor = :uglifier

将其替换为:

config.assets.js_compressor = Uglifier.new(:harmony => true)

保存并关闭文件。然后运行以下命令来初始化数据库。如果您在此步骤中看到任何错误,只需再次运行该命令即可

sudo -u www-data RAILS_ENV=production /usr/local/bin/bundle exec rake db:migrate

接下来,我们将编译 JavaScript 等静态资源,但在此之前,我们需要编辑一个文件。

sudo -u www-data nano /var/www/discourse/lib/tasks/assets.rake

我们需要找到包含 brotli 的行并将其注释掉以禁用 Brotili 压缩,因为 JavaScript 文件将使用 Gzip 进行压缩。如果同时启用 Gzip 和 Brotili 压缩,则在编译资源时会出现一些恼人的错误。找到以下行(第 393 行)并将其注释掉。

brotli(path, max_compress)

保存并关闭文件。接下来,运行以下命令来编译资产。此过程可能会使用大量 RAM,例如 1GB

sudo -u www-data RAILS_ENV=production /usr/local/bin/bundle exec rake assets:precompile

如果您遇到“要使用 ES6 语法,必须启用和谐模式”错误,只需再次运行相同的命令即可继续

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

编译 JavaScriptCSS 文件后,您可以继续执行下一个命令。

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

接下来,编辑 puma.rb 文件

sudo -u www-data nano /var/www/discourse/config/puma.rb

找到以下行

APP_ROOT = '/home/discourse/discourse'

将应用程序路径更改为

APP_ROOT = '/var/www/discourse'

保存并关闭文件。然后创建套接字和进程 ID 目录

sudo -u www-data mkdir /var/www/discourse/tmp/sockets/ /var/www/discourse/tmp/pids/

开始论述

sudo -u www-data RAILS_ENV=production bundle exec puma -C /var/www/discourse/config/puma.rb

样本输出

[28348] Puma starting in cluster mode...
[28348] * Puma version: 5.5.2 (ruby 2.7.4-p191) ("Zawgyi")
[28348] * Min threads: 8
[28348] * Max threads: 32
[28348] * Environment: production
[28348] * Master PID: 28348
[28348] * Workers: 4
[28348] * Restarts: (✔) hot (✖) phased
[28348] * Preloading application
[28348] * Listening on unix:///var/www/discourse/tmp/sockets/puma.sock
[28348] ! WARNING: Detected 2 Thread(s) started in app boot:
[28348] ! #<Thread:0x000055ee3c26d998 /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-4.0.0/lib/message_bus.rb:720 sleep> - /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/redis-4.5.1/lib/redis/connection/ruby.rb:56:in `wait_readable'
[28348] ! #<Thread:0x000055ee3c26d790 /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-4.0.0/lib/message_bus/timer_thread.rb:38 sleep> - /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-4.0.0/lib/message_bus/timer_thread.rb:130:in `sleep'
[28348] Use Ctrl-C to stop

Discourse 正在 Unix 套接字上侦听:/var/www/discourse/tmp/sockets/puma.sock。按 Ctrl+C 立即停止。

第 6 步:为 Discourse 创建 Systemd 服务

我们可以为Discourse创建一个systemd服务,这样它就可以在系统启动时自动启动。

编辑 puma.rb 文件

sudo -u www-data nano /var/www/discourse/config/puma.rb

注释掉以下行(在每行开头添加 # 符号),因为 Systemd 将处理进程 ID

pidfile "#{APP_ROOT}/tmp/pids/puma.pid"

接下来,为 Discourse 创建一个 Systemd 服务

sudo nano /etc/systemd/system/discourse.service

在文件中添加以下行

[Unit]
Description=Discourse service

[Service]
Type=simple
User=www-data
PIDFile=/var/www/discourse/tmp/pids/puma.pid
WorkingDirectory=/var/www/discourse
Environment=RAILS_ENV=production
ExecStart=/usr/local/bin/bundle exec puma -C config/puma.rb
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

保存并关闭文件。然后启动并启用该服务

sudo systemctl enable --now discourse

检查状态。确保它正在运行

sudo systemctl status discourse

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

第7步:配置Nginx反向代理

从默认的 Debian 11 软件存储库安装 Nginx Web 服务器

sudo apt install -y nginx

复制示例 Nginx 虚拟主机配置文件

sudo cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf

编辑新文件

sudo nano /etc/nginx/conf.d/discourse.conf

找到以下几行并将其注释掉,因为我们将使用 Puma

upstream discourse {
  server unix:/var/www/discourse/tmp/sockets/nginx.http.sock;
  server unix:/var/www/discourse/tmp/sockets/nginx.https.sock;
}
找到以下行并取消注释。

# upstream discourse {
#       server unix:/var/www/discourse/tmp/sockets/puma.sock;
# }

找到以下行

server_name enter.your.web.hostname.here;

更改服务器名称。不要忘记为域名添加 DNS A 记录

server_name community.example.com;

Nginx 默认不支持 Brotli 压缩,因此注释掉以下行

brotli_static on;

保存并关闭文件。创建缓存目录

sudo mkdir -p /var/nginx/cache/

然后测试Nginx配置

sudo nginx -t

如果测试成功,请重新加载 Nginx 以使更改生效

sudo systemctl reload nginx

现在您应该能够在 http://community.example.com 上看到 Discourse 论坛。

步骤 8:启用 HTTPS

要加密 HTTP 流量,我们可以通过安装 Let’s Encrypt 颁发的免费 TLS 证书来启用 HTTPS。运行以下命令在 Debian 11 服务器上安装 Let’s Encrypt 客户端 (certbot)。

sudo apt install certbot python3-certbot-nginx

接下来,运行以下命令来获取并安装 TLS 证书

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email  -d community.example.com

在哪里

  • –nginx:使用nginx插件。
  • –agree-tos:同意服务条款。
  • –redirect:通过 301 重定向强制使用 HTTPS。
  • –hsts:将 Strict-Transport-Security 标头添加到每个 HTTP 响应中。强制浏览器始终对域使用 TLS。防御 SSL/TLS 剥离。
  • –staple-ocsp:启用 OCSP 装订。有效的 OCSP 响应将被粘贴到服务器在 TLS 期间提供的证书中。

现在应该已获取并自动安装证书。

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

您可以通过 HTTPS (https://community.example.com) 访问 Discourse 论坛。

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

如果 Firefox 在浏览器地址栏中显示黄色三角形,那是因为某些图像仍然通过 HTTP 协议提供。为了解决这个问题,你可以编辑Discourse Nginx配置文件。

sudo nano /etc/nginx/conf.d/discourse.conf

在 SSL 服务器块中添加以下行以升级不安全的请求

add_header Content-Security-Policy upgrade-insecure-requests;

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

保存并关闭文件。并重新加载Nginx。

sudo nginx -t
sudo systemctl reload nginx

第9步:创建管理员帐户

转到 discourse 目录 (/var/www/discourse/) 并运行以下命令来创建管理员帐户

cd /var/www/discourse/

sudo -u www-data RAILS_ENV=production /usr/local/bin/bundle exec rake admin:create

系统将要求您输入管理员帐户的电子邮件地址和密码。

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

之后,重新启动 Discourse

sudo systemctl restart discourse

现在刷新 Discourse 网页,您就可以登录了。

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

如果您看到 502 bad gateway 错误,则说明重新启动命令未成功,您可以检查日志以找出问题所在

sudo journalctl -eu discourse

登录后,您可以启动设置向导。 (https://community.example.com/wizard) 并按照说明完成安装。如果您使用 Cloudflare CDN,则需要转到 设置 -> 安全 -> 内容安全策略 src 并添加以下 URL:https://community.example.com/cdn-cgi/

第 10 步:优化 RAM 使用

默认的 puma 配置使 Discourse 使用大量 RAM。默认情况下,我的 Discourse 使用 4 个工作线程、8 个最小线程、32 个最大线程。如果你的 RAM 不够,redis 服务器将会停止。要减少 RAM 使用量,您可以减少 puma.rb 文件中的工作线程和线程数量。

sudo -u www-data nano /var/www/discourse/config/puma.rb

找到以下两行

workers "#{num_workers}"
threads 8, 32

您可以更改如下值,它告诉 puma 使用 2 个工作线程、4 个最小线程和 16 个最大线程。此设置适用于只有 1GB RAM 的服务器

workers 2
threads 4, 16

保存并关闭文件。然后重新启动 Discourse 服务

sudo systemctl restart discourse

步骤11:配置后台处理服务:Sidekiq

Sidekiq 是一个开源作业调度程序。许多任务(例如发送电子邮件)都是由 sidekiq 异步执行的。编辑 sidekiq.yml 文件。

sudo -u www-data nano /var/www/discourse/config/sidekiq.yml

将以下行添加到文件末尾。此配置适用于用户活动和 RAM 较低的 Discourse 论坛。如果有大量用户活动,请考虑将并发度和队列数量加倍

production:
  :concurrency: 2
  :queues:
    - [critical, 4]
    - [default, 2]
    - [low]
    - [ultra_low]

保存并关闭文件。然后为sidekiq创建一个Systemd服务

sudo nano /etc/systemd/system/discourse-sidekiq.service

在文件中添加以下行

[Unit]
Description=Discourse sidekiq background processing service
After=multi-user.target

[Service]
Type=simple
User=www-data
PIDFile=/var/www/discourse/tmp/pids/sidekiq.pid
WorkingDirectory=/var/www/discourse
Environment=RAILS_ENV=production
ExecStart=/usr/local/bin/bundle exec sidekiq -C /var/www/discourse/config/sidekiq.yml
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

保存并关闭文件。然后启动并启用该服务

sudo systemctl enable --now discourse-sidekiq

检查状态。确保它正在运行

sudo systemctl status discourse-sidekiq

Sidekiq 仪表板位于 https://community.example.com/sidekiq。

步骤 12:配置 SMTP

Discourse 需要发送电子邮件,以便访问者可以在您的论坛上注册帐户并接收通知。要编辑 SMTP 设置,请打开 discourse.conf 文件

sudo -u www-data nano /var/www/discourse/config/discourse.conf

您可以找到以下行来配置 SMTP 服务器。通常您会希望使用 587 作为 SMTP 端口

# address of smtp server used to send emails
smtp_address =
# port of smtp server used to send emails
smtp_port = 25

# domain passed to smtp server
smtp_domain =

# username for smtp server
smtp_user_name =

# password for smtp server
smtp_password =

# smtp authentication mechanism
smtp_authentication = plain

# enable TLS encryption for smtp connections
smtp_enable_start_tls = true

您可能还想在此文件中添加发件人:地址,如下所示

# From: address
notification_email = [email

如果您更喜欢使用第三方 SMTP 中继服务,那么我推荐 Sendinblue,它可以让您每月免费发送 9000 封电子邮件

  • 如何使用 Sendinblue 在 Debian 上设置 Postfix SMTP 中继

保存 SMTP 设置后,重新启动 Discourse 服务

sudo systemctl restart discourse discourse-sidekiq

然后,您可以在 Discourse 管理仪表板中测试电子邮件发送。

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

您可以访问 mail-tester.com,它将为您提供一个唯一的电子邮件地址。从您的 Discourse 向此电子邮件地址发送一封测试电子邮件,以了解您的发件人分数。

无法发送电子邮件

如果您的 Discourse 实例不发送电子邮件,并且您在 Discourse 网页上看到以下消息:

All outgoing email has been globally disabled by an administrator. No email notifications of any kind will be sent.

您需要进入设置 -> 电子邮件(不是电子邮件),将禁用电子邮件设置为。保存设置并重新启动 Discourse。

sudo systemctl restart discourse discourse-sidekiq

如果您的 Discourse 仍然无法发送电子邮件,请检查它是否可以 ping 通邮件服务器。另外,请访问https://community.example.com/sidekiq/retries,它会向您显示失败的电子邮件以及电子邮件发送失败的原因。

有时,discourse-sidekiq.service 可能会失败并导致电子邮件无法发送,因此您可能需要检查此服务是否正在运行

sudo systemctl status discourse-sidekiq

将 WordPress 与 Discourse 集成

如果您运行 WordPress 网站,则可以在 WordPress 网站上安装 WP Discourse 插件并将其与 Discourse 集成。它允许:

  • 将帖子发布到 Discourse
  • 使用 Discourse 进行 WordPress 评论
  • 使用 WordPress 登录 Discourse (DiscourseConnect)

有关如何集成这两个软件的说明,请访问以下页面。

  • WP Discourse 插件安装和设置

升级Discourse

您可以订阅 Discourse 版本的 RSS 源,以随时了解最新版本。在升级 Discourse 之前,我强烈建议在 Discourse 管理仪表板中进行手动数据库备份并将其下载到您的硬盘。

注意:如果您在没有 Docker 的情况下安装了 Discourse,则一键式浏览器升级 (https://community.yourdomain.com/admin/upgrade) 将不起作用。您需要按照以下说明进行操作。

要升级 Discourse,请先停止该服务。

sudo systemctl stop discourse

转到 Discourse 安装目录。

cd /var/www/discourse/

从 Github 存储库获取新标签。

git fetch --tags

在查看最新的稳定版本之前,我建议将配置文件备份到您的主目录

cp config/puma.rb ~
cp config/environments/production.rb ~
cp config/sidekiq.yml ~
cp config/discourse.conf ~

然后删除 Gemfile.lock 文件。

rm Gemfile.lock

并查看最新的稳定版本。例如:

git checkout v2.8.4

如果您看到以下错误消息

Please commit your changes or stash them before you switch branches.
Aborting

然后运行以下命令

git stash

然后再次运行 git checkout 命令。

安装新 Discourse 版本的依赖项。此过程可能会使用大量 RAM

RAILS_ENV=production /usr/local/bin/bundle install --path vendor/bundle/

编辑 asset.rake 文件

nano /var/www/discourse/lib/tasks/assets.rake

找到以下行(第 273 行)并将其注释掉

brotli(path, max_compress)

保存并关闭文件。接下来,运行以下命令来准备生产

RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake assets:precompile

然后您可以检查新的 puma.rb 配置文件与原始文件相比是否添加了一些新行。如果没有任何新内容,那么您只需将文件替换为原始文件即可。

mv ~/puma.rb /var/www/discourse/config/puma.rb
mv ~/production.rb /var/www/discourse/config/environments/production.rb
mv ~/sidekiq.yml /var/www/discourse/config/sidekiq.yml
mv ~/discourse.conf /var/www/discourse/config/discourse.conf

最后,开始讨论

sudo systemctl start discourse

现在您可以从管理仪表板检查 Discourse 版本。

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

如何将Discourse转移到新服务器

Discourse具有强大的备份和恢复机制。

首先,备份原始 Discourse 论坛,然后下载 tar.gz 文件。 (请勿更改文件名。)

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

然后,您需要按照步骤1到步骤12在新服务器上安装Discourse。接下来,将备份文件上传到新服务器上的 /var/www/discourse/public/backups/default/ 目录。

转到新服务器上的 /var/www/discourse/ 目录。

cd /var/www/discourse/

安装依赖项

sudo gem install thor

sudo apt install rsync

转到 Discourse 管理仪表板 -> 设置 -> 备份,勾选允许恢复

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

接下来,运行以下命令从备份恢复站点。

sudo -u www-data RAILS_ENV=production script/discourse restore file-name-of-the-backup-file.tar.gz

如果恢复成功,您应该在末尾看到以下消息

Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[SUCCESS]
Restore done

恢复完成后,重新启动 Discourse

sudo systemctl restart discourse discourse-sidekiq

刷新 Discourse 网页,您将看到原来的 Discourse 论坛重新上线。

如果您看到以下错误

You must use Bundler 2 or greater with this lockfile.

然后你需要更新捆绑器

gem install bundler

更新 gemfile.lock

RAILS_ENV=production bundle update --bundler

您还可以删除 Gemfile.lock 文件,这样就不会看到此错误。

如何卸载话语

删除 PostgreSQL 数据库服务器

sudo apt remove postgresql

删除 webroot 目录

sudo rm /var/www/discourse/ -rf

删除 Nginx 配置文件

sudo rm /etc/nginx/conf.d/discourse.conf

删除 Let’s Encrypt SSL 证书

sudo certbot revoke --cert-name community.example.com

删除 SystemD 服务

sudo rm /etc/systemd/system/discourse.service
sudo rm /etc/systemd/system/discourse-sidekiq.service

监控您的对话实例的健康状况

您应该密切关注话语错误日志,您可以通过管理仪表板 -> 日志 -> 错误日志找到该日志。如果您的服务器获得大量流量,您可能需要更多 RAM 来运行 Discourse。以下日志显示我的服务器内存不足。

在 Debian11 上不用 Docker 就能安装 Discourse 论坛软件-1

结论

我希望本文可以帮助您在 Debian 11 上安装 Discourse 论坛软件,而无需使用 Docker。与往常一样,如果您发现这篇文章有用,请订阅我们的免费时事通讯以获取更多提示和技巧。保重

本文转自网络:阅读原文

转到万事屋只为收藏学习~

    没有回复内容

万事屋新帖