GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare MERN Stack con Nginx su Debian 11

Come installare lo stack MERN con Nginx su Debian 11. Lo stack MERN è una configurazione con MongoDB, Express, React e Node.js. Questa è una delle varianti dello stack MEAN. MongoDB è il database, Express with Node.js viene utilizzato per il back-end che comunica con il database, React è il lato client o front-end. Utilizzeremo il proxy inverso Nginx sul server Node.js e configureremo Let'sEncrypt SSL.

In questa guida imparerai come configurare lo stack MERN sul tuo server Debian 11.

Questa configurazione è stata testata su Google Cloud, quindi dovrebbe funzionare correttamente su altri server cloud VPS che eseguono Debian 11.

Prerequisiti

  • Un server Debian 11 con accesso sudo.
  • Un nome di dominio puntato al tuo server.

Sommario

  1. Installa MongoDB.
  2. Configura MongoDB.
  3. Installa Node.js con NVM.
  4. Installa React.js.
  5. Installa Express.js.
  6. Imposta PM2 per eseguire Node.js nel backend.
  7. Installa Nginx e configuralo.
  8. Installa Let'sEncrypt SSL.

Configurazione iniziale del server

Inizia aggiornando i pacchetti del server all'ultimo disponibile.

sudo apt update
sudo apt dist-upgrade -y

Ora puoi procedere alla configurazione dello stack MERN.

Installa MongoDB

Qui installeremo MongoDB Community Edition con LTS usando apt pacchetto gestito. L'ultima versione corrente di MongoDB al momento di questo articolo è 5.0.5.

Potrebbe essere necessario installare gnupg per l'importazione della chiave.

 sudo apt install gnupg

Importa la chiave pubblica usando il seguente comando.

wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -

Aggiungi il repository MongoDB all'elenco delle fonti. Useremo il repository di buster perché al momento della stesura di questo articolo, MongoDB Community Edition non ha un repository separato per Debian Bullseye.

Il repository Buster è in fase di sviluppo attivo e compatibile con Bullseye.

echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

Aggiorna i pacchetti e installa MongoDB.

sudo apt update
sudo apt install -y mongodb-org

Una volta completata l'installazione, abilita MongoDB per l'avvio all'avvio del sistema.

sudo systemctl enable mongod

Avvia il server MongoDB.

sudo service mongod start

Puoi visualizzare lo stato usando il seguente comando.

sudo service mongod status

Output
● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-02-18 09:11:56 UTC; 3m ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 1942 (mongod)
     Memory: 164.5M
     CGroup: /system.slice/mongod.service
             └─1942 /usr/bin/mongod --config /etc/mongod.conf

Feb 18 09:11:56 staging systemd[1]: Started MongoDB Database Server.

Configura MongoDB

Ora possiamo proteggere MongoDB, configurare MongoDB per accettare connessioni remote e anche creare un nuovo database.

MongoDB protetto

Modifica il file di configurazione di MongoDB.

sudo nano /etc/mongod.conf

Scorri verso il basso fino alla sezione sicurezza #security e decommentalo e abilita l'autorizzazione. La modifica finale dovrebbe apparire come di seguito.

security:
  authorization: enabled

Abilita connessioni remote

Per abilitare le connessioni remote è necessario modificare lo stesso file e aggiungere il proprio IP interno o privato alle interfacce di rete. La tua configurazione dovrebbe essere simile a quella qui sotto.

net:
  port: 27017
  bindIp: 127.0.0.1,10.128.10.1

Sostituisci 10.128.10.1 con il tuo indirizzo IP.

Apri l'eventuale firewall per la porta 27017.

Riavvia MongoDB.

sudo systemctl restart mongod

Conferma se MongoDB consente connessioni remote utilizzando il comando seguente.

sudo lsof -i | grep mongo

Dovresti ricevere un output simile a quello qui sotto.

mongod 1942 mongodb 11u IPv4 31550 0t0 TCP instance_name.c.project_id.internal:27017 (LISTEN)
mongod 1942 mongodb 12u IPv4 31551 0t0 TCP localhost:27017 (LISTEN)

Crea utente amministratore MongoDB

Connettiti alla shell MongoDB usando mongosh comando.

mongosh

Passa al database di amministrazione.

use admin

Crea un utente amministratore con tutti i privilegi e la password di configurazione.

db.createUser({user: "admin" , pwd: passwordPrompt() , roles: [{ role: "userAdminAnyDatabase" , db: "admin"}]})

Inserisci la password quando richiesto.

Inserisci exit per uscire dalla shell.

Ora puoi utilizzare la seguente stringa di connessione per connetterti a MongoDB.

mongodb://admin:password@External-IP:27017/database

Installa Node.js con NVM

Useremo Node Version Manager (NVM) per installare Node.js. Con questo puoi facilmente utilizzare tra diverse versioni di Node.js.

Scarica ed esegui lo script di installazione della NVM utilizzando wget .

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

Ora carica il comando nvm nella sessione della shell corrente.

source ~/.bashrc

Per elencare tutte le versioni di Node.js disponibili puoi usare il seguente comando.

nvm ls-remote

Installa la versione di Node.js di cui hai bisogno con la sintassi seguente.

nvm install v16.13.2

Una volta installato, puoi controllare le versioni di Node.js e NPM.

node -v
v16.13.2

npm -v
6.14.13

Installa React.js

Installa e crea il frontend React.js usando npx comando.

Passa alla cartella in cui desideri installare l'app React ed esegui il comando seguente.

npx create-react-app frontend

Ci vorrà del tempo per installare tutti i pacchetti React. Una volta completata l'installazione, vedrai un frontend cartella creata con tutti gli script React di base.

Accedi alla directory frontend e attiva la build utilizzando npm .

cd frontend
npm run build

Questo creerà un output statico con file HTML, CSS e JS per il tuo frontend.

Puoi indirizzare il tuo server web Nginx a questa directory di build per servire il tuo frontend.

Installa Express.js

Installa la generazione rapida usando il npx comando.

npx express-generator

Una volta completata l'installazione, crea la tua applicazione di back-end utilizzando express comando.

cd ~/
express backend

Ora il tuo Express dovrebbe essere creato. È possibile installare tutti i moduli del nodo e avviare il server Express utilizzando PM2 in background, come indicato nella sezione seguente.

cd backend
npm install

Diventa uno sviluppatore web full-stack con specializzazione React . Corso completo di sviluppo web

Imposta PM2 per eseguire Node.js in background

PM2 è un Node Process Manager molto utile per avviare i server dei nodi in background.

Passa alla tua applicazione Express ed esegui il comando seguente.

cd ~/backend
pm2 start npm --name "backend" -- start

Ora il tuo server Express è avviato in background e in ascolto sulla porta 3000.

Configura PM2 per avviare l'applicazione Express all'avvio.

pm2 startup

Ti verrà fornito un lungo comando da eseguire. Una volta eseguito il comando puoi salvare le impostazioni.

pm2 save

Successivamente puoi configurare il proxy inverso Nginx su questa porta su un sottodominio o una sottocartella secondo i tuoi desideri.

Installa Nginx e configuralo

Nginx è uno dei migliori server web per funzionare con applicazioni basate su Node.js.

Installa Nginx.

sudo apt install nginx

Rimuovi le configurazioni predefinite

sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default

Crea una nuova configurazione Nginx

sudo nano /etc/nginx/sites-available/application.conf

Incolla quanto segue. In questa configurazione indichiamo il percorso del dominio principale alla directory di output build dell'applicazione React.js e al /api percorso per l'applicazione Express.js.

server {
     listen [::]:80;
     listen 80;

     server_name domainname.com www.domainname.com;

     root /home/cloudbooklet/backend/build/;
     index index.html;

     location / {
         try_files $uri $uri/ =404;
     }

     location /api/ {
         proxy_pass http://127.0.0.1:3001;
         proxy_http_version 1.1;
         proxy_set_header Connection '';
         proxy_set_header Host $host;
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $remote_addr;
    }
}

Salva ed esci dal file.

Abilita la tua configurazione creando un link simbolico.

sudo ln -s /etc/nginx/sites-available/application.conf /etc/nginx/sites-enabled/application.conf

Controlla la tua configurazione di Nginx e riavvia Nginx

sudo nginx -t
sudo service nginx restart

Installa Let'sEncrypt SSL

Possiamo utilizzare Certbot per installare il certificato SSL Let's Encrypt gratuito per il tuo dominio.

sudo apt install python3-certbot-nginx

Eseguire il comando seguente per installare il certificato e configurare il reindirizzamento a HTTPS automaticamente.

sudo certbot --nginx --redirect --agree-tos --no-eff-email -m [email protected] -d domain.com -d www.domain.com

Ora dovresti ricevere il certificato SSL e verrà configurato automaticamente.

Imposta il rinnovo automatico.

sudo certbot renew --dry-run

Ora puoi cercare il tuo dominio nel tuo browser per vedere l'output.

Conclusione

Ora hai imparato come installare e configurare lo stack MERN su Debian 11.

Grazie per il tuo tempo. In caso di problemi o feedback, si prega di lasciare un commento qui sotto.


Linux
  1. Come installare MongoDB 4.4 / 4.2 su Debian 9

  2. Come installare Nginx su Debian 8 (Jessie)

  3. Come installare e configurare lo stack MERN con Nginx su Ubuntu 20.04

  4. Come installare MERN Stack con Nginx su Debian 11

  5. Come installare lo stack LEMP su Debian 10 Buster

Come installare lo stack LEMP su Debian 10

Come installare Nginx con PHP-FPM su Debian 10

Come installare WordPress con Stack LEMP su Debian 11 Bullseye

Come installare lo stack LEMP su Debian 11

Come installare MongoDB su Debian 11

Come installare ELK Stack su Debian 8