[python] Flask dev 서버가 네트워크를 통해 볼 수 있도록 구성
이것이 Flask 전용인지 확실하지 않지만 dev 모드 ( http://localhost:5000
) 에서 앱을 실행 하면 네트워크의 다른 컴퓨터 ( )에서 액세스 할 수 없습니다 http://[dev-host-ip]:5000
. 예를 들어, Dev 모드의 Rails에서는 제대로 작동합니다. Flask dev 서버 구성에 관한 문서를 찾을 수 없습니다. 이것을 활성화하기 위해 무엇이 구성되어야하는지 아십니까?
답변
이것이 가능하지만 프로덕션 환경에서 Flask dev 서버를 사용해서는 안됩니다. Flask dev 서버는 특히 안전하거나 안정적이거나 효율적으로 설계되지 않았습니다. 올바른 솔루션 에 대한 배포 문서를 참조하십시오 .
에 매개 변수를 추가하십시오 app.run()
. 기본적으로 localhost에서 app.run(host= '0.0.0.0')
실행되므로 시스템 IP 주소에서 실행되도록 변경하십시오 .
빠른 시작 페이지의 “외부 적으로 보이는 서버”아래 Flask 사이트에 문서화되어 있습니다 .
외부에서 볼 수있는 서버
서버를 실행하면 네트워크의 다른 컴퓨터가 아닌 자신의 컴퓨터에서만 서버를 사용할 수 있습니다. 디버깅 모드에서는 응용 프로그램 사용자가 컴퓨터에서 임의의 Python 코드를 실행할 수 있기 때문에 이것이 기본값입니다. 디버그를 비활성화하거나 네트워크의 사용자를 신뢰하는 경우 서버를 공개적으로 사용할 수 있습니다.
run()
메소드 호출 을 다음과 같이 변경하십시오.
app.run(host='0.0.0.0')
이것은 운영 체제가 공용 IP에서 청취하도록 지시합니다.
답변
플라스크 실행 파일을 사용하여 서버를 시작 flask run --host=0.0.0.0
하는 경우 기본값을 127.0.0.1에서 변경하여 로컬이 아닌 연결로 열 수 있습니다. 다른 답변에서 설명하는 config 및 app.run 메소드가 더 나은 방법 일 수 있지만 유용 할 수도 있습니다.
외부에서 볼 수있는 서버 서버를 실행하면 네트워크의 다른 컴퓨터가 아닌 자신의 컴퓨터에서만 서버에 액세스 할 수 있습니다. 디버깅 모드에서는 응용 프로그램 사용자가 컴퓨터에서 임의의 Python 코드를 실행할 수 있기 때문에 이것이 기본값입니다.
디버거를 비활성화하거나 네트워크의 사용자를 신뢰하는 경우 명령 줄에 –host = 0.0.0.0을 추가하여 서버를 공개적으로 사용할 수 있습니다.
flask run –host = 0.0.0.0 운영 체제가 모든 퍼블릭 IP를 수신하도록 지시합니다.
참조 : http://flask.pocoo.org/docs/0.11/quickstart/
답변
0.0.0.0 방법이 작동하지 않으면 이것을 시도하십시오
지루한 물건
나는 개인적으로 로컬 서버를 통해 다른 장치 (노트북 및 휴대 전화)에서 내 앱에 액세스 할 수 있도록 많은 어려움을 겪었습니다. 0.0.0.0 방법을 시도했지만 운이 없습니다. 그런 다음 포트 변경을 시도했지만 작동하지 않았습니다. 그래서 여러 가지 다른 조합을 시도한 후이 조합에 도달하여 로컬 서버에 앱을 배포하는 문제를 해결했습니다.
단계
- 컴퓨터의 로컬 IPv4 주소를 얻습니다. 이것은
ipconfig
Windows와ifconfig
Linux 및 Mac에서 입력하여 수행 할 수 있습니다 .
참고 : 위 단계는 앱을 제공하는 컴퓨터가 아닌 액세스하는 컴퓨터에서 수행해야합니다. 또한 네트워크 연결을 끊었다가 다시 연결하면 IPv4 주소가 변경 될 수 있습니다.
-
이제 획득 한 IPv4 주소로 플라스크 앱을 실행하면됩니다.
flask run -h 192.168.X.X
예를 들어 제 경우 (이미지 참조)는 다음과 같이 실행했습니다.
flask run -h 192.168.1.100
휴대 기기에서
선택적 물건
Windows에서이 절차를 수행하고 Power Shell을 CLI로 사용하면서 웹 사이트에 여전히 액세스 할 수없는 경우 앱을 실행중인 쉘에서 CTRL + C 명령을 시도하십시오. Power Shell이 때때로 멈춰서 소생하기 위해서는 꼬집음이 필요합니다. 이렇게하면 서버가 종료 될 수도 있지만 간혹 트릭을 수행하기도합니다.
그게 다야. 도움이된다면 엄지 손가락을 포기하십시오 .?
더 선택적인 것들
IP 주소가 필요할 때마다 얻을 수있는 짧은 Powershell 스크립트를 만들었습니다.
$env:getIp = ipconfig
if ($env:getIp -match '(IPv4[\sa-zA-Z.]+:\s[0-9.]+)') {
if ($matches[1] -match '([^a-z\s][\d]+[.\d]+)'){
$ipv4 = $matches[1]
}
}
echo $ipv4
.ps1 확장명 (PowerShell 용)으로 파일에 저장하고 앱을 시작하기 전에 실행하십시오. 프로젝트 폴더에 저장하고 다음과 같이 실행할 수 있습니다.
.\getIP.ps1; flask run -h $ipv4
참고 : 위의 쉘 코드를 getIP.ps1에 저장했습니다.
쿨 .?
답변
귀하의 경우 cool
응용 프로그램이 그것의 구성은 외부 파일에서로드처럼 다음 예에서, 다음 = “0.0.0.0”HOST와 해당 설정 파일을 업데이트하는 것을 잊지 마세요
cool.app.run(
host=cool.app.config.get("HOST", "localhost"),
port=cool.app.config.get("PORT", 9000)
)
답변
프로젝트에 아래 줄을 추가하십시오
if __name__ == '__main__':
app.debug = True
app.run(host = '0.0.0.0',port=5005)
답변
클라이언트에 서비스를 제공하기 위해 서버에서 특정 포트가 열려 있는지 확인하십시오.
우분투 또는 리눅스 배포판에서
sudo ufw enable
sudo ufw allow 5000/tcp //allow the server to handle the request on port 5000
원격 요청을 처리하도록 애플리케이션 구성
app.run(host='0.0.0.0' , port=5000)
python3 app.py & #run application in background
답변
CMD (명령 프롬프트)에서 프로젝트 경로로 이동하여 다음 명령을 실행하십시오.
FLASK_APP = ABC.py 설정
SET FLASK_ENV = 개발
플라스크 실행 -h [yourIP] -p 8080
CMD에서 다음과 같은 o / p를 얻습니다.
- 플라스크 앱 “expirement.py”제공 (게으른 로딩)
- 환경 : 개발
- 디버그 모드 : 켜기
- stat로 재시작
- 디버거가 활성화되었습니다!
- 디버거 PIN : 199-519-700
- 에서 실행 에 http : // [yourIP] : 8080 / (CTRL + C를 눌러 종료합니다)
이제 http : // [yourIP] : 8080 / url을 사용하여 다른 컴퓨터에서 플라스크 앱에 액세스 할 수 있습니다 .