Note sull'installazione di Discourse su Ubuntu 20.04

Recentemente ho riscontrato un problema simile a quello di @Sonosus e ho scoperto che era causato dall’ultima versione di Ubuntu (20.04) che viene preinstallata con OpenSSL 3.0.2. Questa situazione potrebbe essere presente anche con altre versioni di Ubuntu/Debian che vengono preinstallate con OpenSSL. Se riscontri questo problema, probabilmente vorrai compilare una versione precedente di OpenSSL da sorgente (ho usato OpenSSL-1.1.1n) e quindi rieseguire il comando bundle install. Essenzialmente, questo messaggio di errore riguarda OpenSSL >= 1.0.1, < 3.0.0, e si scopre che 1.1 è l’unica alternativa.

Dovrai anche controllare quale versione di Ruby stai usando con ruby --version. Discourse utilizza ancora Ruby 2, quindi se stai usando Ruby 3.x o versioni successive, dovrai utilizzare una versione precedente. A seconda di come stai installando Ruby, è probabile che incontrerai un problema simile con OpenSSL nell’installazione di una versione precedente, quindi ti consiglio di utilizzare un gestore di versioni per Ruby qui, e ho scoperto che Ruby 2.7.6 è attualmente la versione migliore da utilizzare con Discourse.

Dopo aver installato una nuova istanza di Ubuntu 20.04, ecco cosa ho fatto per far funzionare correttamente bundle install:

Installa le dipendenze di Discourse, asdf e Clona Discourse

<(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)
sudo apt install build-essential checkinstall zlib1g-dev
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.0
git clone https://github.com/discourse/discourse.git ~/discourse

Imposta il database

Crea un ruolo con lo stesso nome del tuo nome utente di sistema Ubuntu:

sudo -u postgres createuser -s "$USER"

Installa OpenSSL-1.1.1n da sorgente

wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz
tar -zxf openssl-1.1.1n.tar.gz && cd openssl-1.1.1n
./config --prefix=/opt/openssl-1.1.1n --openssldir=/opt/openssl-1.1.1n shared zlib
make
make test
make install
sudo rm -rf /opt/openssl-1.1.1n/certs
sudo ln -s /etc/ssl/certs /opt/openssl-1.1.1n

Ho quindi aggiunto la seguente riga al mio file .bashrc

export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/opt/openssl-1.1.1n/"

Mentre ci siamo, ho anche aggiunto le seguenti righe per asdf

. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash

Salva ed esci, e poi

source ~/.bashrc

Installa Ruby 2.7.6

asdf plugin add ruby
asdf install ruby 2.7.6

Potresti essere in grado di eseguire bundle install ora, tuttavia, ho riscontrato un paio di altri problemi durante il processo di installazione di Discourse che menzionerò qui per riferimento nel caso in cui questi accadano a qualcun altro.

Si è verificato un errore durante l’installazione di mini_racer

Durante l’esecuzione di bundle install ho continuato a riscontrare questo problema dopo aver installato OpenSSL-1.1.1n e Ruby 2.7.6

Si è verificato un errore durante l'installazione di mini_racer (0.6.1) e Bundler non può continuare.

Che può essere risolto modificando la seguente riga nella tua versione locale di discourse/Gemfile:

E sostituendola con

gem 'mini_racer', github: 'rubyjs/mini_racer', branch: 'refs/pull/186/head'

Dopo questo passaggio sono stato in grado di eseguire bundle install con successo.

Questo è simile a un problema che si verifica su MacOS di cui puoi leggere di più qui

File o directory non trovati - convert

Nei passaggi successivi dell’installazione di Discourse, ho anche riscontrato il seguente problema durante l’esecuzione di bundle exec rake autospec

Fallimenti:
  1. AboutController.index dovrebbe visualizzare la pagina about per l'utente connesso quando login_required è true
    Fallimento/Errore: expect(response.status).to eq(200)

    atteso: 200
    ottenuto: 500

      (confrontato usando ==)
    #./spec/requests/about_controller_spec.rb:27:in 'block (3 levels) in <main>'
    #./spec/rails_helper.rb:277:in 'block (2 levels) in <top (required)>'
    #---------------------
    #---Causato da:---
    # Errno::ENOENT
    #  File o directory non trovati - convert
    # ./lib/letter_avatar.rb:105:in ``'

Questo errore significa che il pacchetto ImageMagick non è installato (fornisce l’eseguibile convert)

Presumibilmente questo script all’inizio del processo di installazione di Discourse dovrebbe avere tutti i pacchetti necessari, ma sembra che questo possa essere stato escluso.

Infine, dopo aver installato ImageMagick con sudo apt install imagemagick, sono stato in grado di far funzionare correttamente il mio server Discourse!

Spero che queste informazioni siano utili a chiunque stia attraversando questo processo e abbia qualche difficoltà. :smile:

5 Mi Piace