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

Логотип Git

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

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

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

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

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

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

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

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

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

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

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

sudo useradd git

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

иди воды

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

нано ~ / .ssh / authorized_keys

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

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

git init —bare repository.git

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

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

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

git удаленный добавить источник git@example.com: repository.git

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

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.