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

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.

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1

Limpact de lintelligence artificielle dans les soins de santé 2021

Limpact de lintelligence artificielle dans les soins de santé 2021

L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.