


Déployer une application Node.js à l'aide de MySQL et Prisma sur un Raspberry Pi
Le déploiement d'applications est devenu de plus en plus accessible, avec une gamme d'options d'hébergement gratuites et payantes telles que Render, AWS et DigitalOcean. Cependant, pour les développeurs qui souhaitent apprendre, expérimenter et déployer des applications sans frais d'hébergement récurrents, un Raspberry Pi offre une excellente alternative. Cet appareil compact mais puissant vous permet de créer votre propre serveur basé sur Linux pour héberger des applications Web.
Dans ce blog, nous explorerons comment déployer une application TypeScript Node.js à l'aide de MySQL (MariaDB sur Raspberry Pi) et Prisma ORM sur un Raspberry Pi. De plus, nous allons configurer NGINX pour le proxy inverse et utiliser Ngrok pour exposer l'application à Internet. Allons-y !
Présentation des outils
Pi aux Framboises
Un ordinateur monocarte à faible coût qui exécute un système d'exploitation basé sur Linux. C’est idéal pour créer votre propre serveur pour l’IoT ou les applications Web.
Node.js & TypeScript
Node.js est un environnement d'exécution pour exécuter JavaScript sur le serveur, et TypeScript ajoute un typage statique à JavaScript, rendant la base de code plus maintenable.
MySQL (MariaDB sur Raspberry Pi)
Système de base de données relationnelle populaire, MariaDB est un remplacement compatible pour MySQL et est suffisamment léger pour un Raspberry Pi.
Prisma ORM
Un outil de mappage objet-relationnel (ORM) qui simplifie les interactions avec les bases de données avec un langage de requête de type sécurisé et des migrations de schémas.
NGINX
Un serveur HTTP et un serveur proxy inverse hautes performances. Il permet d'acheminer le trafic vers votre application Node.js.
Ngrok
Un outil de tunneling qui expose vos applications hébergées localement à Internet en toute sécurité sans configuration réseau complexe.
Conditions préalables
- Un Raspberry Pi fonctionnel - Assurez-vous que SSH est activé sur le Raspberry Pi et que vous pouvez y accéder à distance.
- Dépôt Github - Votre application Node.js TypeScript doit être hébergée dans un référentiel GitHub pour un déploiement facile.
- Compte Ngrok - Créez un compte gratuit sur Ngrok pour obtenir un jeton d'authentification permettant d'exposer votre application Raspberry Pi à Internet.
Configuration du Raspberry Pi
-
Installer le système d'exploitation
Configurez votre Raspberry Pi avec un système d'exploitation comme Raspberry Pi OS. Utilisez le Raspberry Pi Imager pour trouver un autre système d'exploitation compatible avec votre Raspberry Pi.
-
Trouver l'adresse IP
Utilisez un outil comme Angry IP Scanner pour découvrir l’adresse IP de votre Raspberry Pi. Assurez-vous que le Raspberry Pi est connecté au même réseau que votre machine locale.
-
Vérifier l'état du Raspberry Pi
ping <IP_ADDRESS_OF_RPI>
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion -
SSH dans le Raspberry Pi
ssh <username>@<IP_ADDRESS_OF_RPI>
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexionRemplacer
avec le nom d'utilisateur de votre Raspberry Pi et avec l'adresse IP puis entrez le mot de passe. -
Mettre à jour le système
sudo apt update && sudo apt upgrade
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion -
Installer Git
Vérifiez si git est installé. Sinon, exécutez la commande ci-dessous pour installer git
sudo apt install git
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion
Installation de Node.js
Pour installer node js, nous utiliserons nvm (Node Version Manager). Il vous permet d'installer et d'utiliser rapidement différentes versions de nœud via la ligne de commande.
-
Installer NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion -
Vérifier l'installation
nvm --version
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion -
Installer la dernière version LTS de Node.js
nvm install --lts
Copier après la connexionCopier après la connexionCopier après la connexion -
Vérifiez l'installation de Node.js et npm
node --version # v22.12.0 npm --version # 10.9.0
Copier après la connexionCopier après la connexionCopier après la connexion
Configuration de MySQL (MariaDB)
Pour Raspberry Pi OS, nous installerons MariaDB.
-
Installer le serveur SQL MariaDB
sudo apt install mariadb-server
Copier après la connexionCopier après la connexionCopier après la connexion -
Installation sécurisée de MariaDB
sudo mysql_secure_installation
Copier après la connexionCopier après la connexionCopier après la connexionSuivez les instructions pour sécuriser votre base de données.
- Entrez le mot de passe root actuel : - Appuyez sur Entrée lorsqu'on vous demande de saisir le mot de passe actuel de l'utilisateur root (car il n'a pas encore été défini).
- Définissez le mot de passe root : - Tapez n lorsque vous êtes invité à définir le mot de passe root (nous le définirons plus tard).
- Supprimer les utilisateurs anonymes : - Tapez Y pour supprimer les utilisateurs anonymes et améliorer la sécurité. (À des fins de test, vous pouvez taper n pour garder les utilisateurs anonymes.)
- Interdire la connexion root à distance : - Tapez n pour autoriser la connexion root à distance (facultatif mais moins sécurisé).
- Supprimer la base de données de test : - Tapez y pour supprimer la base de données de test et y accéder. (Tapez n si vous souhaitez le conserver.)
-
Connexion au client MariaDB
sudo mysql
Copier après la connexionCopier après la connexionCopier après la connexion -
Configurer un mot de passe root pour MariaDB
Tout d'abord, nous devons dire au serveur de base de données de recharger les tables de subventions.
MariaDB [(none)]> FLUSH PRIVILEGES;
Copier après la connexionCopier après la connexionCopier après la connexionModifiez le mot de passe root avec la requête ci-dessous.
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';
Copier après la connexionCopier après la connexionRemplacer
avec votre propre mot de passe. Utilisez la commande exit pour quitter MariaDB CLI.
MariaDB [(none)]> exit; Bye
Copier après la connexionCopier après la connexion -
Connectez-vous au client MariaDB avec l'utilisateur root
ping <IP_ADDRESS_OF_RPI>
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexionEntrez le mot de passe de l'utilisateur root.
Configuration de la base de données et de l'utilisateur
Créons une nouvelle base de données et un utilisateur. Nous accorderons tous les privilèges au nouvel utilisateur pour la nouvelle base de données que nous avons créée.
-
Créer une base de données
ssh <username>@<IP_ADDRESS_OF_RPI>
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion -
Créer un nouvel utilisateur avec mot de passe
sudo apt update && sudo apt upgrade
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion -
Accorder le privilège au nouvel utilisateur créé
sudo apt install git
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion -
Vinder la table des privilèges
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion Quitter le client MySQL à l'aide de la commande exit.
-
Connexion avec un nouvel utilisateur
nvm --version
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexionEntrez le mot de passe que vous avez utilisé lors de la création de l'utilisateur.
-
Vérifier que l'utilisateur peut répertorier la base de données
nvm install --lts
Copier après la connexionCopier après la connexionCopier après la connexion
C'est ça ! Nous utiliserons cette base de données et cet utilisateur dans notre application.
Configurez votre application Node.js
-
Clonez votre référentiel Github
node --version # v22.12.0 npm --version # 10.9.0
Copier après la connexionCopier après la connexionCopier après la connexion -
Accédez au référentiel de votre projet
sudo apt install mariadb-server
Copier après la connexionCopier après la connexionCopier après la connexion -
Installer les dépendances du projet
sudo mysql_secure_installation
Copier après la connexionCopier après la connexionCopier après la connexion -
Compiler le code TypeScript
sudo mysql
Copier après la connexionCopier après la connexionCopier après la connexion
Assurez-vous d'avoir configuré la propriété outDir dans votre fichier tsconfig.json. Ceci spécifie le répertoire dans lequel le code JavaScript compilé sera généré. Par défaut, il est généralement défini sur dist, mais vous pouvez le personnaliser en fonction de la structure de votre projet.
Configuration des variables d'environnement (Facultatif)
Si votre projet utilise des variables d'environnement, vous devez les définir sur votre Raspberry Pi. Vous pouvez créer un fichier .env dans le répertoire racine de votre projet pour stocker toutes les variables d'environnement.
-
Créer un fichier .env
MariaDB [(none)]> FLUSH PRIVILEGES;
Copier après la connexionCopier après la connexionCopier après la connexion -
Mettre à jour le fichier .env
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';
Copier après la connexionCopier après la connexion -
Entrez vos variables d'environnement
MariaDB [(none)]> exit; Bye
Copier après la connexionCopier après la connexionRemplacez les champs
, et avec celui que vous avez créé lors des étapes précédentes. Enregistrez le fichier en appuyant sur Ctrl O, puis appuyez sur Entrée et quittez l'éditeur en utilisant Ctrl X.
Migrer le schéma Prisma
Si vous utilisez Prisma, tous les fichiers de schéma seront situés dans le répertoire prisma/schema. Nous allons maintenant déployer ces schémas dans la base de données.
Exécutez la commande ci-dessous
sudo mysql -u root -p
Cette commande utilisera le DATABASE_URL fourni dans le fichier .env pour déployer les schémas dans la base de données. Vous pouvez vérifier le déploiement en vous connectant au client MySQL et en utilisant la commande SHOW TABLES ; pour lister toutes les tables.
Configuration de PM2
PM2 est un gestionnaire de processus de production pour les applications Node.js qui aide à gérer et à maintenir l'application en ligne. Installez PM2 pour gérer votre application Node.js.
ping <IP_ADDRESS_OF_RPI>
Configuration de NGINX
-
Installer NGINX
ssh <username>@<IP_ADDRESS_OF_RPI>
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion -
Créer une configuration de site
sudo apt update && sudo apt upgrade
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion -
Ajoutez le code ci-dessous
sudo apt install git
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexionVoici une répartition de chaque partie :
listen 80; Cette directive indique à NGINX d'écouter sur le port 80, qui est le port par défaut pour le trafic HTTP.
server_name
; Ceci spécifie le nom de domaine ou l'adresse IP de votre Raspberry Pi. Remplacez par l'adresse IP réelle de votre Raspberry Pi. NGINX répondra aux demandes envoyées à cette adresse.location / { ... } Ce bloc définit comment NGINX doit gérer les requêtes adressées à l'URL racine (/). Essentiellement, cela indique à NGINX que chaque fois qu'une requête est adressée à la racine, elle doit être transmise au backend (votre application Node.js) exécuté sur le port spécifié.
proxy_pass http://localhost:YOUR_NODE_JS_PORT; Il s'agit de la ligne clé qui transmet les requêtes entrantes à votre application Node.js. Remplacez YOUR_NODE_JS_PORT par le port réel sur lequel votre application Node.js est exécutée (par exemple, 5000). Les requêtes seront envoyées à l'application Node.js exécutée sur la même machine (localhost).
proxy_http_version 1.1; Ceci définit la version HTTP à 1.1 pour la connexion proxy, ce qui garantit une meilleure gestion de certaines fonctionnalités comme les WebSockets.
proxy_set_header Upgrade $http_upgrade; Cet en-tête permet de mettre à niveau les connexions WebSocket, ce qui est important pour les applications temps réel.
proxy_set_header Connection 'upgrade'; Cet en-tête est utilisé avec l'en-tête Upgrade pour gérer les connexions WebSocket, garantissant que la connexion est correctement mise à niveau de HTTP vers WebSocket.
proxy_set_header Host $host; Ceci transmet l'en-tête Host d'origine de la demande du client au serveur backend. Ceci est utile pour les applications qui s'appuient sur l'en-tête Host d'origine (par exemple, pour le routage ou l'hébergement virtuel).
proxy_cache_bypass $http_upgrade; Cela garantit que les connexions WebSocket contournent tout mécanisme de mise en cache, permettant ainsi à la communication en temps réel de fonctionner sans interférence de la mise en cache.
Enregistrez le fichier en appuyant sur Ctrl O, puis appuyez sur Entrée et quittez l'éditeur en utilisant Ctrl X.
-
Activer la configuration du site
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion -
Tester la configuration NGINX
nvm --version
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexionSi le test réussit, vous verrez quelque chose comme ci-dessous :
ping <IP_ADDRESS_OF_RPI>
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion -
Redémarrez le serveur NGINX pour appliquer les modifications
ssh <username>@<IP_ADDRESS_OF_RPI>
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion -
Vérifier l'état du serveur NGINX
sudo apt update && sudo apt upgrade
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion
Exécution de l'application
Accédez à votre projet
-
Démarrez votre application à l'aide de PM2
Si vous avez configuré un script dans package.json, utilisez la commande ci-dessous :
sudo apt install git
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexionOu, vous pouvez exécuter directement votre application en utilisant le fichier index.js dans votre répertoire dist :
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexionVous pouvez également consulter les journaux à l'aide de la commande ci-dessous :
nvm --version
Copier après la connexionCopier après la connexionCopier après la connexionCopier après la connexion
Maintenant, vérifiez votre application en saisissant l'adresse IP de votre Raspberry Pi dans le navigateur de votre ordinateur local. Cela devrait fonctionner. Assurez-vous que votre machine locale et votre Raspberry Pi sont connectés au même réseau ; sinon, ça ne marchera pas.
Exposer votre application au monde à l'aide de Ngrok
Maintenant que vous avez déployé votre application sur le Raspberry Pi, vous ne pouvez accéder à l'application qu'à partir du même réseau sur lequel le Raspberry Pi est exécuté. Pour l'exposer à Internet, nous devons utiliser la redirection de port.
Vous pouvez configurer la redirection de port en utilisant les paramètres de votre routeur, mais dans ce cas, j'utiliserai ngrok. Ngrok est utile pour le développement, nous permettant d'exécuter gratuitement nos applications à des fins de test.
Assurez-vous de créer un compte en visitant https://dashboard.ngrok.com/login. Vous aurez besoin du jeton d'authentification pour configurer ngrok sur le Raspberry Pi.
-
Installer Ngrok
nvm install --lts
Copier après la connexionCopier après la connexionCopier après la connexion -
Ajoutez votre jeton d'authentification au fichier de configuration ngrok
node --version # v22.12.0 npm --version # 10.9.0
Copier après la connexionCopier après la connexionCopier après la connexion -
Désactiver le fichier de configuration nginx par défaut
sudo apt install mariadb-server
Copier après la connexionCopier après la connexionCopier après la connexion -
Tester la configuration NGINX
sudo mysql_secure_installation
Copier après la connexionCopier après la connexionCopier après la connexion -
Redémarrez le serveur NGINX pour appliquer les modifications
sudo mysql
Copier après la connexionCopier après la connexionCopier après la connexion -
Déployez votre application en ligne
MariaDB [(none)]> FLUSH PRIVILEGES;
Copier après la connexionCopier après la connexionCopier après la connexionCela devrait fournir une URL telle que https://xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx.ngrok-free.app/ qui transfère le trafic vers votre application Node.js. Vous pouvez accéder à cette URL depuis n'importe quel autre réseau et accéder à votre application.
Résumé
Dans ce guide, nous avons déployé avec succès une application TypeScript Node.js avec MySQL et Prisma sur un Raspberry Pi. Nous avons configuré NGINX comme proxy inverse et utilisé Ngrok pour rendre l'application accessible sur Internet. Avec cette configuration, vous disposez de votre propre serveur de développement auto-hébergé et rentable.
Cette approche est parfaite pour apprendre et expérimenter le déploiement d'applications full-stack, tout en acquérant une expérience précieuse dans la gestion de serveurs.
Faites-moi savoir si vous déployez votre application à l'aide de ce guide : j'aimerais connaître votre expérience ! ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











