Come distribuire correttamente le applicazioni dallo sviluppo alla produzione e come gestire più configurazioni del sito. Tutto il mio sviluppo avviene tramite svn situato in var/svn/myapp/trunk e il codice di produzione attuale è in/var/www/myapp.Come distribuire correttamente le tue applicazioni PHP?
Controllo l'ultimo codice sul mio computer locale in una directory denominata "myapp_latest_svn". devo sito e codice specifico posizione nel mio settings.php principale, che ha H_PATH = 'http://myapp.com' impostazioni di configurazione & db per db_host, db_user_name e password_db che è come sapete diversa in impostazioni della macchina locale (dove localhost/myapp. com è solo un alias Apache) & sul server di produzione (sito live viene eseguito su myapp.com).
Anche il file .htaccess è diverso da quello sul server di produzione. In breve, ci sono una serie di differenze tra dev e produzione.
Conservo tutto il mio lavoro in SVN. Ogni mattina uso SVN Update che aggiorna l'ultimo codice al mio repository svn locale. Quando sono pronto per andare a vivere, costruisco un rilascio con svn Commit.
Quindi nel rilascio devo ricordare di cambiare tutti i file dev appropriati alla loro controparte di produzione. Ora ho dovuto modificare manualmente le impostazioni di produzione.php & .htaccess per riflettere le modifiche specifiche del sito.
Sto cercando un modo automatico di passare dalla produzione alla produzione completa di controllo delle versioni e non modificare manualmente i file che sono soggetti a errori e cattive pratiche.
Un modo è rendere la versione di produzione dei file di sola lettura (0444). In questo modo quando eseguo un'esportazione svn, , non vengono sovrascritti dalla versione dev dei file e non devo preoccuparmi di modificare i file su ogni spostamento da dev in produzione. Ma questo è un cattivo modo di fare cose come l'integrazione continua.
Anche facendo più copie di settings.php (una per localhost, beta e prod). Quindi usa uno script di shell che esporta da svn, e poi una volta che l'esportazione è terminata, sostituisce il settings.php con le corrette impostazioni.php, a seconda della posizione in cui ci stiamo distribuendo. In questo modo tutto è automatizzato. Ma questo è anche un modo zoppo per andare.
Ultima modo è
if(eregi ("myapp.com$", $_SERVER['HTTP_HOST'])){
define('H_PATH', 'myapp.com');
} else {
define('H_PATH', 'localmyapp.com');
}
Questo va bene per quanto settings.php è interessato. Ma a cosa serve il .htaccess, non puoi controllare come sopra in .htaccess.
Quello che non voglio finire ogni volta che distribuisco il mio sito che devo modificare le impostazioni.
Lo schema del mio DB non è nel controllo di versione, quindi db non è un problema con me, solo le impostazioni.php e .htaccess.
Inoltre, come posso dire a svn di non aggiornare alcune directory dato che è anche specifico del sito (/ log,/cache,/assets,/downloads). Inoltre ho bisogno di conservare l'accesso in scrittura apache (www_data) intatto anche per i file sopra.
Infine, non voglio copiare la directory di trunk vuota ei file .svn sul server di produzione quando esporto.
Come posso utilizzare Phing o anche uno script di shell per integrare senza causare nessuno di questi problemi quando si costruisce da svn ai server di produzione.
Questo potrebbe essere utile per molti sviluppatori di app wannabe là fuori in natura.
Grazie in anticipo,
ocptime
Grande link! Grazie! –
Puoi spiegare che cosa fanno le directory degli asset di collegamento simbolico? – dave1010