Créer et lancer un projet Koa.js avec ServBay
ServBay est un environnement de développement web local spécialement conçu pour macOS. Il intègre de nombreux outils essentiels pour les développeurs, notamment le runtime Node.js ainsi que divers systèmes de bases de données. Ce guide vous explique comment exploiter l’environnement pratique fourni par ServBay pour créer, exécuter et administrer rapidement vos projets Koa.js.
Qu’est-ce que Koa.js ?
Koa.js est un framework web nouvelle génération basé sur Node.js, développé par l’équipe à l’origine d’Express.js. Il se distingue par sa simplicité, son expressivité et son puissant ensemble de fonctionnalités, ce qui en fait un choix de référence pour la création d’applications web et d’API. Koa.js exploite pleinement les outils modernes de JavaScript, en particulier la syntaxe async/await
qui simplifie grandement la gestion des opérations asynchrones et l’écriture des middlewares, rendant ainsi le code plus clair et facile à maintenir.
Fonctions principales de Koa.js
- Basé sur async/await : Le cœur du framework repose sur
async/await
, ce qui rend le contrôle du flux asynchrone intuitif. - Noyau léger : La bibliothèque centrale de Koa est très compacte, offrant uniquement les fonctionnalités de base. Les fonctionnalités supplémentaires sont ajoutées via des middlewares modulaires.
- Middlewares puissants : Adopte un système de middlewares en cascade (cascading), assurant une gestion claire et flexible du traitement des requêtes.
- Centré sur le web : Dédié au développement d’applications web et d’API, sans fonctions additionnelles superflues.
Grâce à Koa.js, les développeurs peuvent concevoir des services web performants et maintenables de manière plus efficace.
Mettre en place un environnement de développement Koa.js avec ServBay
ServBay offre aux développeurs Node.js un environnement prêt à l’emploi incluant le runtime Node.js et des services de bases de données couramment utilisés. Grâce à la fonctionnalité Sites (Website) de ServBay, vous pouvez facilement accéder à vos projets Koa.js locaux via des noms de domaine personnalisés et des certificats SSL.
Prérequis
Avant de commencer, assurez-vous d’avoir effectué les préparatifs suivants :
- Installer ServBay : Rendez-vous sur le site officiel de ServBay pour télécharger et installer la dernière version de ServBay.
- Installer le package Node.js : Ouvrez l’application ServBay, accédez à la gestion des Packages, et vérifiez que vous disposez de la version Node.js requise. Si ce n’est pas encore fait, sélectionnez-la puis cliquez sur installer.
- Maitriser les opérations de base de ServBay : Familiarisez-vous avec le lancement/l’arrêt des services et la gestion des sites (Website) au sein de ServBay.
Créer un projet Koa.js
Nous utiliserons le répertoire racine de site recommandé par ServBay : /Applications/ServBay/www
pour stocker notre projet.
Initialiser le dossier du projet
Ouvrez l’application Terminal, naviguez jusqu’au répertoire racine des sites ServBay et créez un nouveau dossier de projet (par exemple
servbay-koa-app
). Entrez dans ce dossier puis initialisez un nouveau projet Node.js :bashcd /Applications/ServBay/www mkdir servbay-koa-app cd servbay-koa-app npm init -y
1
2
3
4La commande
npm init -y
génère rapidement un fichierpackage.json
par défaut.Installer Koa.js
Depuis le dossier racine du projet
servbay-koa-app
, utilisez npm pour installer Koa.js et ses définitions de types si vous utilisez TypeScript :bashnpm install koa # Si vous utilisez TypeScript, vous pouvez installer les types : # npm install @types/koa --save-dev
1
2
3Créer le fichier d’entrée de l’application
Dans votre dossier
servbay-koa-app
, créez un fichier appeléapp.js
et ajoutez le code suivant pour une application Koa.js simple :javascriptconst Koa = require('koa'); const app = new Koa(); // Middleware : journaliser les informations de la requête app.use(async (ctx, next) => { const start = Date.now(); await next(); const ms = Date.now() - start; console.log(`${ctx.method} ${ctx.url} - ${ms}ms`); }); // Middleware : traiter la requête sur la racine app.use(async ctx => { ctx.body = 'Hello from ServBay Koa.js App!'; }); // Définir le port, utiliser en priorité la variable d’environnement PORT const port = process.env.PORT || 3000; // Démarrer le serveur HTTP app.listen(port, () => { console.log(`Koa.js server running on http://localhost:${port}`); console.log(`Project path: ${__dirname}`); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24Ce code met en place une application Koa basique incluant deux middlewares : un pour enregistrer le temps et la route de chaque requête, l’autre pour répondre à la racine
/
en affichant « Hello from ServBay Koa.js App! ». L’application écoute sur le port défini par la variable d’environnementPORT
ou, à défaut, le port3000
.
Passer en mode développement
Pendant le développement, il est courant de lancer un processus Node.js local pour faire tourner l’application Koa.js, puis d’y accéder via la fonctionnalité Sites (Website) de ServBay.
Lancer le serveur de développement Koa.js
Ouvrez le Terminal, allez dans votre dossier de projet
servbay-koa-app
, puis utilisez la commandenode
pour exécuterapp.js
. Pour éviter les conflits de ports ou faciliter la configuration dans ServBay, choisissez un port spécifique, par exemple8585
:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8585 node app.js
1
2Le terminal devrait afficher un message du type
Koa.js server running on http://localhost:8585
indiquant que le serveur fonctionne sur le port8585
. Laissez la fenêtre du terminal ouverte pour maintenir le serveur actif.Configurer un reverse proxy dans ServBay (Site Website)
Pour accéder à votre application Koa.js sur
localhost:8585
via un nom de domaine personnalisé, configurez un Site (Website) utilisant le proxy inverse dans ServBay.- Ouvrez l’application ServBay.
- Accédez à la section Sites (Website).
- Cliquez sur le bouton
+
en bas à gauche pour ajouter un nouveau site. - Remplissez les informations :
- Nom :
ServBay Koa.js Dev Site
- Domaine :
servbay-koa-dev.servbay.demo
(il est conseillé d’utiliser des domaines se terminant par.servbay.demo
, ServBay générera automatiquement un certificat SSL) - Type : Sélectionnez
Reverse Proxy
- Adresse IP :
127.0.0.1
(pointe vers le processus Node.js local) - Port :
8585
(le port utilisé par votre application Koa.js) - Document Root : Pour un reverse proxy, ce champ est secondaire, vous pouvez le laisser vide ou indiquer le chemin du projet
/Applications/ServBay/www/servbay-koa-app
.
- Nom :
- Cliquez sur enregistrer.
- ServBay peut vous demander d’appliquer les modifications : acceptez.
Une fois la configuration terminée, ServBay mettra à jour votre fichier hosts local pour faire pointer
servbay-koa-dev.servbay.demo
vers127.0.0.1
et, via son serveur Caddy ou Nginx intégré, relayera les requêtes entrantes vers le port8585
où tourne votre serveur Koa.js. De plus, l’usage d’un domaine.servbay.demo
permet à ServBay User CA de générer et valider automatiquement un certificat SSL pour une navigation HTTPS sécurisée.Si vous souhaitez plus de détails étape par étape, consultez la documentation ServBay sur ajouter un site Node.js de développement (veillez à choisir la documentation anglaise).
Accéder à votre site de développement Koa.js
Rendez-vous dans votre navigateur à l’adresse
https://servbay-koa-dev.servbay.demo
.Si tout est correctement configuré, la page affichera « Hello from ServBay Koa.js App! ». Cela signifie que vous accédez localement à votre serveur Koa.js via la fonctionnalité site de ServBay. Vous pouvez éditer votre fichier
app.js
, redémarrer le processus Node.js et rafraîchir la page pour voir vos modifications.
Simuler un déploiement en production
Lorsque vous testez un environnement de production, vous pouvez adopter des ports, variables d’environnement ou modes de lancement différents. La configuration de proxy inverse de ServBay s’applique également dans ce contexte.
Lancer l’application Koa.js en mode production (simulation)
Dans une autre fenêtre de Terminal, arrêtez si besoin le serveur de développement, puis lancez votre application en mode production simulé, par exemple sur le port
8586
et en définissant la variable d’environnementNODE_ENV
:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8586 NODE_ENV=production node app.js
1
2Ceci lance une instance Koa.js écoutant sur le port
8586
, correspondant à une situation de production.Configurer un reverse proxy ServBay (simulation production)
Configurez un nouveau site dans ServBay pour simuler l’environnement de production :
- Ouvrez ServBay, allez dans la section Sites (Website).
- Cliquez sur le bouton
+
pour créer un nouveau site. - Paramétrez :
- Nom :
ServBay Koa.js Prod Site
- Domaine :
servbay-koa-prod.servbay.demo
(ou, si vous avez votre propre domaine, vous pouvez le renseigner et utiliser la gestion ACME/Let’s Encrypt fournie par ServBay pour obtenir un certificat SSL gratuit) - Type : sélectionnez
Reverse Proxy
- Adresse IP :
127.0.0.1
- Port :
8586
(le port de votre instance de production simulée) - Document Root : facultatif ou chemin du projet.
- Nom :
- Cliquez sur enregistrer et appliquez les changements.
Avec un domaine
.servbay.demo
, le certificat généré reste celui délivré par ServBay User CA. Pour un domaine public, ServBay supporte l’obtention et la gestion automatique de certificats SSL/TLS gratuits via ACME (Let’s Encrypt), ce qui renforce la simulation d’un vrai environnement de production. Voir la documentation ServBay sur sécuriser un site web avec SSL.Accéder au site Koa.js de production (simulation)
Ouvrez le navigateur à l’adresse
https://servbay-koa-prod.servbay.demo
.Vous devez obtenir le même affichage que pour le développement, mais les requêtes sont désormais relayées, via le reverse proxy de ServBay, vers votre processus Node.js écoutant sur le port
8586
.
Connexion aux bases de données
ServBay intègre plusieurs systèmes de bases de données populaires, parmi lesquels MongoDB, Redis, MariaDB (compatible MySQL) et PostgreSQL. Il est très facile de connecter ces bases à votre projet Koa.js via le localhost, dans la configuration par défaut.
Voici quelques exemples de code Node.js pour se connecter aux bases de données proposées par ServBay. Assurez-vous que le package correspondant soit installé et en cours d’exécution dans la section Packages de ServBay.
Connexion à MongoDB
Installez le pilote Node.js pour MongoDB (
mongoose
oumongodb
) :bashcd /Applications/ServBay/www/servbay-koa-app npm install mongoose # ou npm install mongodb
1
2Ajoutez ensuite le code de connexion dans votre
app.js
ou un module dédié :javascript// Connexion à MongoDB avec Mongoose const mongoose = require('mongoose'); // Par défaut dans ServBay, MongoDB ne nécessite pas d’authentification, le nom de base est personnalisable mongoose.connect('mongodb://localhost:27017/servbay-koa-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('Connected to MongoDB')) .catch(err => console.error('MongoDB connection error:', err)); // Remarque : en pratique, on place souvent ce code dans la logique de démarrage de l’application // et l’écoute sur le port ne démarre qu’après connexion réussie.
1
2
3
4
5
6
7
8
9
10
11
12
13MongoDB installé par défaut via ServBay écoute généralement sur le port
27017
et ne nécessite ni nom d’utilisateur ni mot de passe.Connexion à Redis
Installez la librairie client Redis pour Node.js :
bashcd /Applications/ServBay/www/servbay-koa-app npm install redis
1
2Connectez-vous ensuite à Redis :
javascript// Connexion à Redis avec le client redi const redis = require('redis'); // Création du client Redis, connexion par défaut à localhost:6379 const client = redis.createClient({ url: 'redis://localhost:6379' // Port Redis par défaut ServBay = 6379 }); client.on('connect', () => { console.log('Connected to Redis'); }); client.on('error', (err) => { console.error('Redis connection error:', err); }); // Connexion au serveur Redis client.connect(); // Remarque : dans une vraie application, il est conseillé d’attendre la connexion via async/await // avant de procéder à des opérations Redis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Par défaut, le Redis de ServBay écoute sur le port
6379
sans mot de passe requis.Connexion à MariaDB (ou MySQL)
MariaDB est un fork de MySQL et leurs APIs sont largement compatibles. SerBay fournit un package MariaDB à considérer comme un MySQL.
Installez l’un des pilotes Node.js :
bashcd /Applications/ServBay/www/servbay-koa-app npm install mariadb # ou npm install mysql2 (meilleure compatibilité, recommandé)
1
2Connexion via le pilote
mariadb
:javascript// Connexion à MariaDB avec le client mariadb const mariadb = require('mariadb'); // Mot de passe root par défaut ServBay = 'password' const pool = mariadb.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // Assurez-vous que la base existe ou ajustez ce champ connectionLimit: 5 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB"); conn.release(); // Libérer la connexion au pool }) .catch(err => { console.error("MariaDB connection error:", err); }); // Remarque : dans la pratique, l’obtention de la connexion est asynchrone
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Connexion via le pilote
mysql2
(recommandé) :javascript// Connexion à MariaDB/MySQL avec le client mysql2 const mysql = require('mysql2/promise'); // Version promise // Mot de passe root par défaut ServBay = 'password' const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // La base doit exister waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB/MySQL using mysql2"); conn.release(); // Libérer la connexion au pool }) .catch(err => { console.error("MariaDB/MySQL connection error:", err); }); // Remarque : le mot de passe root peut être consulté/modifié via ServBay (GUI paramètres de BDD) // Il est préconisé d’utiliser des variables d’environnement plutôt que de coder le mot de passe en dur.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25Le MariaDB de ServBay écoute par défaut sur le port
3306
. Le mot de passe du compteroot
est accessible via l’interface ServBay. Il faudra peut-être créer la base de donnéesservbay_koa_app
via ServBay ou un outil externe (TablePlus, DBeaver, etc.).Connexion à PostgreSQL
Installez le package Node.js pour PostgreSQL :
bashcd /Applications/ServBay/www/servbay-koa-app npm install pg
1
2Et connectez-vous :
javascript// Connexion à PostgreSQL avec le client pg const { Pool } = require('pg'); // Par défaut, l’utilisateur ServBay pour PostgreSQL = 'user', mot de passe 'password' const pool = new Pool({ user: 'user', // Utilisateur par défaut ServBay host: 'localhost', database: 'servbay_koa_app', // Assurez-vous que la base existe password: 'password', // Mot de passe par défaut ServBay port: 5432, // Port PostgreSQL par défaut ServBay }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL connection error:', err); return; } console.log('Connected to PostgreSQL'); client.release(); // Libérer la connexion au pool }); // Remarque : les identifiants par défaut sont visibles/modifiables dans l’interface BDD ServBay. // Évitez de coder le mot de passe en dur dans votre application.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23PostgreSQL de ServBay écoute par défaut sur le port
5432
. Les identifiants sont disponibles dans l’interface de gestion des bases de ServBay. Il peut également être nécessaire de créer la baseservbay_koa_app
.
Gérer les bases de données sous ServBay
En plus de la connexion via le code, vous pouvez utiliser des clients graphiques pour gérer les bases de données proposées par ServBay. Par défaut, ces bases sont à l’écoute sur 127.0.0.1
ou localhost
. Les ports et identifiants par défaut sont visibles dans l’interface ServBay.
- Afficher/modifier le mot de passe par défaut : Dans ServBay, recherchez le package de la base concernée puis cliquez sur l’icône paramètres pour visualiser ou modifier le mot de passe du compte
root
(MariaDB) ouuser
(PostgreSQL). - Créer des bases et utilisateurs : Connectez-vous avec des outils comme TablePlus, DBeaver, pgAdmin, MongoDB Compass etc., puis créez vos bases, utilisateurs, tables, etc., via l’interface graphique ou en SQL.
Notes importantes
- Conflits de ports : Assurez-vous que le port choisi pour votre application Koa.js (par exemple 8585, 8586) n’est pas déjà occupé par un autre service du système.
- État de ServBay : ServBay, Node.js et vos bases de données nécessaires doivent être en cours d’exécution.
- Fichier hosts : ServBay gère automatiquement le fichier
hosts
. En cas de problème de résolution de domaine, vérifiez la présence du bon enregistrement dans/etc/hosts
. - Pare-feu : Vérifiez que le pare-feu macOS ou une solution tierce ne bloque ni ServBay ni Node.js.
- Consultation des journaux : En cas de problème, consultez les logs dans ServBay (onglet dédié) ainsi que les sorties du processus Node.js dans le terminal pour faciliter le diagnostic.
FAQ (Questions fréquentes)
Q : Pourquoi utiliser le reverse proxy de ServBay pour accéder à mon projet Koa.js ?
R : Le proxy inverse via la fonction de site de ServBay offre plusieurs avantages :
- Simuler l’environnement production : Accéder via un domaine personnalisé (ex :
.servbay.demo
ou votre propre nom de domaine) au lieu delocalhost:PORT
rapproche votre environnement de la réalité de production. - Support SSL : ServBay peut générer automatiquement et configurer des certificats SSL pour vos sites locaux (via ServBay User CA ou Let’s Encrypt), ce qui vous permet de tester HTTPS dès la phase de développement.
- Gestion centralisée : Tous vos sites de développement locaux sont administrés de façon centralisée dans ServBay, pour plus de simplicité.
- Masquage des ports : Depuis l’extérieur (si activé), l’accès se fait via les ports 80/443 standards, seuls les serveurs internes communiquant sur ports élevés.
- Simuler l’environnement production : Accéder via un domaine personnalisé (ex :
Q : Puis-je accéder directement à mon application via
localhost:PORT
sans proxy inverse ?R : Oui. Si votre application Koa.js écoute sur un port donné (comme 3000 ou un autre), vous pouvez tout simplement accéder à
http://localhost:PORT
dans votre navigateur pour le développement et le test. Cependant, vous perdez les avantages liés à l’utilisation d’un nom de domaine personnalisé, de l’automatisation SSL, de la gestion centralisée et de la journalisation offerte par ServBay. Pour une configuration plus conforme à la production, l’usage du reverse proxy de ServBay est conseillé.Q : Quel est le mot de passe par défaut pour les bases de données ServBay et comment le modifier ?
R : Les mots de passe par défaut sont affichés dans la section Bases de données de l’application ServBay. Cliquez sur l’icône paramètres correspondante pour chaque base (par exemple MariaDB ou PostgreSQL) pour voir et modifier les identifiants root/user. Par mesure de sécurité, il est recommandé de personnaliser ces mots de passe.
Conclusion
Grâce à ce guide, vous disposez désormais de toutes les clés pour mettre en place un environnement de développement Koa.js sur macOS avec ServBay. Nous avons vu comment créer une application Koa.js basique, configurer des proxys inverses dans ServBay pour utiliser des domaines personnalisés et HTTPS, simuler la production, et comment relier le projet à différentes bases de données intégrées.
ServBay fournit un environnement local tout-en-un, efficace et facile à gérer pour les développeurs Node.js, vous permettant de vous concentrer sur le développement sans perdre du temps en configuration. Profitez des puissantes fonctionnalités de ServBay pour booster votre productivité !