Django应用程序在EC2中运行,但尝试访问弹性URL返回页面未找到
我刚开始使用EC2,我在本地机器上启动了一个git repo,因此我知道它可以从那里运行服务器,当我从运行的EC2实例运行服务器时,它似乎可以运行,但由于某种原因,当我访问该实例的弹性IP地址时,我会发现一个页面未找到。你知道为什么吗 因此,我现在开始使用nginx,并按照这里的说明制作了一个conf文件:如下所示:Django应用程序在EC2中运行,但尝试访问弹性URL返回页面未找到,django,nginx,amazon-ec2,Django,Nginx,Amazon Ec2,我刚开始使用EC2,我在本地机器上启动了一个git repo,因此我知道它可以从那里运行服务器,当我从运行的EC2实例运行服务器时,它似乎可以运行,但由于某种原因,当我访问该实例的弹性IP地址时,我会发现一个页面未找到。你知道为什么吗 因此,我现在开始使用nginx,并按照这里的说明制作了一个conf文件:如下所示: server { listen 80; server_name ec2-54-242-149-154.compute-1.amazonaws.com
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应用程序中定义的一个地方,链接的EC2IP是我的服务器正在运行的ip。我很难找到关于如何继续或如何确定我的conf文件是否正确的文档。但是,使用标准的python manage.py运行服务器不起作用。关于如何继续的建议?关于设置生产django服务器有很多信息,我将在下面告诉您我的个人偏好,但在所有这些之前,让我们备份一下,看看是否可以从生产服务器获得任何响应 要在EC2实例上启动开发服务器,请运行:
manage.py runserver 0.0.0.0:8000
该命令将使runserver绑定到所有接口,并向外部世界提供文件。你永远不会想在开发之外做这件事,但这是一个很好的方法,可以在使事情复杂化之前测试你的django应用程序是否已经安装好。现在尝试点击EC2实例,看看是否得到响应
如果这仍然不起作用,请确保您允许到服务器端口的传入连接(在上面的命令中为8000,一旦激活为80)。您可以使用netcat(nc-l)测试端口是否打开
一旦您对应用程序设置感到满意,我建议您在生产中使用nginx作为前端web服务器,使用gunicorn作为django web服务器。您可能希望为生产设置设置virtualenv、supervisord等(这里有一个教程:),但这一切都取决于项目的具体情况。您使用什么命令来运行服务器?如果您使用的是默认的“manage.py runserver”,它将只服务来自本地计算机的请求。您应该使用Nginx来服务生产服务器上的请求。