如何在 Ubuntu 18.04 LTS 上安装 Discourse Forum如何在 Ubuntu 18.04 LTS 上安装 Discourse Forum如何在 Ubuntu 18.04 LTS 上安装 Discourse Forum如何在 Ubuntu 18.04 LTS 上安装 Discourse Forum
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 18.04 LTS 上安装 Discourse Forum

本教程适用于这些操作系统版本

  • Ubuntu 20.04(Focal Fossa)
  • Ubuntu 18.04(仿生海狸)

在此页

  1. 要求
  2. 开始
  3. 安装和配置 PostgreSQL
  4. 安装红宝石
  5. 安装和配置 Discourse
  6. 为 Discourse 配置 Nginx
  7. 访问 Discourse Web 界面

Discourse 是一个免费的开源讨论论坛应用程序,可以用作邮件列表和聊天室。它是一个非常强大和灵活的平台,允许用户使用单点登录进行登录。它可以与 WordPress、Google Analytics、Zendesk、Patreon、Slack 等集成。它支持电子邮件通知、电子邮件回复和各种身份验证方法,例如社交网络和单点登录。它简单、易于使用、扁平,并带有内置的移动布局。

在本教程中,我们将学习如何在 Ubuntu 18.04 服务器上安装和配置 Discourse 论坛。

要求

  • 一台运行 Ubuntu 18.04 的服务器。
  • 在您的服务器上设置了静态 IP 地址 192.168.0.101。
  • 已为您的服务器设置根密码。

入门

首先,您需要使用最新版本更新您的服务器。您可以使用以下命令执行此操作:

apt-get update -y
apt-get upgrade -y

服务器更新后,重新启动系统以应用所有更改

接下来,您需要在您的服务器上设置 FQDN。您可以使用以下命令执行此操作:

hostnamectl set-hostname test.example.com

接下来,打开 /etc/hosts 文件并添加以下行:

nano /etc/hosts

添加以下行:

192.168.0.101 test.example.com test

完成后保存并关闭文件。然后,运行以下命令以应用所有更改:

hostname -f

接下来,您需要将一些必需的软件包安装到您的系统中。您可以使用以下命令安装它们:

apt-get install nginx curl git wget unzip nano -y

完成后,您可以继续下一步。

安装和配置 PostgreSQL

首先,您需要在系统中安装 PostgreSQL。您可以通过运行以下命令来安装它:

apt-get install postgresql -y

安装 PostgreSQL 后,使用以下命令登录到 PostgreSQL 控制台:

sudo -u postgres psql

接下来,使用以下命令为 Discourse 创建数据库和用户:

postgres=#CREATE DATABASE discoursedb;
postgres=#CREATE USER discourseuser;
postgres=#ALTER USER discourseuser WITH ENCRYPTED PASSWORD 'password';
postgres=#ALTER DATABASE discoursedb OWNER TO discourseuser;

接下来,连接到 discoursedb 并使用以下命令创建 hstore 和 pg_trgm 扩展:

postgres=#\c discoursedb;
postgres=#CREATE EXTENSION hstore;
postgres=#CREATE EXTENSION pg_trgm;

最后,使用以下命令退出 PostgreSQL:

postgres=#\q

安装红宝石

接下来,您需要在系统中安装最新版本的 Ruby。您可以使用 RVM 安装 Ruby。

首先,使用以下命令安装 GNU privacy guard:

apt-get install gnupg2 -y

接下来,使用以下命令导入 Ruby 版本管理器的公共:

gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

您应该看到以下输出:

gpg: keybox '/root/.gnupg/pubring.kbx' created
gpg: key 105BD0E739499BDB: 6 signatures not checked due to missing keys
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 105BD0E739499BDB: public key "Piotr Kuczynski <>" imported
gpg: key 3804BB82D39DC0E3: 103 signatures not checked due to missing keys
gpg: key 3804BB82D39DC0E3: public key "Michal Papis (RVM signing) <>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 2
gpg:               imported: 2

接下来,使用以下命令安装带有默认 Ruby 和 Rails 的 RVM:

curl -sSL https://get.rvm.io | bash -s stable --rails

安装 Ruby 和 Rails 后,您需要获取 RVM 脚本的源代码。您可以使用以下命令执行此操作:

source /usr/local/rvm/scripts/rvm

您现在可以使用以下命令查看 Ruby 版本:

rvm list

