Comment configurer une application de noeud Koa.js sur Ubuntu 16.04 LTS

Dans ce didacticiel, nous allons apprendre à configurer une application Web Koa.js pour la production, en utilisant Node.js. Nous allons également lier un exemple de domaine, avec un proxy inverse, en utilisant Apache, et apprendre à le gérer avec un gestionnaire de processus approprié. Sans plus tarder, commençons.

Brève description de Node.js, Koa.js et Apache

Node.js est un framework JavaScript multiplateforme rapide basé sur le moteur V8 de Chrome. Il est utilisé dans les applications de bureau et de serveur et est célèbre pour sa gestion de boucle d'événement à un seul thread. Node.js dispose d'un registre de packages appelé Node Package Manager (NPM), qui héberge plus d'un demi-million de packages. Les packages (ou modules) NPM sont le cœur de réseau de Node.js, car ils sont du code communautaire qui peut être utile dans votre application Node.js. Dans notre application Koa.js, Node.js est au cœur de sa fonction.

Koa.js est un framework web minimaliste, construit sur la plateforme Node.js. Fabriqué par la même équipe derrière le framework Express.js populaire, son objectif est de minimiser davantage le framework Express.js déjà minimaliste en excluant le middleware de son noyau. Une caractéristique majeure de Koa.js est le fait qu'il n'y a pas de rappel. Koa.js est construit sur des générateurs basés sur ES6 et des fonctionnalités ES6, telles que Promises.

Apache est un serveur Web open source populaire, utilisé comme point de départ très basique pour les serveurs Web. Dans ce didacticiel, nous utiliserons Apache comme proxy inverse, ce qui nous permettra de lier notre application à un exemple de domaine. Si vous n'avez pas de domaine, ce tutoriel fonctionnera toujours pour vous, à la seule différence que le site Web fonctionnera sur votre IP VPS, au lieu d'un domaine.

Configuration de Node.js

Comme pour tout framework Node.js, vous devrez installer Node.js sur votre VPS. Pour les besoins de ce didacticiel, je suppose que Node.js est déjà installé sur votre système. Sinon, vous pouvez simplement suivre les instructions ici .

Configuration de notre répertoire d'applications

Nous devrons créer un dossier, qui contiendra les fichiers de base de notre application.

mkdir site

N'hésitez pas à remplacer sitepar tout autre nom que vous souhaitez pour le répertoire. Ensuite, nous devrons initialiser notre fichier de package Node.js. Accédez au répertoire que vous venez de créer, exécutez npm initet complétez les invites. En fin de compte, cela devrait ressembler à ceci:

{
  "name": "site",
  "version": "1.0.0",
  "description": "Koa.js Site",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "yourname",
  "license": "ISC"
}

Installation de Koa.js

Maintenant que notre répertoire est configuré, nous pouvons procéder à l'installation de Koa.js. Dans le répertoire de travail actuel /site, tapez ce qui suit.

npm install koa

Cela va télécharger le module Koa.js à partir de NPM et l'installer dans notre répertoire de projet pour une utilisation future. Ensuite, nous allons créer notre exemple de fichier d'application qui contiendra notre code d'application. Pour ce faire, créez un index.jsfichier.

nano index.js

Une fois à l'intérieur du fichier, créez un exemple d'application.

const Koa = require('koa');
const app = new Koa();

app.use(async ctx => {
     ctx.body = 'Hello World';
 });

app.listen(3000);
console.log('Website is live!')

Enregistrez et fermez le fichier. CTRL+ X.

Nous voulons nous assurer que notre application fonctionne correctement. Pour le démarrer, exécutez node index.js, et vous verrez Website is livedans la console.

Installer Apache

Maintenant que nous savons que notre site Web est fonctionnel, nous pouvons procéder à l'installation d'Apache et de ses dépendances.

sudo apt install -y libapache2-mod-proxy-html libxml2-dev

Afin d'utiliser la fonction de proxy inverse trouvée dans Apache, nous devrons activer les modules nécessaires.

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html

