Para manejar las cargas, la solución clásica es mover el directorio real fuera del espacio web principal, dejándolo solo para que se revise una nueva versión (como hago en el script a continuación) y luego usar Apache para 'Alias' volver a su lugar como parte del sitio web.
Alias /uploads /home/user/uploads/
Hay menos opciones para usted si no tiene el mismo control del servidor.
Tengo un script que utilizo para implementar un script determinado en los sitios dev/live (ambos se ejecutan en el mismo servidor).
#!/bin/sh
REV=2410
REVDIR=$REV.20090602-1027
REPOSITORY=svn+ssh://[email protected]/var/svn/website.com/trunk
IMAGES=$REVDIR/php/i
STATIC1=$REVDIR/anothersite.co.uk
svn export --revision $REV $REPOSITORY $REVDIR
mkdir -p $REVDIR/tmp/templates_c
chown -R username: $REVDIR
chmod -R 777 $REVDIR/tmp $REVDIR/php/cache/
chown -R nobody: $REVDIR/tmp $REVDIR/php/cache/ $IMAGES
dos2unix $REVDIR/bin/*sh $REVDIR/bin/*php
chmod 755 $REVDIR/bin/*sh $REVDIR/bin/*php
# chmod -x all the non-directories in images
find $IMAGES -type f -perm -a+x | xargs -r chmod --quiet -x
find $STATIC1 -type f -perm -a+x | xargs -r chmod --quiet -x
ls -l $IMAGES/* | grep -- "-x"
rm dev && ln -s $REVDIR dev
puse el número Revison, y fecha/hora que se utiliza para el nombre del directorio desprotegido. Los chmod en el medio también hacen que los permisos en las imágenes estén bien, ya que también están enlazados a nuestro servidor de imágenes dedicado.
Lo último que sucede es un enlace simbólico antiguo .../sitio web/dev/se vuelve a vincular al directorio recién desprotegido. La configuración de Apache tiene un doc-root de .../website/dev/htdocs/
También hay una coincidencia .../website/live/htdocs/docroot, y nuevamente, 'live' es otro enlace simbólico. Esta es mi otra secuencia de comandos que eliminará el enlace simbólico en vivo y lo reemplazará con cualquier punto de revelado.
#!/bin/sh
# remove live, and copy the dir pointed to by dev, to be the live symlink
rm live && cp -d dev live
sólo estoy empujando una nueva versión del sitio cada pocos dats, por lo que puede que no desee estar usando esto varias veces al día (mi caché APC no le gustaría más que unas pocas versiones de la sitio alrededor), pero para mí, me parece que no hay problemas para mi propia implementación.
Me parece una pregunta interesante. Nunca implementaría actualizaciones automáticas, pero lo que me gustaría es algo así como una copia en tiempo real que puedo cambiar y todo ... así que en lugar de tener una copia de trabajo y luego subir desde allí al servidor en vivo me gustaría tener una copia en vivo de 'trabajo' en el servidor. así es como debería ser, pero nunca lo intenté. – markus
Recuerdo haber escuchado ese stackoverflow, está haciendo lo mismo –
Un podcast reciente que escuché (de ITC) sobre el tema también se refería a la entrada del blog en http://timothyfitz.wordpress.com/2009/02/10/continuous-deployment -at-imvu-doing-the-impossible-fifty-times-a-day/Prefiero solo algunos empujones por semana, pero luego, realmente solo estoy desarrollándome. –