您应该看到以下输出:

=* ruby-2.6.3 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

安装和配置 Discourse

首先,您需要从 Git 存储库下载最新版本的 Discourse。您可以使用以下命令下载它:

cd /var/www/
git clone https://github.com/discourse/discourse.git

输出:

Cloning into 'discourse'...
remote: Enumerating objects: 57, done.
remote: Counting objects: 100% (57/57), done.
remote: Compressing objects: 100% (37/37), done.
remote: Total 403387 (delta 26), reused 34 (delta 20), pack-reused 403330
Receiving objects: 100% (403387/403387), 267.39 MiB | 235.00 KiB/s, done.
Resolving deltas: 100% (252384/252384), done.
Checking out files: 100% (27055/27055), done.

接下来,使用以下命令检查 Discourse 的最新稳定版本:

cd discourse
git checkout v2.2.4

接下来,使用以下命令安装 Ruby 依赖项管理器:

/usr/local/rvm/src/ruby-2.6.3/bin/gem install bundler -v '1.17.3'

您应该看到以下输出:

Fetching bundler-1.17.3.gem
Successfully installed bundler-1.17.3
Parsing documentation for bundler-1.17.3
Installing ri documentation for bundler-1.17.3
Done installing documentation for bundler after 15 seconds
1 gem installed

接下来,您需要安装一些额外的包来编译源代码。您可以使用以下命令安装所有这些:

apt-get install gcc ruby-dev libxslt-dev libxml2-dev zlib1g-dev libpq-dev imagemagick redis-server optipng pngquant jhead jpegoptim gifsicle -y

接下来,使用以下命令安装 Discourse 所需的所有依赖项:

RAILS_ENV=production bundle install --path vendor/bundle/

接下来,使用以下命令重命名 Discourse 默认配置文件:

mv config/discourse_defaults.conf config/discourse.conf

接下来,打开 discourse.conf 文件并定义您的数据库设置:

nano config/discourse.conf

更改以下行:

db_host = localhost
db_port = 5432
db_name = discoursedb
db_username = discourseuser
db_password = password
hostname = "test.example.com"

保存并关闭文件。然后,使用以下命令编辑生产环境配置文件:

nano /var/www/discourse/config/environments/production.rb

添加以下行作为第三行

require 'uglifier'

然后,找到以下行:

config.assets.js_compressor = :uglifier

并将其替换为以下内容:

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

完成后保存并关闭文件。然后,使用以下命令为生产准备 Discourse:

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

接下来,使用以下命令打开 puma.rb 文件:

nano /var/www/discourse/config/puma.rb

找到以下行:

APP_ROOT = '/home/discourse/discourse'

将其替换为以下行:

APP_ROOT = '/var/www/discourse'

完成后保存并关闭文件。然后,使用以下命令创建套接字和进程 ID 目录:

mkdir /var/www/discourse/tmp/sockets/
mkdir /var/www/discourse/tmp/pids/

最后,通过运行以下命令启动 Discourse:

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

您应该看到以下输出:

[29834] Puma starting in cluster mode...
[29834] * Version 3.11.4 (ruby 2.6.3-p62), codename: Love Song
[29834] * Min threads: 8, max threads: 32
[29834] * Environment: development
[29834] * Process workers: 4
[29834] * Preloading application

[29834] * Listening on unix:///var/www/discourse/tmp/sockets/puma.sock
[29834] ! WARNING: Detected 3 Thread(s) started in app boot:
[29834] ! #<Thread:/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.0.pre.1/lib/message_bus.rb:667 sleep> - /var/www/html/discourse/vendor/bundle/ruby/2.6.0/gems/hiredis-0.6.1/lib/hiredis/ext/connection.rb:19:in `read'
[29834] ! #<Thread:/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.0.pre.1/lib/message_bus/timer_thread.rb:38 sleep> - /var/www/html/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.0.pre.1/lib/message_bus/timer_thread.rb:123:in `sleep'
[29834] ! #<Thread:/var/www/discourse/lib/discourse.rb:584 sleep> - /var/www/discourse/lib/discourse.rb:587:in `sleep'
[29834] * Daemonizing...

接下来,使用以下命令创建一个管理员帐户以访问 Discourse Web 界面:

cd /var/www/discourse
RAILS_ENV=production bundle exec rake admin:create

提供您的电子邮件和密码,如下所示:

Email:  
Password:  
Repeat password:  

Ensuring account is active!

Account created successfully with username example
Do you want to grant Admin privileges to this account? (Y/n)  Y

Your account now has Admin privileges!

接下来,使用以下命令重新启动 Discourse 服务:

RAILS_ENV=production bundle exec pumactl -P /var/www/discourse/tmp/pids/puma.pid restart

为 Discourse 配置 Nginx

接下来,您需要将 Nginx 配置为反向代理以访问端口 80 上的 Discourse Web 界面。

首先,使用以下命令复制示例 Nginx 虚拟主机配置文件:

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

接下来,使用以下命令打开 discourse.conf 文件:

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

进行以下更改:

#upstream discourse {
#    server unix:/var/www/discourse/tmp/sockets/thin.0.sock;
#    server unix:/var/www/discourse/tmp/sockets/thin.1.sock;
#    server unix:/var/www/discourse/tmp/sockets/thin.2.sock;
#    server unix:/var/www/discourse/tmp/sockets/thin.3.sock;
#}

upstream discourse {
       server unix:/var/www/discourse/tmp/sockets/puma.sock;
 }
server_name test.example.com;

完成后保存并关闭文件。然后,使用以下命令创建缓存目录:

mkdir -p /var/nginx/cache/

接下来,使用以下命令检查 Nginx 是否存在任何语法错误:

nginx -t

输出:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

接下来,重新启动 Nginx 以应用所有更改:

systemctl restart nginx

您还可以使用以下命令检查 Nginx 的状态:

systemctl status nginx

输出:

? nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-05-26 04:19:12 UTC; 29min ago
     Docs: man:nginx(8)
  Process: 1052 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 848 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 1065 (nginx)
    Tasks: 3 (limit: 1114)
   CGroup: /system.slice/nginx.service
           ??1065 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ??1066 nginx: worker process
           ??1067 nginx: cache manager process

May 26 04:19:04 ubuntu1804 systemd[1]: Starting A high performance web server and a reverse proxy server...
May 26 04:19:12 ubuntu1804 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
May 26 04:19:12 ubuntu1804 systemd[1]: Started A high performance web server and a reverse proxy server.

如果访问 Discourse web inetrface 出现任何错误,还需要复制以下 JS 文件:

cp /var/www/discourse/public/assets/_vendor-3eae3eec8fba033cb1b5af6c103a5b8781caa69cf97fe7773ba89ba68980b263.js /var/www/discourse/public/assets/vendor-3eae3eec8fba033cb1b5af6c103a5b8781caa69cf97fe7773ba89ba68980b263.js

访问 Discourse Web 界面

Discourse 现已安装和配置,是时候访问 Discourse Web 界面了。

打开 Web 浏览器并输入 URL http://test.example.com。您将被重定向到以下页面:

现在,单击“登录”按钮。您应该会看到以下页面:

现在,提供您的用户名和密码。然后,单击“登录”按钮。您应该会看到以下页面:

您现在可以在 Web 浏览器上使用 URL http://test.example.com/wizard 启动设置向导。您应该在以下页面中看到欢迎屏幕:

现在,选择您的语言并单击“下一步”按钮。您应该会看到以下页面:

在这里,输入您的主题,然后单击“下一步”按钮。您应该会看到以下页面:

在这里,选择 Public 并单击 Next 按钮。您应该会看到以下页面:

在这里,提供您的电子邮件和联系页面。然后,单击“下一步”按钮。您应该会看到以下页面:

在这里,提供您的公司名称和地址。然后,单击“下一步”按钮。您应该会看到以下页面:

现在,选择您的主题并单击“下一步”按钮。您应该会看到以下页面:

现在,上传您的徽标并单击“下一步”按钮。您应该会看到以下页面:

现在,选择图标并单击下一步按钮。您应该会看到以下页面:

现在,选择您的主页并单击“下一步”按钮。您应该会看到以下页面:

现在,根据需要选择表情符号,然后单击下一步按钮。您应该会看到以下页面:

现在,邀请您的员工加入此论坛并单击“下一步”按钮。安装完成后,您应该会看到以下页面:

现在,单击“完成”按钮。您将被重定向到以下页面中显示的 Discourse 仪表板:

恭喜!您已在 Ubuntu 18.04 服务器上成功安装和配置 Discourse 论坛。

©2015-2025 艾丽卡 support@alaica.com