Heim >Datenbank >MySQL-Tutorial >Stellen Sie eine Node.js-Anwendung mit MySQL und Prisma auf einem Raspberry Pi bereit

Stellen Sie eine Node.js-Anwendung mit MySQL und Prisma auf einem Raspberry Pi bereit

Linda Hamilton
Linda HamiltonOriginal
2025-01-06 04:06:38492Durchsuche

Deploy a Node.js Application Using MySQL and Prisma on a Raspberry Pi

Die Bereitstellung von Anwendungen ist mit einer Reihe kostenloser und kostenpflichtiger Hosting-Optionen wie Render, AWS und DigitalOcean immer zugänglicher geworden. Für Entwickler, die jedoch ohne wiederkehrende Hosting-Gebühren lernen, experimentieren und Anwendungen bereitstellen möchten, bietet ein Raspberry Pi eine hervorragende Alternative. Mit diesem kompakten und dennoch leistungsstarken Gerät können Sie Ihren eigenen Linux-basierten Server zum Hosten von Webanwendungen erstellen.

In diesem Blog erfahren Sie, wie Sie eine TypeScript Node.js-Anwendung mit MySQL (MariaDB auf Raspberry Pi) und Prisma ORM bereitstellen ein Raspberry Pi. Darüber hinaus konfigurieren wir NGINX für Reverse-Proxying und verwenden Ngrok, um die Anwendung dem Internet zugänglich zu machen. Lasst uns eintauchen!


Tools-Übersicht

Raspberry Pi

Ein kostengünstiger Einplatinencomputer, auf dem ein Linux-basiertes Betriebssystem ausgeführt wird. Es eignet sich ideal zum Erstellen eines eigenen Servers für IoT- oder Webanwendungen.

Node.js & TypeScript

Node.js ist eine Laufzeitumgebung zum Ausführen von JavaScript auf dem Server, und TypeScript fügt JavaScript statische Typisierung hinzu, wodurch die Codebasis besser wartbar wird.

MySQL (MariaDB auf Raspberry Pi)

MariaDB ist ein beliebtes relationales Datenbanksystem, ein kompatibler Ersatz für MySQL und leicht genug für einen Raspberry Pi.

Prisma ORM

Ein Object-Relational Mapping (ORM)-Tool, das Datenbankinteraktionen mit einer typsicheren Abfragesprache und Schemamigrationen vereinfacht.

NGINX

Ein leistungsstarker HTTP-Server und Reverse-Proxy-Server. Es hilft dabei, den Datenverkehr an Ihre Node.js-Anwendung weiterzuleiten.

Ngrok

Ein Tunneling-Tool, das Ihre lokal gehosteten Anwendungen sicher und ohne komplexe Netzwerkkonfigurationen dem Internet zugänglich macht.


Voraussetzungen

  1. Ein funktionierender Raspberry Pi – Stellen Sie sicher, dass SSH auf dem Raspberry Pi aktiviert ist und Sie remote darauf zugreifen können.
  2. Github-Repository – Ihre Node.js TypeScript-Anwendung sollte zur einfachen Bereitstellung in einem GitHub-Repository gehostet werden.
  3. Ngrok-Konto – Erstellen Sie ein kostenloses Konto bei Ngrok, um ein Authentifizierungstoken für die Offenlegung Ihrer Raspberry Pi-App im Internet zu erhalten.

Raspberry Pi einrichten

  1. Installieren Sie das Betriebssystem

    Richten Sie Ihren Raspberry Pi mit einem Betriebssystem wie Raspberry Pi OS ein. Verwenden Sie den Raspberry Pi Imager, um andere Betriebssysteme zu finden, die mit Ihrem Raspberry Pi kompatibel sind.

  2. Suchen Sie die IP-Adresse

    Verwenden Sie ein Tool wie Angry IP Scanner, um die IP-Adresse Ihres Raspberry Pi zu ermitteln. Stellen Sie sicher, dass der Raspberry Pi mit demselben Netzwerk wie Ihr lokaler Computer verbunden ist.

  3. Überprüfen Sie den Raspberry Pi-Status

    ping <IP_ADDRESS_OF_RPI>
    
  4. SSH in den Raspberry Pi

    ssh <username>@<IP_ADDRESS_OF_RPI>
    

    Ersetzen Sie mit dem Benutzernamen Ihres Raspberry Pi und mit der IP-Adresse und geben Sie dann das Passwort ein.

  5. Aktualisieren Sie das System

    sudo apt update && sudo apt upgrade
    
  6. Git installieren

    Überprüfen Sie, ob Git installiert ist. Wenn nicht, führen Sie den folgenden Befehl aus, um git
    zu installieren

    sudo apt install git
    

