Django在除localhost之外的URL上

时间:2015-12-13 12:58:59

标签: python django frameworks server

我有一个服务器aerv.nl. 它有django(一个python框架)但是当我运行django服务器它说: 服务器始于:http://127.0.0.1:8000/如何让服务器继续运行:http://www.aerv.nl/~filip/? (一个真实的网址)

2 个答案:

答案 0 :(得分:2)

您必须配置您的http服务器和Django。例如,如果你正在使用apache,你需要经历这个:

https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/modwsgi/

您在此处所做的是设置服务器以通过django应用处理http请求。

答案 1 :(得分:1)

您需要了解DNS的工作原理,然后使用重定向,然后使用适当的服务器(例如apachegunicorn,例如./manage runserver),而不是django开发服务器,这应该是'用于生产。你无法用./manage.py runserver 192.168.0.12:9999做你所要求的事情。您所能做的就是将IP地址和端口更改为不同的地方,例如:example.com,例如,网络中的其他计算机可能会访问此网站上的特定IP和端口。

实施例

您是域5.130.2.19的所有者,您拥有要使用IP地址为您的网站提供服务的服务器,例如example.com。 您需要转到您的域名提供商并添加将这些内容连接在一起的A记录:5.130.2.19 - > nginx

然后在您的服务器上设置网络服务器,例如server { listen 80; server_name example.com; client_max_body_size 4G; location /static/ { autoindex on; alias /var/www/example/django/static/; } location /media/ { autoindex on; alias /var/www/example/django/media/; } location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; if (!-f $request_filename) { proxy_pass http://upstream_server; break; } } upstream upstream_server { server unix:/var/www/example/gunicorn.sock fail_timeout=10s; } 让它与此配置适用于您的特定服务器/站点:

gunicorn

然后您需要使用类似

的内容运行gunicorn example.wsgi:application --bind=unix:/var/www/example/gunicorn.sock
example.com

应该是全部,但它当然非常简短。只需将nginx替换为您的网址即可。如果这将成为example.com配置中的特定记录(将其视为入口点)或者它将成为您的django项目中指定的路径之一,则由您决定。

它是如何工作的?

用户将5.130.2.19放入地址栏,然后您的计算机会询问全局DNS服务器: example.com指向哪个IP地址?,DNS回复:它是{{ 1}} 的。用户的浏览器然后在该IP上发送HTTP请求,其中nginx获取此请求并查看其配置是否有example.com 处理程序。它发现它就在那里,他应该在unix:/var/www/example/gunicorn.sock中寻找文件。他看着那里看到工作gunicorn,它基本上将python django项目解析为nginx可以作为你的网站呈现的东西。