La numérisation complète de la table peut être plus rapide dans MySQL que l'utilisation d'index. Les cas spécifiques comprennent: 1) le volume de données est petit; 2) Lorsque la requête renvoie une grande quantité de données; 3) Lorsque la colonne d'index n'est pas très sélective; 4) Lorsque la requête complexe. En analysant les plans de requête, en optimisant les index, en évitant le sur-index et en maintenant régulièrement des tables, vous pouvez faire les meilleurs choix dans les applications pratiques.

Oui, MySQL peut être installé sur Windows 7, et bien que Microsoft ait cessé de prendre en charge Windows 7, MySQL est toujours compatible avec lui. Cependant, les points suivants doivent être notés lors du processus d'installation: téléchargez le programme d'installation MySQL pour Windows. Sélectionnez la version appropriée de MySQL (communauté ou entreprise). Sélectionnez le répertoire d'installation et le jeu de caractères appropriés pendant le processus d'installation. Définissez le mot de passe de l'utilisateur racine et gardez-le correctement. Connectez-vous à la base de données pour les tests. Notez les problèmes de compatibilité et de sécurité sur Windows 7, et il est recommandé de passer à un système d'exploitation pris en charge.

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

MySQL et MARIADB peuvent coexister, mais doivent être configurés avec prudence. La clé consiste à allouer différents numéros de port et répertoires de données à chaque base de données et ajuster les paramètres tels que l'allocation de mémoire et la taille du cache. La mise en commun de la connexion, la configuration des applications et les différences de version doivent également être prises en compte et doivent être soigneusement testées et planifiées pour éviter les pièges. L'exécution de deux bases de données simultanément peut entraîner des problèmes de performances dans les situations où les ressources sont limitées.

