Como o virtualenv deve ser configurado em um servidor da Web de produção (usuário, local, etc.)

3

Estou mudando meu servidor de produção para usar virtualenv e quero entender as práticas recomendadas para configurar o virtualenv em um ambiente de produção. As perguntas a seguir são as que eu encontrei hoje ao tentar descobrir isso:

  • qual usuário devo usar para criar o virtualenv?
  • onde esse usuário deve colocar o virtualenv?
  • como faço para ativar o virtualenv com as permissões desse usuário?

O Virtualenv será usado quase exclusivamente pelo Apache, então estou pensando que o usuário correto é www-data e a localização do virtualenv pode ser /var/www/.virtualenvs .

Isso parece OK, mas o próximo problema é que www-data não tem realmente um shell de login e não pode gravar em seu próprio diretório home (/ var / www /), então quando eu tento ativar o virtualenv , ele não funciona, e quando eu tento instalar coisas usando pip, eu recebo erros como:

The directory '/var/www/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.

(mesmo se eu usar -H , recebo este erro.)

Então, eu poderia criar um shell de login para www-data , mas isso parece um anti-padrão de segurança.

Eu poderia dar acesso www-data ao seu diretório home ( /var/www/ ), mas isso é obviamente um anti-padrão de segurança.

Existe uma norma em torno disso? Eu queimei muitos ciclos tentando descobrir isso, e parece que deveria ser muito mais simples.

    
por mlissner 04.11.2015 / 00:50

1 resposta

0

A execução em um virtualenv não é diferente de qualquer outro aplicativo. Você usa um usuário com a menor quantidade de privilégios necessários para fazer o que o aplicativo precisa fazer.

Não seria aconselhável executá-lo como você mesmo.

    
por 04.11.2015 / 00:56