Node.js - pradžios vadovas
Node.js yra JavaScript vykdymo aplinka serverio programoms kurti. Šiame serveryje iš anksto įdiegti Node.js 22 LTS, npm, PM2 procesų tvarkyklė, git ir build-essential. Jokio sąrankos vedlio, jokios konfigūracijos – tiesiog prisijunkite per SSH ir pradėkite diegti programas.
1 žingsnis – Patikrinkite, ar Node.js veikia
Jūsų serverio IP adresas ir root slaptažodis nurodyti kliento skydelio puslapyje Server Details. Prisijunkite prie serverio per SSH:
ssh root@your.server.ip
Patikrinkite, ar įdiegti Node.js ir PM2:
node --version
npm --version
pm2 --version
Jei serverį patalpinote už VyOS maršrutizatoriaus privačiame tinkle, arba sukonfigūruokite prievadų peradresavimą (22, 80 ir 443), kad programa būtų pasiekiama iš interneto, arba prisijunkite per VPN ir pasiekite serverį privačiu IP.
2 žingsnis – Pirmosios programos diegimas
Sukurkite paprastą HTTP serverį ir patikrinkite, ar viskas veikia:
mkdir ~/myapp && cd ~/myapp
cat > app.js << 'EOF'
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello from Node.js ' + process.version + '\n');
});
server.listen(3000, () => console.log('Server running on port 3000'));
EOF
node app.js
Atidarykite http://your.server.ip:3000 naršyklėje. Turėtumėte matyti pasisveikinimo pranešimą. Paspauskite Ctrl+C , kad sustabdytumėte serverį.
Diegimas iš Git
cd /root
git clone https://github.com/your-username/your-project.git
cd your-project
npm install
3 žingsnis – Atvirkštinio tarpinio serverio ir SSL nustatymas (neprivaloma)
Norėdami programą pateikti per 80/443 prievadą su domeno vardu, įdiekite Nginx kaip atvirkštinį tarpinį serverį:
apt update && apt install -y nginx
cat > /etc/nginx/sites-available/myapp << 'EOF'
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_bypass $http_upgrade;
}
}
EOF
ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx
Tada įjunkite nemokamą HTTPS su Let’s Encrypt:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d your-domain.com
Certbot automatiškai sukonfigūruos SSL ir automatinį atnaujinimą.
PM2 – procesų tvarkyklė
Paleidus node app.js tiesiogiai, programa sustoja uždarius terminalą arba jai sugedus. PM2 palaiko programos veikimą fone, ją paleidžia iš naujo po gedimo ir automatiškai paleidžia po serverio perkrovimo.
Pagrindinės komandos:
# Start your application
pm2 start app.js --name myapp
# View running applications
pm2 list
# View logs
pm2 logs myapp
# Restart / stop / remove
pm2 restart myapp
pm2 stop myapp
pm2 delete myapp
Automatinis paleidimas po perkrovimo
PM2 iš anksto sukonfigūruotas pasileisti paleidžiant sistemą. Paleidę programas, išsaugokite procesų sąrašą, kad jie automatiškai atsinaujintų po serverio perkrovimo:
pm2 save
Paleiskite pm2 save dar kartą kaskart pridėję ar pašalinę programas.
Cluster režimas
Paleiskite kelis programos egzempliorius, kad išnaudotumėte visus turimus CPU branduolius:
# Start with one instance per CPU core
pm2 start app.js -i max --name myapp
# Or specify the number of instances
pm2 start app.js -i 2 --name myapp
Stebėjimas
CPU ir atminties naudojimo peržiūra realiuoju laiku:
pm2 monit
Po įdiegimo
Fail2Ban – apsauga nuo slaptažodžių spėjimo atakų
Jūsų serveryje įdiegta Fail2Ban iš anksto sukonfigūruotas apsaugoti SSH nuo slaptažodžių spėjimo atakų.
| Taisyklė | Maks. bandymų | Blokavimo trukmė |
|---|---|---|
| SSH | 5 nesėkmingi prisijungimai | 10 minučių |
Naudingos komandos:
# Check banned IPs
fail2ban-client status sshd
# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4
Jei netyčia užsiblokavote, prisijunkite per VNC konsolę kliento skydelyje ir atblokuokite savo IP.
Paslaugų valdymas
PM2 valdo jūsų Node.js programas. Nginx (jei įdiegtas kaip atvirkštinis tarpinis serveris) veikia per systemd:
# PM2 daemon
pm2 resurrect # restore saved process list
pm2 status # overview
# Nginx reverse proxy
systemctl status nginx
systemctl reload nginx
journalctl -u nginx -n 100
Vietiniai moduliai
build-essential (gcc, g++, make) įdiegtas iš anksto, todėl npm paketai su vietiniais C/C++ priedais kompiliuojami be problemų:
npm install bcrypt
npm install sharp
npm install sqlite3
Atnaujinimai
# Update Node.js
apt update && apt install -y nodejs
# Update PM2
npm install -g pm2
pm2 update
# Update OS packages
apt update && apt upgrade -y
Įdiegta programinė įranga
| Komponentas | Versija |
|---|---|
| Ubuntu | 24.04 LTS |
| Node.js | 22.x LTS |
| npm | 10.x |
| PM2 | 6.x |
| git | 2.43 |
| build-essential | gcc 13.3 |
| Fail2Ban | 1.0.2 |
Trikčių šalinimas
| Problema | Sprendimas |
|---|---|
| Programa sugenda ir nepasileidžia iš naujo | Naudokite PM2 vietoj node app.js: pm2 start app.js |
| Programa neveikia po perkrovimo | Paleiskite pm2 save paleidę programas, kad įjungtumėte automatinį paleidimą |
| Prievadas jau naudojamas | Patikrinkite, kas jį naudoja: ss -tlnp | grep :3000 |
npm install nepavyksta dėl kompiliavimo klaidų |
build-essential įdiegtas iš anksto. Patikrinkite klaidą – kai kuriems paketams gali prireikti apt install python3 |
| No space left on device | Patikrinkite diską: df -h /. Išvalykite npm podėlį: npm cache clean --force |
| Užblokavo Fail2Ban | Atblokuokite savo IP per VNC konsolę kliento skydelyje |
| Pamiršote root slaptažodį | Atkurkite jį per VNC konsolę kliento skydelyje |