Comment héberger django avec nginx sur Ubuntu 18.04 Bionic Beaver Linux

Comment héberger django avec nginx sur Ubuntu 18.04 Bionic Beaver Linux

Objectif

Installer et configurer Ubuntu 18.04 pour héberger le framework Django.

Distribution

Ubuntu 18.04

Exigences

Une installation de travail d'Ubuntu 18.04 avec les privilèges racinaires

Difficulté

Moyen

Conventions

  • # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
  • $ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Introduction

Si vous cherchez à créer et à héberger des applications Web avec Python, Django est le choix le plus populaire. Puisque Python est si étroitement intégré dans le Linux, il n'est pas trop difficile de mettre en place un serveur Django sur Ubuntu.

Il n'y a pas un moyen défini d'accueillir des projets Django, mais une pile composée de Postgresql, Nginx, Gunicorn et Django est à peu près la norme.

Installez les packages

Avant de commencer, vous devez installer les packages requis. Il n'y en a pas beaucoup, mais assurez-vous que vous désactivez Apache ou tout autre serveur Web fonctionnant sur le port 80 avant de démarrer.

$ sudo apt installer python3 python3-venv nginx postgresql


Créer la base de données

Vous devrez également créer une base de données pour stocker les informations de votre application Django. PostgreSQL va remplir ce rôle. Si vous n'avez jamais utilisé PostgreSQL auparavant, ce n'est pas tout à fait la même chose que MySQL. Sa syntaxe est différente, et il gère également les connexions des utilisateurs différemment.

Pour vous connecter à PostgreSQL et le gérer, vous devez utiliser le postgres Utilisateur sur votre machine qui a été créé lorsque vous avez installé le package PostgreSQL. Passez à cet utilisateur avec su.

$ sudo su Postgres

Une fois que vous êtes sur le postgres utilisateur, vous accédez à votre base de données avec le PSQL commande.

Après vous être connecté, vous devez ajouter un mot de passe à votre utilisateur d'administration avant de faire quoi que ce soit d'autre.

postgres = # alter user Postgres avec mot de passe chiffré «yourpassword»;

Ensuite, créez votre base de données.

Postgres = # Créer une base de données Your_DB;

Créez un nouvel utilisateur régulier pour gérer la base de données. Ceci est l'utilisateur avec lequel Django se connectera.

Postgres = # Créer un rôle django_user avec mot de passe chiffré «yourpassword»;

Ensuite, accordez aux autorisations de l'utilisateur d'utiliser la base de données.

Postgres = # accorde tous les privilèges sur la base de données votre_db à django_user;

Lorsque vous avez terminé, sortez avec \ q. Quitter le postgres utilisateur aussi.

Configurez votre répertoire

Ce n'est généralement pas une excellente idée d'installer des packages Python à l'échelle du système. Il est beaucoup plus difficile de gérer les versions de package et de garder tout stable.

Python 3 prend en charge les environnements virtuels qui vous permettent de compartimenter vos projets Python par répertoire. Chaque environnement a son propre ensemble de packages Python, et vous pouvez les installer et les gérer en tant qu'utilisateur ordinaire.

Choisissez l'endroit où vous souhaitez héberger votre site Web. / var / www / vopite est généralement un bon choix. Utilisez la commande intégrée pour créer votre environnement virtuel.

$ sudo python3 -m Venv / var / www / vaphyte

Allez dans votre répertoire et activez-le.

$ cd / var / www / votre bac de source / actif

Lorsque vous avez terminé dans le répertoire, vous pouvez facilement le désactiver.

$ désactiver


Installer django

Avec votre environnement virtuel démarré, vous pouvez installer Django lui-même avec quelques autres packages Python dont vous aurez besoin pour tout connecter.

$ pip install django psycopg2 gunicorn

Cela prendra quelques secondes, mais PIP installera tout ce dont vous avez besoin pour configurer votre projet Django.

Créer un projet Django

Maintenant que vous avez du django, vous pouvez réellement créer votre projet. Assurez-vous que vous êtes dans votre environnement virtuel et que vous le faites activer.

$ django-admin startproject votre projection

Une fois que vous aurez votre projet, vous devrez modifier la configuration pour configurer votre base de données. Par défaut, Django est configuré pour utiliser SQLite3 comme base de données. C'est plus à des fins de développement. Pour utiliser PostgreSQL, vous devrez modifier la configuration principale de Django à votre projet / votre projection / paramètres.py. Trouvez ce fichier et ouvrez-le. Cherchez le Bases de données bloquer et modifier pour ressembler à celui ci-dessous.

Bases de données = 'Default': # 'moteur': 'django.db.backends.sqlite3 ', #' name ': os.chemin.join (base_dir, 'db.sqlite3 '),' moteur ':' django.db.backends.postgresql_psycopg2 ',' name ':' your_db ',' utilisateur ':' django_user ',' mot de passe ':' yourpassword ',' hôte ':' localhost ',' port ': ",

Sauvegarder et quitter. Maintenant, vous pouvez maintenant appliquer les migrations initiales et créer votre utilisateur d'administration. Revenez au répertoire racine de votre projet et exécutez les commandes Linux suivantes.

$ Python Manage.py migrer $ python.py créeuperuser

Configurer Gunicorn

La configuration de Gunicorn est assez simple, mais il est toujours important de faire. Créer un Gunicorn Répertoire dans la racine de votre site. Vous avez essentiellement besoin de lui dire où exécuter sa prise, combien de travailleurs à frayer et où se connecter. Créer un fichier python appelé Gunicorn-Config.py, et faire ressembler quelque chose comme celui ci-dessous.

