Хобрук: Ваш путь к мастерству в программировании

Лучший способ выполнить проверку / обновление SVn в пакете веб-хостинга

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

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

Мы очень ценим любую информацию о передовых методах работы, о том, на что следует обратить внимание и о том, как это делать.

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

14.10.2008

Ответы:


1

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

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

Другой вариант - экспорт, а не выписка. У вас не будет каталогов .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 или доступный извне сценарий, выполняющий команду, которая изменяет данные на сервере.

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

15.10.2008

2

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

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

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

14.10.2008
Новые материалы

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

стройный-i18следующий
Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

Обзор 20 основных и современных методов работы с массивами в JavaScript
Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

Да, но я чувствую необходимость указать, что это или не единственные два.
Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.