Попытка развернуть приложение django на экземпляре AWS EC2 с помощью Gunicorn и Nginx
Я пытаюсь развернуть приложение django на AWS EC2, а также использовать gunicorn и Nginx в процессе, я следовал этому руководству link. Я не уверен, что идет не так, это первый раз, когда я использую AWS EC2, когда я пытаюсь запустить IP-адрес экземпляра, он возвращается как:
"не удается открыть страницу, потому что safari не может установить безопасное соединение с сервером"
в моей консоли aws 'состояние экземпляра EC2' показывает, что он работает
он был установлен в ubuntu 18.04, я также настроил группы безопасности в моем экземпляре EC2 с http, https, 443, 80, 8000, 5432 и 22 все разрешено с любого ip адреса, кроме 22, который имеет только мой ip адрес как доступ. Также в настройках моего приложения django 'ALLOWED_HOSTS' я добавил ip адрес экземпляра, а также '*'.
вот мой файл gunicorn.socket:
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
и мой служебный файл gunicorn:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=djangoadmin
Group=www-data
WorkingDirectory=/home/ubuntu/djangoapp1 /
ExecStart=/home/djangoadmin/pyapps/venv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
djangoapp1.wsgi:application
[Install]
WantedBy=multi-user.target
ngnix conf файл :
server {
listen 80;
listen 443;
server_name **.***.***.*;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ubuntu/djangoapp1;
}
location /media/ {
root /home/ubuntu/djangoapp1;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
Я проверяю гнездо gunicorn с :
sudo systemctl start gunicorn.socket
sudo systemctl enable gunicorn.socket
sudo systemctl status gunicorn.socket
и показывает, что он работает нормально
Я также создал файл nginx conf :
sudo vim /etc/nginx/sites-available/djangoapp1
и связал его с :
sudo ln -s /etc/nginx/sites-available/djangoapp1 /etc/nginx/sites-enabled
затем перезапустили сервер nginx:
sudo systemctl restart nginx
все равно ничего не работает! буду благодарен за любую помощь
Решение:
Неправильная конфигурация имени_сервера в конфигурации nginx
Назначили ли вы эластичный IP-адрес своему экземпляру EC2?
Выберите экземпляр EC2> Actions> Networking> Manage Ip Addresses. Затем используйте опцию "To add or edit an IPv4 public IP Allocate an Elastic IP to this instance or network interface".
Создайте эластичный IP-адрес Перейдите по ссылке Эластичный IP-адрес> нажмите кнопку Ассоциировать IP Выберите экземпляр для присвоения IP и сохраните. Теперь у вас будет экземпляр EC2 с публичным IP без перезапуска/удаления экземпляра EC2.
Без этого ваш экземпляр EC2 не будет доступен за пределами сети Aws.
Это стоит денег, поэтому обязательно проверьте цены.