Node.js installieren

Um Node js zu installieren, verwenden wir nvm (Node Version Manager). Es ermöglicht Ihnen, schnell verschiedene Versionen des Knotens über die Befehlszeile zu installieren und zu verwenden.

  1. NVM installieren

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
    
  2. Installation überprüfen

    nvm --version
    
  3. Installieren Sie die neueste LTS-Version von Node.js

    nvm install --lts
    
  4. Node.js- und npm-Installation überprüfen

    node --version
    # v22.12.0
    
    npm --version
    # 10.9.0
    

MySQL (MariaDB) einrichten

Für Raspberry Pi OS werden wir MariaDB installieren.

  1. Installieren Sie den MariaDB SQL Server

    sudo apt install mariadb-server
    
  2. Sichere MariaDB-Installation

    sudo mysql_secure_installation
    

    Befolgen Sie die Anweisungen, um Ihre Datenbank zu sichern.

    • Geben Sie das aktuelle Root-Passwort ein: – Drücken Sie die Eingabetaste, wenn Sie aufgefordert werden, das aktuelle Passwort für den Root-Benutzer einzugeben (da es noch nicht festgelegt wurde).
    • Legen Sie das Root-Passwort fest: – Geben Sie n ein, wenn Sie dazu aufgefordert werden, das Root-Passwort festzulegen (wir legen es später fest).
    • Anonyme Benutzer entfernen: – Geben Sie Y ein, um anonyme Benutzer zu entfernen und die Sicherheit zu verbessern. (Zu Testzwecken können Sie n eingeben, um Benutzer anonym zu halten.)
    • Root-Anmeldung aus der Ferne verbieten: – Geben Sie n ein, um die Root-Anmeldung aus der Ferne zuzulassen (optional, aber weniger sicher).
    • Entfernen Sie die Testdatenbank: – Geben Sie y ein, um die Testdatenbank zu entfernen und darauf zuzugreifen. (Geben Sie n ein, wenn Sie es behalten möchten.)
  3. Melden Sie sich beim MariaDB-Client an

    sudo mysql
    
  4. Richten Sie ein Root-Passwort für MariaDB ein

    Zuerst müssen wir den Datenbankserver anweisen, die Gewährungstabellen neu zu laden.

    MariaDB [(none)]> FLUSH PRIVILEGES;
    

    Ändern Sie das Root-Passwort mit der folgenden Abfrage.

    MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';
    

    Ersetzen Sie mit Ihrem eigenen Passwort.

    Verwenden Sie den Exit-Befehl, um die MariaDB-CLI zu verlassen.

    MariaDB [(none)]> exit;
    Bye
    
  5. Melden Sie sich mit dem Root-Benutzer beim MariaDB-Client an

    ping <IP_ADDRESS_OF_RPI>
    

    Geben Sie das Passwort für den Root-Benutzer ein.

Datenbank und Benutzer einrichten

Lassen Sie uns eine neue Datenbank und einen Benutzer erstellen. Wir gewähren dem neuen Benutzer alle Berechtigungen für die neue Datenbank, die wir erstellt haben.

  1. Erstellen Sie eine Datenbank

    ssh <username>@<IP_ADDRESS_OF_RPI>
    
  2. Neuen Benutzer mit Passwort erstellen

    sudo apt update && sudo apt upgrade
    
  3. Neu erstelltem Benutzer Berechtigung gewähren

    sudo apt install git
    
  4. Berechtigungstabelle leeren

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
    
  5. Beenden Sie den MySQL-Client mit dem Exit-Befehl.

  6. Mit neuem Benutzer anmelden

    nvm --version
    

    Geben Sie das Passwort ein, das Sie beim Erstellen des Benutzers verwendet haben.

  7. Überprüfen Sie, ob der Benutzer die Datenbank auflisten kann

    nvm install --lts
    

Das ist es! Wir werden diese Datenbank und diesen Benutzer in unserer Anwendung verwenden.


Richten Sie Ihre Node.js-Anwendung ein

  1. Klonen Sie Ihr Github-Repository

    node --version
    # v22.12.0
    
    npm --version
    # 10.9.0
    
  2. Navigieren Sie zu Ihrem Projekt-Repository

    sudo apt install mariadb-server
    
  3. Projektabhängigkeiten installieren

    sudo mysql_secure_installation
    
  4. TypeScript-Code kompilieren

    sudo mysql
    

Stellen Sie sicher, dass Sie die outDir-Eigenschaft in Ihrer tsconfig.json-Datei konfiguriert haben. Dies gibt das Verzeichnis an, in dem der kompilierte JavaScript-Code generiert wird. Standardmäßig ist es normalerweise auf dist eingestellt, Sie können es jedoch basierend auf Ihrer Projektstruktur anpassen.

