<div data-theme-toc="true"></div>
本指南仅针对 Discourse 开发环境的配置。如果您需要在生产环境中安装 Discourse,请访问:https://meta.discourse.org/t/how-to-install-discourse-in-production/142537。
有关开发环境设置的英文原文,请参考:https://meta.discourse.org/t/set-up-a-local-discourse-development-environment/182882。
本文仅针对在 Ubuntu 环境下的开发进行设置。由于 Discourse 是基于 Ruby 开发的,Ruby 的开发环境在 Ubuntu 下设置最为简便,因此 Discourse 的生产环境运行也是官方建议在 Ubuntu 下运行的。虽然我们的社区运行在 REHL 环境下也没有问题,因为使用了 Docker 容器,但如果您想对 Discourse 进行开发,建议还是使用 Ubuntu 环境。
如果您使用的是 Windows 系统,您需要安装 WSL 环境。WSL 是 Windows 提供的一个基于 Ubuntu 的环境,主要用于解决 Windows 下开发 Linux 应用的问题。
本文章假设您尚未在 Ubuntu 环境中安装 Ruby/Rails/Postgres/Redis 环境,让我们开始开发环境的配置吧!
尽管本开发指南假定您使用的是 Ubuntu 开发环境,但任何基于 Debian 发行的 Linux 系统都可以使用。
本开发指南已在 Ubuntu 18 上验证过,无需任何其他步骤即可完成开发环境设置。
由于 Ubuntu/Debian 开发环境的使用不同,您在对 Ubuntu/Debian 进行开发时可能需要参考以下信息:
有关在 Ubuntu 20.04 及其后续版本上安装 Discourse 测试环境
在默认的 Ubuntu 20.04 及其后续版本上,默认将安装 OpenSSL 3.0.2。可能需要从早期 OpenSSL 版本进行编译后替换掉此版本(官方推荐使用的是 OpenSSL-1.1.1n)。同时,您还需要检查已安装的 Ruby 版本,可以使用命令 ruby --version 来查看。Discourse 当前仍在使用 Ruby 2 版本。如果您使用的是 Ruby 3.x 或更高版本,需要将 Ruby 版本降级。官方推荐使用 Ruby 版本控制工具进行降级。针对 Discourse 当前的运行环境,官方认为 Ruby 2.7.6 是当前最适合 Discourse 运行的版本。请参考:Notes about Installing Discourse on Ubuntu 20.04 - #2 by SaraDev 获取更多信息。
有关在 Ubuntu 低于 20.04 版本上安装 Discourse 测试环境
以下部分由 @pfaffman 于 22.05.16 添加,可能会出现此错误,但您可能遇不到。
注意: 请参考:Failed to build ruby 2.7.5 on ubuntu 22.04 · rbenv/ruby-build · Discussion #1940 · GitHub 获取相关信息。
End of @pfaffman additions.
根据我们的测试经验,Ubuntu 22 版本中可能存在无法编译和找不到包的情况。我们仅在 20.04 上完成了本地开发环境的设置。
安装 Discourse 依赖
作为普通用户,可以在控制台中运行以下命令: this script。此命令将帮助您在本地开发环境中快速设置 Rails。
运行的命令为:
bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)
上面的命令将在您的本地系统中安装以下包:
- Git
- rbenv
- ruby-build
- Ruby (stable)
- Rails
- PostgreSQL
- SQLite
- Redis
- Bundler
- MailHog
- ImageMagick
如果在您的本地操作系统中已安装某些软件,或者您不希望安装所有软件,请参考 script 中的内容,然后选择您不希望当前安装的软件。上面的安装脚本将安装所有 Discourse 运行所需的软件,这些软件将为 Discourse 的运行提供支持。
当您完成所有 Discourse 依赖的安装后,我们就可以安装 Discourse 了。
上图显示的是在 Ubuntu 中安装的界面。整个软件安装过程相当耗时,可能需要 5 分钟以上,具体取决于您的系统。
克隆 (Clone) Discourse
将 Discourse 克隆到 ~/discourse 文件夹中
git clone https://github.com/discourse/discourse.git ~/discourse
~ 定义的是当前的 Home 文件夹,这意味着 Discourse 程序将复制到您的 home 文件夹下。
因为我们使用的是 WSL 子系统,所以实际上我们将文件克隆到了我的 D 盘下。
设置 (Setup) Database
创建一个 与您的 Ubuntu 系统用户名相同的用户:
sudo -u postgres createuser -s "$USER"
如果您在运行此命令时收到错误:
createuser: error: could not connect to database template1: could not connect to server: No such file or directory
请参考页面:iSharkFly - 飞鲨
启动 Discourse
切换到您的 Discourse 克隆目录:
cd ~/discourse
安装所需的 gems
source ~/.bashrc
bundle install
同时安装所需的 JS 依赖
yarn install
到此为止,您已安装好所有所需的 gems 和依赖。请尝试运行以下命令:
bundle exec rake db:create
bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate
如果在运行过程中出现错误,请参考:iSharkFly - 飞鲨
尝试运行以下命令:
bundle exec rake autospec
您的项目应该会通过所有测试。
此测试非常耗时,可以不做,否则可能需要几个小时。
运行以下命令来启动服务器:
bundle exec rails server
完成以上安装步骤后,您应该可以通过 http://localhost:3000 访问您本地安装的 Discourse。
从 Discourse 2.5+ 开始,针对本地开发环境的 EmberCLI 已成为必需选项:
如果您直接通过界面访问 3000 端口,会得到以下提示界面:
在您的控制台终端中,进入 (
cd ~/discourse) 文件夹,然后运行:
bin/ember-cli
您应该可以通过访问 http://localhost:4200 地址来查看您本地 Discourse 的安装。
需要注意的是,这两个服务器都需要同时启动。Ember CLI 是通过反向代理的方式访问 3000 端口的。
创建一个新的 Admin 账号
在登录开发环境之前,需要创建一个管理员账号。运行以下命令进行创建:
RAILS_ENV=development bundle exec rake admin:create
请按照命令行提示来创建此管理员账号。
需要输入的信息为电子邮件地址和密码。
配置邮件
运行 MailHog:
mailhog
当您完成以上所有步骤后,您的 Discourse 本地开发环境就已经配置好了。您现在可以以管理员账号登录 Discourse 了。
如果您想开发 Discourse 插件,请参考:https://meta.discourse.org/t/beginners-guide-to-creating-discourse-plugins/30515。


