Implantando o aplicativo Flask com nginx, uWSGI e virtualenv

2

Estou tendo muitos problemas para implantar um aplicativo Flask em um servidor CentOS 6. Eu sei que algumas outras perguntas foram feitas sobre este problema, mas ainda não consegui.

Descrição

Padrão Python é Python 2.6.6
a versão do nginx é 1.0.15
a versão do uWSGI é 1.2.5
Minha pasta virtualenv é /home/me/dev/.venv
Minha versão virtual do Python é 2.7.3 (eu quero rodar o Python 2.7.3 com o uWSGI)
Meu arquivo% python app.run() é /home/me/dev/runserver.py
Meus arquivos, módulos, classes, etc. estão em / home / me / dev / contacts

O que eu tentei

Aqui está a parte relevante do nginx.conf:

server {
listen 80;
    access_log off;
    # ...

    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:3031;
    }
}

Aqui está o runserver.py completo:

from contacts import app

if __name__ == "__main__":
    app.run()

De acordo com a documentação, tentei executar o seguinte comando:

uwsgi -H .venv/ -s 127.0.0.1:3031 -w runserver:app

No entanto, tenho dois problemas:
- o uWSGI ainda roda na versão do Python 2.6.6
- Eu tenho um erro 'import site' failed
- Eu tenho um erro ImportError: No module named flask , que provavelmente está vinculado ao erro precedente

Eu também tentei o seguinte comando, no tutorial do Quickstart no site oficial do uWSGI:

uwsgi --socket 127.0.0.1:3031 --file runserver.py --callable app --processes 2 -H .venv/

Mas tenho os mesmos problemas exatos de antes.

Estou completamente perdido no momento, tentei outros comandos, mas não consigo descobrir o que mais devo fazer.

O que eu posso fazer para executar o uWSGI em meu ambiente virtual?

Editar : Ok, depois de algumas outras tentativas, consegui executar meu aplicativo instalando o uWSGI em meu virtualenv e executando-o a partir do ambiente ativado (comandos para aqueles que podem tropeçar em minhas postagens e achei uma solução aceitável):

$ . .venv/bin/activate
$ which uwsgi
/home/me/dev/.venv/bin/uwsgi
$ uwsgi -s :3031 -w runserver:app -H .venv/

Devo sempre rodar o uwsgi no ambiente virtual? Não há uma maneira mais limpa de fazer isso?

    
por Vincent Savard 22.08.2012 / 15:16

1 resposta

1

Eu sempre instalei o uwsgi no meu virtualenv. É muito mais limpo dessa forma e se você executar vários aplicativos, você pode instalar o uwsgi de várias maneiras.

Eu acho que você está tropeçando acima, não definindo o caminho do python corretamente, então não tem idéia de onde o flask está instalado, já que ele não está procurando por ele em seu virtualenv. O mesmo com o seu arquivo de site.

    
por 22.08.2012 / 16:14