Ho alcuni progetti personali su PHP per l'hosting condiviso; Ecco un paio di pensieri, da quello che sto facendo su uno di quelli (quello più attivo e che richiede almeno un metodo di sincronizzazione semiautomatico):
Alcune parole sulla mia configurazione :
- Qualche tempo fa, avevo tutto su SVN; ora, sto usando bazaar; ma l'idea è esattamente la stessa (ad eccezione, con bazar, ho la storia locale e tutto ciò che)
- ho un accesso SSH al server di produzione, come si fa
- Io lavoro su Linux exclusivly (così , quello che faccio potrebbe non essere così facile con le finestre)
Ora, come lavoro:
- Tutto ciò che ha te sia sul server di produzione (codice sorgente, immagini, .. .) si impegna a SVN/bazarr/qualunque cosa
- Io lavoro a livello locale, con Apache/PHP/MySQL (io uso un dump del DB di produzione che ho importare a livello locale una volta ogni tanto)
- io sono l'unico lavorando a quel progetto; probabilmente sarebbe OK per una piccola squadra di 2/3 sviluppatori, ma non di più.
Quello che ho fatto prima:
- ho avuto qualche script PHP che controllò il server SVN per la modifica tra "ultima revisione spinto alla produzione" e HEAD
- Sto indovinando questo fatto in casa Lo script PHP è simile allo script Perl attualmente utilizzato.^
- Questo script ha creato un elenco di directory/file da caricare in produzione
- E caricato quelli tramite accesso FTP
- Questo non era molto soddisfacente (c'erano errori nel mio script, suppongo; Non ho mai avuto il tempo di correggerli); e mi ha costretto a ricordare il numero di revisione del tempo ho ultima spinto alla produzione (beh, era stato archiviato automaticamente in un file dallo script, quindi non è così difficile ^^)
quello che faccio adesso:
- Quando si passa al bazar, non ho voglia di riscrivere lo script, che non ha funzionato molto bene comunque
- ho lasciato cadere la sceneggiatura totalmente
- Come ho accesso ssh al server di produzione , Io uso rsync per sincronizzare dalla mia macchina di sviluppo al server di produzione, quando ciò che ho localmente è considerato stabile/pronto per la produzione.
Un paio di note di quel modo di fare le cose:
- Non ho un server di gestione temporanea: il mio setup locale è abbastanza vicino a uno
- Non avendo un server di gestione temporanea della produzione è ok per un progetto semplice con uno o due sviluppatori
- Se avessi un server di gestione temporanea, probabilmente sarei andare con:
- fare un "svn update" su di esso quando si vuole STA ge
- quando è OK, lanciare il comando rsync dal server di gestione temporanea (che saranno BA presso l'ultima revisione "stabile", quindi su OK per essere spinto alla produzione)
- Con un progetto più grande, con più sviluppatori, probabilmente non andrei con quel tipo di setup; ma trovo tutto OK per un progetto personale (non troppo grande).
L'unica cosa "speciale", il quale potrebbe essere "linux-oriented" è usando rsync; una ricerca rapida sembra indicare che esiste un eseguibile rsync che può essere installato su Windows: http://www.itefix.no/i2/node/10650
Non l'ho mai provato, però.
Come sidenote, ecco cosa il mio comando rsync assomiglia:
rsync --checksum \
--ignore-times \
--human-readable \
--progress \
--itemize-changes \
--archive \
--recursive \
--update \
--verbose \
--executability \
--delay-updates \
--compress --skip-compress=gz/zip/z/rpm/deb/iso/bz2/t[gb]z/7z/mp[34]/mov/avi/ogg/jpg/jpeg/png/gif \
--exclude-from=/SOME_LOCAL_PATH/ignore-rsync.txt \
/LOCAL_PATH/ \
[email protected]:/REMOTE_PATH/
sto usando le chiavi private/pubbliche mecanism, quindi rsync non chiede una password, btw.
E, naturalmente, io in genere utilizzano lo stesso comando in modalità "dry-run" prima, per vedere che cosa sta per essere synchorised, con l'opzione "--dry-run
"
E il ignore-rsync.txt
contiene un elenco di file che io non voglio essere spinto alla produzione:
.svn
cache/cbfeed/*
cache/cbtpl/*
cache/dcstaticcache/*
cache/delicious.cache.html
cache/versions/*
Qui, ho solo evitare che directory di cache di essere spinto alla produzione - sembra logico non inviare quelli, come dati di produzione non è la stessa come lo sviluppo dati.
(Sto solo notando c'è ancora il ".svn
" in questo file ... potrei toglierlo, come io non uso SVN più per quel progetto ^^)
Speranza questo aiuta un po '...
Grazie mille. A volte mi sorprende anche lo sforzo che persone come te mettono in risposta con dettagli e chiarezza. – zenna
Prego :-) (Alcune risposte che ottengo e/o vedere mi stupiscono anche io ;-) quindi, quando posso aiutare ... beh, questo è ciò che SO è per!) –