В примере ниже создаём отслеживание изменений на сервере с помощью GIT. Это никак не связано с сайтом GITHUB. Можно использовать контроль версии без этого и похожих сайтов. Всё необходимое будет на локальной машине и на удаленном сервере.
На удаленном сервере
Устанавливаем GIT на свой удаленный сервер. Устанавливаем через Терминал (консоль).
В CentOS это делается так:
Команда для проверки версии:
Теперь создаём директорию, в которой будут отслеживаться изменения и храниться настройки GIT. Пути приведены для панели управления сайтом VESTA. У вас могут быть другие пути. Сайт соответственно меняем на свой.
Создаём новую директорию, например:
Переходим в неё:
Вводим команду инициализации GIT для этой директории:
После этой команды, в папке test появится много новых файлов. Заходим в папку hooks.
Создаём в этой же папке новый файл:
Это bash (shell) скрипт.
Записываем следующее содержимое в него:
git --work-tree=/home/admin/web/ploshadka.net/public_html/test --git-dir=/home/admin/web/ploshadka.net/git checkout -f
work-tree — это то место куда будут записывать измененные файлы на сервер
git-dir — это место, где мы инициализировали GIT (настройки и файлы слежения)
Сохраняем файл и выходим из него.
Добавляем этому файлу необходимые права доступа:
На локальном компьютере
Переходим в папку, где находится наш сайт. Например:
Точно также, как на сервере, инициализируем эту папку, похожей командой:
Затем добавляем адрес папки сервера, в которой мы инициализировали GIT этапом ранее:
Теперь всё готово для работы.
Изменяем какой-нибудь файл, на локальной машине, для примера. А затем:
Добавляем изменения в GIT:
или
С помощью этой команды можно проверить статус файлов (проверка, не обязательна)
Теперь отправляем изменения на сервер:
(Вводим пароль. Можно без ввода пароля, если создать ssh ключ).
Исправление ошибок
Если возникает ошибка:
Значит в файле post-receive указан неверный формат адреса к скрипту. Ошибка может находится в этом месте:
Откат изменений
Допустим мы внесли неправильные изменения и хотим откатить назад. Тогда вводим команду:
После которой видны хеши измененных этапов. Выбираем нужный. К примеру, мы хотим откатить до предыдущего изменения. Тогда указываем нужный нам хеш:
Vesta наше всё. Ну, или почти всё. Git в ней из коробки нету 🙂
Вроде всё понятно, но. Если я правильно понял, описанный вами пример работает при условии одного репо. А если на vps несколько сайтов проектов и у каждого свой реп — между ними переключаться? Или live — это имя репа?
Для каждого отдельного сайта создаётся свой гит. Все файлы его настроек лежат в отдельной папке каждого сайта, как на локальном компьютере, так и на удаленном.
Во время работы с гитом для каждого сайта, достаточно переключиться в консоли на него, т.е. перейти в его папку: cd sites/site1
Иными словами все процедуры повторяются для всех сайтов, кроме установки Git-а в систему.
Ясно, вопрос не понят. Я имел в виду как пуш (правильно выразился?) делать — у меня на локальном сервере куча проектов, которые я шлифую, а на ВПС они же «живые» (а иногда просто хочется бэкап репа иметь). Соответственно выгружать на сервер нужно не в один реп, а каждый в свой. Сейчас гитом пользуюсь локально, а на продакшн заливаю по ftp. Не то чтобы сильно напрягает, но хочется большего 🙂
Стоп. Я кажется понял. Для каждого проекта лайв прописывается в его локальных настройках и при пуше соответственно улетает по этому пути. Так?
Всё верно. Вы переходите через терминал в директорию сайта на локальном компьютере, там запускаете инициализацию git и команду git remote add live с конкретным путем на сервере. В результате каждый сайт имеет свою отдельную директорию на сервере.