Django应用程序在EC2中运行,但尝试访问弹性URL返回页面未找到

时间:2013-02-06 01:15:56

标签: django nginx amazon-ec2

我刚刚开始使用EC2,我已经下载了一个我在本地计算机上启动的git repo,因此我知道它可以从那里运行服务器,当我运行我的服务器时它似乎有效我运行的EC2实例的服务器,但出于某种原因,当我访问该实例的弹性IP地址时,我得到一个页面未找到。对于为什么会这样的想法?

所以,我现在已经开始使用nginx了,并按照这里的说明创建了一个conf文件:https://code.djangoproject.com/wiki/DjangoAndNginx如下:

server {
        listen 80;
        server_name ec2-54-242-149-154.compute-1.amazonaws.com;
        access_log /var/log/nginx/USBag.access.log;
        error_log /var/log/nginx/USBag.error.log;

        location /basicMap/ {
                alias /home/www/ec2-54-242-149-154.compute-1.amazonaws.com/basicMap/;
                expires 30d;
        }

        location / {
                include fastcgi_params;
                fastcgi_pass 127.0.0.1:8080;
        }
}

basicMap是我已经在我的django应用程序中定义的地方,链接的ec2 ip是我的服务器运行的地方。我很难找到关于如何继续或如何确定我的conf文件是否正确的文档。但是,使用标准的python manage.py runserver不起作用。关于如何进行的建议?

1 个答案:

答案 0 :(得分:0)

有很多关于在那里设置生产django服务器的信息,我将在下面给你我个人的偏好,但在此之前让我们备份,看看我们是否可以得到任何回复来自生产服务器。

要在EC2实例上启动开发服务器:

manage.py runserver 0.0.0.0:8000

该命令将导致runserver绑定到所有接口并将文件提供给外部世界。你永远不会想在开发之外做这件事,但这是一个很好的方法来测试你的django应用程序是否在复杂化之前设置。现在尝试点击您的EC2实例,看看您是否收到回复。

如果仍然无法正常工作,请确保允许到服务器端口的传入连接(上述命令中为8000,实时为80)。您可以使用netcat(nc -l)测试是否打开了端口。

如果您对自己的应用设置感到满意,我建议您使用nginx作为前端网络服务器和gunicorn作为您的django网络服务器。您可能希望为生产设置设置virtualenv,supervisord等(这是一个教程:http://senko.net/en/django-nginx-gunicorn/),但所有这些都取决于项目的具体情况。