Windows 11에서 Discourse 개발 환경 설정 가이드

여러분 안녕하세요,

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:

이 부분이 실패할 수 있습니다. 실패할 경우 시작 메뉴를 클릭하고 'Windows 기능 켜기 또는 끄기’를 입력하세요.
가상 머신 플랫폼 활성화
재부팅

명령을 다시 진행하세요.

앤드류, 추가해줘서 고마워!

오래도록 헤매다가 겨우 파악한 매우 중요한 사실이 하나 있습니다. 저장소는 반드시 WSL 파일시스템(즉, /mnt/*가 아닌 곳)에 있어야 한다는 것입니다. 그렇지 않으면 온갖 기이한 오류가 발생하거나, 인스턴스가 매우, 매우 느려질 수 있습니다.

이건 상식적인 내용이어야 하는데, 다른 개발자들과의 소통을 보면 꼭 그렇지만은 않습니다.

안녕하세요 AliBenBongo :wave:

이 가이드를 올려주셔서 감사합니다.

궁금한 점이 있어서 여쭤봅니다. Install Discourse on Windows for development 링크의 가이드를 시도해 보셨는데 Windows 11에서 문제가 발생하셨나요?

저는 두 달 전쯤 이 공식 가이드를 따라 Win11에서 개발용 설치를 진행했는데, 완벽하게 잘 동작했습니다.

그렇군요, 맞아요. 처음에 그 가이드를 시도해 봤는데 에러 메시지가 꽤 많이 떴어요. 구체적으로 기억은 안 나지만, 그 에러 메시지 중 일부는 해당 스레드의 댓글 섹션에서 언급된 것들이었어요 …

결국 좋은 일이 된 것 같아요. 문제를 직접 해결하고 이 가이드를 작성하는 과정을 통해 확실히 더 많은 지식을 얻었으니까요! :slight_smile:

아마도 너무 단순한 질문일 수 있지만, 꼭 물어봐야겠어요. 가이드를 따라 이걸 제대로 설정할 수 있다고 가정할 때, 도메인으로 리버스 프록시를 구성하는 것이 가능할까요?

어리석은 질문은 없어요. 우리 모두 항상 새로운 것을 배울 수 있으니까요! :slight_smile: 저는 리버스 프록시 관련해서는 Docker 컨테이너에서 Nginx Proxy Manager를 사용한 경험 정도가 있어요. 이 도구가 대부분의 복잡한 작업을 처리해 주며, Let’s Encrypt를 통해 무료 SSL 인증서까지 자동으로 생성해 주니 한번 살펴보시는 건 어떨까요?

많은 문제점에 부딪히게 될 거라고 생각합니다. 개발용 설치 환경은 프로덕션에서 실행하는 것이 지원되지 않습니다.

클라우드에서 표준 설치 환경을 실행하면 월 몇 달러의 비용이 들 수 있지만, 여러분의 시간은 얼마나 가치가 있나요? 그 비용으로 30분 만에 설정을 완료하고 바로 사용할 수 있습니다.

실제로 저는 그렇게 했습니다. 처음에는 Communiteq를 사용했고, DigitalOcean도 시도해 보았지만, 결국 Contabo를 선택했습니다.

제정신인지 모르겠습니다. 제가 하려던 것(할 수 있는지 확인해 보기 위해)은 Hyper-V에서 Ubuntu를 실행하는 것이었는데, VM을 같은 서브넷으로 설정하는 것까지 성공했지만, 초기 도메인 확인을 작동시키는 데는 실패했습니다. 문제의 일부는 이미 Windows 호스트에 몇 가지 서비스를 호스팅하고 있어서, 80/443 포트를 해당 머신의 IP로 포워딩하고 있기 때문인 것 같습니다. 이 스레드의 범위를 벗어나고 지원되지 않는 내용이라는 것을 알지만, 비슷한 시도를 해 본 경험이 있으신가요?

아직 서브시스템이 설치되어 있지 않은 경우 이 명령이 작동하지 않는다는 점에 유의해야 합니다.

루비 설치에 막혔는데, 이 링크가 도움이 됐습니다: 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로 시도해 보았지만, ImageMagick 설치 시 필요한 libwebp7 종속성이 없어 문제가 발생했습니다. libwebp7은 ubuntu-20.04에서 사용 가능한 것 같지 않았습니다) :right_arrow: 그래서 제 환경에서 잘 작동하는 ubuntu-22.04를 사용하기로 결정했습니다.

첫 번째 게시글의 @AliBenBongo 님 가이드를 따랐을 때, 9단계 이전까지는 모두 예상대로 작동했습니다. :+1:

9단계에서는 몇 가지 변경이 필요했습니다.

https://raw.githubusercontent.com/discourse/install-rails/master/linux 의 일부 리소스는 최신 버전이 아닌 것 같습니다:

  • ruby_version=“3.2.1”을 ruby_version=“3.3.9”으로 변경하여 Ruby 3.2.1 대신 3.3.x를 설치해야 했습니다.
  • curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -를 curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -로 변경하여 Node 18 대신 20을 설치해야 했습니다.

15단계에서는 yarn install 대신 pnpm install을 실행해야 합니다.

그런 다음, 16단계에서 마이그레이션을 실행했을 때 pgvector Postgres 확장자에 의존하는 일부 마이그레이션에서 오류가 발생했습니다. 그래서 여기의 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: