Jak nainstalovat MERN stack s Nginx na Debian 11. MERN stack je nastavení s MongoDB, Express, React a Node.js. Jedná se o jednu z variant MEAN stacku. MongoDB je databáze, Express s Node.js se používá pro backend, který komunikuje s databází, React je strana klienta nebo frontend. Použijeme reverzní proxy Nginx na server Node.js a nastavíme Let’sEncrypt SSL.
V této příručce se naučíte, jak nastavit MERN stack na vašem serveru Debian 11.
Toto nastavení je testováno na Google Cloud, takže by mělo fungovat dobře na jiných VPS, cloudových serverech se systémem Debian 11.
Předpoklady
- Server Debian 11 s přístupem sudo.
- Název domény odkazující na váš server.
Obsah
- Nainstalujte MongoDB.
- Nakonfigurujte MongoDB.
- Nainstalujte Node.js s NVM.
- Nainstalujte React.js.
- Nainstalujte Express.js.
- Nastavte PM2 pro spouštění Node.js v backendu.
- Nainstalujte Nginx a nakonfigurujte jej.
- Nainstalujte Let’sEncrypt SSL.
Počáteční nastavení serveru
Začněte aktualizací serverových balíčků na nejnovější dostupné.
sudo apt update sudo apt dist-upgrade -y
Nyní můžete přistoupit k nastavení zásobníku MERN.
Instalovat MongoDB
Zde nainstalujeme MongoDB Community Edition s LTS pomocí apt
balíček spravovaný. Aktuální nejnovější verze MongoDB v době tohoto článku je 5.0.5.
Možná budete muset nainstalovat gnupg
pro import klíče.
sudo apt install gnupg
Importujte veřejný klíč pomocí následujícího příkazu.
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
Přidejte úložiště MongoDB do seznamu zdrojů. Použijeme repo bustera, protože v době psaní tohoto článku nemá MongoDB Community Edition samostatný repozitář pro Debian Bullseye.
Úložiště Buster je v aktivním vývoji a je kompatibilní s 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
Aktualizujte balíčky a nainstalujte MongoDB.
sudo apt update sudo apt install -y mongodb-org
Po dokončení instalace povolte spuštění MongoDB při spuštění systému.
sudo systemctl enable mongod
Spusťte server MongoDB.
sudo service mongod start
Stav můžete zobrazit pomocí následujícího příkazu.
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.
Konfigurace MongoDB
Nyní můžeme zabezpečit MongoDB, nakonfigurovat MongoDB pro přijímání vzdálených připojení a také vytvořit novou databázi.
Secure MongoDB
Upravte konfigurační soubor MongoDB.
sudo nano /etc/mongod.conf
Přejděte dolů do sekce zabezpečení #security
a odkomentujte jej a povolte autorizaci. Konečná úprava by měla vypadat následovně.
security: authorization: enabled
Povolit vzdálená připojení
Chcete-li povolit vzdálená připojení, musíte upravit stejný soubor a přidat svou interní nebo soukromou IP do síťových rozhraní. Vaše konfigurace by měla vypadat jako ta níže.
net: port: 27017 bindIp: 127.0.0.1,10.128.10.1
Nahraďte 10.128.10.1 svou IP adresou.
Otevřete firewall, pokud existuje pro port 27017.
Restartujte MongoDB.
sudo systemctl restart mongod
Pomocí následujícího příkazu ověřte, zda MongoDB povoluje vzdálená připojení.
sudo lsof -i | grep mongo
Měli byste obdržet výstup podobný tomu níže.
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)
Vytvořit uživatele MongoDB Admin
Připojte se k prostředí MongoDB pomocí mongosh
příkaz.
mongosh
Změňte na databázi správce.
use admin
Vytvořte administrátora se všemi oprávněními a heslem pro nastavení.
db.createUser({user: "admin" , pwd: passwordPrompt() , roles: [{ role: "userAdminAnyDatabase" , db: "admin"}]})
Po zobrazení výzvy zadejte heslo.
Zadejte exit
pro opuštění shellu.
Nyní můžete pro připojení k MongoDB použít následující připojovací řetězec.
mongodb://admin:password@External-IP:27017/database
Instalovat Node.js s NVM
K instalaci Node.js použijeme Node Version Manager (NVM). Díky tomu můžete snadno přecházet mezi různými verzemi Node.js.
Stáhněte a spusťte instalační skript NVM pomocí wget
.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
Nyní načtěte příkaz nvm do aktuální relace shellu.
source ~/.bashrc
Chcete-li zobrazit seznam všech dostupných verzí Node.js, můžete použít následující příkaz.
nvm ls-remote
Nainstalujte potřebnou verzi Node.js s níže uvedenou syntaxí.
nvm install v16.13.2
Po instalaci můžete zkontrolovat verze Node.js a NPM.
node -v v16.13.2 npm -v 6.14.13
Instalovat React.js
Nainstalujte a sestavte frontend React.js pomocí npx
příkaz.
Přejděte do složky, do které chcete nainstalovat aplikaci React, a spusťte následující příkaz.
npx create-react-app frontend
Instalace všech balíčků React bude nějakou dobu trvat. Po dokončení instalace se zobrazí frontend
složka vytvořená se všemi základními skripty React.
Přejděte do adresáře frontend a spusťte sestavení pomocí npm
.
cd frontend npm run build
Tím vytvoříte statický výstup se soubory HTML, CSS a JS pro váš frontend.
Svůj webový server Nginx můžete nasměrovat do tohoto adresáře sestavení, aby mohl sloužit vašemu frontendu.
Instalovat Express.js
Nainstalujte expresní generování pomocí npx
příkaz.
npx express-generator
Po dokončení instalace vytvořte backendovou aplikaci pomocí express
příkaz.
cd ~/ express backend
Nyní by měl být váš Express vytvořen. Můžete nainstalovat všechny moduly uzlů a spustit Express server pomocí PM2 na pozadí, jak je uvedeno v části níže.
cd backend npm install
Staňte se Full-Stack Web Developerem se specializací React . Dokončete kurz vývoje webu
Nastavení PM2 pro spouštění Node.js na pozadí
PM2 je Node Process Manager, který je velmi užitečný pro spouštění serverů Node na pozadí.
Přejděte do své aplikace Express a spusťte následující příkaz.
cd ~/backend pm2 start npm --name "backend" -- start
Nyní je váš Express server spuštěn na pozadí a naslouchá na portu 3000.
Nakonfigurujte PM2 tak, aby spouštěla aplikaci Express při spuštění.
pm2 startup
Budete mít k dispozici dlouhý příkaz k provedení. Po provedení příkazu můžete uložit nastavení.
pm2 save
Dále můžete nakonfigurovat reverzní proxy Nginx přes tento port na subdoméně nebo podsložce podle vašeho přání.
Nainstalujte Nginx a nakonfigurujte jej
Nginx je jedním z nejlepších webových serverů pro práci s aplikacemi založenými na Node.js.
Nainstalujte Nginx.
sudo apt install nginx
Odebrat výchozí konfigurace
sudo rm /etc/nginx/sites-available/default sudo rm /etc/nginx/sites-enabled/default
Vytvořte novou konfiguraci Nginx
sudo nano /etc/nginx/sites-available/application.conf
Vložte následující. V této konfiguraci ukazujeme cestu hlavní domény na výstupní adresář sestavení aplikace React.js a /api
cestu pro aplikaci 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; } }
Uložte a ukončete soubor.
Povolte konfiguraci vytvořením symbolického odkazu.
sudo ln -s /etc/nginx/sites-available/application.conf /etc/nginx/sites-enabled/application.conf
Zkontrolujte konfiguraci Nginx a restartujte Nginx
sudo nginx -t sudo service nginx restart
Instalovat Let’sEncrypt SSL
Můžeme použít Certbot k instalaci bezplatného certifikátu Let’s Encrypt SSL pro vaši doménu.
sudo apt install python3-certbot-nginx
Provedením následujícího příkazu nainstalujte certifikát a automaticky nakonfigurujte přesměrování na HTTPS.
sudo certbot --nginx --redirect --agree-tos --no-eff-email -m [email protected] -d domain.com -d www.domain.com
Nyní byste měli obdržet certifikát SSL a bude automaticky nakonfigurován.
Nastavte automatické obnovení.
sudo certbot renew --dry-run
Nyní můžete ve svém prohlížeči vyhledat svou doménu a zobrazit výstup.
Závěr
Nyní jste se naučili, jak nainstalovat a nastavit MERN stack na Debianu 11.
Díky za váš čas. Pokud narazíte na jakýkoli problém nebo zpětnou vazbu, zanechte prosím komentář níže.