Я использую личный проект в качестве практики для некоторых более сложных вещей, которые мы делаем на работе. Одна из вещей, которую я хочу научиться делать, - это публиковать проект, управляемый в общедоступном репозитории git, непосредственно в субдомене на моем сервере. В идеале я бы хотел просто сделать что-то вроде: печатать git deploy
в терминале, чтобы перенести проект на живой хостинг. Возможно ли что-то подобное? Как мне это сделать?
Похоже, вы спрашиваете не как перенести проект на удаленный хранилище, но как на самом деле извлечь его в каталог файловой системы, файлы из которого обслуживаются вашим веб-сервером.
Вам понадобится удаленный репозиторий на том же компьютере, что и веб-сервер (или, точнее, репозиторий на машине, который может записывать данные в файловую систему, к которой веб-сервер имеет доступ). Вы можете настроить в этом репозитории обработчик post-receive, который представляет собой сценарий, который будет запускаться каждый раз, когда что-то отправляется в репозиторий. Хук после получения должен запускать git checkout
команда, которая будет проверять недавно отправленные файлы в фактическую файловую систему, и оттуда они могут обслуживаться вашим веб-сервером. Скрипт будет выглядеть примерно так:
#!/bin/bash
git --work-tree=/path/to/document/root checkout -f
# reload web server here, if you need to
Я использую аналогичную настройку для своего собственного веб-сайта, и я написал Сообщение блога описывая это. Вы можете посмотреть на него и посмотреть, поможет ли вам содержащаяся там информация. Я использую промежуточный сервер в дополнение к живому серверу, но если вы этого не сделаете, мой пост включает пару ссылок (1, 2), которые описывают альтернативные, более простые установки.
В вашем конкретном случае, поскольку у вас есть удаленный репозиторий на Github, вы можете одновременно отправить изменения как в репозиторий Github, так и в репозиторий на вашем веб-сервере, чтобы они всегда были синхронизированы. Для этого вы можете поместить несколько URL-адресов push на один и тот же пульт, используя git remote add-url
команда, так что при запуске git push
, он отправит ваши изменения как на Github, так и на удаленный сервер. (Видеть git help remote
В качестве альтернативы вы можете рассмотреть возможность использования своего репозитория Github в качестве промежуточного репозитория, как описано в моем сообщении в блоге, или вы можете просто вручную использовать ssh на своем веб-сервере и получать изменения в любое время, когда вам нужно обновить свой веб-сайт. Эти последние два решения означают, что ваш репозиторий Github не обязательно будет синхронизироваться с вашим веб-сервером; это было бы желательно, если вы иногда отправляете в Github изменения, которые вы не хотите отражать на своем действующем веб-сайте.