Certains de ces modules ont peut-être déjà été activés, mais il est toujours bon de les revérifier.

Maintenant, nous devons modifier le fichier de configuration par défaut pour Apache.

sudo nano /etc/apache2/sites-enabled/000-default.conf

Ici, nous devrons ajouter un bloc pour notre application.

<VirtualHost *:*>
    ProxyPreserveHost On
    ProxyPass / http://0.0.0.0:3000/
    ProxyPassReverse / http://0.0.0.0:3000

    ServerName localhost
</VirtualHost>

Enregistrez le fichier, CTRL+ X.

Vous remarquerez peut-être que nous utilisons le port 3000comme port pour notre ProxyPasset ProxyPassReverseIP. Comme il s'agit du même port que celui sur lequel nous exécutons notre application Koa.js, il est impératif de saisir le bon port.

Une fois les modifications apportées, nous devrons redémarrer Apache et relancer notre application Koa.js.

sudo systemctl restart apache2

Cela garantira que notre fichier de configuration est actif et prêt à fonctionner lorsque nous démarrons notre application Koa.js. Une fois Apache redémarré, revenez dans le répertoire de votre site et démarrez l'application Koa.js comme nous l'avons fait précédemment. À partir de votre navigateur Web, accédez à http://yourdomainou http://yourip:, et vous verrez "Hello World".

Gérer notre application avec systemd

Maintenant que nous avons couvert les bases de la création d'un exemple d'application Koa.js, nous nous rendons compte que dans un environnement de production, le démarrage de l'application tel que nous sommes maintenant n'est pas pratique. Un gestionnaire de processus est définitivement une exigence. C'est là que systemd entre en jeu. En termes simples, systemd se compose d'un logiciel qui fournit des blocs de construction pour un système Linux. Similaire à "init", il fournit un système pour gérer les processus utilisateur après le démarrage du système. Dans le cas de notre application, systemd nous permet de démarrer automatiquement notre site Web après le redémarrage du système, au cas où un événement perturbe la disponibilité du système. Il fournit également un ensemble d'outils qui peuvent être utiles lors de la gestion de notre application. La meilleure partie est le fait qu'il est intégré à Ubuntu 16.04 LTS, nous n'avons donc pas besoin d'installer de logiciel supplémentaire.

Créer un service systemd

Tout ce dont nous avons besoin pour démarrer notre application sera contenu dans un fichier appelé service. Il contient des détails sur notre application, tels que son nom, son répertoire, son environnement et plus encore. Pour créer notre fichier système, ouvrez un éditeur de texte.

sudo nano /lib/systemd/system/site.service

Modifiez et enregistrez le fichier comme ceci.

[Unit]
Description=desc here
Documentation=https://example.com
After=network.target

[Service]
Environment=NODE_PORT=3000
Type=simple
User=youruser
ExecStart=/usr/bin/node /home/[youruser]/site/index.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

Remplacez youruserpar le nom d'utilisateur de votre serveur. Voici un bref aperçu des domaines importants:

  • After - Cela informe systemd d'attendre que l'interface réseau soit prête avant de démarrer notre application.
  • Environment- Ici, nous pouvons spécifier des variables d'environnement pour notre application. Notre port Node.js en fait partie.
  • Type - Cela informe systemd que notre application peut simplement être démarrée, sans baisser les privilèges des utilisateurs et autres.
  • User- Cela indique à systemd que nous voulons exécuter l'application sous notre compte utilisateur, ce qui est recommandé. L'exécution d'applications en tant qu'utilisateur root peut entraîner de nombreux compromis de sécurité.
  • ExecStart - Essentiellement la commande que systemd exécutera pour démarrer notre application, similaire à la façon dont nous l'avons démarrée manuellement auparavant.
  • Restart- Indique à systemd dans quelles conditions redémarrer notre application. Dans ce cas, nous souhaitons redémarrer notre site internet en cas d'erreur.

Démarrez le service systemd

Nous sommes maintenant prêts à démarrer notre service systemd.

sudo systemctl daemon-reload

Cela est nécessaire chaque fois qu'un fichier de service systemd change pour que systemd enregistre les nouvelles modifications apportées.

Ensuite, lancez votre application.

sudo systemctl start site

Accédez à nouveau au site dans votre navigateur pour vérifier que tout fonctionne.

Fonctions clés de gestion du système

  • stop - Arrête complètement l'application.
  • restart - Arrête l'application et la redémarre sous un nouveau processus.
  • enable - Indique à systemd de démarrer l'application chaque fois que vous démarrez votre ordinateur.
  • status - Affiche des informations sur l'application en cours d'exécution, telles que la disponibilité, l'état de l'application et plus encore.

Pour utiliser l'une de ces fonctions, exécutez ce qui suit.

systemctl <function> site

Conclusion

Nous avons réussi à mettre en place une application Koa.js et appris à inverser son proxy, ainsi qu'à la gérer avec systemd. Vous êtes maintenant prêt à développer votre application et à vous appuyer sur cet exemple. Si vous souhaitez en savoir plus sur Koa.js et plus de choses que vous pouvez faire avec, visitez leur site Web , pour plus d'informations utiles. En plus de cela, si vous souhaitez en savoir plus sur le gestionnaire de processus de systemd, lisez la documentation correspondante ici . Enfin, si vous souhaitez en savoir plus sur le proxy inverse d'Apache, n'hésitez pas à les consulter ici .



Leave a Comment

Comment installer MODX Revolution sur un VPS CentOS 7 LAMP

Comment installer MODX Revolution sur un VPS CentOS 7 LAMP

Vous utilisez un système différent? MODX Revolution est un système de gestion de contenu (CMS) de niveau entreprise rapide, flexible, évolutif, gratuit et open source écrit i

Installation de McMyAdmin sur Ubuntu 14.10

Installation de McMyAdmin sur Ubuntu 14.10

McMyAdmin est un panneau de contrôle de serveur Minecraft utilisé pour administrer votre serveur. Bien que McMyAdmin soit gratuit, il existe plusieurs éditions, dont certaines sont pai

Configurer un serveur TeamTalk sous Linux

Configurer un serveur TeamTalk sous Linux

TeamTalk est un système de conférence qui permet aux utilisateurs davoir des conversations audio / vidéo de haute qualité, un chat textuel, de transférer des fichiers et de partager des écrans. Cest moi

Comment installer et configurer CyberPanel sur votre serveur CentOS 7

Comment installer et configurer CyberPanel sur votre serveur CentOS 7

Vous utilisez un système différent? Introduction CyberPanel est lun des premiers panneaux de contrôle du marché à la fois open source et utilisant OpenLiteSpeed. Quest-ce que

Installer phpBB avec Apache sur Ubuntu 16.04

Installer phpBB avec Apache sur Ubuntu 16.04

PhpBB est un programme de babillard open source. Cet article vous montrera comment installer phpBB sur un serveur Web Apache sur Ubuntu 16.04. Cétait écrit

Configurer un utilisateur non root avec Sudo Access sur Ubuntu

Configurer un utilisateur non root avec Sudo Access sur Ubuntu

Avoir un seul utilisateur, qui est root, peut être dangereux. Permet donc de résoudre ce problème. Vultr nous donne la liberté de faire ce que nous voulons avec nos utilisateurs et nos serveurs

Installer eSpeak sur CentOS 7

Installer eSpeak sur CentOS 7

Vous utilisez un système différent? ESpeak peut générer des fichiers audio de synthèse vocale (TTS). Ceux-ci peuvent être utiles pour de nombreuses raisons, telles que la création de votre propre Turin

Comment installer Thelia 2.3 sur CentOS 7

Comment installer Thelia 2.3 sur CentOS 7

Vous utilisez un système différent? Thelia est un outil open source pour la création de sites Web de commerce électronique et la gestion de contenu en ligne, écrit en PHP. Code source Thelia i

Installation de Fuel CMS sur Ubuntu 16.04 LTS