Importer le multiprocessement Bind = 'Unix: / Tmp / Gunicorn.chaussettes 'travailleurs = multiprocessement.cpu_count () * 2 + 1 rechargement = true daemon = true accesslog = './accès.log 'errorLog ='./erreur.enregistrer'

Une fois que vous l'avez réglé comme vous le souhaitez, enregistrez et sortez.

Vous pouvez démarrer Gunicorn à partir du répertoire racine de votre projet avec une commande similaire à ceci:

$ Gunicorn -c Gunicorn / Gunicorn-Config.py votre projet.wsgi


Configurer nginx

Toute la configuration de Nginx repose dans / etc / nginx. Il y a une tonne de fichiers dans ce répertoire, mais vous n'avez pas à vous soucier de tous. Tu as vraiment besoin / etc / nginx / nginx.confli et le fichier spécifique au site auquel vous allez créer / etc / nginx / sites-disponible / votre site. En fait, la configuration principale de Nginx n'est pas si nécessaire à moins que vous ne souhaitiez optimiser votre site en production. Vous n'avez pas vraiment besoin de jouer avec juste pour faire fonctionner votre site.

Alors, créez un fichier pour votre site à / etc / nginx / sites-disponible / votre site.

Le premier élément du fichier dont vous avez besoin est le en amont bloc. Ce bloc indique à Nginx que le code d'application Web est exécuté ailleurs (Gunicorn, dans ce cas), et il devrait échanger des demandes avec cette prise ou cette adresse.

en amont de votre Gunicorn serveur Unix: / tmp / gunicorn.sock fail_timeout = 0; 

Ce bloc crée plus ou moins une variable basée sur le nom que vous avez spécifié après en amont et lui attribue la valeur du serveur de destination. Le serveur peut être une prise Unix ou une adresse IP et un numéro de port. Étant donné que Gunicorn fonctionnera localement, l'utilisation d'une prise Unix est meilleure. N'oubliez pas que vous avez configuré cela dans la configuration de Gunicorn plus tôt, alors pointez votre configuration Nginx dessus.

Ensuite, vous pouvez passer au bloc principal pour Nginx, le serveur bloc. Ajouter cela.

serveur 

Les options de base indiquent à Nginx quel port écouter et quelle url recherche.

Écoutez 80 par défaut; client_max_body_size 4G; server_name votre site.com; keepalive_timeout 70;

Ensuite, ajoutez vos lieux de journal.

Access_log / var / log / nginx / votre site.Access_log Main; error_log / var / log / nginx / votre site.error_log info;

Point nginx au répertoire racine de votre site.

root / var / www / virtualenv / votre site;

Gunicorn ne sert pas de fichiers statiques, vous devrez donc configurer Nginx pour servir les fichiers statiques de votre site. Exactement où ces fichiers se trouvent est déterminé dans votre fichier de paramètres django. Habituellement, il y a deux répertoires, un pour les fichiers statiques du site et un autre pour les fichiers téléchargés. Les blocs partagent la même structure. L'exemple ci-dessous suppose que vos fichiers statiques existent dans un répertoire appelé statique Dans la racine de votre projet.

Emplacement / statique / autoIndex sur; alias / var / www / virtualenv / votre site / static /; expire 1m; Access_log off; add_header cache-contrôleur "public"; proxy_ignore_headers "set-cookie"; 

Il existe d'autres options qui font de bonnes valeurs par défaut pour la mise en cache.

Le suivant emplacement Bloc dont vous aurez besoin va gérer la connexion avec Gunicorn. Comme en amont Il définit une autre variable et lui dit de passer des connexions à votre bloc en amont.

Emplacement @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: // your gunicorn; 

Enfin, configurez un bloc qui indique à Nginx de rechercher des fichiers statiques pour correspondre à toutes les demandes entrantes. Si aucun n'est trouvé, passez-le à Gunicorn.

emplacement / try_files $ uri @proxy_to_app; 

C'est tout ce dont tu as absolument besoin. Vous pouvez faire beaucoup plus de réglage des performances, mais il n'est pas essentiel pour faire fonctionner Django. Sauvegarder et quitter.

Créez un lien entre votre nouveau fichier et le compatible avec les sites dossier. Supprimer l'existant défaut déposer là-dedans.

$ sudo rm / etc / nginx / sites-compatible / par défaut $ sudo ln -s / etc / nginx / sites-disponible / votre site / etc / nginx / sites-compatible /

Redémarrer nginx.

$ sudo systemctl redémarrer nginx

À ce jour, vous devriez pouvoir ouvrir votre navigateur et voir la page Django par défaut.

Réflexions de clôture

D'accord, donc c'était une sorte de longue route. Que vous souhaitiez ou non passer par autant de configuration sur un serveur de développement est entièrement à vous. Pour la production, cependant, il fournit une base solide pour héberger vos projets Django. Gardez à l'esprit, cependant, il y a certainement plus d'optimisation que vous pouvez faire à la fois dans la configuration Django et Nginx.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Ubuntu 20.04: WordPress avec l'installation de Nginx
  • Choses à installer sur Ubuntu 22.04
  • Comment vérifier le statut Nginx sur Ubuntu
  • Comment installer nginx sur Linux
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
  • Comment vérifier la version Nginx sur Linux
  • Ubuntu 20.04 Guide
  • Ubuntu 20.04 astuces et choses que vous ne savez peut-être pas