BYTEBOOK
Bytebook Docs • Node.js / Express / Subdomain
← Înapoi la Bytebook
PATH: DOCS / NODE_DEPLOY_GUIDE.HTML _
[00:00:00] DOCS_READY
DEMOS Main Archive JAVA LABS Enterprise PY LABS Neural Assets NODE LABS Async Runtime INFRA Control Center
DEPLOYMENT GUIDES • NODE.JS & EXPRESS.JS

Ghid Rapid: Adăugare Subdomeniu Nou & Deploy Aplicație Node.js (Express)

Acest ghid descrie pașii necesari pentru a crea o aplicație web Node.js folosind Express.js, a o sincroniza din IntelliJ / WebStorm / VS Code pe VPS și a o publica pe un subdomeniu nou (node-demo.bytebook.xyz).

# Structura Locală a Proiectului (pe Mac)

Proiectul tău local (/Users/admin/Projects/node-demo) va avea următoarea structură de bază:

node-demo/
├── package.json # Fișierul de configurare și dependențe
└── app.js # Fișierul principal al aplicației

A. Fișierul package.json

{
  "name": "node-demo",
  "version": "1.0.0",
  "description": "Demo Node.js Express App",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "^4.18.2"
  }
}

B. Fișierul app.js

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

app.get('/', (req, res) => {
    res.json({ message: "Hello Alin din Node.js Express!" });
});

app.get('/api/info', (req, res) => {
    res.json({
        status: "success",
        framework: "Express.js",
        timestamp: new Date()
    });
});

app.listen(PORT, () => {
    console.log(`Serverul rulează pe portul ${PORT}`);
});

1. Configurare Advanced DNS (Namecheap)

  1. Conectează-te la contul Namecheap → bytebook.xyz → Advanced DNS.
  2. Adaugă o înregistrare de tip A Record:
    • Type: A Record
    • Host: node-demo (sau numele subdomeniului dorit)
    • Value: 63.250.40.142 (IP-ul VPS-ului)
    • TTL: Automatic

2. Sincronizare Cod prin SFTP (din IntelliJ / IDE)

  1. În IDE: Tools → Deployment → Configuration...
  2. La Mappings:
    • Local path: /Users/admin/Projects/node-demo
    • Deployment path: /root/projects/node-demo
  3. Click dreapta pe folderul rădăcină node-demo → Deployment → Upload.
Notă: Folderul node_modules NU se urcă prin SFTP. Se vor instala dependențele direct pe server.

3. Instalează Node.js și Dependențele pe VPS

  1. Conectează-te la VPS prin SSH și instalează Node.js (dacă nu este instalat deja):
    curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
    apt-get install -y nodejs
  2. Navighează în folderul proiectului încărcat și instalează pachetele din package.json:
    cd /root/projects/node-demo
    npm install

4. Configurare Serviciu Systemd pentru Node.js

  1. Creează un fișier de serviciu systemd pentru aplicația Node.js:
    nano /etc/systemd/system/node-app.service
  2. Adaugă următoarea configurație (rulează aplicația pe portul 3000):
    [Unit]
    Description=Node.js Express Application
    After=network.target
    
    [Service]
    User=root
    WorkingDirectory=/root/projects/node-demo
    ExecStart=/usr/bin/node app.js
    Restart=always
    Environment=PORT=3000
    
    [Install]
    WantedBy=multi-user.target
  3. Salvează fișierul, reîncarcă systemd și pornește serviciul:
    systemctl daemon-reload
    systemctl enable node-app
    systemctl start node-app

5. Configurare Subdomeniu în Caddy

  1. Editează Caddyfile:
    nano /etc/caddy/Caddyfile
  2. Adaugă blocul pentru subdomeniul Node.js, făcând reverse proxy către portul 3000:
    node-demo.bytebook.xyz {
        reverse_proxy localhost:3000
    }
  3. Reîncarcă Caddy:
    systemctl reload caddy

# Testare

• Accesează în browser: https://node-demo.bytebook.xyz

• Testează endpoint-ul de API: https://node-demo.bytebook.xyz/api/info