Для обработки загрузок классическое решение состоит в том, чтобы переместить действительный каталог из основного веб-пространства, оставив его только для извлечения свежей версии (как я делаю в приведенном ниже сценарии), а затем с помощью Apache для «Alias». это вернулось на место как часть веб-сайта.
Alias /uploads /home/user/uploads/
Однако у вас будет меньше вариантов, если вы не обладаете достаточным контролем над сервером.
У меня есть скрипт, который я использую для развертывания данного скрипта на сайтах dev / live (они оба работают на одном сервере).
#!/bin/sh
REV=2410
REVDIR=$REV.20090602-1027
REPOSITORY=svn+ssh://topbit@svn.example.com/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
Я поставил номер ревизии и дату / время, которые используются для выписанного имени каталога. Середина chmod также делает права доступа к изображениям нормальными, поскольку они также связаны с нашим выделенным сервером изображений.
Последнее, что происходит, это старая символическая ссылка ... / website / dev / связана с недавно извлеченным каталогом. Конфигурация Apache имеет корневой каталог документов ... / website / dev / htdocs /
Там также есть соответствующий ... / website / live / htdocs / docroot, и снова «live» - еще одна символическая ссылка. Это мой другой скрипт, который удалит живую символическую ссылку и заменит ее на то, на что указывает dev.
#!/bin/sh
# remove live, and copy the dir pointed to by dev, to be the live symlink
rm live && cp -d dev live
Я загружаю новую версию сайта только через каждые несколько дат, так что вы можете не захотеть использовать это несколько раз в день (мой кэш APC не хотел бы больше, чем несколько версий сайта), но для меня, я считаю, что это очень без проблем для моего собственного развертывания.