Simplification de l'intégration des données: AmazonrDSMysQL et l'intégration Zero ETL de Redshift, l'intégration des données est au cœur d'une organisation basée sur les données. Les processus traditionnels ETL (extrait, converti, charge) sont complexes et prennent du temps, en particulier lors de l'intégration de bases de données (telles que AmazonrDSMysQL) avec des entrepôts de données (tels que Redshift). Cependant, AWS fournit des solutions d'intégration ETL Zero qui ont complètement changé cette situation, fournissant une solution simplifiée et à temps proche pour la migration des données de RDSMySQL à Redshift. Cet article plongera dans l'intégration RDSMYSQL ZERO ETL avec Redshift, expliquant comment il fonctionne et les avantages qu'il apporte aux ingénieurs de données et aux développeurs.

Dans la base de données MySQL, la relation entre l'utilisateur et la base de données est définie par les autorisations et les tables. L'utilisateur a un nom d'utilisateur et un mot de passe pour accéder à la base de données. Les autorisations sont accordées par la commande Grant, tandis que le tableau est créé par la commande Create Table. Pour établir une relation entre un utilisateur et une base de données, vous devez créer une base de données, créer un utilisateur, puis accorder des autorisations.

Laravelelognent Model Retrieval: Faconttement l'obtention de données de base de données Eloquentorm fournit un moyen concis et facile à comprendre pour faire fonctionner la base de données. Cet article présentera en détail diverses techniques de recherche de modèles éloquentes pour vous aider à obtenir efficacement les données de la base de données. 1. Obtenez tous les enregistrements. Utilisez la méthode All () pour obtenir tous les enregistrements dans la table de base de données: usApp \ Modèles \ Post; $ poters = post :: all (); Cela rendra une collection. Vous pouvez accéder aux données à l'aide de Foreach Loop ou d'autres méthodes de collecte: ForEach ($ PostsAs $ POST) {echo $ post->

MySQL convient aux débutants car il est simple à installer, puissant et facile à gérer les données. 1. Installation et configuration simples, adaptées à une variété de systèmes d'exploitation. 2. Prise en charge des opérations de base telles que la création de bases de données et de tables, d'insertion, d'interrogation, de mise à jour et de suppression de données. 3. Fournir des fonctions avancées telles que les opérations de jointure et les sous-questionnaires. 4. Les performances peuvent être améliorées par l'indexation, l'optimisation des requêtes et le partitionnement de la table. 5. Prise en charge des mesures de sauvegarde, de récupération et de sécurité pour garantir la sécurité et la cohérence des données.