Umgebungsvariablen einrichten (optional)

Wenn Ihr Projekt Umgebungsvariablen verwendet, müssen Sie diese auf Ihrem Raspberry Pi festlegen. Sie können eine .env-Datei im Stammverzeichnis Ihres Projekts erstellen, um alle Umgebungsvariablen zu speichern.

  1. .env-Datei erstellen

    MariaDB [(none)]> FLUSH PRIVILEGES;
    
  2. .env-Datei aktualisieren

    MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';
    
  3. Geben Sie Ihre Umgebungsvariablen ein

    MariaDB [(none)]> exit;
    Bye
    

    Ersetzen Sie die Felder , und mit dem, das Sie in den vorherigen Schritten erstellt haben.

    Speichern Sie die Datei, indem Sie Strg O drücken, drücken Sie dann die Eingabetaste und verlassen Sie den Editor mit Strg X.

Prisma-Schema migrieren

Wenn Sie Prisma verwenden, befinden sich alle Schemadateien im Verzeichnis prisma/schema. Wir werden diese Schemata nun in der Datenbank bereitstellen.

Führen Sie den folgenden Befehl aus

sudo mysql -u root -p

Dieser Befehl verwendet die in der .env-Datei bereitgestellte DATABASE_URL, um die Schemata in der Datenbank bereitzustellen. Sie können die Bereitstellung überprüfen, indem Sie sich beim MySQL-Client anmelden und den Befehl SHOW TABLES verwenden. um alle Tabellen aufzulisten.


PM2 einrichten

PM2 ist ein Produktionsprozessmanager für Node.js-Anwendungen, der bei der Verwaltung und Onlinehaltung der Anwendung hilft. Installieren Sie PM2, um Ihre Node.js-Anwendung zu verwalten.

ping <IP_ADDRESS_OF_RPI>

NGINX konfigurieren

  1. NGINX installieren

    ssh <username>@<IP_ADDRESS_OF_RPI>
    
  2. Erstellen Sie eine Site-Konfiguration

    sudo apt update && sudo apt upgrade
    
  3. Fügen Sie den folgenden Code hinzu

    sudo apt install git
    

    Hier ist eine Aufschlüsselung der einzelnen Teile:

    listen 80; Diese Anweisung weist NGINX an, auf Port 80 zu lauschen, dem Standardport für HTTP-Verkehr.

    server_name ; Dies gibt den Domänennamen oder die IP-Adresse Ihres Raspberry Pi an. Ersetzen Sie diese durch die tatsächliche IP-Adresse Ihres Raspberry Pi. NGINX wird auf Anfragen antworten, die an diese Adresse gesendet werden.

    location / { ... } Dieser Block definiert, wie NGINX Anfragen an die Root-URL (/) verarbeiten soll. Dies teilt NGINX im Wesentlichen mit, dass jede Anfrage, die an den Root gestellt wird, an das Backend (Ihre Node.js-Anwendung) weitergeleitet werden soll, das auf dem angegebenen Port ausgeführt wird.

    proxy_pass http://localhost:YOUR_NODE_JS_PORT; Dies ist die Schlüsselzeile, die eingehende Anfragen an Ihre Node.js-Anwendung weiterleitet. Ersetzen Sie YOUR_NODE_JS_PORT durch den tatsächlichen Port, auf dem Ihre Node.js-App ausgeführt wird (z. B. 5000). Die Anfragen werden an die Node.js-Anwendung gesendet, die auf demselben Computer (localhost) ausgeführt wird.

    proxy_http_version 1.1; Dadurch wird die HTTP-Version für die Proxy-Verbindung auf 1.1 gesetzt, was eine bessere Handhabung bestimmter Funktionen wie WebSockets gewährleistet.

    proxy_set_header Upgrade $http_upgrade; Mit diesem Header können WebSocket-Verbindungen aktualisiert werden, was für Echtzeitanwendungen wichtig ist.

    proxy_set_header Connection 'upgrade'; Dieser Header wird zusammen mit dem Upgrade-Header verwendet, um WebSocket-Verbindungen zu verwalten und sicherzustellen, dass die Verbindung ordnungsgemäß von HTTP auf WebSocket aktualisiert wird.

    proxy_set_header Host $host; Dadurch wird der ursprüngliche Host-Header von der Client-Anfrage an den Backend-Server übergeben. Dies ist nützlich für Anwendungen, die auf den ursprünglichen Host-Header angewiesen sind (z. B. für Routing oder virtuelles Hosting).

    proxy_cache_bypass $http_upgrade; Dadurch wird sichergestellt, dass WebSocket-Verbindungen alle Caching-Mechanismen umgehen, sodass die Kommunikation in Echtzeit ohne Störungen durch Caching funktioniert.

    Speichern Sie die Datei, indem Sie Strg O drücken, drücken Sie dann die Eingabetaste und verlassen Sie den Editor mit Strg X.

  4. Aktivieren Sie die Site-Konfiguration

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
    
  5. NGINX-Konfiguration testen

    nvm --version
    

    Wenn der Test erfolgreich ist, sehen Sie etwa Folgendes:

    ping <IP_ADDRESS_OF_RPI>
    
  6. Starten Sie den NGINX-Server neu, um die Änderungen zu übernehmen

    ssh <username>@<IP_ADDRESS_OF_RPI>
    
  7. Prüfen Sie den NGINX-Serverstatus

    sudo apt update && sudo apt upgrade
    

Ausführen der Anwendung

  1. Navigieren Sie zu Ihrem Projekt

  2. Starten Sie Ihre Anwendung mit PM2

    Wenn Sie ein Skript in package.json eingerichtet haben, verwenden Sie den folgenden Befehl:

    sudo apt install git
    

    Oder Sie können Ihre Anwendung direkt über die Datei index.js in Ihrem dist-Verzeichnis ausführen:

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

    Sie können die Protokolle auch mit dem folgenden Befehl überprüfen:

    nvm --version
    

Überprüfen Sie nun Ihre App, indem Sie die IP-Adresse Ihres Raspberry Pi in den Browser auf Ihrem lokalen Computer eingeben. Es sollte funktionieren. Stellen Sie sicher, dass sowohl Ihr lokaler Computer als auch Raspberry Pi mit demselben Netzwerk verbunden sind. Andernfalls funktioniert es nicht.


Machen Sie Ihre App mit Ngrok der Welt zugänglich

Nachdem Sie Ihre App nun auf dem Raspberry Pi bereitgestellt haben, können Sie nur noch über dasselbe Netzwerk auf die App zugreifen, in dem der Raspberry Pi ausgeführt wird. Um es dem Internet zugänglich zu machen, müssen wir die Portweiterleitung verwenden.

Sie können die Portweiterleitung mithilfe Ihrer Router-Einstellungen einrichten, aber in diesem Fall verwende ich ngrok. Ngrok ist nützlich für die Entwicklung und ermöglicht es uns, unsere Apps zu Testzwecken kostenlos auszuführen.

Stellen Sie sicher, dass Sie ein Konto erstellen, indem Sie https://dashboard.ngrok.com/login besuchen. Sie benötigen das Authentifizierungstoken, um ngrok auf dem Raspberry Pi zu konfigurieren.

  1. Installieren Sie Ngrok

    nvm install --lts
    
  2. Fügen Sie Ihr Authentifizierungstoken zur ngrok-Konfigurationsdatei hinzu

    node --version
    # v22.12.0
    
    npm --version
    # 10.9.0
    
  3. Standard-Nginx-Konfigurationsdatei deaktivieren

    sudo apt install mariadb-server
    
  4. NGINX-Konfiguration testen

    sudo mysql_secure_installation
    
  5. Starten Sie den NGINX-Server neu, um die Änderungen zu übernehmen

    sudo mysql
    
  6. Stellen Sie Ihre App online bereit

    MariaDB [(none)]> FLUSH PRIVILEGES;
    

    Dies sollte eine URL wie https://xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx.ngrok-free.app/ bereitstellen, die den Datenverkehr an Ihre Node.js-App weiterleitet. Sie können von jedem anderen Netzwerk aus zu dieser URL navigieren und auf Ihre Anwendung zugreifen.


Zusammenfassung

In diesem Leitfaden haben wir erfolgreich eine TypeScript Node.js-Anwendung mit MySQL und Prisma auf einem Raspberry Pi bereitgestellt. Wir haben NGINX als Reverse-Proxy konfiguriert und Ngrok verwendet, um die Anwendung über das Internet zugänglich zu machen. Mit diesem Setup verfügen Sie über Ihren eigenen kostengünstigen, selbst gehosteten Entwicklungsserver.

Dieser Ansatz eignet sich perfekt zum Erlernen und Experimentieren mit der Bereitstellung von Full-Stack-Anwendungen und sammelt gleichzeitig wertvolle Erfahrungen in der Serververwaltung.

Lassen Sie mich wissen, wenn Sie Ihre Anwendung mithilfe dieses Leitfadens bereitstellen – ich würde gerne von Ihren Erfahrungen hören! ?

Das obige ist der detaillierte Inhalt vonStellen Sie eine Node.js-Anwendung mit MySQL und Prisma auf einem Raspberry Pi bereit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn