찾다

 >  Q&A  >  본문

ubuntu14.04 - Flask+Nginx+WSGI 배포 오류 문제

Ubuntu 14.04에서 uWSGI 및 Nginx를 사용하여 Flask 애플리케이션을 제공하는 방법의 지침에 따라 Flask 애플리케이션을 배포했습니다. 튜토리얼의 간단한 예제를 사용하면 성공적으로 배포할 수 있지만 애플리케이션의 항목 파일을 내 항목으로 바꾸면 작동하지 않습니다. 소유하고 있는데, 이상한 점은 virtualenv 환경에서 바로 사용된다는 점

으아악

도 가능하지만

를 사용하세요. 으아악

가 작동하지 않습니다. 오류는 다음과 같습니다.

으아악

위 오류 메시지는 해당 주소가 사용되었다는 표시인데 해당 주소와 포트를 차지하는 여러 개의 주소와 포트가 열리지 않은 것입니다. 처음에는 이해가 되지 않습니다.

阿神阿神2754일 전850

모든 응답(3)나는 대답할 것이다

  • 某草草

    某草草2017-05-16 17:19:52

    신중하게 조사한 끝에 마침내 문제를 해결했습니다. 먼저 항목 파일의 코드를 게시하겠습니다.

    으아악

    uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi를 사용하여 직접 실행했을 때 보고되는 오류는 질문에 게시된 오류 메시지와 동일하며, 주소가 사용 중입니다. 그런데 점유된 해당 애플리케이션을 프로세스나 포트에서 찾을 수 없는 이유는 무엇입니까? 꼼꼼히 비교해봤습니다: uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi直接执行的时候,报的错如问题中贴的错误提示一样,地址被占用。但是进程中和端口都找不到占用的对应的应用程序,为啥简单的例子可以呢?我仔细对比了下:

    #!/usr/bin/env python
    # -*-  coding=utf-8 -*-
    
    from application import create_app
    
    __author__ = 'Riky'
    
    app = create_app('idc')
    
    app.run()

    很明显因为我在IDE中开发中习惯了,而忽略了入口文件最基础的部分:

    from flask import Flask
    application = Flask(__name__)
    
    @application.route("/")
    def hello():
        return "<h1 style='color:blue'>Hello There!</h1>"
    
    if __name__ == "__main__":
        application.run(host='0.0.0.0')

    这样错误就变成了:

    #入口在没有以下代码的前提下,使用python run.py 是可以执行的
    if __name__ == "__main__":
        app.run(host='0.0.0.0')

    而出现这个错误是一个比较让人无语的问题,uwsgi只能在入口文件识别application,而无法识别我定义的run。之所以会出现端口占用的情况,是因为app.run()实际上也执行了,但并不是uwsgi要加载的应用application 으아악

    분명히 저는 IDE 개발에 익숙했기 때문에 항목 파일의 가장 기본적인 부분인

    을 무시했습니다. 으아악

    오류는 다음과 같습니다: #🎜🎜# 으아악 #🎜🎜#이 오류의 발생은 말문이 막히는 문제입니다. uwsgi는 항목 파일의 application만 인식할 수 있고, 제가 정의한 run은 인식할 수 없습니다. 포트가 점유되는 이유는 app.run()이 실제로 실행되기 때문인데, uwsgi가 로드할 애플리케이션 application이 아니기 때문입니다. #🎜🎜# #🎜🎜#마지막으로 다음으로 변경하세요. #🎜🎜# 으아악

    회신하다
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 17:19:52

    uwsgi에는 액세스 주소와 포트 번호를 정의할 수 있는 구성 파일이 있습니다. 제 생각엔 소켓.오류: [Errno 98] 주소 이미 사용 중 문장 오류가 uwsgi를 구성하지 않은 이유일 수 있습니다. uwsgi 구성과 플라스크 프로젝트 배포 과정은 제가 쓴 글을 참고하시면 됩니다 ㅎㅎ.
    /a/1190000004294...

    회신하다
    0
  • 黄舟

    黄舟2017-05-16 17:19:52

    netstat -ntlp 포트가 uwsgi에 의해 점유되어 있는지 확인합니다. 그렇다면 ps -ef | grep uwsgi가 pid를 찾은 다음 kill

    회신하다
    0
  • 취소회신하다