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.
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)
Les éléments qui doivent être définis dans AWS dans cette configuration sont décrits en gros comme suit.
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
Dans AWS, vous devez d'abord créer un VPC pour lancer une VM.
Le flux est le suivant
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.
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/
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
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"
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="
** 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
python --version
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
$ 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"]
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
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
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
sudo systemctl enable nginx
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.
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
kill -9 "numéro de processus affiché"
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