GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Instale el software Discourse Forum en Ubuntu 18.04 sin Docker

Este tutorial le mostrará cómo instalar Discourse en el servidor Ubuntu 18.04. Creado por el fundador de StackExchange, Jeff Atwood, Discourse es un foro de Internet de código abierto (también conocido como tablero de mensajes en línea) y un software de administración de listas de correo, con el objetivo de revolucionar la discusión en los foros. Está escrito con Ember.js y Ruby on Rails, utilizando PostgreSQL como sistema de administración de base de datos de back-end.

Características del discurso

  • Desplazamiento infinito. No hay página siguiente en un hilo. Simplemente desplácese hacia abajo para leer más.
  • actualizaciones en vivo, archivos adjuntos de arrastrar y soltar.
  • Los hilos del foro se pueden clasificar por popularidad.
  • La vista "lo mejor del hilo" puede mostrar la mejor respuesta a un hilo en particular.
  • La capacidad de recordar dónde estabas leyendo en un hilo.
  • Expandir URL para proporcionar un resumen de la URL.
  • Los usuarios pueden responder por correo electrónico.
  • El sistema de marcado oculta automáticamente las publicaciones inapropiadas hasta que un miembro del personal pueda revisarlas.
  • Los moderadores pueden dividir, fusionar, ubicar o archivar cualquier tema.
  • Basado en el nivel de confianza, un usuario puede ser promovido como moderador, o degradado como trolls, malhechores o spammers para mantener civilizado el foro. Heurística y protección antispam de Akismet integradas, incluido el sandboxing de nuevos usuarios, el bloqueo de marcas de usuario y el nofollow estándar.
  • Un sistema de insignias puede mostrar lo que ha logrado un usuario.
  • Diseño web adaptable y adaptable a dispositivos móviles. Los usuarios pueden leer o publicar desde una computadora portátil, tableta y teléfono.
  • Código abierto 100 % gratuito. No hay versión comercial de pago con funciones mejores o más completas.
  • Inicio de sesión único. Integre a la perfección Discourse con el sistema de inicio de sesión de su sitio existente.
  • Inicio de sesión social. Agregue fácilmente inicios de sesión sociales comunes como Google, Facebook, Twitter, etc.
  • Aplicación para iOS y Android disponible.
  • Disponible en más de 30 idiomas.
  • Autenticación de dos factores para mejorar la seguridad de la cuenta.
  • Y muchos más.

Requisitos previos para instalar Discourse en Ubuntu 18.04 sin Docker

El método oficial de instalación de Discourse es con Docker, que es excelente para aquellos que desean tener una aplicación en funcionamiento rápidamente. Pero Docker también tiene hambre de recursos. Solo piénselo:si ya tiene algunos componentes como el servidor de base de datos PostgreSQL en funcionamiento, el método Docker aún ejecutará una base de datos PostgreSQL separada dentro del contenedor, lo que es una pérdida de recursos del servidor. Necesita un servidor de 2 GB de RAM para ejecutar Discourse con Docker. Le mostraré cómo ejecutar Discourse en un servidor de 1 GB de RAM sin ventana acoplable.

Para ejecutar Discourse, necesita un servidor con al menos 1 GB de RAM. Puede hacer clic en este enlace de referencia para crear una cuenta en Vultr y obtener un crédito gratuito de $ 50 (solo para nuevos usuarios). Una vez que tenga una cuenta en Vultr, instale Ubuntu 18.04 en su servidor y siga las instrucciones a continuación.

También necesita un nombre de dominio. Registré mi nombre de dominio en NameCheap porque el precio es bajo y ofrecen protección de privacidad whois gratis de por vida.

Aviso :Instalé Discourse con un usuario sudo en Ubuntu 18.04. Para obtener los mejores resultados, también debe seguir este tutorial con un usuario sudo, no como root.

Para agregar un usuario sudo, simplemente ejecute

sudo adduser username
sudo adduser username sudo

Luego cambie al nuevo usuario.

su - username

Paso 1:configurar el servidor de base de datos PostgreSQL

Inicie sesión en su servidor a través de SSH, luego ejecute el siguiente comando para instalar PostgreSQL desde el repositorio de software predeterminado de Ubuntu.

sudo apt install postgresql

El servidor de la base de datos PostgreSQL se iniciará automáticamente y escuchará en 127.0.0.1:5432 , como se puede ver con el siguiente comando. (Si su servidor Ubuntu no tiene el netstat comando, puede ejecutar sudo apt install net-tools comando para instalarlo.)

sudo netstat -lnpt | grep postgres

Si no ve ningún resultado del comando anterior, probablemente se deba a que el servidor PostgreSQL no se está ejecutando. Puede iniciar el servidor PostgreSQL emitiendo el siguiente comando.

sudo systemctl start postgresql

El postgres El usuario se creará en el sistema operativo durante el proceso de instalación. Es el superusuario del servidor de base de datos PostgreSQL. De forma predeterminada, este usuario no tiene contraseña y no es necesario establecer una porque puede usar sudo para cambiar a postgres usuario e inicie sesión en la consola de PostgreSQL.

sudo -u postgres psql

Crea una base de datos para Discourse.

CREATE DATABASE discourse;

Cree un usuario de base de datos.

CREATE USER discourse_user;

Establezca una contraseña para este usuario.

ALTER USER discourse_user WITH ENCRYPTED PASSWORD 'your_preferred_password';

Establezca a este usuario como propietario de la base de datos de discursos.

ALTER DATABASE discourse OWNER TO discourse_user;

Conéctese a la base de datos del discurso.

\c discourse;

Crea el hstore y pg_trgm extensión.

CREATE EXTENSION hstore;

CREATE EXTENSION pg_trgm;

Cierre sesión en la consola de PostgreSQL.

\q

Paso 2:Instale Ruby en Ubuntu 18.04

Discourse requiere Ruby 2.7 o superior. Sin embargo, el repositorio de Ubuntu 18.04 viene con Ruby 2.5.1. La última versión de Ruby es 3.0.1. Sin embargo, no recomiendo usar la última versión porque podría no ser compatible con Discourse. Para una mejor compatibilidad, recomiendo instalar Ruby 2.7 desde un PPA.

sudo apt install software-properties-common

sudo apt-add-repository ppa:brightbox/ruby-ng

sudo apt install ruby2.7

Para verificar su número de versión de Ruby, ejecute

ruby -v

Salida:

ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux-gnu]

Paso 3:Descarga y configura Discourse

Instale la herramienta git.

sudo apt install git

Suponiendo que se encuentra en su directorio de inicio, ejecute el siguiente comando para clonar el repositorio de código de Discourse de Github.

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

Cree el directorio /var/www/, si aún no se ha creado.

sudo mkdir /var/www/

Mueva el directorio del discurso a /var/www/ .

sudo mv discourse/ /var/www/

Cambie de directorio y use la última versión estable de Discourse. Puede ir a la página de lanzamientos de Github para ver la última versión estable. Ahora estoy usando v2.5.0.

cd /var/www/discourse/

git checkout v2.5.0

Install bundler:el administrador de dependencias de Ruby.

sudo /usr/bin/gem install bundler

Instale los siguientes paquetes para compilar el código fuente.

sudo apt-get install gcc build-essential ruby2.7-dev libxslt-dev libxml2-dev zlib1g-dev libpq-dev imagemagick

Luego instale las dependencias de Discourse. Este proceso podría usar mucha RAM.

RAILS_ENV=production /usr/local/bin/bundle config set path '/var/www/discourse/vendor/bundle/'
RAILS_ENV=production /usr/local/bin/bundle install

Copie el archivo de configuración predeterminado en un archivo nuevo.

cp config/discourse_defaults.conf config/discourse.conf

Edite el nuevo archivo.

nano config/discourse.conf

Configure la conexión de la base de datos.

# host address for db server
# This is set to blank so it tries to use sockets first
db_host = localhost

# port running db server, no need to set it
db_port = 5432

# database name running discourse
db_name = discourse

# username accessing database
db_username = discourse_user

# password used to access the db
db_password = your_password

Cambie el nombre de dominio utilizado con su foro de Discourse.

# hostname running the forum
hostname = "community.example.com"

Guarde y cierre el archivo.

Paso 4:Obtenga una clave de licencia gratuita de MaxMind

Discourse viene con una herramienta de análisis web integrada. Si desea conocer la información geográfica de sus visitantes, necesita una clave de licencia de MaxMind.

Crea una cuenta en MaxMind. Maxmind le enviará un correo electrónico. Haga clic en el enlace del correo electrónico para establecer una contraseña, luego inicie sesión en su cuenta de MaxMind. A continuación, seleccione My License Key en la barra izquierda.

