我使用 Django 才几周时间,刚刚学习了部署。我有一个 AWS EC2 实例,我可以将我的 Django 网站/应用程序部署到其中(即,如果我在浏览器中访问 IP 地址,我就可以访问我的网站)。但是,我不知道如何将同一个网站部署到我在 AWS 上注册的域名。
我遵循了 AWS 的文档 ( http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-ec2-instance.html ) 和 https://cachecheck.opendns.com/显示我的域名路由到我的 EC2 实例。但是,当我在浏览器中访问我的域名时,它显示 400 错误请求。当我设置 nginx 或 Gunicorn 时,我还需要做些什么吗?我尝试将 nginx 代码中的 {{yourEC2.public.ip}}
替换为我的域名而不是 IP 地址。
我无法在网上找到任何有关域名部署的其他资源,特别是使用 AWS。
这是我部署到 EC2 实例的内容:
settings.py
:
DEBUG = False
ALLOWED_HOSTS = ['{{yourEC2.public.ip}}']
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
(venv) <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f08592859e8485b0c5c4dec1c6c2dec3c1dec2c5c3" rel="noreferrer noopener nofollow">[email protected]</a>:~myRepoName$ python manage.py collectstatic
unicorn
[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;
}
}
最佳答案
我遇到了完全相同的问题,实际上发现您的各种帖子也在寻求解决方案。有趣的是,我们在如此相似的时间窗口内遇到了完全相同的问题。
我做了三件事:
首先,我更新了我的
ALLOWED_HOSTS
,正如 Selcuk 指出的那样:ALLOWED_HOSTS = ['12.345.67.890', 'sub.domain.com', 'www.sub.domain.com']
然后,我还在 nginx 配置中编辑了
server_name
设置:server_name 12.345.67.890 sub.domain.com www.sub.domain.com;
最后,我重新启动了 nginx 并重新启动了机器以确保一切正常:
sudo 服务 nginx 重启
sudo restart
此后,我能够加载我的域并且应用程序将加载。我知道您已经找到了解决方案,但希望将其正式化,因为我在 StackOverflow 上发现了您的问题,希望其他人也能找到解决方案,这样他们就可以幸免!
关于django - 如何将 Django 应用程序部署到 (AWS) 域名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46741707/