Configurar o Discourse para desenvolvimento no Fedora Linux

Este guia foi testado em uma instalação nova do Fedora 31 e 33, mas pode funcionar em versões mais antigas que também usam dnf como ferramenta de gerenciamento de pacotes. Este não é um guia oficial, mas pode ser útil para outros desenvolvedores que usam Fedora. Ele é amplamente baseado no guia de desenvolvimento do Ubuntu, com alterações para os diferentes pacotes para dnf. A suposição é que você não tem nenhum dos pacotes instalados, embora a maioria seja ignorada pelas ferramentas se já estiverem instalados.

Se você está procurando instalar o Discourse para um ambiente de produção, prefira as instruções de instalação do docker no github.

Instalar pacotes de sistema e desenvolvimento necessários

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

Instalar pacotes npm necessários

sudo npm install -g svgo pnpm

Instalar e configurar 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

Instalar e configurar redis

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

Instalando rbenv, ruby-build e 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
# confirmar se a instalação está correta
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

Instalar dependências do Ruby

gem update --system
gem install bundler mailcatcher rails

Clonar o código do Discourse

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

Instalar dependências do Discourse

bundle install
pnpm install

Criar os bancos de dados necessários e carregar o esquema

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

Testar a instalação executando os testes

bundle exec rake autospec

Executar a aplicação

bundle exec rails server

Você agora deve ser capaz de ver a página de configuração do Discourse em http://localhost:3000.

Para configuração adicional, consulte os guias de instalação oficiais existentes.


Este documento é controlado por versão - sugira alterações no github.

27 curtidas

Em Instalando rbenv, ruby-build e ruby, o URL para o script rbenv-doctor não está mais funcionando (aparentemente o branch foi renomeado de master para main), o comando correto agora é:

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
2 curtidas

Obrigado pelas informações @nicolas-jaussaud, atualizei o OP.

Para constar, agora prefiro usar chruby e ruby-install em vez de rbenv.

2 curtidas

Tive um problema ao executar bundle install, pois o Fedora agora desabilita o transporte de arquivos por padrão.

O erro ocorre ao tentar instalar o gem sprockets e termina com a mensagem:

transport 'file' not allowed

Não sei qual é a maneira correta de fazer isso, mas você pode permitir temporariamente o transporte inseguro:

git config --global protocol.file.allow always
# execute a configuração do discourse aqui
git config --global protocol.file.allow never

Depois disso, encontrei um erro como este ao executar 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'

Parece que aconteceu após a migração terminar, então como não consegui descobrir como consertar, ignorei, mas felizmente meu site de desenvolvimento parece estar funcionando.

Para o ambiente de teste, não obtive o mesmo erro, mas obtive um erro sobre a falta de oxipng, que não parece estar disponível como um pacote Fedora.

Depois disso, não tive mais problemas, tudo ainda funcionava mais ou menos bem no Fedora 38. Embora, eu tivesse instalado o rbenv anteriormente usando outras instruções de configuração.

Executando bundle exec rake autospec, obtive algumas falhas de teste (135), mas parece que tenho uma configuração de desenvolvimento quase funcional.

2 curtidas

Consegui fazer a versão Dev funcionar há algum tempo, mas a versão de Produção foi muito difícil para mim. .

Acabei de seguir este guia para instalar no Fedora 40 Workstation, tive que adicionar oxipng às instalações da distribuição.
sudo dnf install oxipng

3 curtidas

Obrigado por nos informar, atualizei a documentação neste commit: docs/fedora-setup: include oxipng package (#14) · discourse/discourse-developer-docs@eb51e54 · GitHub.

1 curtida

Estou travado após a instalação hoje no Fedora 41 com o seguinte problema quando me conecto a localhost:3000 e clico em registrar:
“nenhum e-mail de administrador foi definido durante a configuração”; a mensagem fornece como adicionar um e-mail de administrador.

Falhei em adicionar com sucesso uma conta de administrador seguindo este procedimento por causa de 2 erros ao usar ./launcher enter app:
1° O primeiro erro resolvido foi: o arquivo app.yml não está presente → Copiei o sampleapp.yml da pasta sample para a pasta do contêiner, depois modifiquei para adicionar endereços de e-mail, então fiz a reconstrução com /var/discourse/launcher rebuild app
2° O segundo erro não foi resolvido:
Resposta de erro do daemon: Nenhum contêiner encontrado: app
Se eu usar os comandos rake para criar um administrador, ele me diz que nenhum rakefile foi encontrado

Alguém pode ajudar?

Esta instalação não usa docker, então você não pode entrar em um contêiner.

Tente criar um administrador a partir da pasta Discourse com este comando:

bin/rails admin:create
1 curtida

Olá Coconut, você é rápido para responder e eficiente, muito obrigado!
O comando retorna gem bunder missing, que eu instalei com gem install bundler -v 2.6.2 e então pude aplicar sua solução com sucesso!

2 curtidas

Acabei de tentar executar uma instalação local e encontrei problemas com o pgvector. Isso é no Fedora 42 e Postgres16. A versão empacotada do pgvector é 0.6.2 e parece que preciso compilar do código-fonte para obter uma mais recente.

Em seguida, encontrei conflitos ao tentar compilar o pgvector, que parece exigir o pacote postgresql-private-devel que tinha solicitações conflitantes com o libpq-devel.

Resolvido por:

  • sudo dnf install postgresql-server-devel --allowerasing
    
  • Compilar pgvector
  • Verificar a versão instalada
    sudo -u postgres psql discourse_development -c "SELECT * FROM pg_available_extensions WHERE name = 'vector';"
    
  • sudo systemctl restart postgresql
    
2 curtidas