NodeBB es un software de foro basado en Node.js creado para la web moderna. Se basa en una base de datos MongoDB o Redis. Utiliza sockets web para interacciones instantáneas y notificaciones en tiempo real. NodeBB tiene muchas características modernas listas para usar, como la integración de redes sociales y las discusiones de transmisión. La funcionalidad adicional se habilita mediante el uso de complementos de terceros. NodeBB es un proyecto de código abierto que se puede encontrar en Github. En esta guía, lo guiaremos paso a paso por el proceso de instalación de NodeBB en el sistema operativo CentOS 7.
Requisitos
NodeBB requiere que se instale el siguiente software:
- Versión de Node.js 6 o mayor
- MongoDB versión 2.6 o superior o versión de Redis 2.8.9 o mayor
- Versión de Nginx 1.3.13 o mayor
- Git
Requisitos
- Un servidor que ejecuta CentOS 7 x86_64 (64 bits) con al menos 1 GB o RAM
- Nombre de dominio con
A
/AAAA
registros configurados - Un usuario no root con privilegios sudo.
Pasos iniciales
Compruebe la versión de CentOS:
cat /etc/centos-release
# CentOS Linux release 7.5.1804 (Core)
Configurar la zona horaria:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Actualice los paquetes de su 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, deshabilite SELinux y Firewall:
sudo setenforce 0; sudo systemctl stop firewalld.service; sudo systemctl disable firewalld.service
Paso 1:Instalar Node.js y npm
NodeBB se basa en Node.js. Vamos a instalar recomendado versión para NodeBB, que es la versión 8 en el momento de escribir este artículo. En Linux, tiene algunas opciones de instalación de Node.js:binarios de Linux (x86/x64), código fuente o mediante administradores de paquetes. Usaremos la opción Administración de paquetes que hace que la instalación y actualización de Node.js sea muy sencilla.
Descargue e instale la última versión de soporte a largo plazo (LTS) de Node.js desde el repositorio de Nodesource:
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum -y install nodejs
Para compilar e instalar complementos nativos de npm, es posible que también deba 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 descarga Node.js, npm se instala automáticamente en su sistema.
Verifique las versiones de Node.js y npm :
node -v && npm -v
# v8.12.0
# 6.4.1
Npm es un proyecto separado de Node.js y tiende a actualizarse con más frecuencia. Como resultado, incluso si acaba de descargar Node.js (y, por lo tanto, npm), probablemente necesite actualizar su npm. Afortunadamente, npm sabe cómo actualizarse. Para actualizar su npm, escriba esto en su 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 es compatible con MongoDB y Redis. En este tutorial, elegimos MongoDB como motor de almacenamiento de datos. Entonces, en los próximos pasos, descargaremos e instalaremos la base de datos MongoDB desde el repositorio rpm oficial de MongoDB:
Cree un /etc/yum.repos.d/mongodb-org-4.0.repo
archivo, para que pueda instalar MongoDB directamente usando yum
:
sudo vim /etc/yum.repos.d/mongodb-org-4.0.repo
Complete 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, emita el siguiente comando:
sudo yum install -y mongodb-org
Compruebe 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
Iniciar y habilitar (configúralo para que se inicie al reiniciar ) Servicio MongoDB:
sudo systemctl start mongod.service
sudo systemctl enable mongod.service
Compruebe el estado del servidor de la base de datos MongoDB ejecutando:
sudo systemctl status mongod.service
# active (running)
A continuación, cree la base de datos MongoDB y el usuario para NodeBB.
Primero conéctese al servidor MongoDB.
mongo
Cambiar al admin
integrado base de datos.
> use admin
Cree un usuario administrativo.
> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
<Enter a secure password>
con su propia contraseña seleccionada.
Agregue 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, cree el nodebb
usuario con los privilegios apropiados.
> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
<Enter a secure password>
con su propia contraseña seleccionada.
Salga del shell de Mongo.
> quit()
Reinicie MongoDB y verifique que el usuario administrativo creado anteriormente pueda conectarse.
sudo systemctl restart mongod.service
mongo -u admin -p your_password --authenticationDatabase=admin
Si todo salió bien, su MongoDB debería estar instalado y preparado para NodeBB. En el próximo paso, nos ocuparemos de la instalación y configuración del servidor web.
Paso 3:Instale el cliente Acme.sh y obtenga un certificado Let's Encrypt (opcional )
No es necesario asegurar su foro NodeBB con HTTPS, pero es una buena práctica para asegurar el tráfico de su sitio. Para obtener el certificado SSL de Let's Encrypt, utilizaremos el cliente Acme.sh. Acme.sh es un software de shell de Unix puro para obtener certificados SSL de Let's Encrypt sin 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 ~
Comprobar la versión Acme.sh :
/etc/letsencrypt/acme.sh --version
# v2.8.0
Obtener RSA y ECC/ECDSA certificados para su 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, sus certificados y teclas estará en:
- Para RSA :
/etc/letsencrypt/forum.example.com
directorio. - Para ECC/ECDSA :
/etc/letsencrypt/forum.example.com_ecc
directorio.
Paso 4:Instalar y configurar Nginx
NodeBB puede funcionar bien con muchos servidores web. En este tutorial, seleccionamos Nginx.
Primero descargue e importe 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
Cree un /etc/yum.repos.d/nginx_mainline.repo
archivo, para que pueda instalar Nginx directamente usando yum
:
sudo vim /etc/yum.repos.d/nginx_mainline.repo
Complete el archivo con el siguiente contenido:
[nginx] name=nginx repo baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=1 enabled=1
Finalmente, para instalar la última versión principal del paquete Nginx, emita el siguiente comando:
sudo yum install -y nginx
Después de la instalación, puede verificar la versión de Nginx ejecutando:
nginx -v
# 1.15.3
Iniciar y habilitar (configúralo para que se inicie al reiniciar ) Servicio Nginx:
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
Verifique el estado del servidor web Nginx ejecutando:
sudo systemctl status nginx.service
# active (running)
NodeBB se ejecuta de forma predeterminada en el puerto 4567
. Para evitar escribir http://example.com:4567
, configuraremos Nginx como proxy inverso para la aplicación NodeBB. Cada solicitud en el puerto 80
o 443
(si se usa SSL ) se reenviará al puerto 4567
.
Ejecute sudo vim /etc/nginx/conf.d/nodebb.conf
y configure Nginx como un 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";
}
}
Verifique la configuración de Nginx:
sudo nginx -t
Finalmente, para que los cambios surtan efecto, debemos volver a cargar Nginx:
sudo systemctl reload nginx.service
Paso 5:Instalar y configurar NodeBB
Cree un directorio raíz de documentos donde debe residir NodeBB:
sudo mkdir -p /var/www/nodebb
Navegue al directorio raíz del documento:
cd /var/www/nodebb
Cambiar la propiedad de /var/www/nodebb
directorio a tu_usuario.
sudo chown -R [your_user]:[your_user] /var/www/nodebb
NOTA: Reemplace your_user en el comando anterior con su usuario no root que debería haber creado como requisito previo para este tutorial .
Clone el último repositorio de NodeBB en la carpeta raíz del documento:
git clone -b v1.10.x https://github.com/NodeBB/NodeBB.git .
Inicie el script de configuración ejecutando la aplicación con setup
bandera:
./nodebb setup
Una vez completada la configuración de NodeBB, ejecute ./nodebb start
para iniciar manualmente su servidor NodeBB:
./nodebb start
Después de ejecutar este comando, debería poder acceder a su nuevo foro en su navegador web:
Paso 6:Ejecute NodeBB como servicio del sistema
Cuando se inicia a través de ./nodebb start
, NodeBB no volverá a iniciarse automáticamente cuando se reinicie el sistema. Para evitar eso, necesitaremos configurar NodeBB como un servicio del sistema.
Si se está ejecutando, detenga NodeBB:
./nodebb stop
Crear un nuevo nodebb
usuario:
sudo useradd nodebb
Cambiar la propiedad de /var/www/nodebb
directorio a nodebb
usuario:
sudo chown -R nodebb:nodebb /var/www/nodebb
Crear nodebb.service
archivo de configuración de la unidad systemd. Este archivo de unidad manejará el inicio de NodeBB deamon. Ejecute 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
Habilitar nodebb.service
al reiniciar e inmediatamente iniciar nodebb.service:
sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service
Compruebe el nodebb.service
estado:
sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service
¡Felicidades! Ha instalado e implementado con éxito la plataforma de debate NodeBB en el servidor CentOS 7.
Enlaces
- https://nodebb.org/
- https://docs.nodebb.org/