Pergunta

Estou desenvolvendo uma aplicação Django no Windows, SQLite eo servidor django desenv. Eu ter implantado para o meu servidor de host que está executando o Linux, Apache, FastCgi, MySQL.

Infelizmente, eu tenho um erro devolvido pelo servidor na prod enquanto tudo ok na máquina dev. Eu pedi o meu provedor de uma solução de pré-produção, a fim de ser capaz de depurar e entender o problema.

De qualquer forma, o que está de acordo com os erros mais prováveis ??que podem acontecer quando se deslocam de um aplicativo django de dev para prod?

Melhor

Update: Eu acho que um pré-prod é a melhor maneira de resolver este tipo de problema. Mas eu gostaria de construir uma lista de verificação do que deve ser feito antes de colocar em produção. Obrigado pelas respostas muito valiosas que recebi até agora:)

Update: FYI, eu tenho implementado o servidor preprod ea notificação de e-mail como sugerido por Shanyu e eu posso ver que o erro vem do smart_if templatetag que estou usando esta nova versão. Qualquer truque com marcas de modelo?

Update: Eu acho que fixa o pb que foi causado Acho enviando o FTP Filezilla. Eu estava usando a opção "substituir se mais recente" que eu acho que está causando alguns resultados inesperados. Usando a "substituir todos" correção opção a questão. No entanto, foi uma oportunidade para eu aprender mais sobre a implantação. Thansk por suas respostas.

Foi útil?

Solução

Problemas I normalmente têm incluem:

  1. Misconfigured configurações produções, seja em meus localsettings.py produção, wsgi / cgi, ou Apache arquivos do site em / etc / sites-available
  2. diferenças de banco de dados. Eu uso Sul para migrações e ter executado em alguns problemas sutis ao executar o meu migração no PostgreSQL, quando ele trabalhou sem problemas em sqlite.
  3. estática hospedagem de arquivos desde que eu enganar e usar o servidor de Django em desenvolvimento
  4. Permissões, tanto no sistema de arquivos e no banco de dados
  5. Raro, mas possíveis, problemas de rede impedindo-me de começar minhas dependências, seja em PyPI ou algum 3ª local da festa

maneiras que eu ter atenuado esses problemas:

  • Use o mesmo banco de dados em produção e desenvolvimento (no seu caso, MySQL em todos os lugares)
  • Descobri que é útil ter um ambiente de "teste" que a produção imita em todas as formas possíveis (que pode ser em menor hardware final, ou mesmo a mesma máquina). Dessa forma, se houver algum problema neste "produção-like" enivornment, eu posso resolvê-los sem tomar o meu servidor de produção off-line.
  • tudo Script para implementações repetíveis. Eu uso tecido , mas zc.buildout ou Paver também iria funcionar. Essas ferramentas ajudam a reduzir erros durante a implantação e reduzir o tempo para implantar o meu aplicativo.
  • Use o controle de versão (mercurial, git, subversion) e uma ferramenta de migração do esquema (como Sul), por isso, se algo der errado ir ao implantar a produção, você tem a possibilidade de apoiar as mudanças e permitir a produção para rodar em o código antigo com o esquema do banco de idade.
  • Eu não criaram uma " ovo procuração " ainda, mas eu estou considerando isso, para evitar problemas ao baixar dependências.
  • Eu encontrei do pip congelamento dependências para ser útil, no caso de um novo, incompatível mudança para uma biblioteca ocorreu desde que eu baixei ele inicialmente
  • Use um web testar framework como o moinho de vento ou Selenium para testar a minha aplicação no meu ambiente "test", para que eu possa ter um monte de cobertura de teste do meu sistema muito rapidamente.

Outras dicas

No que diz respeito o seu caso, eu posso pensar de 2 coisas simples que podem ajudá-lo:

  1. Você pode ativar Django para enviar mensagens quando exceções ocorrem dando detalhes sobre eles. Olhada aqui para mais detalhes.
  2. Você vai ser melhor se você configurar um ambiente de teste no servidor prod (digamos, test.example.com) para que você possa verificar se as coisas vão bem ou não antes de implantar o aplicativo.

Eu acredito que estes foram os podcasts Escutei recentemente (a partir PyCon 2009):

Localize Django no Real World (PyCon 2009):

http://advocacy.python.org/podcasts/pycon.rss

Partes 1 a 3

Muito boa introdução para projetar seus aplicativos para a implantação, em particular para a reutilização e redistribuição.

Regs.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top