[英]Django on AWS EC2 unable to connect, regular Python connects
我正在嘗試從Github 開發代碼運行 Django 的開發版本。 該代碼在AWS EC2 實例上運行,我在本地桌面 ( Kubuntu Linux ) 上運行 Firefox。 當我嘗試連接時,出現此錯誤:
無法連接
Firefox 無法與 1.2.3.4:8000 的服務器建立連接。
我知道我已經正確設置了防火牆、AWS 安全組和 VPS,因為我可以在啟動普通 Python Web 服務器時訪問該端口:
$ python3 -m http.server
Serving HTTP on 0.0.0.0 port 8000 ...
bzq-241-14.net - - [16/Mar/2015 10:17:28] "GET / HTTP/1.1" 200 -
bzq-241-14.net - - [16/Mar/2015 10:17:29] code 404, message File not found
bzq-241-14.net - - [16/Mar/2015 10:17:29] "GET /favicon.ico HTTP/1.1" 404 -
bzq-241-14.net - - [16/Mar/2015 10:17:29] code 404, message File not found
bzq-241-14.net - - [16/Mar/2015 10:17:29] "GET /favicon.ico HTTP/1.1" 404 -
^C
Keyboard interrupt received, exiting.
然而,Django 服務器甚至沒有注冊一個被拒絕的連接:
$ python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
March 16, 2015 - 11:00:30
Django version 1.9, using settings 'Reboot.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
連接問題的原因可能是什么?
開發服務器綁定到localhost,無法從其他計算機訪問。 您可以通過此處記錄的參數設置端口: https : //docs.djangoproject.com/en/1.7/ref/django-admin/#runserver-port-or-address-port 。
但是,最好的方法是正確部署Django: https : //docs.djangoproject.com/en/1.7/howto/deployment/
憑直覺,我嘗試使用服務器的IP地址和端口啟動服務器,但無濟於事:
$ python manage.py runserver 1.2.3.4:8000
Performing system checks...
System check identified no issues (0 silenced).
March 16, 2015 - 11:08:43
Django version 1.9, using settings 'Reboot.settings'
Starting development server at http://1.2.3.4:8000/
Quit the server with CONTROL-C.
Error: That IP address can't be assigned-to.
但是, 使用LAN IP地址啟動Django服務器確實有所幫助:
$ ifconfig
eth0 Link encap:Ethernet HWaddr 2a:da:26:29:39:8e
inet addr:10.0.0.101 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::28da:26ff:fe29:398e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:535102 errors:0 dropped:0 overruns:0 frame:0
TX packets:364585 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:333175535 (333.1 MB) TX bytes:183546758 (183.5 MB)
Interrupt:43
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:12760 errors:0 dropped:0 overruns:0 frame:0
TX packets:12760 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:988343 (988.3 KB) TX bytes:988343 (988.3 KB)
$ python manage.py runserver 10.0.0.101:8000
Performing system checks...
System check identified no issues (0 silenced).
March 16, 2015 - 11:09:08
Django version 1.9, using settings 'Reboot.settings'
Starting development server at http://10.0.0.101:8000/
Quit the server with CONTROL-C.
[16/Mar/2015 11:09:11]"GET / HTTP/1.1" 200 1767
[16/Mar/2015 11:10:04]"GET / HTTP/1.1" 200 1767
[16/Mar/2015 11:10:05]"GET /favicon.ico HTTP/1.1" 404 1941
[16/Mar/2015 11:10:05]"GET /favicon.ico HTTP/1.1" 404 1941
因此,在AWS(可能還有所有遠程服務器)上,必須使用LAN IP地址啟動Django服務器才能訪問遠程測試服務器。
可能對初學者或 AWS 新手有所幫助
我知道我必須向安全組添加一些規則,但我不確切知道哪些規則,所以這里是您應該添加的規則
轉到 -> EC2 > 安全組 > your-security-group > 編輯入站規則
在此之后,您必須使用以下命令啟動 django 服務器
python3 manage.py runserver 0.0.0.0:8000
現在您可以在您的 EC2 公共域的 :8000 上訪問您的 django 應用程序
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.