2009-05-26 4 views
2

У меня есть веб-сайт, который находится под контролем версий. Чтобы упростить развертывание на сервере, я думаю о клонировании репо на сервере, и всякий раз, когда я хочу обновлять страницы, просто удаляйте изменения с сервера. С точки зрения безопасности это плохая идея оставить папку .git, лежащую на веб-сервере?Развертывание сайтов с защитой git

ответ

4

Вы можете разместить произвольные файлы в .git, например файл .htaccess, который предотвратит любой доступ через веб-сервер.

Если вы хотите дополнительный уровень безопасности (в случае, если вы забыли поставить .htaccess там в то время как клонировании хранилища, например), вы можете иметь свой веб-сервер, отказываетесь обслуживать любой URL с .git/ в нем с помощью mod_rewrite (обеспечивает используйте Apache, другие веб-серверы будут использовать другие механизмы).

+0

Если репо также включает htdocs или публичный каталог, то есть базу DOCUMENT_ROOT, с которой начинается сайт, никто не сможет получить доступ ./git от внешнего мира. –

+0

Проблема в том, что «.git /» находится справа * под * корнем документа. –

3

Используйте что-то вроде git --git-dir=... checkout . Это позволяет вам иметь каталог .git вне дерева html. Вы даже можете использовать голый репозиторий, добавив --work-tree:

git --git-dir=... --work-tree=... checkout 

Использование голого репо позволяет избежать избыточную копии дерева, а лучше для толкания в.

То же самое можно указать и с помощью переменных среды. На странице пользователя git есть подробная информация.

+1

Вы, конечно, должны запустить эту команду. Задача cron - один очевидный путь; возможно, это можно сделать с помощью фиксации после фиксации, но я не проверял это. Если вы переходите на серверное репо, как вы предполагали, вместо того, чтобы нажимать, команда может, конечно, запускаться вручную или вы можете установить переменную core.worktree, чтобы всегда ставить дерево где-то в другом месте. –

+2

Как я нашел в одном из многих похожих вопросов о SO, есть более полное описание [здесь] (http://toroid.org/ams/git-website-howto) –

Смежные вопросы