Domanda

Sto sviluppando un'app django su Windows, SQLite e il server dev django. L'ho distribuito sul mio server host che esegue Linux, Apache, FastCgi, MySQL.

Sfortunatamente, ho un errore restituito dal server sul prod mentre tutto ok sulla macchina dev. Ho chiesto al mio provider una soluzione di pre-produzione per poter eseguire il debug e comprendere il problema.

In ogni caso, quali sono secondo te gli errori più probabili che possono verificarsi quando si sposta un'app django da dev a prod?

Ottima

Aggiornamento: penso che un pre-prod sia il modo migliore per affrontare questo tipo di problema. Ma vorrei creare un elenco di controllo di ciò che deve essere fatto prima di mettere in produzione. Grazie per le preziose risposte che ho ricevuto finora :)

Aggiornamento: Cordiali saluti, ho implementato il server preprod e la notifica e-mail come suggerito da Shanyu e posso vedere che l'errore proviene da smart_if templatetag che sto usando in questa nuova versione. Qualche trucco con i tag modello?

Aggiornamento: penso di aver corretto il pb che è stato causato credo dall'invio FTP di Filezilla. Stavo usando la funzione "Sostituisci se più recente" opzione che suppongo stia causando alcuni risultati inaspettati. Usando il " sostituisci tutto " opzione risolve il problema. Tuttavia, è stata un'opportunità per me per saperne di più sulla distribuzione. Grazie per le tue risposte.

È stato utile?

Soluzione

I problemi che ho in genere includono:

  1. Impostazioni di produzione errate, sia nella mia produzione localsettings.py, wsgi / cgi, sia nei file del sito apache in / etc / sites-available
  2. Differenze nel database. Uso South per le migrazioni e ho riscontrato alcuni problemi sottili durante l'esecuzione della mia migrazione su PostgreSQL quando ha funzionato senza problemi in SQLite.
  3. Hosting di file statico da quando imbroglio e utilizzo il server Django in fase di sviluppo
  4. Autorizzazioni, sia sul file system che all'interno del database
  5. Rari, ma possibili, problemi di rete che mi impediscono di ottenere le mie dipendenze, sia su PyPi che su alcuni siti di terze parti

Modi in cui ho mitigato questi problemi:

  • Utilizza lo stesso database in produzione e sviluppo (nel tuo caso, MySQL ovunque)
  • Ho trovato utile avere un " test " ambiente che imita la produzione in ogni modo possibile (può essere su hardware di fascia bassa, o anche sulla stessa macchina). In questo modo, se ci sono problemi in questo "simile alla produzione" enigornment, posso risolverli senza portare offline il mio server di produzione.
  • Script tutto per distribuzioni ripetibili. Uso fabric , ma funzionerebbe anche zc.buildout o Paver. Questi strumenti aiutano a ridurre gli errori di battitura durante la distribuzione e riducono i tempi di distribuzione della mia app.
  • Utilizza il controllo versione (mercurial, git, subversion) e uno strumento di migrazione dello schema (come South), quindi se qualcosa va storto durante la distribuzione in produzione, hai la possibilità di annullare le modifiche e consentire l'esecuzione della produzione il vecchio codice con il vecchio schema del database.
  • Non ho impostato un " proxy uovo " tuttavia, ma lo sto considerando, per evitare problemi durante il download delle dipendenze.
  • Ho trovato pip's le dipendenze di congelamento utili, nel caso in cui una nuova, incompatibile la modifica a una libreria è avvenuta da quando l'ho scaricata inizialmente
  • Utilizza un framework di test web come Windmill o Selenium per testare la mia applicazione nel mio "test" ambiente, in modo da ottenere molto rapidamente la copertura dei test del mio sistema.

Altri suggerimenti

Per quanto riguarda il tuo caso, posso pensare a 2 semplici cose che potrebbero aiutarti:

  1. Puoi abilitare Django a inviare messaggi quando si verificano eccezioni che forniscono dettagli al riguardo. Guarda qui per i dettagli.
  2. Farai meglio se imposti un ambiente di test sul server prod (diciamo test.example.com) in modo da poter verificare se le cose andranno bene o meno prima di distribuire l'app.

Credo che questi fossero i podcast che ho ascoltato di recente (da Pycon 2009):

  

Trova Django nel mondo reale (PyCon 2009):

     

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

     

Parti da 1 a 3

Ottima introduzione alla progettazione delle app per la distribuzione, in particolare per il riutilizzo e la ridistribuzione.

Reg.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top