Как использовать контроль версий для сайта на обычном хостинге?

Приветствую знатоки!
Хочу перевести разработку/поддержку сайтов на git, но тут есть проблема почти все сайты клиентов находятся на обычных хостингах, где есть доступ по ftp, и работать так не очень удобно. Давно хотел начать использовать git но как это сделать с такими сайтами не знаю, проблема еще в том что над ними могут работать несколько человек и при заливке надо учитывать возможные изменения уже на хостинге.
Т.е. слить все к себе создать репозиторий на github или bitbucket особо нет проблем, но вот как заливать все на хостинг пока для меня непонятно.
  • Вопрос задан
  • 3334 просмотра
Пригласить эксперта
Ответы на вопрос 9
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Как использовать контроль версий для сайта на обычном хостинге?

Передельно просто. Рецепт такой:
1. Берёте любой, можно самый дешевый VPS (если своего сервера нет)
2. Настраиваете там GIT'репозитории в нужном количестве
3. В каждый репозиторий, кладёте скрипт-хук, который будет выгружать изменившиеся файлы на нужны FTP-сервер (судя по ссылкам выше, подобные решения есть уже или в готовом или в полу-готовом виде).

То есть, Вам навсего нужно ознакомиться с механизмом "хуков" гита, как мне видится. И можно ещё пожалуй, ознакомиться с FTP-клиентами запускаемыми из консоли, или механизмом монтирования FTP как файловой системы... Вариантов много, Вам нужно просто выбрать.
Ответ написан
@lexnekr
Удивительно, но некоторые "обычные хостинги" (например, beget, не рекламирую) умеют использовать git. Как правило делается это по запросу.
Уточните у техподдержки хостера.
Ответ написан
PafNutY
@PafNutY
Люблю кодить в своё удовольствие
Описанная проблема - это только вершина айсберга.
Вам необходимо поменять подход к самой разработке.
Пока клиент будет лазить в код и на FTP — вы не сможете нормально работать с git.
Пока сайт клиента будет на шаред-хостинге — вы не сможете нормально работать с git.

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

В общем то попробуйте, поймёте, что что-то не то и в итоге придёте к нормальному решению :)
Ответ написан
alekciy
@alekciy
Вёбных дел мастер
git не поддерживает работу по ftp протоколу. Поэтому в изложенном контексте работа должна строиться так:

1) Заводим пустой репозиторий в битбакете или гитхабе (напоминаю, что в гитхабе приватные репозитории платные).
2) Клонируем его себе локально в папку Х.
3) Настраиваем ftp клиент (например FileZilla) на эту папку Х и папку на хостинге.
4) Заливаем в хостинга файлы сайты.
5) Добавляем в git появившиеся файлы (git add).
6) Коммитим из (git commit -a).
7) Отправляем изменения на удаленный репозиторий (битбакет/гитхаб, git push).

Периодически по ftp сливаем файлы в локальную папку, через git diff смотрим изменения. Если они легитимные, то делаем git commit. Если нет, откатываем нужные (git checkout имя_файла). Снова фиксируем (git commit), отправляем в удаленные репозиторий (git push), перезаливаем из локальной папки.
Ответ написан
@marataziat
Джангист-тракторист
Есть много ci/cd сервисов. Например buddy.works там просто нужно указать ваш гит репо и что выгружать при каждом комммите в мастер на ftp сервер.

Это все бесплатно если деплои непотребляют много ресурсов. Вы вмегда можете поднять Jenkins усебя на raspberry pi или vps.
Ответ написан
zooks
@zooks
Frontend и Django
На хостинге должен быть установлен git. Заливается также - через clone.
Ответ написан
opium
@opium
Просто люблю качественно работать
Сливаешь себе репо и заливаешь по фтп
Ответ написан
@Kjuri
Если не смогли найти варианты в интернете до сих пор - то лучше не лезьте.
А так вариантов хватает.
Простейший - создал репозиторий на гит/битбакет, настроил доступы и т.д. клонировал-залил по фтп
Посложнее - хуки + сервисы непрерывной интеграции.
Ну и еще сложнее - хуки, настройки на сервере и SSH
Ответ написан
https://deploybot.com/
Плюсы:
1. Есть всё что нужно для эффективного деплоймента (выгрузка по ftp, sftp, atomic sftp...)
2. Возможность предварительной сборки фронтенда (gulp, grunt... ) на отдельном docker контейнере
3. Можно указывать паттерны исключаемых файлов или папок к выгрузке
4. Нотифткация через разные сервисы (на пример slack) о статусе выгрузки

Минус: сервис платный (15 баксов в месяц на 10 проектов)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы