Cómo instalar el foro NodeBB en CentOS 7

NodeBB es un software de foros basado en Node.js y construido para la web moderna. Está construido sobre una base de datos MongoDB o Redis. Utiliza web sockets para interacciones instantáneas y notificaciones en tiempo real.NodeBB tiene muchas características modernas desde el principio, como la integración de redes sociales y la transmisión de debates. La funcionalidad adicional se habilita mediante el uso de plugins de terceros. NodeBB es un proyecto de código abierto que se puede encontrar en Github. En esta guía, te guiaremos a través del proceso de instalación de NodeBB paso a paso en el sistema operativo CentOS 7.

Requisitos

NodeBB requiere la instalación del siguiente software

  • Node.js versión 6 o superior
  • MongoDB versión 2.6 o superior o Redis versión 2.8.9 o superior
  • Nginx versión 1.3. 13 o superior
  • Git

Requisitos previos

  • Un servidor que ejecute el sistema CentOS 7 x86_64 (64 bits) con al menos 1GB o RAM
  • Nombre de dominio con registrosA/AAAA configurados
  • Un usuario no root con privilegios sudo.

Pasos iniciales

Comprueba la versión de CentOS:

cat /etc/centos-release
# CentOS Linux release 7.5.1804 (Core)

Configura la zona horaria:

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

Actualiza los paquetes del sistema operativo (software):

sudo yum update -y

Instala los paquetes necesarios para terminar este tutorial:

sudo yum install -y curl wget vim bash-completion git socat epel-release

Para simplificar, desactiva SELinux y el Firewall:

sudo setenforce 0; sudo systemctl stop firewalld.service; sudo systemctl disable firewalld.service

Paso 1: Instalar Node.js y npm

NodeBB está construido sobre Node.js.Vamos a instalar recomendadoversión para NodeBB que es la versión 8en el momento de escribir este artículo. En Linux tienes varias opciones de instalación de Node.js: Binarios Linux (x86/x64), Código Fuente o mediante Gestores de Paquetes. Utilizaremos la opción del Gestor de Paquetes, que hace que la instalación y actualización de Node.js sea pan comido.

Descarga e instala la última versión desoporte a largo plazo (LTS) de Node.js desde el repositorio Nodesource:

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum -y install nodejs

Para compilar e instalar los complementos nativos de npm es posible que también necesites instalar herramientas de compilación:

sudo yum install -y gcc-c++ make
# or
# sudo yum groupinstall -y 'Development Tools'

NOTA npm se distribuye con Node.js, lo que significa que cuando descargas Node.js, automáticamente se instala npm en tu sistema.

Comprueba las versiones de Node.js y npmen las versiones de Node.js y npm:

node -v && npm -v
# v8.12.0
# 6.4.1

Npm es un proyecto independiente de Node.js, y suele actualizarse con más frecuencia. Como resultado, incluso si acabas de descargar Node.js (y por tanto npm), probablemente necesitarás actualizar tu npm. Por suerte, ¡npm sabe cómo actualizarse! Para actualizar tu npm, escribe esto en tu terminal:

sudo npm install -g [email protected]

Este comando actualizará npm a la última versión estable.

Paso 2: Instalar y configurar MongoDB

NodeBB necesita una base de datos para almacenar sus datos, y soporta MongoDB y Redis. En este tutorial, elegimos MongoDB como motor de almacenamiento de datos. Así que, en los siguientes pasos, descargaremos e instalaremos la base de datos MongoDB desde el repositorio oficial de rpm de MongoDB:

Crea un archivo/etc/yum.repos.d/mongodb-org-4.0.repopara que puedas instalar MongoDB directamente usando yum:

sudo vim /etc/yum.repos.d/mongodb-org-4.0.repo

Rellena el archivo con el siguiente contenido:

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

Para instalar la última versión estable del paquete MongoDB, ejecuta el siguiente comando:

sudo yum install -y mongodb-org

Comprueba la versión de MongoDB:

mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.2
# db version v4.0.2

Inicia y habilita (configúralo para que se inicie al reiniciar) el servicio MongoDB:

sudo systemctl start mongod.service
sudo systemctl enable mongod.service

Comprueba el estado del servidor de bases de datos MongoDB ejecutándolo:

sudo systemctl status mongod.service
# active (running)

A continuación, crea la base de datos MongoDB y el usuario para NodeBB.

Conéctate primero al servidor MongoDB.

mongo

Cambia a la base de datos integrada admin.

> use admin

Crea un usuario administrativo.

> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )

NOTA:Sustituye el marcador de posición<Enter a secure password> por tu propia contraseña seleccionada.

Añade una nueva base de datos llamada nodebb.

> use nodebb

Se creará la base de datos y se cambiará el contexto a nodebb. A continuación, crea el usuarionodebb con los privilegios adecuados.

> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

NOTA:De nuevo, sustituye el marcador de posición<Enter a secure password> por tu propia contraseña seleccionada.

Sal del shell de Mongo.

> quit()

Reinicia MongoDB y comprueba que el usuario administrativo creado anteriormente puede conectarse.

sudo systemctl restart mongod.service
mongo -u admin -p your_password --authenticationDatabase=admin

Si todo ha ido bien, tu MongoDB debería estar instalado y preparado para NodeBB. En el siguiente paso, nos ocuparemos de la instalación y configuración del servidor web.

Paso 3: Instalar el cliente Acme.sh y obtener un certificado Let’s Encrypt(opcional)