Haga clic en Generar nueva clave de licencia botón.

Asigne un nombre a su clave de licencia. Luego elige No , porque no necesitamos usar el geoipupdate programa. Luego haga clic en Confirm botón.

Una vez creada la clave de licencia, copie la clave de licencia. Abra el archivo de configuración de Discourse.

nano config/discourse.conf

Busque la siguiente línea y agregue su clave de licencia aquí.

maxmind_license_key=

Guarde y cierre el archivo.

Paso 5:Iniciar Discurso

Instale los paquetes necesarios.

sudo apt install redis-server optipng pngquant jhead jpegoptim gifsicle nodejs npm

sudo npm install -g svgo

Edite el archivo de configuración del entorno de producción.

nano /var/www/discourse/config/environments/production.rb

Agregue el siguiente código como quinta línea.

require 'uglifier'

Luego busque la siguiente línea.

config.assets.js_compressor = :uglifier

Reemplázalo con:

config.assets.js_compressor = Uglifier.new(:harmony => true)

Guarde y cierre el archivo. Luego ejecute el siguiente comando para inicializar la base de datos. Si ve algún error durante este paso, simplemente ejecute el comando nuevamente.

RAILS_ENV=production /usr/local/bin/bundle exec rake db:migrate

A continuación, compilaremos activos estáticos como JavaScript, pero antes de hacerlo, debemos editar un archivo.

nano /var/www/discourse/lib/tasks/assets.rake

Necesitamos encontrar las líneas que contienen brotli y coméntelos para deshabilitar la compresión Brotili, porque los archivos JavaScript se comprimirán con Gzip. Si la compresión Gzip y Brotili están habilitadas, habrá algunos errores molestos cuando compilamos los recursos. Busque la siguiente línea (línea 281) y coméntela.

brotli(path, max_compress)

Guarde y cierre el archivo. A continuación, ejecute el siguiente comando para compilar activos. Este proceso puede usar mucha RAM, como 1 GB.

RAILS_ENV=production /usr/local/bin/bundle exec rake assets:precompile

A continuación, edite el puma.rb archivo

nano /var/www/discourse/config/puma.rb

Busque la siguiente línea.

APP_ROOT = '/home/discourse/discourse'

Cambie la ruta de la aplicación a

APP_ROOT = '/var/www/discourse'

Guarde y cierre el archivo. Luego cree los sockets y el directorio de ID de proceso.

mkdir /var/www/discourse/tmp/sockets/ /var/www/discourse/tmp/pids/

Iniciar Discurso.

RAILS_ENV=production bundle exec puma -C /var/www/discourse/config/puma.rb

Salida de muestra:

[24161] Puma starting in cluster mode...
[24161] * Version 4.3.1 (ruby 2.7.1-p146), codename: Mysterious Traveller
[24161] * Min threads: 8, max threads: 32
[24161] * Environment: development
[24161] * Process workers: 4
[24161] * Preloading application
[24161] * Listening on unix:///var/www/discourse/tmp/sockets/puma.sock
[24161] ! WARNING: Detected 4 Thread(s) started in app boot:
[24161] ! #<Thread:[email protected]/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb:38 sleep_forever> - /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb:40:in `pop'
[24161] ! #<Thread:[email protected]/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus.rb:667 sleep> - /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/connection/ruby.rb:68:in `select'
[24161] ! #<Thread:[email protected]/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus/timer_thread.rb:38 sleep> - /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus/timer_thread.rb:123:in `sleep'
[24161] ! #<Thread:[email protected]/discourse.rb:708 sleep> - lib/discourse.rb:711:in `sleep'
[24161] * Daemonizing...

Discourse está escuchando en un socket Unix:/var/www/discourse/tmp/sockets/puma.sock .

Paso 6:configurar el proxy inverso de Nginx

Instale el servidor web Nginx desde el repositorio de software predeterminado de Ubuntu 18.04.

sudo apt install nginx

Copie el archivo de configuración de host virtual Nginx de muestra.

sudo cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf

Edite el nuevo archivo.

sudo nano /etc/nginx/conf.d/discourse.conf

Encuentra las siguientes líneas y coméntalas porque vamos a usar Puma.

upstream discourse {
  server unix:/var/www/discourse/tmp/sockets/nginx.http.sock;
  server unix:/var/www/discourse/tmp/sockets/nginx.https.sock;
}

Busque las siguientes líneas y elimínelas.

# upstream discourse {
#       server unix:/var/www/discourse/tmp/sockets/puma.sock;
# }

Busque la siguiente línea.

server_name enter.your.web.hostname.here;

Cambia el nombre del servidor. No olvide agregar un registro DNS A para el nombre de dominio.

server_name community.example.com;

Nginx de forma predeterminada no admite la compresión Brotli, así que comente la siguiente línea.

brotli_static on;

Guarde y cierre el archivo. Cree el directorio de caché.

sudo mkdir -p /var/nginx/cache/

Luego pruebe la configuración de Nginx.

sudo nginx -t

Si la prueba es exitosa, vuelva a cargar Nginx para que los cambios surtan efecto.

sudo systemctl reload nginx

Ahora debería poder ver el foro de Discourse en http://community.example.com .

Paso 7:habilite HTTPS

Para cifrar el tráfico HTTP, podemos habilitar HTTPS instalando un certificado TLS gratuito emitido por Let's Encrypt. Ejecute el siguiente comando para instalar el cliente Let's Encrypt (certbot) en el servidor Ubuntu 18.04.

sudo apt install certbot python3-certbot-nginx

A continuación, ejecute el siguiente comando para obtener e instalar el certificado TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d community.example.com

donde

  • --nginx :Use el complemento nginx.
  • --agree-tos :Acepto los términos del servicio.
  • --redirect :Forzar HTTPS por redirección 301.
  • --hsts : Agregue el encabezado Strict-Transport-Security a cada respuesta HTTP. Obligar al navegador a usar siempre TLS para el dominio. Protege contra la eliminación de SSL/TLS.
  • --staple-ocsp : Habilita el grapado OCSP. Se grapa una respuesta OCSP válida al certificado que ofrece el servidor durante TLS.

Ahora se debe obtener el certificado e instalarlo automáticamente.

Y puede acceder al foro de Discourse a través de HTTPS (https://community.example.com ).

Si Firefox muestra un triángulo amarillo en la barra de direcciones del navegador, eso se debe a que algunas imágenes todavía se sirven en el protocolo HTTP. Para resolver este problema, puede editar el archivo de configuración de Discourse Nginx.

sudo nano /etc/nginx/conf.d/discourse.conf

Agregue la siguiente línea en el bloque del servidor SSL para actualizar las solicitudes no seguras.

add_header Content-Security-Policy upgrade-insecure-requests;

Guarde y cierre el archivo. Y recarga Nginx.

sudo nginx -t
sudo systemctl reload nginx

Paso 8:Crear cuenta de administrador

Vaya al directorio de discursos (/var/www/discourse/ ) y ejecute el siguiente comando para crear una cuenta de administrador.

RAILS_ENV=production /usr/local/bin/bundle exec rake admin:create

Se le pedirá que ingrese una dirección de correo electrónico y una contraseña para la cuenta de administrador.

Después de eso, reinicie Discourse.

RAILS_ENV=production /usr/local/bin/bundle exec pumactl -P /var/www/discourse/tmp/pids/puma.pid restart

Ahora actualice la página web de Discourse y podrá iniciar sesión.

Si ve el error de puerta de enlace incorrecta 502, entonces el comando de reinicio no tuvo éxito, debe iniciar Discourse con:

RAILS_ENV=production bundle exec puma -C /var/www/discourse/config/puma.rb

Una vez que haya iniciado sesión, puede iniciar el asistente de configuración. (https://community.example.com/wizard) y siga las instrucciones para finalizar la instalación. Si usa Cloudflare CDN, debe ir a configuración -> seguridad -> política de seguridad de contenido src y agregue esta URL:https://community.example.com/cdn-cgi/

Paso 9:configurar el servicio de procesamiento en segundo plano:Sidekiq

Sidekiq es un programador de trabajos de código abierto. Sidekiq ejecuta muchas tareas, como el envío de correos electrónicos, de forma asincrónica. Edite el sidekiq.yml archivo.

nano /var/www/discourse/config/sidekiq.yml

Agregue las siguientes líneas al final del archivo. Esta configuración es adecuada para un foro de Discourse con poca actividad de usuarios y RAM. Si hay muchas actividades de usuarios, considere duplicar la concurrencia y el número de colas.

production:
  :concurrency: 2
  :queues:
    - [critical, 4]
    - [default, 2]
    - [low]
    - [ultra_low]

Guarde y cierre el archivo. Luego cree un servicio Systemd para sidekiq.

sudo nano /etc/systemd/system/discourse-sidekiq.service

Agregue las siguientes líneas en el archivo. Reemplazar nombre de usuario con tu nombre de usuario real.

[Unit]
Description=Discourse sidekiq background processing service
After=multi-user.target

[Service]
Type=simple
User=username
PIDFile=/var/www/discourse/tmp/pids/sidekiq.pid
WorkingDirectory=/var/www/discourse
Environment=RAILS_ENV=production
ExecStart=/usr/local/bin/bundle exec sidekiq -C /var/www/discourse/config/sidekiq.yml
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Guarde y cierre el archivo. Luego inicie y habilite este servicio.

sudo systemctl start discourse-sidekiq
sudo systemctl enable discourse-sidekiq

Compruebe el estado. Asegúrate de que se esté ejecutando.

sudo systemctl status discourse-sidekiq

El panel de Sidekiq está disponible en https://community.example.com/sidekiq .

Paso 10:Cree el servicio Systemd para Discourse

Primero, detenga el proceso de Discurso actual con

cd /var/www/discourse/
RAILS_ENV=production /usr/local/bin/bundle exec pumactl -P /var/www/discourse/tmp/pids/puma.pid stop

Luego edite el puma.rb archivo.

nano /var/www/discourse/config/puma.rb

Comente las siguientes dos líneas (Agregue el # símbolo al comienzo de cada línea) porque Systemd se encargará de la identificación del proceso y la demonización.

pidfile "#{APP_ROOT}/tmp/pids/puma.pid"

daemonize true

A continuación, cree un servicio Systemd para Discourse.

sudo nano /etc/systemd/system/discourse.service

Agregue las siguientes líneas en el archivo. Reemplazar nombre de usuario con tu nombre de usuario real.

[Unit]
Description=Discourse service

[Service]
Type=simple
User=username
PIDFile=/var/www/discourse/tmp/pids/puma.pid
WorkingDirectory=/var/www/discourse
Environment=RAILS_ENV=production
ExecStart=/usr/local/bin/bundle exec puma -C config/puma.rb
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Guarde y cierre el archivo. Luego inicie y habilite este servicio.

sudo systemctl start discourse
sudo systemctl enable discourse

Compruebe el estado. Asegúrate de que se esté ejecutando.

sudo systemctl status discourse

Paso 11:Configurar SMTP

Discourse necesita enviar correos electrónicos para que los visitantes puedan registrar una cuenta en su foro y recibir notificaciones. Para editar la configuración de SMTP, abra discourse.conf archivo.

nano /var/www/discourse/config/discourse.conf

Puede encontrar las siguientes líneas para configurar el servidor SMTP. Normalmente querrá usar 587 como puerto SMTP.

# address of smtp server used to send emails
smtp_address =
# port of smtp server used to send emails
smtp_port = 25

# domain passed to smtp server
smtp_domain =

# username for smtp server
smtp_user_name =

# password for smtp server
smtp_password =

# smtp authentication mechanism
smtp_authentication = plain

# enable TLS encryption for smtp connections
smtp_enable_start_tls = true

También puede agregar el De: dirección en este archivo como a continuación.

# From: address
notification_email = [email protected]

Para saber cómo configurar su propio servidor de correo, consulte el siguiente tutorial. Nota que recomiendo encarecidamente ejecutar el servidor de correo iRedMail en un sistema operativo nuevo y limpio. La instalación de iRedMail en un sistema operativo que tiene otras aplicaciones web puede fallar y es probable que rompa las aplicaciones existentes.

  • Cómo configurar fácilmente un servidor de correo con todas las funciones en Ubuntu 18.04 con iRedMail

Si prefiere utilizar un servicio de retransmisión SMTP de terceros, le recomiendo Sendinblue, que le permite enviar 9000 correos electrónicos al mes de forma gratuita.

Después de guardar la configuración de SMTP, reinicie el servicio Discourse.

sudo systemctl restart discourse discourse-sidekiq

Luego puede probar el envío de correo electrónico en su panel de administración de Discourse.

Puede ir a mail-tester.com, que le dará una dirección de correo electrónico única. Envíe un correo electrónico de prueba desde su discurso a esta dirección de correo electrónico para conocer su puntaje de remitente.

No se puede enviar el correo electrónico

Si su instancia de Discourse no envía correos electrónicos y ve el siguiente mensaje en la página web de Discourse,

All outgoing email has been globally disabled by an administrator. No email notifications of any kind will be sent.

debes ir a Configuración -> Correo electrónico (no correos electrónicos), configure deshabilitar correos electrónicos a no . Guarde la configuración y reinicie Discourse.

sudo systemctl restart discourse discourse-sidekiq

Si su Discourse aún no puede enviar correos electrónicos, verifique si puede hacer ping al servidor de correo. Además, vaya a https://community.example.com/sidekiq/retries , le mostrará los correos electrónicos fallidos y por qué falló el envío de correos electrónicos.

A veces, el discourse-sidekiq.service puede fallar y hacer que el correo electrónico no se envíe, por lo que es posible que desee verificar si este servicio se está ejecutando

sudo systemctl status discourse-sidekiq

Optimizar el uso de RAM

La configuración predeterminada de puma hace que Discourse use mucha RAM. De forma predeterminada, mi discurso utiliza 4 trabajadores, 8 subprocesos mínimos, 32 subprocesos máximos. Si su RAM no es suficiente, el servidor redis se detendrá. Para reducir el uso de RAM, puede disminuir la cantidad de trabajadores y subprocesos en puma.rb archivo.

nano /var/www/discourse/config/puma.rb

Encuentra las siguientes dos líneas.

workers "#{num_workers}"
threads 8, 32

Puede cambiar los valores como se muestra a continuación, que le dice a puma que use 2 trabajadores, 4 subprocesos mínimos y 16 subprocesos máximos. Esta configuración es adecuada para servidores con solo 1 GB de RAM.

workers 2
threads 4, 16

Guarde y cierre el archivo. Luego reinicie el servicio Discourse.

sudo systemctl restart discourse

Discurso de actualización

Puede suscribirse a la fuente RSS de los lanzamientos de Discourse para mantenerse informado con la última versión. Antes de actualizar Discourse, recomiendo hacer una copia de seguridad manual de la base de datos en el panel de administración de Discourse y descargarla en su disco duro.

Nota :La actualización del navegador con un solo clic (https://community.yourdomain.com/admin/upgrade) no funciona si instaló Discourse sin Docker. Debe seguir las instrucciones a continuación.

Para actualizar Discourse, primero detenga el servicio.

sudo systemctl stop discourse

Vaya al directorio de instalación de Discourse.

cd /var/www/discourse/

Obtenga nuevas etiquetas del repositorio de Github.

git fetch --tags

Antes de comprobar la última versión estable, recomiendo hacer una copia de seguridad del archivo de configuración en su directorio de inicio.

cp config/puma.rb ~
cp config/environments/production.rb ~
cp config/sidekiq.yml ~
cp config/discourse.conf ~

Luego elimine el archivo Gemfile.lock.

rm Gemfile.lock

Y echa un vistazo a la última versión estable. Por ejemplo,

git checkout v2.3.4

Si ve el siguiente mensaje de error.

Please commit your changes or stash them before you switch branches.
Aborting

Luego ejecute el siguiente comando

git stash

Luego ejecute el comando git checkout nuevamente.

Instale dependencias para la nueva versión de Discourse. Este proceso podría usar mucha RAM.

RAILS_ENV=production /usr/local/bin/bundle install --path vendor/bundle/

Edite el archivo assets.rake.

nano /var/www/discourse/lib/tasks/assets.rake

Busque la siguiente línea (línea 273) y coméntela.

brotli(path, max_compress)

Guarde y cierre el archivo. A continuación, ejecute los siguientes comandos para prepararse para la producción.

RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake assets:precompile

Luego puedes verificar si el nuevo puma.rb El archivo de configuración ha agregado algunas líneas nuevas, en comparación con el archivo original. Si no hay nada nuevo, simplemente puede reemplazar el archivo con el original.

mv ~/puma.rb /var/www/discourse/config/puma.rb
mv ~/production.rb /var/www/discourse/config/environments/production.rb
mv ~/sidekiq.yml /var/www/discourse/config/sidekiq.yml
mv ~/discourse.conf /var/www/discourse/config/discourse.conf

Finalmente, inicie Discourse.

sudo systemctl start discourse

Ahora puede consultar la versión de Discourse desde el panel de administración.

Personalización del tema del discurso

Si no le gusta el tema blanco predeterminado, puede personalizarlo a través del panel de administración -> Personalizar -> Temas . Hay 3 temas instalados por defecto.

  • Tonos de azul
  • Oscuro
  • Luz

Seleccioné el tema Shades of Blue. También puede agregar CSS personalizado haciendo clic en Editar CSS/HTML botón. A continuación se muestra el CSS que agregué para mi discurso.

html {
    background-color:#ececec;
}

#main-outlet {
    background-color: #fff;
    padding-left: 20px;
}

.d-header {
    background-color:rgb(45, 45, 45);
}


a:visited {
    color: blueviolet;
}

a {
    color: blueviolet;
}

Cómo mover el discurso a un nuevo servidor

Primero, haga una copia de seguridad de su foro de Discourse original y descargue el archivo tar.gz. (No cambie el nombre del archivo).

Luego, debe instalar Discourse en el nuevo servidor siguiendo los pasos del 1 al 11. Luego, cargue el archivo de copia de seguridad en /var/www/discourse/public/backups/default/ directorio en el nuevo servidor.

Vaya al directorio /var/www/discourse/ en el nuevo servidor.

cd /var/www/discourse/

Instalar dependencias.

sudo gem install thor

Vaya a Discourse panel de administración -> Configuración -> Copias de seguridad , marque permitir restaurar .

A continuación, ejecute el siguiente comando para restaurar el sitio desde la copia de seguridad.

RAILS_ENV=production script/discourse restore file-name-of-the-backup-file.tar.gz

Una vez finalizada la restauración, reinicie Discourse.

sudo systemctl restart discourse discourse-sidekiq

Actualice la página web de Discourse y verá su foro original de Discourse nuevamente en línea.

Si ve el siguiente error,

You must use Bundler 2 or greater with this lockfile.

Entonces necesita actualizar el paquete.

gem install bundler

Actualizar gemfile.lock

RAILS_ENV=production bundle update --bundler

También puede eliminar el archivo Gemfile.lock para que no vea este error.

Cómo desinstalar Discourse

Eliminar servidor de base de datos PostgreSQL.

sudo apt remove postgresql

Elimina el directorio webroot.

sudo rm /var/www/discourse/ -rf

Elimina el archivo de configuración de Nginx.

sudo rm /etc/nginx/conf.d/discourse.conf

Eliminar el certificado Let's Encrypt SSL.

sudo certbot revoke --cert-name community.example.com

Eliminar el servicio SystemD.

sudo rm /etc/systemd/system/discourse.service
sudo rm /etc/systemd/system/discourse-sidekiq.service

Monitoreo de la salud de su instancia de discurso

Debe estar atento al registro de errores de discurso, que puede encontrar a través del panel de administración. -> Registros -> Registros de errores . Si su servidor recibe mucho tráfico, es posible que necesite más RAM para ejecutar Discourse. El siguiente registro muestra que mi servidor no tenía memoria.

Cómo lidiar con usuarios difíciles en el discurso

Si hay un usuario en particular en su foro de Discourse que le está haciendo la vida más difícil, puede bloquear a este usuario en el 0: new user nivel de confianza, luego vaya a Discourse Admin -> Settings -> Posting y requieren publicaciones/temas creados por 0: new user deben ser aprobados antes de que puedan ser publicados.

Conclusión

Espero que este artículo le haya ayudado a instalar el software del foro Discourse en Ubuntu 18.04 sin usar Docker. Como siempre, si esta publicación le resultó útil, suscríbase a nuestro boletín informativo gratuito para obtener más consejos y trucos. Cuídate 🙂


Ubuntu
  1. Cómo instalar Discourse en Ubuntu 20.04 LTS

  2. ¿Instalar servidor 18.04 sin conexión de red?

  3. ¿Cómo instalar Ubuntu Server sin conexión de red?

  4. Cómo instalar Discourse en Ubuntu 20.04

  5. Cómo instalar un servidor PostgreSQL en Ubuntu 18.04

Instale Mailtrain v1.24 en el servidor Ubuntu 20.04 sin Docker

Cómo instalar el servidor VNC en Ubuntu 14.04+

Instale SonarQube en el servidor Ubuntu 20.04 LTS

Cómo instalar el software Flarum Forum en Ubuntu 22.04 | 20.04

Cómo instalar el foro phpBB en Ubuntu 22.04 | 20.04 servidor

Cómo instalar Discourse Forum en Ubuntu 14.04