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
- Instal MongoDB.
- Konfigurasikan MongoDB.
- Instal Node.js dengan NVM.
- Instal React.js.
- Instal Express.js.
- Siapkan PM2 untuk menjalankan Node.js di backend.
- Instal Nginx dan konfigurasikan.
- 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.