簡體   English   中英

"AWS EC2 上的 Django 無法連接,常規 Python 連接"

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM