[PYTHON] [Note] Exécutez Django sur Amazon Linux 2

Gardez votre système d'exploitation à jour

$ sudo yum update -y

Insérer python

Mettez ce dont vous avez besoin en python

$ sudo yum install git gcc zlib-devel libffi-devel bzip2-devel readline-devel openssl-devel sqlite-devel

Mettez pyenv

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv

Traverser

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
$ exec "$SHELL" -l

Découvrez la dernière version de python que vous pouvez mettre dans pyenv

$ pyenv install --list

Insérez la dernière version de python

$ pyenv install 3.8.1

Utilisez le python installé par défaut

$ python -V
Python 2.7.16
$ pyenv versions
* system (set by /home/ec2-user/.pyenv/version)
  3.8.1
$ pyenv global 3.8.1
$ pyenv versions
  system
* 3.8.1 (set by /home/ec2-user/.pyenv/version)
$ pyenv rehash
$ python -V
Python 3.8.1

Mettez Django

Puisque pip est également inclus dans le package mis dans pyenv, mettez à jour le pip lui-même puis installez Django

$ pip install --upgrade pip
$ pip install Django Pillow

Créez un répertoire et créez-y un projet Django

$ cd /var/www
$ mkdir django
$ django-admin startproject config .

DB

Installez MySQL

$ sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
$ yum install mysql-community-server
$ mysqld --version
mysqld  Ver 5.7.29 for Linux on x86_64 (MySQL Community Server (GPL))

Connexion DB

Django recommande mysqlclient (https://docs.djangoproject.com/en/3.0/ref/databases/#mysql-db-api-drivers). Je n'utilise pas PyMySQL autant que possible.

$ sudo yum install mysql-devel
$ pip install mysqlclient

Vérifier la connexion

$ python manage.py dbshell
#Utiliser le fichier de paramètres de production
$ python manage.py dbshell --settings=config.settings.production

gunicorn

$ pip install gunicorn

Essayez de lancer Django en utilisant gunicorn

$ gunicorn config.wsgi --bind=[IP privée]
#Utiliser le fichier de paramètres de production
$ gunicorn config.wsgi --bind=[IP privée] --env DJANGO_SETTINGS_MODULE=config.settings.production

nginx

$ sudo amazon-linux-extras install nginx1.12 -y
$ sudo cp -a /etc/nginx/nginx.conf /etc/nginx/nginx.conf.back
$ sudo systemctl start nginx.service
#Démarrage automatique
$ sudo systemctl enable nginx.service
$ systemctl is-enabled nginx.service
enabled
$ sudo vim /etc/nginx/conf.d/django.conf
server {
    listen  80;
    server_name [IP, elb et domaine publics];

    location /static {
        alias /var/www/manage/static;
    }

    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;
    }
}
$ gunicorn config.wsgi --daemon --bind 127.0.0.1:8000
$ gunicorn config.wsgi --daemon --bind 127.0.0.1:8000 --env DJANGO_SETTINGS_MODULE=config.settings.production

Si vous pouvez confirmer, tuez le processus

$ sudo lsof -i:8000
COMMAND    PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
gunicorn 13502 ec2-user    5u  IPv4  68558      0t0  TCP [IP privée].ap-northeast-1.compute.internal:irdmi (LISTEN)
gunicorn 13504 ec2-user    5u  IPv4  68558      0t0  TCP ip-[IP privée].ap-northeast-1.compute.internal:irdmi (LISTEN)
$ sudo kill -9  13502 13504

enregistrement de la commande systemctl

sudo vim /etc/systemd/system/project.service
[Unit]
Description=gunicorn
After=network.target

[Service]
WorkingDirectory=/var/www/django
ExecStart=/home/ec2-user/.pyenv/shims/gunicorn --bind 127.0.0.1:8000 config.wsgi:application --env DJANGO_SETTINGS_MODULE=config.settings.production

[Install]
WantedBy=multi-user.target

référence

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

Recommended Posts

[Note] Exécutez Django sur Amazon Linux 2
[Note] Installez Imagick sur Amzon Linux2
Exécutez cron sur Amazon Linux (défini sur Linux)
Exécutez Django sur PythonAnywhere
Installez Python3 et Django sur Amazon Linux (EC2) et exécutez le serveur Web
Mettez jenv dans Amazon Linux
Installez tomcat 5.5 sur Amazon Linux.
Installation de Homebrew sur Amazon Linux 2
Exécutez Amazon Linux 2 dans VirtualBox
Publiez votre application Django sur Amazon Linux + Apache + mod_wsgi
Django Note 4
Installez Python Pillow sur Amazon Linux
Installer Oracle Java8 sur Amazon Linux2
Exécutez un serveur Linux avec GCP
Django Note 5
Django Note 1
Présentation de l'environnement Python 3.5.2 sur Amazon Linux
Django Note 3
Django Note 2
Déployer l'API Django avec heroku (mémo personnel)
Utilisez Numpy, Scipy, scikit-learn sur Amazon Linux
Réagir → Ajax → Django sur les notes d'implémentation Linux
Découvrez sshd_config et allowed_keys (pour Amazon Linux 2)
Exécutez bootgen sur Debian GNU / Linux, Ubuntu
Remarques sur l'activation de PostgreSQL avec Django
Installez Python 3.8, Pip 3.8 sur EC2 (Amazon Linux 2)
Exécutez Linux avec l'architecture ARM à l'aide de QEMU
Exécuter un lot de Python 2.7 avec nohup sur Amazon Linux AMI sur EC2
Exécutez une application django sur Windows + Apache + mod_wsgi + service.
[Note] Installez wxPython 3.x sur Linux Mint (Ubuntu)
Installez PHP série 7 sur Amazon Linux 2 avec Amazon Linux Extras
Démoniser les processus sous Linux
jblas sur Arch Linux
Linux (WSL) sous Windows
Routeur NAT sur Linux
Notes de céleri sur Django
Exécutez mysqlclient sur Lambda
Développer .NET sur Linux
Wake on LAN sous Linux
Hello World avec Django
Compilez et installez MySQL-python pour python2.7 sur Amazon Linux
Surveiller le trafic sous Linux
Installez Docker sur Arch Linux et exécutez-le à distance
Mettre à jour vscode sur Linux
[AWS EC2] Comment installer Maven sur Amazon Linux 2
Note du didacticiel Django Girls
Comment exécuter Django sur IIS sur un serveur Windows
Comment créer un environnement Python sur Amazon Linux 2
Annonce de la disponibilité de Java 11 LTS sur Amazon Linux 2
Créer LiveUSB sur Linux