Installation de Fuel CMS sur Ubuntu 16.04 LTS

Vous utilisez un système différent? Fuel CMS est un système de gestion de contenu basé sur CodeIgniter. Son code source est hébergé sur GitHub. Ce guide vous montrera comment

Comment configurer loptimisation TCP sous Linux

Comment configurer loptimisation TCP sous Linux

Introduction Vous avez des problèmes de connectivité lorsque des visiteurs dautres pays accèdent à votre site Web? Vous vous demandez pourquoi la vitesse de téléchargement de votre Foreig

Comment déployer Ghost v0.11 LTS sur Ubuntu 16.04

Comment déployer Ghost v0.11 LTS sur Ubuntu 16.04

Vous utilisez un système différent? Ghost est une plate-forme de blogs open source qui gagne en popularité auprès des développeurs et des utilisateurs ordinaires depuis sa 201

Comment installer Pip sur Linux

Comment installer Pip sur Linux

Pip est un outil de gestion des packages Python. Lutilisation dun gestionnaire de packages permet une gestion efficace de votre serveur. Dans ce tutoriel, je vais expliquer comment t

Comment déployer Google BBR sur CentOS 7

Comment déployer Google BBR sur CentOS 7

BBR (Bottleneck Bandwidth and RTT) est un nouvel algorithme de contrôle de congestion qui est contribué à la pile TCP du noyau Linux par Google. Avec BBR en place,

Comment installer Icinga 2 et Icinga Web 2 sur Ubuntu 16.04

Comment installer Icinga 2 et Icinga Web 2 sur Ubuntu 16.04

Icinga 2 est un système de surveillance des ressources réseau open source largement utilisé, et Icinga Web 2 est linterface Web officielle pour Icinga 2. Dans ce didacticiel,

Comment installer YOURLS sur CentOS 7

Comment installer YOURLS sur CentOS 7

YOURLS (Your Own URL Shortener) est une application open source de raccourcissement dURL et danalyse de données. Dans cet article, nous couvrirons le processus dinstallation

Comment activer TLS 1.3 dans Apache sur Fedora 30

Comment activer TLS 1.3 dans Apache sur Fedora 30

Vous utilisez un système différent? TLS 1.3 est une version du protocole TLS (Transport Layer Security) qui a été publiée en 2018 en tant que norme proposée dans la RFC 8446

Configurer un Chroot sur Debian

Configurer un Chroot sur Debian

Cet article vous apprendra comment configurer une prison chroot sur Debian. Je suppose que vous utilisez Debian 7.x. Si vous utilisez Debian 6 ou 8, cela peut fonctionner, bu

Comment installer PiVPN sur Debian

Comment installer PiVPN sur Debian

Introduction Un moyen facile de configurer un serveur VPN sur Debian est avec PiVPN. PiVPN est un installateur et un wrapper pour OpenVPN. Il crée des commandes simples pour vous t

Comment installer Alfresco Community Edition sur Ubuntu 16.04

Comment installer Alfresco Community Edition sur Ubuntu 16.04

Vous utilisez un système différent? Alfresco Community Edition est une version open source des services de contenu Alfresco. Il est écrit en Java et utilise PostgreSQL t

Configurer Nginx-RTMP sur CentOS 7

Configurer Nginx-RTMP sur CentOS 7

Vous utilisez un système différent? RTMP est idéal pour diffuser du contenu en direct. Lorsque RTMP est associé à FFmpeg, les flux peuvent être convertis en différentes qualités. Vultr i

Comment générer des clés SSH?

Comment générer des clés SSH?

Découvrez comment générer une clé SSH pour accéder à votre serveur sans mot de passe. Suivez nos étapes faciles à comprendre pour créer et ajouter des clés SSH.

Créer un serveur de messagerie avec hMailServer sous Windows

Créer un serveur de messagerie avec hMailServer sous Windows

Découvrez comment créer un serveur de messagerie avec hMailServer sous Windows pour recevoir des e-mails facilement.

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.