Как настроить Git Server

Когда дело доходит до хостинга Git, у вас есть несколько вариантов. GitHub, Gitlab и Bitbucket — популярные решения, но стоит рассмотреть возможность запуска собственного сервера Git.

Настройка Git Server позволяет создавать частные репозитории без ограничений бесплатных планов провайдеров.

В этом руководстве мы объясним, как настроить чистый сервер Git в Linux. Эта установка хороша, если у вас мало репозиториев, а соавторы технически подкованы. В противном случае вам следует подумать об установке самостоятельного приложения git, такого как Gitea, Gogs или Gitlab .

Сервер Git можно настроить на любой удаленной машине Linux или даже в вашей локальной системе.

Настройка сервера Git

Первый шаг — установить Git на ваш сервер.

Если вы используете Debian или Ubuntu, обновите индекс локального пакета и установите git , выполнив следующие команды от имени пользователя sudo:

sudo apt update && sudo apt install git

Чтобы установить пакет git на серверы CentOS, введите:

sudo yum install git

Затем создайте нового пользователя, который будет управлять репозиториями Git:

sudo useradd -r -m -U -d /home/git -s /bin/bash git

Домашний каталог пользователя установлен в /home/git . Все репозитории будут храниться в этом каталоге. Мы не устанавливали пароль для пользователя «git», вход в систему будет возможен только с использованием ключей ssh.

Переключитесь на пользователя «git» с помощью команды su :

sudo su - git

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

mkdir -p ~/.ssh && chmod 0700 ~/.ssh

Создайте файл с именем ~/.ssh/authorized_keys котором будут храниться SSH-ключи авторизованных пользователей:

touch ~/.ssh/authorized_keys && chmod 0600 ~/.ssh/authorized_keys

Вот и все. Настройка сервера завершена. Теперь вы готовы создать свой первый репозиторий Git.

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

git init --bare ~/projectname.git

Вы можете назвать каталог как хотите. Важно создать репозиторий в домашнем каталоге пользователя «git».

Initialized empty Git repository in /home/git/projectname.git/

Настройка локального репозитория Git

Чтобы иметь возможность отправлять локальные изменения git на сервер Git, вам нужно добавить открытый ключ SSH локального пользователя в файл authorized_keys удаленного пользователя «git».

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

cat ~/.ssh/id_rsa.pub

Результат должен выглядеть примерно так:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDd/mnMzHwjUzK8g3ldfsfRpJuC16mhWamaXRk8ySQrD/dzpbRLfDnZsLxCzRoq+ZzFHGwcQlJergtergdHGRrO8FE5jl3IWRRp+mP12qYw== danny@linuxize.com

Если вы получаете сообщение об ошибке « No such file or directory , это означает, что у вас нет пары ключей SSH, созданной на вашем локальном компьютере.

Чтобы сгенерировать новую пару ключей SSH, используйте следующую команду:

ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"

Скопируйте вывод команды cat выше и вернитесь в консоль сервера Git.

На сервере откройте текстовый редактор и вставьте открытый ключ, который вы скопировали с локального компьютера, в файл ~/.ssh/authorized_keys :

sudo nano /home/git/.ssh/authorized_keys

Весь текст открытого ключа должен быть в одной строке.

Мы предполагаем, что пакет Git уже установлен на вашем локальном компьютере. Если нет, установите его так же, как описано в предыдущих разделах.

Если у вас есть неверсированный проект, перейдите в каталог проекта. Если вы начинаете с нуля, создайте каталог проекта и перейдите к нему:

cd /path/to/local/project

Инициализируем репозиторий git:

git init .

Последний шаг — добавить git remote в ваш локальный репозиторий:

git remote add origin git@git_server_ip:projectname.git

Не забудьте заменить git_server_ip на имя хоста или IP-адрес вашего сервера Git.

Чтобы убедиться, что все настроено правильно, создайте тестовый файл :

touch test_file

Добавьте изменения в область подготовки:

git add .

Зафиксируйте изменения:

git commit -m "descriptive message"

Отправьте изменения локального репозитория в удаленный репозиторий:

git push -u origin master

Если все настроено правильно, результат должен выглядеть примерно так:

Counting objects: 3, done.
Writing objects: 100% (3/3), 218 bytes | 218.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git_server_ip:projectname.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

Чтобы добавить нового соавтора, просто скопируйте его открытый SSH-ключ в файл ~/.ssh/authorized_keys пользователя «git».

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

Выводы

В этом руководстве мы показали вам, как настроить собственный частный сервер Git и создать репозитории.

Если вы столкнулись с проблемой или хотите оставить отзыв, оставьте комментарий ниже.

Оставьте комментарий