簡體   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