Hébergement de Django avec Nginx et Gunicorn sur Linux

Hébergement de Django avec Nginx et Gunicorn sur Linux

Introduction

L'hébergement des applications Web Django est assez simple, bien qu'il puisse devenir plus complexe qu'une application PHP standard. Il existe plusieurs façons de gérer l'interface Django avec un serveur Web. Gunicorn est facilement l'un des plus simples.

Gunicorn (abréviation de Green Unicorn) agit comme dans le serveur intermédiaire entre votre serveur Web, Nginx dans ce cas et Django lui-même. Il gère le service de l'application elle-même tandis que Nginx ramasse le contenu statique.

Gunicorn

Installation

L'installation de Gunicorn est super facile avec PIP. Si vous avez déjà configuré votre projet Django en utilisant VirtualEnv, vous avez PIP et vous devez vous familiariser avec la façon dont cela fonctionne. Alors, installez Gunicorn dans votre VirtualEnv.

$ pip install gunicorn

Configuration

L'une des choses qui font de Gunicorn un choix attrayant est la simplicité de sa configuration. La meilleure façon de gérer la configuration est de créer un Gunicorn Dossier dans le répertoire racine de votre projet Django. À l'intérieur de ce dossier, créez un fichier de configuration.

Pour ce guide, il sera appelé Gunicorn-Conf.py. Dans ce fichier, créez quelque chose de similaire à la configuration ci-dessous.

Importer le multiprocessement bind = 'unix: /// tmp / gunicorn1.chaussettes 'travailleurs = multiprocessement.cpu_count () * 2 + 1 rechargement = true daemon = true 

Dans le cas de la configuration ci-dessus, Gunicorn créera une prise Unix à / tmp / gunicorn1.chaussette. Il fera également tourner un certain nombre de processus de travail équivalent au double du nombre de cœurs de CPU plus un. Il rechargera également et s'exécutera automatique.

En cours

La commande pour exécuter Gunicorn est un peu longue, mais elle a des options de configuration supplémentaires spécifiées. La partie la plus importante est de pointer Gunicorn à votre projet .wsgi déposer.

Gunicorn -c Gunicorn / Gunicorn-Conf.py -d --error-logfile gunicorn / error.Enregistrer votre projet.wsgi

La commande ci-dessus doit être exécutée à partir de la racine de votre projet. Il dit à Gunicorn d'utiliser la configuration que vous avez créée avec le -c drapeau. -D Spécifie encore une fois qu'il devrait être démonisé. La dernière partie spécifie l'emplacement de l'erreur de Gunicorn Gunicorn dossier que vous avez créé. La commande se termine en disant à Gunicorn l'emplacement de votre .wsgidéposer.

Nginx

Maintenant que Gunicorn est configuré et en cours d'exécution, vous pouvez configurer Nginx pour vous connecter et servir vos fichiers statiques. Ce guide va supposer que Nginx déjà configuré et que vous utilisez séparément serveur blocs pour les sites hébergés à travers. Il va également inclure des informations SSL.

Si vous souhaitez apprendre à obtenir des certificats SSL gratuits pour votre site, jetez un œil à notre guide LETSENCCRYPT.

# Configurez la connexion à Gunicorn en amont de YourProject-Gunicorn Server Unix: / Tmp / Gunicorn1.sock fail_timeout = 0;  # Rediriger le trafic non crypté vers le serveur de site chiffré écouter 80; server_name votre website.com; Retour 301 https: // votre website.com $ request_uri;  # Le serveur principal Block Server # Définissez le port pour écouter et spécifiez le domaine pour écouter l'écoute 443 SSL par défaut; client_max_body_size 4G; server_name votre website.com; # Spécifiez les emplacements de journal Access_log / var / log / nginx / yourwebsite.Access_log Main; error_log / var / log / nginx / yourwebsite.error_log info; # Point nginx vers votre SSL CERTS SSL ON; ssl_certificate / etc / lesencrypt / live / yourwebsite.com / fullchain.pem; ssl_certificate_key / etc / lesencrypt / live / yourwebsite.com / privkey.pem; # Définissez votre répertoire racine root / var / www / yourVirtualEnv / yourProject; # Point nginx à vos fichiers statiques Emplacement / static / # AutoIndex Les fichiers pour les rendre navigables si vous voulez AutoIndex sur; # L'emplacement de vos fichiers alias / var / www / yourVirtualenv / yourproject / static /; # Configurer la mise en cache pour vos fichiers statiques expire 1M; Access_log off; add_header cache-contrôleur "public"; proxy_ignore_headers "set-cookie";  # Point nginx à vos fichiers téléchargés Emplacement / média / AutoIndex si vous voulez autoIndex sur; # L'emplacement de vos fichiers téléchargés alias / var / www / yourVirtualenv / yourproject / media /; # Configuration de la douleur pour vos fichiers téléchargés expire 1M; Access_log off; add_header cache-contrôleur "public"; proxy_ignore_headers "set-cookie";  Emplacement / # Essayez d'abord vos fichiers statiques, puis redirigez vers Gunicorn try_files $ uri @proxy_to_app; # Transmettez les demandes à l'emplacement de Gunicorn @proxy_to_app proxy_set_header x-forwarded-for $ proxy_add_x_forwarded_for; proxy_set_header host $ http_host; proxy_redirect off; proxy_pass http: // njc-gunicorn;  # Caching pour HTML, XML et JSON Emplacement ~ * \.(HTML?| xml | json) $ expire 1h;  # Cache pour tous les autres emplacements des actifs statiques ~ * \.(jpg | jpeg | png | gif | ico | css | js | ttf | woff2) $ expire 1m; Access_log off; add_header cache-contrôleur "public"; proxy_ignore_headers "set-cookie";  

D'accord, donc c'est un peu trop, et il peut y avoir beaucoup plus. Les points importants à noter sont les en amont Bloquer qui pointe vers Gunicorn et le emplacement bloque qui passe le trafic vers Gunicorn. La plupart des autres sont assez facultatifs, mais vous devriez le faire sous une forme. Les commentaires dans la configuration devraient vous aider avec les détails.

Une fois ce fichier enregistré, vous pouvez redémarrer Nginx pour que les modifications prennent effet.

# systemctl redémarrer nginx

Une fois que Nginx revient en ligne, votre site doit être accessible via votre domaine.

Réflexions de clôture

Il y a beaucoup plus qui peut être fait avec Nginx, si vous voulez creuser profondément. Les configurations fournies, cependant, sont un bon point de départ et sont quelque chose que vous pouvez réellement utiliser. Si vous êtes habitué aux applications PHP apache et gonflées, la vitesse d'une configuration de serveur comme celle-ci devrait être une agréable surprise.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Comment configurer une adresse IP statique sur Manjaro Linux
  • Linux Apache n'exécute pas les fichiers PHP: solution
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Ubuntu 20.04: WordPress avec l'installation de Nginx
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Comment installer PHP sur Ubuntu Linux
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Installation de WordPress OpenLitesPeed
  • Comment créer une pile de lampe basée sur Docker à l'aide de Docker sur…