Introdução
Depois de terminarmos de desenvolver o aplicativo da web, ele deve ser hospedado para que o público possa acessá-lo de qualquer lugar. Veremos como implantar e hospedar um aplicativo em uma instância AWS EC2 usando Nginx como servidor da web e Gunicorn como WSGI.
AWS EC2
Amazon Elastic Compute Cloud (Amazon EC2) é um serviço da web que fornece poder de computação escalonável na nuvem. Instalamos e hospedamos nossos aplicativos da web em uma instância EC2 após selecionar um AMI (SO) a nosso critério. Falaremos mais sobre isso nas seções a seguir.
NGINX
Nginx é um servidor da web de código aberto. Usaremos o Nginx para servir nossas páginas da web conforme necessário.
GUNICORN
Gunicorn é uma implementação do lado do servidor da Web Server Gateway Interface (WSGI), que é comumente usada para executar aplicativos da Web em Python.
WSGI - usado para encaminhar uma solicitação de um servidor da web para um back-end Python.
Não usaremos o servidor padrão que vem com o django na produção.
Implantar o aplicativo
Iniciaremos uma instância EC2 na AWS fazendo login no console do aws.
EC2
New instance Ubuntu .
, , , .
8000 9000, . , , .
, 'connect' ( putty ).
sudo apt-get update
python , pip django
sudo apt install python sudo apt install python3-pip pip3 install django
, , , django.
cd /home/ubuntu/
mkdir Project
cd Project
mkdir ProjectName
cd ProjectName
.
/home/ubuntu/Project/ProjectName
GitHub
, , ec2.
( /home/ubuntu/Project/ProjectName/ )
git clone <repository-url>
, git pull
.
Settings.py .
settings.py .
Debug = False
ALLOWED_HOSTS
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) STATIC_ROOT = os.path.join(BASE_DIR, “static”)
, ( STATIC_ROOT).
manage.py makemigrations manage.py migrate manage.py collectstatic
Nginx
Nginx
sudo apt install nginx
/etc/nginx/sites-enabled/
, NGINX, .
sudo vi default
, .
proxy_pass http://0.0.0.0:9000 , /static/, . , ,
manage.py collectstatic
nginx
sudo service nginx start #to start nginx
sudo service nginx stop #to stop nginx
sudo service nginx restart #to restart nginx
Gunicorn
pip install gunicorn
, , : /home/ubuntu/Project
, , gunicorn
gunicorn ProjectName.wsgi:application- -bind 0.0.0.0:9000
, nginx gunicorn, DNS ec2.