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 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

rbenv、ruby-build、および 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 よりも chrubyruby-install を使用する方が好みです。

「いいね!」 2

Fedora ではデフォルトでファイルトランスポートが無効になっているため、bundle install を実行しようとすると問題が発生しました。

sprockets gem をインストールしようとするとエラーが発生し、メッセージは次のように終わります。

transport 'file' not allowed

正しい方法はわかりませんが、一時的に安全でないトランスポートを許可することができます。

git config --global protocol.file.allow always
# ここで discourse setup を実行します
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'

マイグレーション完了後に発生したように見えるため、修正方法がわからず無視しましたが、幸い開発サイトは動作しました。

テスト環境では同じエラーは発生しませんでしたが、Fedora パッケージとしては利用できないように見える oxipng の不足に関するエラーが発生しました。

その後、他に問題は発生せず、Fedora 38 ではすべて概ね問題なく動作しました。ただし、以前に別のセットアップ手順を使用して rbenv をインストールしていました。

bundle exec rake autospec を実行すると、テストで失敗が 135 件ありましたが、開発環境はほぼ動作する状態になりました。

「いいね!」 2

以前、開発者バージョンは動作させることができましたが、本番バージョンは私には難しすぎました。

Fedora 40 Workstation にインストールするためにこのガイドに従いましたが、ディストリビューションのインストールに oxipng を追加する必要がありました。
sudo dnf install oxipng

「いいね!」 3

お知らせいただきありがとうございます。このコミットでドキュメントを更新しました: https://github.com/discourse/discourse-developer-docs/commit/eb51e543efb91b4efb1974625e69c41846832039。

「いいね!」 1

Fedora 41 で本日インストールした後、localhost:3000 に接続して登録をクリックすると、以下の問題が発生して行き詰まっています。
「セットアップ中に管理者メールが定義されていません」というメッセージが表示され、管理者メールの追加方法が示されています。

この手順に従って管理者アカウントを追加しようとしましたが、./launcher enter app を使用した際に 2 つのエラーが発生したため、成功しませんでした。
1° 最初に解決したエラーは、「app.yml ファイルが存在しない」というものでした。-> サンプルフォルダから sampleapp.yml をコンテナフォルダにコピーし、メールアドレスを追加するように変更してから、/var/discourse/launcher rebuild app で再構築しました。
2° 解決していない 2 つ目のエラーは次のとおりです。
デーモンからのエラー応答: コンテナ ‘app’ が見つかりません
管理者を作成するために rake コマンドを使用すると、rakefile が見つからないと表示されます。

どなたか助けていただけますか?

このインストールではDockerを使用しないため、コンテナに入ることはできません。

Discourseフォルダから、このコマンドで管理者の作成を試してください。

bin/rails admin:create
「いいね!」 1

ココナッツさん、迅速かつ効率的なご対応ありがとうございます!

コマンドを実行したところ、「gem bunder missing」と表示されました。これは、gem install bundler -v 2.6.2 でインストールした後、貴殿のソリューションを正常に適用できたためです!

「いいね!」 2

ローカルインストールを試したところ、pgvector で問題が発生しました。これは Fedora 42 と Postgres16 で発生しています。パッケージ化された 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
    
「いいね!」 2