设置 Discourse 开发环境指南 - Windows 11

大家好,

在花费了一些时间尝试在 Windows 11 / WSL2 上搭建一个可用的开发环境后,我想分享一下我遵循的步骤。

这是我的第一篇帖子,希望对大家有所帮助 :slight_smile: 我是一名系统管理员,习惯于使用 Windows,所以学习 Linux / Ruby / Discourse 等对我来说是一段有趣的旅程。

自从 Windows 10 的指南编写以来,似乎有些东西发生了变化,我在此过程中遇到了一些问题(从评论中可以看出,我不是唯一一个!)。

我可以确认,以下说明在我的 Windows 11 Pro 22H2 安装以及即将发布的 Windows 11 23H2 Release Preview 的 Windows Insider 版本上均有效。

我会尽量让说明简短明了 :slight_smile:

初始准备

  1. 检查是否有 WSL 更新,并在适用时安装。从 Windows Powershell 窗口使用此命令:-

wsl.exe --update

  1. 使用此命令在 WSL2 中安装 Ubuntu:-

wsl.exe --install -d Ubuntu

  1. 按照屏幕上的提示创建用户名和密码。

  2. 进入 Ubuntu 终端后,检查并安装所有适用的更新。

sudo apt update && sudo apt upgrade -y

  1. 现在一切都已更新,我们可以继续了 :slight_smile:

WSL 修改

  1. 在克隆 Discourse 之前,运行以下命令打开 /etc/wsl.conf 文件:-

sudo nano /etc/wsl.conf

  1. 在现有文件的底部添加以下内容,按 Ctrl + X 保存更改,并在提示时按“Y”。
[automount]
enabled  = true
root     = /mnt/
options  = "metadata,umask=22,fmask=11"
  1. 完全关闭 WSL 终端并重新启动它,以便这些更改能够正确应用。

  2. 现在复制并粘贴以下单行安装脚本来设置开发环境。根据您的计算机速度和/或互联网连接速度,这可能需要一些时间才能完成,所以去喝杯咖啡什么的吧!

bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)
  1. 启动 PostgreSQL 服务:-
sudo service postgresql start
  1. 由于我们在 WSL2 中运行,我收到了关于 VM 内存不足的警告消息,可以通过运行以下命令解决:
sudo sysctl vm.overcommit_memory=1
  1. 运行以下命令,以便 redis-server 自动重启:-
redis-server --daemonize yes
  1. 将 Discourse 克隆到主文件夹:-
git clone https://github.com/discourse/discourse.git ~/discourse
  1. 进入新创建的 Discourse 文件夹:-
cd ~/discourse
  1. 运行以下命令(我是一行一行执行的)(不确定这是否必要,或者是否可以一次性复制粘贴)。
source ~/.bashrc

bundle install

yarn install
  1. 设置环境:-
RAILS_ENV=development bundle exec rake db:create db:migrate
  1. 启动 Discourse
DISCOURSE_HOSTNAME=localhost UNICORN_LISTENER=localhost:3000 bin/ember-cli -u
  1. 打开一个单独的终端,使用 cd ~/discourse 进入 Discourse 目录,然后运行 rails admin:create - 按照说明设置您的管理员用户帐户。

  2. 在浏览器中访问 http://localhost:4200,Discourse 应该已经启动并运行 :slight_smile:

10 个赞

这部分可能会失败。如果失败,请单击“开始”,键入“启用或关闭 Windows 功能”
启用虚拟机平台
重启

继续执行命令。

4 个赞

谢谢你添加这个,Andrew!

