[python] 외부 세계에서 로컬 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) 0.0.0.0/0의 포트 80에서 http를 포함하는 보안 그룹 인바운드 규칙을 확인하십시오.
- AWS 콘솔을 통해 구성
3) ALLOWED_HOSTS에 퍼블릭 IP 및 DNS 추가
- ALLOWED_HOSTS는 settings.py에서 찾을 수있는 목록 객체입니다.
- ALLOWED_HOSTS = [ “75.254.65.19”, “ec2-54-528-27-21.compute-1.amazonaws.com”]
4) 포트 80에서 sudo를 사용하여 개발 서버 시작
- sudo python manage.py runserver 0:80
이제 다음 중 하나에서 사이트를 사용할 수 있습니다 (http의 기본값 인 : 80 필요 없음).
- [퍼블릭 DNS] ec2-54-528-27-21.compute-1.amazonaws.com
- [공개 IP] 즉 75.254.65.19
답변
여기에 이것을 추가하겠습니다 :
-
sudo python manage.py runserver 80
-
휴대 전화 나 컴퓨터로 이동하여 컴퓨터의 내부 IP (예 🙂
192.168.0.12
를 브라우저에 입력하십시오 .
이 시점에서 Django 서버에 연결되어 있어야합니다.
이것은 sudo 없이도 작동해야합니다.
python manage.py runserver 0.0.0.0:8000
답변
Docker를 사용하는 경우 포트가 노출되어 있는지 확인해야합니다