GNU/Linux >> Belajar Linux >  >> Linux

Cara Menginstal Mern Stack dengan Nginx di Debian 11

Bagaimana menginstal MERN stack dengan Nginx di Debian 11. MERN stack adalah setup dengan MongoDB, Express, React dan Node.js. Ini adalah salah satu varian dari tumpukan MEAN. MongoDB adalah database, Express dengan Node.js digunakan untuk backend yang berkomunikasi dengan database, React adalah sisi klien atau frontend. Kami akan menggunakan proxy terbalik Nginx ke server Node.js dan menyiapkan Let'sEncrypt SSL.

Dalam panduan ini Anda akan mempelajari cara mengatur tumpukan MERN di server Debian 11 Anda.

Penyiapan ini diuji di Google Cloud, sehingga akan berfungsi dengan baik di VPS lain, server cloud yang menjalankan Debian 11.

Prasyarat

  • Server Debian 11 dengan akses sudo.
  • Nama domain mengarah ke server Anda.

Daftar isi

  1. Instal MongoDB.
  2. Konfigurasikan MongoDB.
  3. Instal Node.js dengan NVM.
  4. Instal React.js.
  5. Instal Express.js.
  6. Siapkan PM2 untuk menjalankan Node.js di backend.
  7. Instal Nginx dan konfigurasikan.
  8. Instal Let'sEncrypt SSL.

Pengaturan Server Awal

Mulailah dengan memperbarui paket server ke yang terbaru yang tersedia.

sudo apt update
sudo apt dist-upgrade -y

Sekarang Anda dapat melanjutkan ke penyiapan tumpukan MERN.

Instal MongoDB

Di sini kita akan menginstal MongoDB Community Edition dengan LTS menggunakan apt paket dikelola. Versi terbaru MongoDB pada saat artikel ini dibuat adalah 5.0.5.

Anda mungkin perlu menginstal gnupg untuk mengimpor kunci.

 sudo apt install gnupg

Impor kunci publik menggunakan perintah berikut.

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

Tambahkan repositori MongoDB ke daftar sumber. Kami akan menggunakan repo buster karena pada saat artikel ini ditulis, Edisi Komunitas MongoDB tidak memiliki repositori terpisah untuk Debian Bullseye.

Repositori Buster sedang dalam pengembangan aktif dan kompatibel dengan 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

Perbarui paket dan instal MongoDB.

sudo apt update
sudo apt install -y mongodb-org

Setelah penginstalan selesai, aktifkan MongoDB untuk memulai saat startup sistem.

sudo systemctl enable mongod

Mulai server MongoDB.

sudo service mongod start

Anda dapat melihat statusnya menggunakan perintah berikut.

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.

Konfigurasi MongoDB

Sekarang kita dapat mengamankan MongoDB, mengkonfigurasi MongoDB untuk menerima koneksi jarak jauh dan juga membuat database baru.

MongoDB Aman

Edit file konfigurasi MongoDB.

sudo nano /etc/mongod.conf

Gulir ke bawah ke bagian keamanan #security dan batalkan komentar dan aktifkan otorisasi. Hasil edit terakhir akan terlihat seperti di bawah ini.

security:
  authorization: enabled

Aktifkan Koneksi Jarak Jauh

Untuk mengaktifkan koneksi jarak jauh, Anda perlu mengedit file yang sama dan menambahkan IP internal atau pribadi Anda ke antarmuka jaringan. Konfigurasi Anda akan terlihat seperti di bawah ini.

net:
  port: 27017
  bindIp: 127.0.0.1,10.128.10.1

Ganti 10.128.10.1 dengan alamat IP Anda.

Buka firewall jika ada untuk port 27017.

Mulai ulang MongoDB.

sudo systemctl restart mongod

Konfirmasikan apakah MongoDB mengizinkan koneksi jarak jauh menggunakan perintah berikut.

sudo lsof -i | grep mongo

Anda akan menerima output yang mirip dengan yang di bawah ini.

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)

Buat Pengguna Admin MongoDB

Hubungkan ke shell MongoDB menggunakan mongosh perintah.

mongosh

Ubah ke database admin.

use admin

Buat pengguna admin dengan semua hak istimewa dan sandi pengaturan.

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

Masukkan kata sandi saat diminta.

Masukkan exit untuk keluar dari shell.

Sekarang Anda dapat menggunakan string koneksi berikut untuk terhubung ke MongoDB.

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

Instal Node.js dengan NVM

Kami akan menggunakan Node Version Manager (NVM) untuk menginstal Node.js. Dengan ini Anda dapat dengan mudah dengan versi Node.js yang berbeda.

Unduh dan jalankan skrip instalasi NVM menggunakan wget .

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