我花了很长时间才弄明白的一件非常重要的事情是,仓库必须位于 WSL 文件系统上(即,/mnt/* 上)。否则,你会遇到各种奇怪的错误,或者实例会变得非常、非常非常 慢。

这本应是常识,但根据我与其他开发者的互动来看,似乎并非如此。

2 个赞

你好 AliBenBongo :wave:

感谢您的指南。

出于好奇,您是否尝试过 Install Discourse on Windows for development Windows 11 上遇到了问题?

不到两个月前,我遵循了这份官方指南在 Win11 上设置了我的开发安装,并且运行得非常完美。

2 个赞

是的,这很有趣。我确实先尝试了那个指南,但遇到了很多错误消息。我不记得具体是什么了,但其中一些错误消息在该主题的评论部分中提到过……

我认为最终这是件好事,因为通过自己解决问题,然后写下这份指南,我现在肯定获得了更多的知识!:slight_smile:

1 个赞

这可能是一个愚蠢的问题,但我必须问。假设我能按照你的指南运行起来。你认为有可能将它反向代理到一个域名吗?

没有愚蠢的问题,我们总能学到新东西! :slight_smile: 我在反向代理方面经验不多,除了在 Docker 容器中使用 Nginx Proxy Manager——也许可以看看那个,因为它做了大部分繁重的工作,甚至通过 Let’s Encrypt 生成免费的 SSL 证书。

1 个赞

我怀疑您会遇到很多痛点。开发安装不支持在生产环境运行。

在云端运行标准安装可能每月花费几美元,但您的时间值多少钱?!有了它,您可以在 30 分钟内启动并运行,然后就可以完成工作了。

2 个赞

事实上,我就是这么做的。我一开始用的是 communiteq,也试过 DigitalOcean,但最终选择了 Contabo。

我想我可能是个疯子,因为我试图做的事情(只是为了看看我能不能做到),在 HyperV 中运行 Ubuntu,我甚至设法让虚拟机处于同一个子网,哈哈,但我无法让初始域名检查正常工作。我认为问题的一部分是我已经在我的 Windows 主机上托管了几个服务,因此我将 80/443 端口转发到该机器的 IP 地址。我知道这超出了此线程的范围,并且不受支持,但您是否有过尝试做类似事情的经验?

应注意,如果您尚未安装任何子系统,则此命令将不起作用。

1 个赞

我在安装 Ruby 时遇到了困难;这个链接帮助了我:ChatGPT - Ruby 3.2 Not Released

您好,欢迎 :wave:

如果您按照本指南中的步骤操作,则无需手动安装 Ruby。“install-rails”脚本会自动执行此操作。

顺便说一句,Ubuntu 的最新版本 24.04 似乎无法正常工作,我遇到了很多问题。

因此,在安装 WSL 时,请务必使用:

wsl.exe --install -d Ubuntu-22.04

您好 :waving_hand:,我正在 Windows 11 下使用 WSL2,并遵循了这篇帖子中的步骤来安装本地 Discourse 开发实例。我遇到了一些问题,但最终都解决了。以下是我的发现:

(起初我尝试使用 ubuntu-20.04,但遇到了缺少 libwebp7 依赖项的问题,这是 ImageMagick 安装所必需的。似乎 libwebp7 不适用于 ubuntu-20.04):right_arrow: 因此,我决定改用 ubuntu-22.04,这对我有用。

遵循开篇帖子中 @AliBenBongo 的指南,第 9 步之前的一切都按预期工作。:+1:

第 9 步中,需要进行一些更改

https://raw.githubusercontent.com/discourse/install-rails/master/linux 中的一些资源似乎已过时:

  • 我不得不安装 Ruby 3.3.x 而不是 3.2.1,通过将 ruby_version=“3.2.1” 更改为 ruby_version=“3.3.9”
  • 我不得不安装 Node 20 而不是 18,通过将 curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash - 更改为 curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -

第 15 步中,您需要运行 pnpm install 而不是 yarn install

然后,在第 16 步运行迁移时,它因某些依赖于 pgvector Postgres 扩展的迁移而抛出错误。所以我遵循了这里的 Linux 安装指南:https://github.com/pgvector/pgvector/blob/master/README.md

:warning:为了安全起见,最好直接从自述文件中复制命令。但是,如果您好奇,以下是我成功的方法:

git clone --branch v0.8.0 https://github.com/pgvector/pgvector.git
cd pgvector
make
sudo make install

之后,我能够运行第 16 步中的迁移,并通过遵循指南的其余部分完成了安装。 :tada:

1 个赞