Oberst Server

In diesem Artikel wird erläutert, wie Sie eine Next.js-Anwendung vorbereiten und migrieren, damit sie mit dem Node.js-Selektor in cPanel ausgeführt werden kann. Das Verfahren umfasst die Projektvorbereitung, Verpackung, und Anwendungseinrichtung in cPanel.

Umfang und Anforderungen

  • Der Node.js-Selektor muss auf dem Hosting-Konto verfügbar sein
  • Die Anwendung muss einen benutzerdefinierten Node.js-Server verwenden
  • Next.js erfordert die Node.js-Version 18.17 oder neuer

Dieser Workflow gilt für Anwendungshostingumgebungen wie z cPanel-Hosting, und kann je nach Anwendungsstruktur Anpassungen erfordern.

Vorbereiten eines Next.js-Projekts für die Migration

Wenn Sie bereits über ein bestehendes Next.js-Projekt verfügen, Beginnen Sie mit Schritt 5.

Beispielprojekt erstellen

  1. Stellen Sie sicher, dass Node.js und npm lokal installiert sind.
  2. Öffnen Sie ein Terminal und erstellen Sie ein neues Projekt:
npx create-next-app@latest
  1. Benennen Sie das Projekt nextapp und akzeptieren Sie die Standardoptionen.

Erstellen eines benutzerdefinierten Servers

Next.js muss mit einem benutzerdefinierten Server ausgeführt werden, um mit dem Node.js-Selektor zu funktionieren.

  1. Im Projektstamm, Erstellen Sie eine Datei mit dem Namen server.js.
  2. Fügen Sie den folgenden Code hinzu:
const { createServer } = require('http')
const { parse } = require('url')
const next = require('next')

const dev = process.env.NODE_ENV !== 'production'
const hostname = 'localhost'
const port = 3000
const app = next({ dev, hostname, port })
const handle = app.getRequestHandler()

app.prepare().then(() => {
  createServer(async (req, res) => {
    try {
      const parsedUrl = parse(req.url, true)
      const { pathname, query } = parsedUrl

      if (pathname === '/a') {
        await app.render(req, res, '/a', query)
      } else if (pathname === '/b') {
        await app.render(req, res, '/b', query)
      } else {
        await handle(req, res, parsedUrl)
      }
    } catch (err) {
      res.statusCode = 500
      res.end('internal server error')
    }
  }).listen(port)
})
  1. Speichern Sie die Datei.

Aktualisierung des Startskripts

  1. Offen package.json.
  2. Ersetzen Sie die start Skript mit folgendem:
"start": "NODE_ENV=production node server.js"
  1. Speichern Sie die Datei.

Aufbau und Verpackung des Projekts

  1. Erstellen Sie die Anwendung:
npm run build
  1. Erstellen Sie ein ZIP-Archiv, Ausschließen unnötiger Dateien:
zip -r ../nextapp.zip . --exclude "node_modules/*" ".git/*" .gitignore README.md

Das Archiv wird im übergeordneten Verzeichnis erstellt.

Hochladen von Dateien auf cPanel

  1. Melden Sie sich bei cPanel an.
  2. Offen Dateimanager.
  3. Hochladen nextapp.zip auf Ihr Konto.
  4. Erstellen Sie ein Verzeichnis mit dem Namen nextapp innen public_html.
  5. Extrahieren Sie die ZIP-Datei in public_html/nextapp.

Erstellen der Node.js-Anwendung

  1. Auf der Werkzeuge Seite, klicken Richten Sie die Node.js-App ein.
  2. Klicken Anwendung erstellen.
  3. Wählen Sie eine Node.js-Version aus, die mit Next.js kompatibel ist.
  4. Satz Anwendungsmodus zur Produktion.
  5. Satz Anwendungsstamm Zu nextapp.
  6. Wählen Sie Ihre Domain aus und lassen Sie den Pfad leer.
  7. Satz Anwendungsstartdatei Zu server.js.
  8. Klicken Erstellen.

Abhängigkeiten installieren und die App starten

  1. Klicken Stoppen Sie die App wenn es läuft.
  2. Klicken Führen Sie die NPM-Installation aus.
  3. Nach Abschluss der Installation, klicken App starten.

Wenn die NPM-Installationsoption nicht verfügbar ist, Laden Sie die Node.js-Auswahlseite neu, um die Anwendungsliste zu aktualisieren.

Bereitstellung überprüfen

Öffnen Sie Ihre Domain in einem Browser. Die Next.js-Anwendung sollte erfolgreich geladen werden.

Überlegungen zum Hosting

Node.js-Anwendungen mit höherem Datenverkehr oder höheren Skalierungsanforderungen erzielen möglicherweise eine bessere Leistung Cloud-Server. Für Workloads, die eine vollständige Kontrolle auf Systemebene erfordern, A Dedizierter Server Bietet maximale Flexibilität für die Laufzeitoptimierung von Node.js.

War dieser Artikel hilfreich??