Asegurar tu foro NodeBB con HTTPS no es necesario, pero es una buena práctica para asegurar el tráfico de tu sitio. Para obtener el certificado SSL de Let’s Encrypt utilizaremos el cliente Acme.sh. Acme.sh es un software de shell unix puro para obtener certificados SSL de Let’s Encrypt con cero dependencias.

Descarga e instala Acme.sh:

sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~

Comprueba la versión de Acme.sh:

/etc/letsencrypt/acme.sh --version
# v2.8.0

Obtén los certificadosRSA y ECC/ECDSA para tu dominio/nombre de host:

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d forum.example.com --ocsp-must-staple --keylength 2048
# ECDSA
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d forum.example.com --ocsp-must-staple --keylength ec-256

Después de ejecutar los comandos anteriores, tus certificados y clavesestarán en:

  • Para RSA: directorio/etc/letsencrypt/forum.example.com.
  • Para ECC/ECDSA: directorio/etc/letsencrypt/forum.example.com_ecc.

Paso 4: Instalar y configurar Nginx

NodeBB puede funcionar bien con muchos servidores web. En este tutorial, hemos seleccionado Nginx.

Primero descarga e importa la clave PGP del repositorio de Nginx:

wget https://nginx.org/keys/nginx_signing.key
sudo rpm --import nginx_signing.key

Después de importar la clave, puedes eliminarla del disco de forma segura:

rm nginx_signing.key

Crea un /etc/yum.repos.d/nginx_mainline.repoarchivo, para que puedas instalar Nginx directamente usando yum:

sudo vim /etc/yum.repos.d/nginx_mainline.repo

Rellena el archivo con el siguiente contenido:

[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=1

Por último,para instalar la última versión principal del paquete Nginx, emite el siguiente comando:

sudo yum install -y nginx

Tras la instalación, puedes verificar la versión de Nginx ejecutando:

nginx -v
# 1.15.3

Inicia y habilita(configúralo para que se inicie al reiniciar) el servicio Nginx:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Comprueba el estado del servidor web Nginx ejecutando:

sudo systemctl status nginx.service
# active (running)

NodeBB por defecto se ejecuta en el puerto 4567. Para evitar escribirhttp://example.com:4567configuraremos Nginx como proxy inverso para la aplicación NodeBB. Cada petición en el puerto 80 o 443 ( si se usa SSL) será reenviada al puerto 4567.

Ejecut a sudo vim /etc/nginx/conf.d/nodebb.confy configura Nginx como proxy inverso HTTPS.

server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;

server_name forum.example.com;

client_max_body_size 50M;

# RSA
ssl_certificate /etc/letsencrypt/forum.example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/forum.example.com/forum.example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/forum.example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/forum.example.com_ecc/forum.example.com.key;

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:4567;
proxy_redirect off;
# Socket.IO Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

}

Comprueba la configuración de Nginx:

sudo nginx -t

Finalmente, para que los cambios surtan efecto, debemos recargar Nginx:

sudo systemctl reload nginx.service

Paso 5: Instalar y configurar NodeBB

Crea un directorio raíz de documentos en el que deba residir NodeBB:

sudo mkdir -p /var/www/nodebb

Navega hasta el directorio raíz del documento:

cd /var/www/nodebb

Cambia la propiedad del directorio/var/www/nodebba tu_usuario.

sudo chown -R [your_user]:[your_user] /var/www/nodebb

NOTA:Sustituye tu_usuario en el comando anterior por tu usuario no root que deberías haber creado como requisito previo a este tutorial.

Clona el último repositorio de NodeBB en la carpeta raíz del documento:

git clone -b v1.10.x https://github.com/NodeBB/NodeBB.git .

Inicia el script de configuración ejecutando la aplicación con la banderasetupbandera:

./nodebb setup

Una vez completada la configuración de NodeBB, ejecuta ./nodebb start para iniciar manualmente tu servidor NodeBB:

./nodebb start

Después de ejecutar este comando, deberías poder acceder a tu nuevo foro en tu navegador web:

NodeBB en el navegador

Paso 6: Ejecutar NodeBB como servicio del sistema

Cuando se inicie a través de ./nodebb start, NodeBB no se iniciará automáticamente cuando el sistema se reinicie. Para evitarlo, tendremos que configurar NodeBB como un servicio del sistema.

Si se está ejecutando, detén NodeBB:

./nodebb stop

Crea un nuevo usuarionodebb:

sudo useradd nodebb

Cambia la propiedad del directorio/var/www/nodebb al usuarionodebb:

sudo chown -R nodebb:nodebb /var/www/nodebb

Crea el archivo de configuración de la unidadnodebb.service systemd . Este archivo de unidad se encargará de iniciar el deamon de NodeBB. Ejecuta sudo vim /etc/systemd/system/nodebb.service y añade el siguiente contenido:

[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service

[Service]
Type=forking
User=nodebb

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodebb

Environment=NODE_ENV=production
WorkingDirectory=/var/www/nodebb
PIDFile=/var/www/nodebb/pidfile
ExecStart=/usr/bin/env node loader.js
Restart=always

[Install]
WantedBy=multi-user.target

NOTA:Establece el nombre de usuario y las rutas de los directorios de acuerdo con los nombres que hayas elegido.

Habilitanodebb.service al reiniciar y arranca inmediatamentenodebb.service:

sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service

Comprueba el estado de nodebb.service:

sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service

¡Enhorabuena! Has instalado y desplegado con éxito la plataforma de debate NodeBB en el servidor CentOS 7.

Enlaces

También te podría gustar...