$ sudo yum update -y
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
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
$ 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))
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
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
https://narito.ninja/blog/detail/21/
Recommended Posts