Лучший способ сделать проверку / обновление SVn в пакете веб-хостинга - PullRequest
0 голосов
/ 15 октября 2008

Я хочу развернуть свой сайт в пакете веб-хостинга, выполнив проверку через Subversion. У меня нет доступа SSH к моему пакету хостинга, который является просто базовым пакетом веб-хостинга LAMP, но я знаю, что на веб-сервере установлен клиент SVN.

Я думал о написании какого-то скрипта (PHP или Shell), который может выполнять разные функции. Как оформить заказ, обновить, переключиться на другой тэг и т. Д. И что я могу позвонить извне в некотором роде.

Любой вклад в лучшие практики, на что нужно обратить внимание и как это сделать, очень ценится.

ОБНОВЛЕНИЕ : Я использую следуя технике прошлого пару недель сейчас. Я осторожно созданная (и хорошо проверенная) пара сценарии оболочки, из которых я могу выполнить cron через cPanel. Всякий раз, когда cron имеет завершил работу, он мне по электронной почте консольный вывод задания. таким образом я может контролировать, если все команды выполнены успешно. Так как я только делать обновления на сервере и нет коммиты, я не сталкивался ни с одним вопросы, касающиеся Subversion. Конечно, в моем .htaccess файлы, которые я создал правило, которое будет отрицать любой доступ к скрытым папкам .svn.

Ответы [ 2 ]

3 голосов
/ 15 октября 2008

Я бы не стал управлять вашим сайтом на вашем веб-хосте с Subversion, если у вас нет доступа к оболочке. При выполнении операций Subversion могут быть вещи, требующие вашего интерактивного внимания, которые вы не сможете предоставить через интерфейс скрипта.

Вместо этого я могу предложить сохранить локальный каталог проверки, который отражает ваш удаленный каталог. Если вы хотите внести изменения в ваш действующий сайт, сделайте svn-обновление на локальном кассе, чтобы он выглядел точно так, как вы хотите, а затем используйте ваш любимый инструмент зеркалирования (rsync или что-то еще), чтобы подтолкнуть сайт к вашему. веб-хостинг.

Кроме того, вы можете переключать веб-хосты на тот, где у вас есть доступ к оболочке. Я управляю некоторыми веб-сайтами таким образом, используя Git, и он работает очень хорошо.

2 голосов
/ 15 октября 2008

Хорошая новость заключается в том, что svn очень прост в написании сценариев, но плохая новость в том, что вам, вероятно, будет трудно без доступа к оболочке.

Если вы делаете это без доступа к оболочке, будьте осторожны со всем, что может изменить файл в каталоге под svn. Это может привести к конфликтам между рабочей копией и последней версией и заблокировать ваши обновления. Возможно, вы захотите встроить команду revert в ваш скрипт обновления и рекурсивно вернуться к ней до обновления.

Другим вариантом будет экспорт, а не выписка. У вас не будет каталогов .svn, и вам не придется беспокоиться о конфликте файлов. Возможно, вы захотите экспортировать в чистый каталог, а не перезаписать, так как я думаю, что экспорт svn не затрагивает не версионные файлы, включая файлы, удаленные через svn.

Сложная часть заключается в том, что идентификатор пользователя веб-сервера, вероятно, не имеет разрешения на запись в каталоги, которые вы хотите использовать при оформлении заказа. Поэтому он должен запускать команды svn от имени другого пользователя для разрешения записи и владения файлом. Я использовал suid-perl, чтобы изменить эффективный uid / gid, и вызывал те сценарии perl из php. Затем Perl вызывает команду svn с правильным идентификатором. Если вам нужен suid, вам нужно будет изменить права доступа к файлу и установить бит suid. Возможно, ваш FTP может установить suid-разрешения, иначе вам понадобится оболочка. Единственный другой вариант, который приходит на ум (что является плохой идеей), - предоставить веб-серверу доступ на запись ко всему каталогу.

Если репозиторий svn находится на отдельной машине, вы, вероятно, захотите использовать svn + ssh. Это может означать хранение файла ключа или пароля на веб-сервере. Убедитесь в правильности разрешений для файлов ключей, поскольку ssh отклоняет их, если они доступны для чтения кому-либо, кроме владельца. На всякий случай убедитесь, что вход в систему на сервере Subversion может ничего не делать, кроме доступа к хранилищу svn.

В ваших файлах .htaccess или httpd.conf вы должны блокировать любой доступ к каталогам .svn из любого места.

Я также храню свою страницу обновления PHP в каталоге, защищенном паролем по SSL. У него есть только одно действие, которое он может выполнить - обновить веб-каталог до последней версии svn. Он не принимает пользовательский ввод. Если бы он позволял пользователю выбирать тег или ревизию, он принимал бы только выбор тегов из списка или целые номера ревизий. Они будут тщательно очищены перед использованием, и пользовательский ввод никогда не будет использоваться в команде или параметре оболочки.

Главное - быть осторожным с безопасностью, когда у вас есть какой-либо PHP или внешне доступный скрипт, и выполните команду, которая изменяет данные на сервере.

Я думаю, что на машине, где вы не получаете доступ к оболочке, у вас будут большие трудности с разрешениями и владением файлами. Если вы не сильно привязаны к этому хостинг-провайдеру, я бы рекомендовал перейти на провайдера, который предлагает инструменты, облегчающие вашу работу. Вы сэкономите достаточно времени, что, вероятно, будет стоить денег.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...