правильно ли сохранять медиафайл проекта в репозиторий svn?
Я знаю, что могу сохранить все файлы своих проектов в хранилище, поэтому развертывание новой версии программного обеспечения станет возможным только с помощью экспорта svn в соответствующий каталог. Но у меня такое чувство, что это неправильный способ, и для медиафайлов я должен использовать некоторые другие утилиты для развертывания, такие как rsync. Но это также проблема с двусторонней синхронизацией = Мне нравится хранить резервные копии полных проектов в некотором пространстве безопасности (не только на реальном сервере). Итак, главный вопрос заключается в том, каков правильный путь и проект структура каталогов для веб-приложения на PHP?
5 answers
Эх, сложный вопрос.
Прежде всего, если у вас есть такая возможность, неплохо разделить "код" и "веб" часть. Что-то вроде того.
web/
web/css/
web/upload
code/
code/lib/
code/actions
Это выводит PHP из корневого веб-каталога. Это безопаснее (attacer не сможет получить доступ к вашим файлам, введя URL-адрес в браузере). НО - для этого требуется соответствующий дизайн приложения (например, платформа Symfony предоставляет вам аналогичный макет).
Второе - нет ничего плохого (на мой взгляд) в двоичных файлах внутри репозитория SVN. Оно однако все зависит от того, о каких файлах мы говорим. Если не загруженный пользователем контент - продолжайте. Чем менее сложным является развертывание, тем меньше шансов, что что-то пойдет не так.
КСТАТИ: Вы всегда можете отказаться от некоторых папок содержимого из svn, чтобы пользовательские файлы не перепутались с вашими файлами.
Итак, одна вещь, которую вы должны сохранить в своем дизайне, - это отделить введенный пользователем контент от вашего контента (лучше всего создать специальные папки для пользователей и отключить их SVN).
Абсолютно правильно помещать медиафайлы в систему управления версиями (будь то svn или что-то еще). Вероятно, это хорошая идея - поместить медиафайлы где-нибудь отдельно от ваших файлов.php.
Зачем выполнять развертывание в два этапа (svn, а затем rsync или аналогичное), когда вы можете сделать это за один шаг?
Нет ничего плохого в том, чтобы ваши медиафайлы находились в вашем репозитории SVN, так как версия вашего медиафайла связана с остальной частью вашего программного обеспечения.
Кроме того, если вы хотите иметь резервные копии своего репозитория svn, вы можете использовать команду svnsync
, чтобы иметь какое-либо другое поле, отражающее ваш "основной" репозиторий subversion.
Что касается структуры, то наилучшая практика в основном зависит от варианта использования, с которым вы сталкиваетесь. Скорее всего, вы захотите упорядочить свои файлы по модулям и типу контента (поэтому, имея носитель отделенный от кода, ...).
Также можно поместить медиафайлы в svn. Вы можете использовать, например, внешние ссылки svn, чтобы объединить медиафайлы в свое дерево, поэтому вам нужно выполнить только одну проверку, и у вас есть полная поддержка subversion, и вы не загромождаете свой репозиторий исходного кода.
На мой взгляд, это зависит от того, о каком типе СМИ вы говорите. Если это что-то статичное, например изображения, javascript, css и т. Д. - Что-то, что не является временным, то поместите это в subversion. Однако, если это что-то изменится, например, реклама, я не думаю, что есть много причин для ее подрыва. Просто установите пропуск каталога на игнорирование и загрузите файлы вручную с помощью rsync, scp или ftp.