Comment déployer une API Strapi sur Ubuntu 16.04

Strapi est un framework de gestion de contenu Node.js dédié à la création d'API. À mi-chemin entre une structure Node.js et un CMS Headless, il a été conçu pour créer des API en quelques secondes au lieu de plusieurs semaines, grâce à ses fonctionnalités intégrées: panneau d’administration, gestion de l’authentification et des autorisations, gestion du contenu, API Generator, etc.

Accueillir un projet Strapi est une mission importante pendant les phases de développement et de production. Cependant, en tant que développeur, vous êtes probablement plus un expert en JavaScript que DevOps. Ne vous inquiétez pas, cet article est là pour vous aider.

Dans ce didacticiel, vous apprendrez à déployer un projet Strapi v3 pour la production sur un serveur Ubuntu vierge.

Conditions préalables

Tout d’abord, vous aurez besoin des éléments suivants d’un serveur Ubuntu 16.04 vierge, configuré avec git installé sur celui-ci, d’un utilisateur non root bénéficiant des privilèges sudo.

Installez Node.js

Une application Strapi n'est rien d'autre qu'une application Node.js. De toute évidence, il nécessite Node.js (8 ou supérieur).

Exécutez les commandes suivantes pour installer Node.js:

$ curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash - $ sudo apt-get install -y nodejs

Vérifiez que le noeud a été installé avec succès:

$ node -v

Il faut imprimer v9.x.x.

Installer MongoDB

Strapi utilise MongoDB comme système de base de données par défaut. Sauf si vous avez décidé d'utiliser un autre système de base de données ou d'héberger la base de données MongoDB sur un autre serveur ou service (ce que nous vous recommandons vivement), vous devez installer MongoDB sur le serveur Ubuntu.

Importer la clé publique:

$ sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

Créer un fichier de liste:

$ echo "deb [arch = amd64, arm64] http://repo.mongodb.org/apt/ubuntu xenial / mongodb-org / 3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Recharger la base de données de paquets locale:

$ sudo apt-get update

Installez les paquets MongoDB:

$ sudo apt-get install -y mongodb-org

Démarrer MongoDB:

$ sudo service mongod start

Si vous avez un problème, consultez la documentation de MongoDB.

Remarque: par défaut, MongoDB est automatiquement accessible de l’extérieur par le port 27017. Nous vous conseillons vivement de limiter l’accès en modifiant vos règles de pare-feu.

Configurez votre projet

Node.js et MongoDB sont installés. Il est temps d’importer notre projet Strapi.

Accédez au répertoire de base de votre utilisateur et clonez un projet Strapi à partir d'un référentiel GitHub (ou GitLab, BitBucket…).

Clonez votre projet:

$ cd ~ $ clone git https://github.com/strapi/sample-strapi-app

Sauf si vous souhaitez obtenir une application Strapi propre, remplacez l'URL ci-dessus par celle de votre projet.

Remarque: si votre projet est hébergé dans un référentiel privé, le terminal peut vous demander vos informations d'identification (email et mot de passe).

Installer des dépendances:

$ cd sample-strapi-app $ npm install --production

Démarrez le serveur pour vous assurer que tout va bien:

$ NODE_ENV = npm de production

Remarque: NODE_ENV = Production informe Strapi que l'application est en cours d'exécution en mode de production. Les fichiers de configuration pris en compte sont ceux situés dans config / environnements / production.

Votre API Strapi doit être accessible à l’URL suivante: http: // votreIP: 1337.

Ensuite, arrêtez le serveur en exécutant ctrl + c.

Installer le PM2

Comme vous l'avez peut-être vu, si vous quittez le script de démarrage npm ou quittez la connexion SSH, le processus Node.js est arrêté. C'est assez ennuyant. Aussi, nous voulons être sûrs que l'application sera automatiquement redémarrée si elle se bloque.

C'est ici que PM2, le gestionnaire de processus de facto de Node.js, intervient à la rescousse.

Installez PM2:

$ npm install pm2 -g

Remarque: si vous rencontrez des problèmes d'autorisations npm, changez les autorisations en répertoire par défaut npm ou utilisez sudo.

Démarrez votre serveur Strapi:

$ NODE_ENV = production pm2 start server.js --name api

Votre API Strapi doit être accessible à l’URL suivante: http: // votreIP: 1337.

Lister les processus:

$ pm2 liste

Pour vous assurer que votre API fonctionne bien, consultez les journaux:

$ pm2 logs api

Appuyez sur crtl + c pour quitter la vue des journaux.

Remarque: consultez la documentation PM2 pour une utilisation plus avancée.

Installer nginx

Votre application est maintenant opérationnelle sur le port 1337. Pour la rendre accessible sur le port Web (80), vous devez installer un proxy inverse.

Pour ce tutoriel, nous allons utiliser nginx: le plus célèbre des serveurs HTTP et proxy inverse.

Installez-le:

$ sudo apt-get update $ sudo apt-get install -y nginx

Ouvrez le fichier de configuration principal:

$ sudo nano / etc / nginx / sites-available / default

Ensuite, remplacez le contenu de l'emplacement / directive par le suivant:

proxy_pass http: // localhost: 1337;
proxy_http_version 1.1;
proxy_set_header Mise à niveau $ http_upgrade;
proxy_set_header Connexion 'mise à niveau';
proxy_set_header Host $ host;
proxy_cache_bypass $ http_upgrade;

Redémarrez nginx:

$ sudo systemctl redémarrer nginx

À ce stade, votre API Strapi doit être accessible à l’URL suivante: http: // votreIP.

Conclusion

Félicitations, vous avez déployé avec succès une application Strapi sur un serveur Ubuntu propre!

Ce tutoriel couvre les éléments de base pour déployer une application Strapi. Nous vous conseillons vivement de prendre les points suivants en considération: sécurité (ports ouverts, restrictions IP, etc.), SSL, mise à l'échelle automatique, etc.

Pour vous rendre la vie encore plus facile, nous avons publié un script bash complet pour configurer votre environnement. Ce script installe Node.js, Strapi, PM2, MongoDB et nginx (correctement configurés). Pour l'essayer, exécutez la commande suivante: wget -qO - https://strapi.io/install.sh | sudo -E bash && source ~ / .bashrc sur un serveur Ubuntu vierge. Après l'avoir exécuté, vous n'avez plus qu'à configurer votre propre projet Strapi ou à en créer un nouveau via l'interface de ligne de commande.

Dans les prochaines semaines, nous publierons d'autres articles sur les déploiements des API Strapi: Déploiement d'un Strapi sur Heroku, Utilisation de mLab avec Strapi, Utilisation de Strapi avec Docker, Surveillance d'une API Strapi avec Keymetrics, etc.

Quels tutoriels aimeriez-vous ensuite?

Publié à l'origine sur blog.strapi.io le 31 janvier 2018.