외부 세계에서 로컬 Django 웹 서버에 액세스하는 방법
내장 웹 서버를 사용하여 Django를 실행하려면 여기 의 지침을 따르고를 사용하여 성공적으로 실행할 수있었습니다 python manage.py runserver
. 웹 서버에서 로컬로 127.0.0.1:port에 액세스하면 장고 페이지가 표시됩니다.
Django 웹 서버는 프로덕션 서버가 아니라는 것을 알고 있지만 테스트 목적으로 외부 세계에서 액세스 할 수 있어야합니다. 즉 서버의 웹 브라우저가 아닌 다른 컴퓨터에서 액세스 할 수 있어야합니다.
나는 시도했다 :
http://mywebserver:port_django_runs_on
그러나 작동하지 않았습니다. 또한 대신 ifconfig를 기반으로 IP를 사용하여 액세스했습니다.
http://myipaddress:port_django_runs_on
어느 것도 작동하지 않았습니다.
웹 서버가 실행 중이므로 외부에서 액세스 할 수 있어야합니다. 어떻게할지 모르겠습니다. Apache로 Django를 구성하지 않았지만 Apache로 Linux를 실행하고 있습니다.
이 작업을 수행하는 방법에 대한 아이디어가 있습니까?
개발 서버가 네트워크 인터페이스 에서 수신 할 수 있도록 개발 서버를 실행 해야합니다.
예 :
python manage.py runserver 0.0.0.0:8000
포트 8000의 모든 인터페이스에서 수신합니다 .
IP 또는 호스트 이름으로 웹 서버에 액세스하는지 여부는 중요하지 않습니다. 당신은 여전히 당신 자신의 LAN에 있다고 생각합니다.
실제로 외부에서 서버에 액세스하려면 포트 8000
를 서버 등 으로 전달하도록 라우터를 구성 해야합니다.
사용중인 포트로 들어오는 연결이 허용되는지 서버의 방화벽을 확인하십시오!
외부에서 Apache 서버에 성공적으로 액세스 할 수 있다고 가정하면 다음을 시도 할 수도 있습니다.
- 포트
80
가 사용 가능 하도록 Apache 서버를 중지하십시오 . - 로 개발 서버를 시작하십시오.
sudo python manage.py runserver 0.0.0.0:80
작동하도록하려면이 줄을 settings.py에 추가해야했습니다 (그렇지 않으면 다른 컴퓨터에서 액세스 할 때 오류가 표시되었습니다)
ALLOWED_HOSTS = ['*']
그런 다음 서버를 다음과 같이 실행했습니다.
python manage.py runserver 0.0.0.0:9595
또한 방화벽이 해당 포트에 대한 연결을 허용하는지 확인하십시오
다음에서 하나 이상을 선택하십시오.
- 응용 프로그램이 의도 한 IP : PORT에서 수신 대기하지 않습니다
- 성공적으로 구성하지 않았기 때문에
- 사용자에게 권한이 없기 때문에
- 응용 프로그램이 의도 한 IP : PORT에서 수신 대기 중이지만 클라이언트가 연결할 수 없습니다.
- 서버 로컬 iptables가이를 방지합니다.
- 방화벽이이를 방지합니다.
따라서 lsof -i
컴퓨터에서 루트 로 실행하여 응용 프로그램이 성공적으로 수신되고 있는지 확인하고 python
지정한 해당 포트가 있는 항목을 찾을 수 있습니다.
루트가 아닌 사용자는 일반적으로 <1024 포트에 바인딩 할 수 없습니다.
당신은보고해야합니다 iptables -nvL
는 IP에 대한 액세스를 방지 할 규칙이 있는지 확인합니다 : 포트를 당신이 당신의 응용 프로그램을 결합하려고하는 것이다.
업스트림 방화벽이 있고 방화벽에 대해 잘 모르는 경우 네트워크 관리자에게 문의해야합니다.
그냥 이렇게하십시오 :
python manage.py runserver 0:8000
위의 명령으로 실제로 외부 IP 주소에 바인딩합니다. 이제 포트 번호로 IP 주소에 액세스하면 아무 문제없이 브라우저에서 액세스 할 수 있습니다.
브라우저 주소 표시 줄에 다음을 입력하십시오.
<your ip address>:8000
예 :
192.168.1.130:8000
settings.py를 편집해야 할 수도 있습니다. 마지막 줄의 settings.py에 다음을 추가하십시오.
ALLOWED_HOSTS = ['*']
이것이 도움이되기를 바랍니다 ...
AWS 사용자의 경우.
나는 거기에 도착하기 위해 다음 단계를 사용해야했다.
1) pip 및 django가 sudo 레벨에 설치되어 있는지 확인하십시오.
- sudo apt-get 설치 python-pip
- sudo pip install django
2) Ensure that security group in-bound rules includ http on port 80 for 0.0.0.0/0
- configured through AWS console
3) Add Public IP and DNS to ALLOWED_HOSTS
- ALLOWED_HOSTS is a list object that you can find in settings.py
- ALLOWED_HOSTS = ["75.254.65.19","ec2-54-528-27-21.compute-1.amazonaws.com"]
4) Launch development server with sudo on port 80
- sudo python manage.py runserver 0:80
Site now available at either of the following (no need for :80 as that is default for http):
- [Public DNS] i.e. ec2-54-528-27-21.compute-1.amazonaws.com
- [Public IP] i.e 75.254.65.19
I'm going to add this here:
sudo python manage.py runserver 80
Go to your phone or computer and enter your computers internal IP (e.g
192.168.0.12
) into the browser.
At this point you should be connected to the Django server.
This should also work without sudo:
python manage.py runserver 0.0.0.0:8000
'IT story' 카테고리의 다른 글
언제 GC.Collect에 전화 할 수 있습니까? (0) | 2020.06.04 |
---|---|
LESS 변수의 알파 불투명도 수정 (0) | 2020.06.04 |
API의 의미는 정확히 무엇입니까? (0) | 2020.06.04 |
“인수 종속 조회”(일명 ADL 또는“Koenig 조회”) 란 무엇입니까? (0) | 2020.06.04 |
Java의 정규식 명명 된 그룹 (0) | 2020.06.04 |