如何将Django应用程序部署到(AWS)域名?
我只和Django一起工作了几个星期,刚刚学会了部署。我有一个AWS EC2实例,我可以将Django网站/应用程序部署到该实例(即,如果我转到浏览器中的IP地址,我就可以访问我的网站)。然而,我不知道如何将同一个网站部署到我的域名上,该域名已在AWS上注册 我遵循AWS的文档(),并显示我的域名路由到我的EC2实例。然而,当我在浏览器中访问我的域名时,它显示了400个错误请求。当我设置nginx或gunicorn时,是否还需要执行其他操作?我尝试将nginx代码中的如何将Django应用程序部署到(AWS)域名?,django,amazon-web-services,nginx,amazon-ec2,deployment,Django,Amazon Web Services,Nginx,Amazon Ec2,Deployment,我只和Django一起工作了几个星期,刚刚学会了部署。我有一个AWS EC2实例,我可以将Django网站/应用程序部署到该实例(即,如果我转到浏览器中的IP地址,我就可以访问我的网站)。然而,我不知道如何将同一个网站部署到我的域名上,该域名已在AWS上注册 我遵循AWS的文档(),并显示我的域名路由到我的EC2实例。然而,当我在浏览器中访问我的域名时,它显示了400个错误请求。当我设置nginx或gunicorn时,是否还需要执行其他操作?我尝试将nginx代码中的{{{yourEC2.pub
{{{yourEC2.public.ip}}
替换为我的域名,而不是ip地址
我还没有在网上找到关于域名部署的任何其他资源,特别是AWS
这就是我部署到EC2实例的方法:
settings.py
:
DEBUG = False
ALLOWED_HOSTS = ['{{yourEC2.public.ip}}']
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
(venv) ubuntu@54.162.31.253:~myRepoName$ python manage.py collectstatic
gunicorn
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/{{repoName}}
ExecStart=/home/ubuntu/{{repoName}}/venv/bin/gunicorn --workers 3 --bind
unix:/home/ubuntu/{{repoName}}/{{projectName}}.sock
{{projectName}}.wsgi:application
[Install]
WantedBy=multi-user.target
nginx:
server {
listen 80;
server_name {{yourEC2.public.ip}};
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ubuntu/{{myRepoName}};
}
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/{{myRepoName}}/{{projectName}}.sock;
}
}
您应该设置主机名,例如['example.com','www.example.com']
:
表示此Django站点可以服务的主机/域名的字符串列表。这是一种防止HTTP主机头攻击的安全措施,即使在许多看似安全的web服务器配置下也可能发生这种攻击
我也有同样的问题,事实上,我发现你的各种帖子也在寻求解决方案。有趣的是,在如此相似的时间窗内,我们两人都遇到了完全相同的问题 我做了三件事:
- 首先,我更新了我的
,正如Selcuk指出的:允许的\u主机
ALLOWED_HOSTS=['12.345.67.890','sub.domain.com','www.sub.domain.com']
- 然后,我还编辑了我的nginx配置中的
设置:server\u name
server_name 12.345.67.890 sub.domain.com www.sub.domain.com代码>
- 最后,我重新启动了nginx并重新启动了机器,以确保一切正常:
sudo服务nginx重启
sudo重启
在此之后,我可以加载我的域,应用程序也可以加载。我知道你已经找到了你的解决方案,但我想把它正式化,因为我在StackOverflow上发现了你的问题,希望其他人也会这样做,这样他们就可以幸免了 您是否在Route53中创建了一个记录集,一个记录到ip地址或一个CName到EC2实例的公共域名?@Ashan:是的,我创建了一个记录集,并将值设置为我的EC2实例/ip地址@是的,如果我输入我的IP地址,我的Django应用程序/网站就会显示出来。输入域名时,它就是不起作用。我将尝试设置
允许的\u主机
。