Tengo algunos proyectos personales de PHP en alojamiento compartido; aquí hay un par de pensamientos, de lo que estoy haciendo en uno de esos (el que es el más activo, y necesita alguna forma de sincronización al menos semiautomatizada):
Algunas palabras sobre mi configuración :
- Hace algún tiempo, tenía todo en SVN; ahora, estoy usando bazaar; pero la idea es exactamente la misma (excepto, en el Bazar, tengo la historia local y todo eso)
- tengo un acceso ssh al servidor de producción, como lo hace
- trabajo en Linux exclusivly (por lo , lo que hago podría no ser tan fácil con ventanas)
Ahora, Mi forma de trabajar:
- Todo lo que tiene te estar en el servidor de producción (código fuente, imágenes, .. .) se obliga a SVN/Bazarr/lo que sea
- trabajo a nivel local, con Apache/PHP/MySQL (yo uso un volcado de la base de datos de producción que importo localmente vez en cuando)
- soy el único trabajando en ese proyecto; probablemente estaría bien para un pequeño equipo de 2/3 desarrolladores, pero no más.
lo que hice antes:
- que tenía algún script PHP que comprueba el servidor SVN para la modificación entre "última revisión empujado a la producción" y HEAD
- supongo esta hecha en casa El script PHP se parece al script Perl que está utilizando actualmente ^^
- Ese script creó una lista de directorios/archivos para cargar en la producción
- Y los subí a través de acceso FTP
- Esto no fue muy satisfactorio (supongo que hubo errores en mi script; Nunca tomé tiempo para corregirlos); y me obligó a recordar el número de revisión de la hora de la última Empujé a la producción (así, se almacena automáticamente en un archivo de la secuencia de comandos, por lo que no es tan difícil ^^)
Lo que hago ahora:
- al cambiar al bazar, que no quería volver a escribir el guión, que no funcionaba muy bien de todos modos
- he dejado caer el guión totalmente
- Como tengo acceso ssh al servidor de producción , Uso rsync para sincronizar desde mi máquina de desarrollo al servidor de producción, cuando lo que tengo localmente se considera estable/listo para producción.
Un par de notas sobre esa manera de hacer las cosas:
- no tengo un servidor de ensayo: mi configuración local es lo suficientemente cerca de uno
- No tener un servidor de ensayo de la producción está bien para un proyecto sencillo con uno o dos desarrolladores de
- Si tuviera un servidor de ensayo, probablemente me quedo con:
- hacer un "svn update" en él cuando se quiere sta ge
- cuando está bien, poner en marcha el comando rsync desde el servidor de ensayo (que se ba en la última revisión "estable", por lo que bien para ser empujado a la producción)
- Con un proyecto más grande, con más desarrolladores, probablemente no vaya con ese tipo de configuración; pero me parece bastante bien para un proyecto personal (no demasiado grande).
La única cosa "especial" aquí, lo que podría ser "linux-oriented" es el uso de rsync; una búsqueda rápida parece indicar que hay un ejecutable rsync que se puede instalar en Windows: http://www.itefix.no/i2/node/10650
No lo he probado nunca.
Como comentario, aquí es lo que mi comando rsync es así:
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/
estoy usando teclas MECANISMO privado/público, por lo que rsync no pide una contraseña, por cierto.
Y, por supuesto, por lo general utiliza el mismo comando en el modo de "funcionamiento en seco" en primer lugar, para ver lo que va a ser synchorised, con la opción "--dry-run
"
Y el ignore-rsync.txt
contiene una lista de archivos que no quieren ser empujados a la producción:
.svn
cache/cbfeed/*
cache/cbtpl/*
cache/dcstaticcache/*
cache/delicious.cache.html
cache/versions/*
Aquí, sólo evitar que los directorios de caché para ser empujado a la producción - parece lógico no envía los que, según los datos de la producción no es lo mismo que el desarrollo datos.
(sólo estoy notando aún existe la ".svn
" en este archivo ... trasladase los que, como yo no uso SVN más para ese proyecto ^^)
Esperanza esto ayuda un poco ...
Gracias mucho. Todavía me asombra a veces el esfuerzo que la gente como usted pone en las respuestas con tanto detalle y claridad. – zenna
De nada :-) (Algunas respuestas que recibo y/o veo también me sorprenden ;-) entonces, cuando puedo ayudar ... bueno, ¡para eso está SO!) –