繁体   English   中英

Django-无法发布Linux服务器

[英]Django - unable to publish Linux server

首先,我可以从本地主机访问该网页。 但是,如果要从外部计算机访问它,则无法访问该页面。

这是我运行python manage.py runserver 0.0.0.0:8000

System check identified no issues (0 silenced).
September 18, 2018 - 05:45:59
Django version 2.0.6, using settings 'sage.settings'
Starting ASGI/Channels version 2.1.2 development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
2018-09-18 05:45:59,176 - INFO - server - HTTP/2 support not enabled (install the http2 and tls Twisted extras)
2018-09-18 05:45:59,179 - INFO - server - Configuring endpoint tcp:port=8000:interface=0.0.0.0
2018-09-18 05:45:59,180 - INFO - server - Listening on TCP address 0.0.0.0:8000

假设我的Linux服务器IP地址为70.111.222.333 然后,我应该能够通过在浏览器上键入http://70.111.222.333:8000从其他计算机访问它。 但这是行不通的。

在我的settings.py ,这是现在的样子:

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['', '*']

Linux服务器安装了一些虚拟机,并且我已经为我的应用程序虚拟机port 8000Local IP 192.168.1.100正确设置了堡垒转发。 但是,我仍然无法发布我的Linux服务器。 它说无法访问该站点。

任何想法如何解决这个问题?

我正在使用Django频道,仅供参考

首先,您应该使用像gunicorn或uwsgi之类的python网关服务器接口在生产中为您的应用程序提供服务。 不要使用./manage.py runserver命令。

其次,如果您在生产环境中运行应用程序(这意味着DEBUG=False ),则需要自己提供静态资源,这意味着您需要一个Web服务器(例如nginx或apache2)。

设置网络服务器以提供静态资源后,请立即创建Django应用程序的代理。

对于Apache:

ProxyPass / http://localhost:8000/
ProxyPassReverse / http://localhost:8000/

还要将保留主机标头设置为使用虚拟主机的主机名。

ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto https

这是虚拟主机的完整示例:

<VirtualHost *:80>
    ServerName example.ch
    ServerAlias www.example.ch

    ProxyPass / http://localhost:8000/
    ProxyPassReverse / http://localhost:8000/

    ProxyPreserveHost On
    RequestHeader set X-Forwarded-Proto https
</VirtualHost>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM