Flask는 Production Server가 아니다.
ec2에 flask로 만든 서버를 실행하고.. 5000 번 포트를 열고.. 외부에서 아무리 접속하려고 해도 안된다-_-
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
실행하면 위처럼 나오길래.. 위의 키워드로 검색해보니.. 아래의 정보가 나왔다.
Flask Is Not Your Production Server
While lightweight and easy to use, Flask’s built-in server is not suitable for production as it doesn’t scale well and by default serves only one request at a time.
엉엉.. 그렇다면 지금까지 flask로 짠건 어쩌구.. 다시 다른걸로 짜야하나요? 어쩐지 flask 너무 쉽다 했음 ㅜ
Flask에서 기본적으로 제공되는 내장 웹서버를 쓰지 말라는 것이다.
Flask가 갖고 있는 내장 웹서버 기능 덕분에, 다른 셋팅 없이 localhost의 Flask 서버에 직접 접근이 가능하다.
이 내장 웹서버는 한번에 한 사람만 접근하기에 적합하다.
그래서 이것저것 검색해보니 apache랑.. nginx+gunicorn 쓰는법이 나온다.
우선 apache 쓰는 법은 아래에 있다.
https://www.datasciencebytes.com/bytes/2015/02/24/running-a-flask-app-on-aws-ec2/
짱 복잡하다...
그리고 nginx + gunicorn으로 하는 법은 아래에 있다.
https://chrisdtran.com/2017/deploy-flask-on-ec2/
여튼.. 쓰지 말라는건 쓰지 말면 되고..
위의 문제를 해결하려면 이렇게 하면 된다.
app.run() 부분을 app.run(host = '0,0,0,0') 으로 바꾸면 모든 ip에 대해서 listen 한다. (default는 127.0.0.1에 대해서만 listen 한다.)