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 🙂