Поиск по сайту:

Как настроить частный сервер Git


Если вы хотите настроить систему управления версиями для проекта, но предпочитаете не размещать его в сервисе, таком как GitHub, вы можете запустить свой собственный сервер git на VPS, чтобы хранить свой код и выступать в качестве мастера. репозиторий для любых соавторов.

Зачем запускать собственный сервер?

С учетом того, сколько существует бесплатных поставщиков хостинга git, таких как GitHub, GitLab и Bitbucket, нет особого смысла делать это самостоятельно. Но есть несколько ситуаций, когда это жизнеспособное решение.

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

Кроме того, если вы используете сторонний сервис, существуют ограничения на размер файла, которые могут быть не идеальными. GitHub не поддерживает файлы размером более 100 МБ, что может стать серьезной проблемой для проектов с большими двоичными файлами. Использование собственного сервера снимает это ограничение, если вы можете заплатить за дополнительное место на жестком диске.

Каким бы ни был ваш вариант использования, вы, вероятно, можете добиться большего успеха, чем barebones git. GitLab Community Edition является бесплатным и открытым исходным кодом, и его легко настроить на вашем собственном сервере. Это дает вам все преимущества самостоятельного размещения, а также очень приятный веб-интерфейс и множество инструментов CI/CD. Мы настоятельно рекомендуем вам использовать GitLab, если у вас есть свободное место на сервере. (Для этого требуется около 3 ГБ ОЗУ.) Вы можете прочитать наше руководство по установке и настройке, чтобы узнать больше.

Но если вам не нужны все навороты и вы просто хотите запустить простой удаленный git , вы можете продолжить чтение.

Git Remotes — это просто чужой репозиторий

Первое, что нужно отметить в git – это то, что размещение сервера на самом деле не очень сложно. Git использует распределенную модель управления версиями; ваш локальный клон репозитория вообще не подключается ко всем вашим коллегам, но подключается к «удаленному», обычно на внешнем центральном сервере или службе. Когда вы нажимаете и тянете, вы вносите изменения в официальную мастер-копию пульта. Когда ваши коллеги получают данные с удаленного компьютера, они загружают ваши коммиты.

Технически вы можете запускать git как полностью децентрализованный сервис. Если бы у вас было два человека, каждый из них получал бы обновления друг от друга. (При такой настройке не рекомендуется отправлять данные в несерверные репозитории.) На практике это неприменимо, если только обе стороны не имеют статических IP-адресов и не всегда подключены к сети, поэтому большинство людей выбирают модель «сервер-клиент».

Таким образом, сервер git — это обычный репозиторий, настроенный как основная копия и открытый для Интернета. Это удивительно просто настроить. Во-первых, нам нужно создать нового пользователя. Git использует SSH для аутентификации и всего трафика между серверами и клиентами, поэтому нам понадобится пользователь службы для управления репозиторием.

sudo useradd git

Затем переключитесь на пользователя git для остальной части настройки:

su git

Вам нужно добавить свои ключи SSH в файл authorized_keys пользователя git:

nano ~/.ssh/authorized_keys

Это одна из областей, где у таких сервисов, как GitHub и GitLab, командная строка лучше Git. Управление доступом не так просто реализовать таким образом, так как вам нужно предоставить всем доступ к одному и тому же пользователю службы, что не идеально, или вам нужно настроить отдельных пользователей для каждого человека, что также не является идеальным. идеал. В любом случае коммиты будут отображаться с любым именем пользователя и адресом электронной почты, которые конечный пользователь настроил в своих настройках git.

В любом случае, чтобы создать реальный репозиторий, просто запустите git init в домашнем каталоге пользователя git:

git init --bare repository.git

Здесь необходима опция --bare . Обычно при клонировании репозитория git сохраняет все файлы, которые он использует для управления версиями, в скрытой папке .git и хранит пригодную для использования версию везде, где ваш текущий зарегистрированный HEAD находится в. Это обычно делает вашу папку репозитория примерно в два раза больше, чем она была бы без git, хотя она может быть больше, если у вас есть большие двоичные файлы и много изменений с течением времени.

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

Это все, что требуется на стороне сервера. С вашего локального компьютера вам нужно будет клонировать репозиторий или добавить новый пульт:

git remote add origin git@example.com:repository.git

URL-адрес начинается с git@, потому что он подключается через SSH как пользователь git . :repository.git на самом деле является путем, а не просто идентификатором. Путь относится к домашнему каталогу пользователя git, поэтому, если вы разместили репозиторий в другом месте, вам нужно переместить его сюда или использовать полный путь.

После того, как вы подключили локальный репозиторий, у вас должен быть полный доступ к push и pull в обычном режиме. Имейте в виду, что git по умолчанию не имеет встроенной системы разрешений, поэтому ничто не мешает любому, у кого есть доступ к пользователю git, получить полный контроль над вашим главным репозиторием.