Sekarang muat perintah nvm ke sesi shell saat ini.

source ~/.bashrc

Untuk membuat daftar semua versi Node.js yang tersedia, Anda dapat menggunakan perintah berikut.

nvm ls-remote

Instal versi Node.js yang Anda butuhkan dengan sintaks di bawah ini.

nvm install v16.13.2

Setelah terinstal, Anda dapat memeriksa versi Node.js dan NPM.

node -v
v16.13.2

npm -v
6.14.13

Instal React.js

Instal dan bangun React.js frontend menggunakan npx perintah.

Arahkan ke folder tempat Anda ingin menginstal aplikasi React dan jalankan perintah berikut.

npx create-react-app frontend

Ini akan memakan waktu untuk menginstal semua paket React. Setelah instalasi selesai, Anda akan melihat frontend folder yang dibuat dengan semua skrip React dasar.

Navigasikan ke direktori frontend dan picu build menggunakan npm .

cd frontend
npm run build

Ini akan membuat output statis dengan file HTML, CSS, dan JS untuk frontend Anda.

Anda dapat mengarahkan server web Nginx Anda ke direktori build ini untuk melayani frontend Anda.

Instal Express.js

Instal generasi ekspres menggunakan npx perintah.

npx express-generator

Setelah instalasi selesai, buat aplikasi backend Anda menggunakan express perintah.

cd ~/
express backend

Sekarang Express Anda harus dibuat. Anda dapat menginstal semua modul node dan memulai server Express menggunakan PM2 di latar belakang seperti yang disebutkan di bagian di bawah ini.

cd backend
npm install

Menjadi Pengembang Web Full-Stack dengan Spesialisasi React . Kursus Pengembangan Web Lengkap

Setup PM2 untuk Menjalankan Node.js di Latar Belakang

PM2 adalah Pengelola Proses Node yang sangat berguna untuk memulai server Node di latar belakang.

Navigasikan ke aplikasi Express Anda dan jalankan perintah berikut.

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

Sekarang server Express Anda dimulai di latar belakang dan mendengarkan pada port 3000.

Konfigurasikan PM2 untuk memulai aplikasi Express saat startup.

pm2 startup

Anda akan diberikan perintah panjang untuk dieksekusi. Setelah perintah dijalankan, Anda dapat menyimpan pengaturan.

pm2 save

Selanjutnya Anda dapat mengonfigurasi proxy terbalik Nginx melalui port ini pada subdomain atau subfolder sesuai keinginan Anda.

Instal Nginx dan Konfigurasi

Nginx adalah salah satu server web terbaik untuk bekerja dengan aplikasi berbasis Node.js.

Instal Nginx.

sudo apt install nginx

Hapus konfigurasi default

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

Buat konfigurasi Nginx baru

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

Tempel berikut ini. Dalam konfigurasi ini kami mengarahkan jalur domain utama ke direktori keluaran build aplikasi React.js dan /api jalur untuk aplikasi 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;
    }
}

Simpan dan keluar dari file.

Aktifkan konfigurasi Anda dengan membuat tautan simbolis.

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

Periksa konfigurasi Nginx Anda dan mulai ulang Nginx

sudo nginx -t
sudo service nginx restart

Instal Let'sEncrypt SSL

Kami dapat menggunakan Certbot untuk menginstal sertifikat SSL Let's Encrypt gratis untuk domain Anda.

sudo apt install python3-certbot-nginx

Jalankan perintah berikut untuk menginstal sertifikat dan mengonfigurasi pengalihan ke HTTPS secara otomatis.

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

Sekarang Anda akan menerima sertifikat SSL dan itu akan dikonfigurasi secara otomatis.

Siapkan perpanjangan otomatis.

sudo certbot renew --dry-run

Sekarang Anda dapat mencari domain Anda di browser untuk melihat hasilnya.

Kesimpulan

Sekarang Anda telah mempelajari cara menginstal dan mengatur tumpukan MERN di Debian 11.

Terima kasih atas waktunya. Jika Anda menghadapi masalah atau umpan balik, silakan tinggalkan komentar di bawah.


Linux
  1. Cara Menginstal MongoDB 4.4 / 4.2 Di Debian 9

  2. Cara Menginstal Nginx di Debian 8 (Jessie)

  3. Cara Menginstal dan Mengatur Stack MERN dengan Nginx di Ubuntu 20.04

  1. Cara Menginstal MongoDB di Debian 11

  2. Cara Menginstal Mern Stack dengan Nginx di Debian 11

  3. Cara Memasang LEMP Stack di Debian 10 Buster

  1. Cara Menginstal MongoDB di Debian 9

  2. Cara Menginstal Nginx di Debian 9

  3. Cara Menginstal InvoicePlane dengan Nginx di Debian 9