[PYTHON] Lancement d'une application Web sur AWS avec django et modification des tâches

Bonjour mogken.

Cela fait plus de 3 mois que j'ai écrit l'article sur le changement de travail en créant une application de scraping avec Python + Django + AWS la dernière fois. Comme le titre l'indique, j'ai heureusement changé de poste avec succès et changé de poste pour une entreprise qui développe une infrastructure cloud à partir de janvier * \ (^ o ^) / *

Donc, cette fois, j'enregistrerai brièvement la procédure lors de la création de l'application Web Python créée à ce moment-là sur AWS. Je suis désolé, mais cela fait longtemps, donc je ne peux pas garantir que le contenu est correct car ma mémoire est un peu vague ... Pensez-y comme un mémorandum d'amateur.

Que faire cette fois

Installez python3, Django, nginx et gunicorn sur la machine virtuelle AWS (Centos7) et déployez l'application Web créée. Je pensais faire un équilibreur de route et une mise à l'échelle automatique, mais comme j'ai pu changer de travail, j'étais épuisé par la configuration la plus simple ...

Schéma de configuration (je n'en ai pas besoin car il est trop petit, mais pour le moment) スクリーンショット 2020-02-12 17.54.50.png

Paramètres AWS

Les éléments qui doivent être définis dans AWS dans cette configuration sont décrits en gros comme suit.

  1. Créez un réseau
  2. Créez une VM
  3. Paramètres DNS

La procédure détaillée n'est pas décrite ici. Parce que la procédure consistant à ne retenir que les amateurs est si effrayante que je ne peux pas y faire référence.

URL de référence: https://qiita.com/okoppe8/items/dc1de147a36797442e4c

1. Créer un réseau

Dans AWS, vous devez d'abord créer un VPC pour lancer une VM.

Le flux est le suivant

  1. Créer un VPC
  2. Créez un sous-réseau
  3. Créez une passerelle Internet
  4. Création d'une table de routage
  5. Créez un groupe de sécurité

2. Création d'une VM

Créez une machine virtuelle pour créer votre application. Mais tout ce que vous avez à faire est de créer EC2 en cliquant sur le bouton.

3. Paramètres DNS

Définissez le domaine pour la publication à l'aide de Route53, le service DNS d'AWS.

Je suis allé en me référant à ce site.

https://avinton.com/academy/route53-dns-vhost/

Paramètres du serveur Linux

Après avoir créé la VM sur AWS, l'étape suivante consiste à configurer la VM lancée.

De là, je vais vous expliquer un peu plus en détail. (Parce que j'ai échoué plusieurs fois et que je l'ai répété, ma mémoire est claire ...)

Après cela, les paramètres d'ici sont essentiellement

https://narito.ninja/blog/detail/21/#_3

Je me réfère à cette page. Ce blog contient de nombreux articles très faciles à comprendre sur Django, je le recommande donc vivement.

La procédure est la suivante

  1. Connectez-vous à la VM lancée avec SSH ou console Web
  2. Installez python3
  3. Installation et configuration de django
  4. Installation et configuration de nginx
  5. Installez gunicorn
  6. Lancer le service

1. Connectez-vous à la VM lancée avec SSH ou console Web

Une clé d'authentification pour accéder avec ssh est également créée en même temps que EC2, donc téléchargez-la et utilisez-la. Si vous ne comprenez pas ce que vous dites, vous pouvez accéder à la VM sur le Web à partir de l'écran de la console AWS, vous pouvez donc l'essayer ici.

Si vous essayez d'utiliser la clé d'authentification téléchargée telle quelle, vous vous fâcherez si l'autorité de clé d'authentification est trop ouverte, vous devez donc définir l'autorité de fichier avec la commande suivante.

chmod 400 "Nom du fichier de clé d'authentification téléchargé"

Après cela, vous pouvez accéder à ssh avec la commande suivante.

ssh -i "***. Pem" ec2-user @ "Nom DNS public EC2 ou IP publique"

2. Installez python3

URL de référence: https://qiita.com/s_runoa/items/156f3fa67c82e9cd9f42

De là, installez les packages nécessaires. Tout d'abord, python. J'utilise pyenv mais je ne sais toujours pas exactement ce qu'est pyenv ...

#yum mise à jour du package yum update -y

#Installer les packages requis sudo yum install git gcc zlib-devel libffi-devel bzip2-devel readline-devel openssl-devel sqlite-devel

Installez #pyenv git clone https://github.com/yyuu/pyenv.git ~/.pyenv

Ajouté à # .bash_profile export PYENV_ROOT="HOME/.pyenv" export PATH="PYENV_ROOT/bin:PATH" eval "(pyenv init -)"

** Redémarrez le serveur maintenant **

#Pyhton installation pyenv install --list CFLAGS="-fPIC" pyenv install 3.7.2

#python settings pyenv versions pyenv global 3.7.2 pyenv rehash

Confirmation d'installation

python --version

3. Installez django

Après avoir installé python, installez django. Au fait, mon premier framework est django, donc j'ai un sentiment très spécial pour django.

#django installation pip install Django

Ceci termine l'installation de django, mais je pense que c'est une bonne idée de prendre des mesures ici car vous vous fâcherez plus tard si la version de sqllite est ancienne.

Parfois, vous ne pouvez pas vous mettre en colère, donc si vous êtes ennuyé, vous pouvez l'ignorer et le faire après que vous êtes vraiment en colère.

** Mettre à niveau Sqllite **

URL de référence: https://qiita.com/rururu_kenken/items/8202b30b50e3bfa75821

Obtenir le fichier #tar wget https://www.sqlite.org/2019/sqlite-autoconf-3280000.tar.gz

Décompressez #tar tar xvfz sqlite-autoconf-3280000.tar.gz

#Construire et installer cd sqlite-autoconf-3280000 $ ./configure --prefix=/usr/local $ make $ sudo make install $ sudo find /usr/ -name sqlite3

$ sudo mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
$ sudo ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3

Passez le chemin vers la bibliothèque partagée

$ export LD_LIBRARY_PATH="/usr/local/lib"

** Modifier le fichier de paramètres **

Définissez ici les paramètres minimum pour démarrer Django normalement.

Créer un projet #django django-admin startproject "nom du projet"

#django Créer une application python manage.py startapp "nom de l'application"

Fichier de configuration #Edit Le fichier de configuration django est créé dans un dossier portant le même nom que le nom du projet. vi / "nom du projet" / "nom du projet" /setting.py

#Modifier les éléments dans setting.py ci-dessous Ajouté à la fin de #installed_app "Nom de l'application" .apps. "Nom de l'application (mettre en majuscule la première lettre)" Config Exemple) 'myapp.apps.MyappConfig'

#Hide debug et spécifie l'hôte DEBUG = False ALLOWED_HOSTS = ["définir le nom de domaine"]

Paramètres de langue et de fuseau horaire

LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'

Paramètres de stockage de fichiers statiques

STATIC_URL = '/ static /' # C'est depuis le début. STATIC_ROOT = '/usr/share/nginx/html/static' MEDIA_URL = '/media/' MEDIA_ROOT = '/usr/share/nginx/html/media'

#Enregistrer et terminer la modification de setting.py

#Appuyez enfin sur cette commande pour terminer sudo python manage.py collectstatic

4. Installation et configuration de nginx

Utilisez Nginx pour le serveur Web. Quand j'ai rencontré ceci pour la première fois, je ne savais pas comment le lire.

installation de nginx

Installez #nginx sudo amazon-linux-extras install nginx1.12

paramètres nginx

Fichier de paramètres #Edit sudo vim /etc/nginx/conf.d/project.conf

#Les éléments de réglage suivants server { listen 80; nom_serveur "adresse IP publique du serveur";

    location /static {
        alias /usr/share/nginx/html/static;
    }

    location /media {
        alias /usr/share/nginx/html/media;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

#Sauvegarder et quitter

#Setting File Check sudo nginx -t

Démarrer #nginx sudo systemctl reload nginx

Réglage pour démarrer nginx en même temps que le serveur démarre

sudo systemctl enable nginx

5. Installez gunicorn

Enfin, installez gunicorn en tant que wsgi. Je ne sais pas ce que sont wsgi et gunicorn d'après leurs noms ...

sudo pip3.7 install gunicorn

C'est tout. Comme c'est facile.

Lancement du service

Enfin lancer le service

Déplacer vers le dossier du projet où se trouve le fichier # manage.py cd /project

Commencer #gunicorn sudo gunicorn --bind 127.0.0.1:8000 project.wsgi:application

À ce stade, vous pouvez accéder au projet django par nom de domaine.

Enfin, mettez les paramètres lorsque vous souhaitez arrêter gunicorn

Vérifiez le numéro de processus de #gunicorn lsof -i:8000

Tuez le processus affiché

kill -9 "numéro de processus affiché"

Merci pour votre soutien.

J'étais très heureux lorsque la page a finalement été lancée après avoir combattu diverses erreurs. J'avais l'impression d'être un peu adulte.

Recommended Posts

Lancement d'une application Web sur AWS avec django et modification des tâches
Créer une application Web avec Django
J'ai fait une application WEB avec Django
Créer une application Web de type Flask / Bottle sur AWS Lambda avec Chalice
Créez une application de scraping avec Python + Django + AWS et modifiez les tâches
Créer une application Web avec Django
Retour sur la création d'un service Web avec Django 2
Essayez de créer une application Web avec Vue.js et Django (édition Mac) - (1) Construction d'environnement, création d'application
Déployer l'application Django sur EC2 avec Nginx + Gunicorn + Supervisor
Déployer l'application Django avec Docker
Un mémo contenant Python2.7 et Python3 dans CentOS
[Python] Une application web rapide avec Bottle!
Remarques sur l'activation de PostgreSQL avec Django
Exécutez une application Web Python avec Docker
Jusqu'à ce que l'application Web créée avec Bottle soit publiée (déployée) sur Heroku
# 1 Jusqu'au déploiement de l'application Web de Django (création d'une instance avec EC2 sur AWS)
Créez un environnement WardPress sur AWS avec Pulumi
Essayez Tensorflow avec une instance GPU sur AWS
Lancer un serveur Web avec Python et Flask
Comment exécuter une application Django sur un conteneur Docker (environnement de développement et de production)
Déployer des applications Web Python 3.6 / Django / Postgres sur Azure
Développer une API Web qui renvoie les données stockées dans DB avec Django et SQLite
Une histoire bloquée avec une erreur de mémoire et aucun espace restant sur l'appareil dans AWS EC2
(Python) Essayez de développer une application Web en utilisant Django
Comment déployer une application Django dans le cloud Alibaba
Déployer l'application Django sur Google App Engine (Python3)
Lancer une application Web Python sur Nginx + Gunicorn avec Docker
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Expérience sur la page d'administration)
Application Web réalisée avec Python3.4 + Django (Construction de l'environnement Part.1)
Création d'une application Web qui mappe les informations sur les événements informatiques avec Vue et Flask
Authentification unique à l'application Django avec AWS SSO
Un mémo sur la création d'une application Django (Python) avec Docker
Déployer l'application Django créée avec PTVS sur Azure
Lancer Django sur un conteneur Docker à l'aide de docker-compose up
Créez une application Web qui reconnaît les nombres avec un réseau neuronal
Créez une caméra de surveillance WEB avec Raspberry Pi et OpenCV
Configurer un serveur Web avec CentOS7 + Anaconda + Django + Apache
(Échec) Déployer une application Web créée avec Flask avec heroku
[Introduction à AWS] Mémorandum de création d'un serveur Web sur AWS
(Pour les débutants) Essayez de créer une API Web simple avec Django
Développement d'applications Web avec Flask
Créer une page d'accueil avec django
Application Web avec Python + Flask ② ③
Web en temps réel avec les chaînes Django
Application Web avec Python + Flask ④
"2/2" Je crée une application Web simple pour le fonctionnement du robot. «Chaînes Raspberry Pi 3B + et Django»
"1/2" Je crée une application Web simple pour le fonctionnement du robot. «Chaînes Raspberry Pi 3B + et Django»
Créez rapidement un environnement d'exécution d'application Web Python3.4 + Nginx + uWSGI + Flask en utilisant pyenv sur Ubuntu 12.04
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 1
Créez un environnement Python 2.7 64 bits avec TDM-GCC et MinGW-w64 sous Windows 7
Créez un fichier temporaire avec django sous forme de zip et renvoyez-le
Créez un environnement Python sur votre Mac avec Anaconda et PyCharm
# 3 Créez un environnement Python (Django) avec une instance EC2 (ubuntu18.04) d'AWS part2
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Page de création de décalage)
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 2
Obtenez des données de VPS MySQL avec Python 3 et SQL Alchemy
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 3
Comment déployer une application Web sur Alibaba Cloud en tant que pigiste