Руководство по настройке среды разработки Discourse — Windows 11

Всем привет,

После того как я потратил некоторое время на настройку рабочей среды разработки в Windows 11 / WSL2, я решил поделиться шагами, которые выполнил.

Это мой первый пост здесь, поэтому надеюсь, что он окажется кому-то полезен :slight_smile: Я системный администратор, привыкший работать с Windows, поэтому для меня это было интересное путешествие в мир Linux / Ruby / Discourse и других технологий.

Кажется, с момента написания руководства для Windows 10 кое-что изменилось, и я столкнулся с несколькими проблемами (и, судя по комментариям, я был не один!)

Могу подтвердить, что следующие инструкции сработали на моей установке Windows 11 Pro 22H2, а также на моей сборке Windows Insider для предстоящего релиза Windows 11 23H2 Release Preview.

Постараюсь сделать инструкции максимально короткими и понятными :slight_smile:

Первоначальная подготовка

  1. Проверьте наличие обновлений WSL и установите их, если это необходимо. В окне Windows PowerShell выполните следующую команду:

wsl.exe --update

  1. Установите Ubuntu в WSL2 с помощью этой команды:

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, я получил предупреждение о нехватке памяти у виртуальной машины. Это можно исправить, выполнив следующую команду:
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. Откройте отдельный терминал, перейдите в директорию Discourse с помощью команды cd ~/discourse и выполните rails admin:create — следуйте инструкциям для создания учётной записи администратора.

  2. Откройте в веб-браузере http://localhost:4200, и Discourse должен быть запущен и работать :slight_smile:

Этот шаг может завершиться ошибкой. Если это произойдет, нажмите «Пуск», введите «Включение или отключение компонентов Windows».
Включите платформу виртуальных машин.
Перезагрузите компьютер.

Продолжите выполнение команд.

Спасибо, что добавили это, Эндрю!

Одна очень важная вещь, с которой я долго не мог разобраться, заключается в том, что репозиторий обязательно должен находиться в файловой системе WSL (то есть НЕ в /mnt/*). В противном случае вы столкнётесь либо со всевозможными странными ошибками, либо с очень, очень, очень медленной работой экземпляра.

Считается, что это общеизвестный факт, но, судя по общению с другими разработчиками, это не совсем так.

Привет, AliBenBongo :wave:

Спасибо за это руководство.

Из любопытства, вы пробовали Install Discourse on Windows for development, но столкнулись с проблемами на Windows 11?

Я следовал этому официальному руководству менее двух месяцев назад, чтобы настроить свою локальную разработку на Win11, и всё прошло безупречно.

Да, это интересно. Я сначала попробовал воспользоваться этим руководством и столкнулся с множеством сообщений об ошибках. Конкретно я их не помню, но некоторые из этих ошибок упоминались в разделе комментариев той же ветки…

В итоге это, пожалуй, к лучшему, ведь благодаря самостоятельному решению проблемы и написанию этого руководства я точно стал гораздо больше знать! :slight_smile:

Наверное, глупый вопрос, но я вынужден спросить. Допустим, я смогу запустить это, следуя вашей инструкции. Как вы думаете, возможно ли настроить обратный прокси для этого домена?

Глупых вопросов не бывает, мы всегда можем чему-то научиться! :slight_smile: У меня не так много опыта в настройке обратных прокси, кроме использования Nginx Proxy Manager в контейнере Docker — возможно, стоит посмотреть на него, так как он берёт на себя основную сложную работу и даже автоматически выдаёт бесплатные SSL-сертификаты через Let’s Encrypt.

Вы, вероятно, столкнётесь с множеством проблем. Установка для разработки не поддерживается для работы в производственной среде.

Запуск стандартной установки в облаке может стоить несколько долларов в месяц, но сколько стоит ваше время?! С этим вы сможете запустить систему за 30 минут и закончить работу.

Вот именно это я и сделал. Сначала я начал с communiteq, затем попробовал DigitalOcean, но в итоге остановился на Contabo.

Думаю, я немного сумасшедший, потому что я пробовал (просто чтобы проверить, смогу ли) запускать Ubuntu в Hyper-V. Мне даже удалось разместить виртуальную машину в той же подсети, но начальная проверка домена не сработала. Я думаю, что часть проблемы заключается в том, что я уже размещаю несколько служб на своем хосте под Windows и, следовательно, перенаправляю порты 80/443 на IP-адрес этой машины. Я знаю, что это выходит за рамки данной темы и не поддерживается, но у вас есть опыт попыток сделать что-то подобное?

Следует отметить, что если у вас еще не установлены подсистемы, эта команда не сработает.

У меня возникли проблемы с установкой Ruby; это мне помогло: ChatGPT - Ruby 3.2 Not Released

Привет, добро пожаловать :wave:

Если вы следуйте инструкциям в этом руководстве, вам не понадобится устанавливать Ruby вручную. Скрипт “install-rails” сделает это автоматически.

К сведению, последняя версия Ubuntu, 24.04, вроде бы не работает, и у меня возникло с ней много проблем.

Поэтому при установке через WSL обязательно используйте:

wsl.exe --install -d Ubuntu-22.04

Привет :waving_hand:, я использую WSL2 в Windows 11 и следовал инструкциям из этого поста для установки локальной среды разработки 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) возникла ошибка для некоторых миграций, зависящих от расширения Postgres pgvector. Поэтому я следовал руководству по установке для Linux здесь: https://github.com/pgvector/pgvector/blob/master/README.md

:warning:Для надёжности лучше скопировать команды напрямую из файла README. Однако, если вам интересно, вот что сработало для меня:

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

После этого я смог выполнить миграции в шаге 16 и завершил установку, следуя остальным инструкциям руководства. :tada:

Спасибо за инструкцию, но у меня всё ещё возникает та же ошибка:

Ваша версия Ruby — 3.4.0.dev, но в файле Gemfile указано ~> 3.4.

Не знаю, что делать в этой ситуации.

Спасибо за информацию :thinking:

Хм… это сейчас довольно распространено:

Первая версия считается более старой по сравнению с требуемой, поэтому вам нужно использовать rbenv или аналогичный инструмент для установки более актуальной версии.

Спасибо!

Я пытался загрузить слишком новую версию, и это не сработало. Необходимо обязательно оставаться на версии 3.x.x. Я использовал версию 3.4.8.

Теперь всё работает, осталось пройти обучающие уроки и попробовать написать код.

Спасибо за вашу помощь :+1: