Fedora Linux에서 개발용 Discourse 설정하기

이 가이드는 Fedora 31과 33의 새 설치 환경에서 테스트되었습니다. dnf를 패키지 관리 도구로 사용하는 이전 버전에서도 작동할 수 있습니다. 이는 공식 가이드가 아니지만, Fedora를 사용하는 다른 개발자들에게 유용할 수 있습니다. 이 가이드는 주로 Ubuntu 개발 가이드를 기반으로 하며, dnf에 맞게 패키지 구성을 변경했습니다. 이미 패키지가 설치되어 있지 않은 것으로 가정하지만, 이미 설치된 패키지는 도구에서 대부분 건너뛰게 됩니다.

프로덕션 환경에 Discourse를 설치하려는 경우, GitHub의 docker 설치 지침을 사용하는 것이 좋습니다.

필요한 시스템 및 개발 패키지 설치

sudo dnf update
sudo dnf install -y "@development-tools" git rpm-build zlib-devel ruby-devel readline-devel libpq-devel ImageMagick vips sqlite sqlite-devel nodejs npm curl gcc g++ bzip2 openssl-devel libyaml-devel libffi-devel zlib-devel gdbm-devel ncurses-devel optipng pngquant jhead jpegoptim gifsicle oxipng

필요한 npm 패키지 설치

sudo npm install -g svgo pnpm

Postgres 설치 및 설정

sudo dnf install postgresql-server postgresql-contrib
sudo postgresql-setup --initdb --unit postgresql
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo -u postgres -i createuser -s $USER

Redis 설치 및 설정

sudo dnf install redis
sudo systemctl enable redis
sudo systemctl start redis

rbenv, ruby-build 및 ruby 설치

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
~/.rbenv/bin/rbenv init
printf 'export PATH="$HOME/.rbenv/bin:$PATH"\n' >> ~/.bashrc
printf 'eval "$(rbenv init - --no-rehash)"\n' >> ~/.bashrc
source ~/.bashrc
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
# 설치가 올바른지 확인
 curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
rbenv install 2.7.1
rbenv global 2.7.1
rbenv rehash

Ruby 의존성 설치

gem update --system
gem install bundler mailcatcher rails

Discourse 코드 클론

git clone https://github.com/discourse/discourse.git ~/discourse
cd ~/discourse

Discourse 의존성 설치

bundle install
pnpm install

필요한 데이터베이스 생성 및 스키마 로드

bundle exec rake db:create db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate

테스트 실행을 통해 설치 확인

bundle exec rake autospec

애플리케이션 실행

bundle exec rails server

이제 http://localhost:3000에서 Discourse 설정 페이지를 볼 수 있어야 합니다.

추가 설정에 대해서는 기존 공식 설치 가이드를 참고하세요.


이 문서는 버전 관리되고 있습니다. 변경 사항을 GitHub에서 제안해 주세요.

27개의 좋아요

Installing rbenv, ruby-build, and ruby 문서에서 rbenv-doctor 스크립트의 URL이 더 이상 작동하지 않습니다(아마도 브랜치가 master에서 main으로 이름이 변경되었기 때문일 것입니다). 이제 올바른 명령은 다음과 같습니다:

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
2개의 좋아요

@nicolas-jaussaud님, 정보 주셔서 감사합니다. OP를 업데이트했습니다.

참고로 지금은 rbenv보다 chruby와 ruby-install을 사용하는 것을 더 선호합니다.

2개의 좋아요

Fedora에서 기본적으로 file 전송이 비활성화되어 있어 bundle install 실행 시 문제가 발생했습니다.

sprockets gem을 설치하려고 할 때 오류가 발생하며, 메시지는 다음과 같이 종료됩니다:

transport 'file' not allowed

정확한 해결 방법을 모르지만, 위험한 전송 방식을 일시적으로 허용할 수 있습니다:

git config --global protocol.file.allow always
# 여기서 discourse 설정을 실행합니다
git config --global protocol.file.allow never

이후 db:migrate를 실행할 때 다음과 같은 오류가 발생했습니다:

At /home/hhyyrylainen/Projects/discourse/lib/site_setting_extension.rb:199:in `public_send`
Deprecation notice: `SiteSetting.enable_personal_messages` has been deprecated. Please use `SiteSetting.personal_message_enabled_groups` instead. (removal in Discourse 3.0) 
At /home/hhyyrylainen/Projects/discourse/lib/site_setting_extension.rb:199:in `public_send`
#<Thread:0x00007f94c3342600 /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:83 run> terminated with exception (report_on_exception is true):
/home/hhyyrylainen/.gem/ruby/3.2.0/gems/activerecord-7.0.4.3/lib/active_record/connection_handling.rb:309:in `connection_pool': ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished)
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management/rails_61_compat.rb:8:in `current'
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:115:in `current_db_hostnames'
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:111:in `current_hostname'
	from /home/hhyyrylainen/Projects/discourse/lib/discourse.rb:232:in `handle_job_exception'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:114:in `rescue in do_work'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:113:in `do_work'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:85:in `block (2 levels) in start_thread'
/home/hhyyrylainen/.gem/ruby/3.2.0/gems/activerecord-7.0.4.3/lib/active_record/connection_handling.rb:309:in `connection_pool': ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished)
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:79:in `with_connection'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:96:in `do_work'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:85:in `block (2 levels) in start_thread'

마이그레이션이 완료된 후에 발생한 것 같아 해결 방법을 찾지 못해 무시했지만, 다행히 개발 사이트는 정상적으로 작동하는 것 같습니다.

테스트 환경에서는 동일한 오류 대신 oxipng가 누락되었다는 오류가 발생했는데, 이는 Fedora 패키지로 제공되지 않는 것 같습니다.

그 이후로는 더 이상의 문제가 발생하지 않았으며, Fedora 38에서 여전히 대략적으로 정상적으로 작동했습니다. 다만, 이전에 다른 설정 지침에 따라 rbenv를 설치한 상태였습니다.

bundle exec rake autospec을 실행했을 때 일부 테스트 실패(135개)가 발생했지만, 대체로 작동하는 개발 환경 설정을 갖추게 된 것 같습니다.

2개의 좋아요

얼굴을 보고 Dev 버전을 실행하기 시작했지만, Production 버전은 나에게 너무 어려웠습니다.

Fedora 40 Workstation에 설치하기 위해 이 가이드를 따랐는데, 배포판 설치 목록에 oxipng를 추가해야 했습니다.
sudo dnf install oxipng

3개의 좋아요

알려주셔서 감사합니다. 이 커밋에서 문서를 업데이트했습니다: docs/fedora-setup: include oxipng package (#14) · discourse/discourse-developer-docs@eb51e54 · GitHub.

1개의 좋아요

오늘 Fedora 41에서 설치 후 다음과 같은 문제 때문에 막혀 있습니다. localhost:3000에 접속하여 'register’를 클릭하면 “no administrator emails were defined during setup”(설정 중에 관리자 이메일이 정의되지 않았습니다)이라는 메시지가 표시됩니다. 해당 메시지는 관리자 이메일을 추가하는 방법을 안내합니다.

이 절차에 따라 관리자 계정을 추가하려 했으나, ./launcher enter app 명령을 사용할 때 발생하는 두 가지 오류 때문에 성공하지 못했습니다.

  1. 첫 번째로 해결한 오류는 app.yml 파일이 존재하지 않는 것이었습니다. sample 폴더의 sampleapp.yml을 컨테이너 폴더로 복사한 후 이메일 주소를 추가하도록 수정했고, /var/discourse/launcher rebuild app 명령으로 재빌드했습니다.
  2. 두 번째 오류는 아직 해결되지 않았습니다:
    Error response from daemon: No such container: app (데몬에서 오류 응답: 컨테이너 app이(가) 없습니다)
    rake 명령을 사용하여 관리자를 만들려고 하면 rakefile이找不到된다는 메시지가 표시됩니다.

도움 주실 수 있는 분 계신가요?

이 설치에는 Docker가 사용되지 않으므로 컨테이너에 진입할 수 없습니다.

Discourse 폴더에서 다음 명령어로 관리자를 생성해 보세요:

bin/rails admin:create
1개의 좋아요

하이 코코넛, 답변이 빠르고 효율적이네요. 정말 감사합니다!
명령어를 실행하니 gem bunder missing 오류가 발생했는데, gem install bundler -v 2.6.2'로 설치한 후 드신 해결 방법을 성공적으로 적용할 수 있었습니다!

2개의 좋아요

로컬 설치를 시도해 보았지만 pgvector에서 문제가 발생했습니다. Fedora 42와 Postgres 16 환경입니다. 패키지로 설치된 pgvector 버전은 0.6.2인데, 더 최신 버전을 사용하려면 소스에서 컴파일해야 하는 것 같습니다.

그런데 pgvector를 빌드하는 과정에서 충돌이 발생했는데, postgresql-private-devel 패키지가 필요하며 이 패키지가 libpq-devel과 충돌하는 요청을 가지고 있었습니다.

다음 방법으로 해결했습니다:

  •  sudo dnf install postgresql-server-devel --allowerasing
    
  • pgvector 빌드
  • 설치된 버전 확인
    sudo -u postgres psql discourse_development -c "SELECT * FROM pg_available_extensions WHERE name = 'vector';"
    
  •  sudo systemctl restart postgresql
    
3개의 좋아요

image

음… 이거 공식적인 건가요? (그 문장은 아마 제거해야 하지 않을까요?)

실례지만, 이 버전은 구버전이 아닌가요? rbenv install -l에 나열된 Ruby의 최신 버전이 4.0.5였던 것 같습니다(ruby-lang.org의 최신 버전도 마찬가지입니다).

1개의 좋아요

bundle exec rails server를 실행하면 수많은 마이그레이션이 시작됩니다. 약 1시간 동안 실행 중인데 아직 끝나지 않았습니다. 제 노트북은 이를 처리할 충분한 RAM과 CPU 성능을 갖추고 있는데, 이는 단순히 실행해야 할 마이그레이션의 양이 많기 때문일까요?

수정: 3시간이 지났는데도 여전히 진행 중입니다.
수정 #2: 4시간째 접어들었습니다…

수정 #3: 제 실수였습니다. 4시간 동안 콘솔 출력을 잘못 읽었더니, 실제로는 마이그레이션이 실행 중이 아니었습니다 :facepalm: … Sidekiq 잡들이 실행 중이었고, 포트 3000에서는 인스턴스가 실제로 표시되고 있었습니다. 걱정할 일이 아니었습니다!