django - 如何将 Django 应用程序部署到 (AWS) 域名?

标签 django amazon-web-services nginx amazon-ec2 deployment

我使用 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/

相关文章:

Nginx:如何防止在代理上缓存ajax请求?

django - 使用Django+Redis+Socket.io搭建聊天室,从何入手?

python - django selenium LiveServerTestCase

python - Django Apache wsgi 更改 python 版本

amazon-web-services - 插入 CloudFormation ImportValue 类似于如何插入参数?

amazon-web-services - AWS EKS,如何直接从浏览器访问 Pod?

ajax - 如何在Django中实现点击流或点击跟踪器功能?

django - 在 AWS Elastic Beanstalk 上部署 Django 应用程序 : Application url shows only "Index of/"

nginx - 创建一个nginx反向代理容器以根据请求的URL转发到特定的URL/端口

mysql - 带有 Centos7 的 NGINX 上的 phpmyadmin 显示空白页面?