Введение
Когда дело доходит до хостинга Git, доступно несколько вариантов. GitHub, Gitlab и Bitbucket — популярные решения, но использование собственного сервера Git — альтернатива, которую стоит рассмотреть.
Настройка сервера Git позволяет создавать частные репозитории без ограничений бесплатных планов провайдеров. В этом руководстве мы объясним, как настроить голый сервер 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== [email protected]
Если вы получаете сообщение об ошибке No such file or directory
, это означает, что на локальном компьютере не была сгенерирована пара ключей SSH.
Чтобы сгенерировать новую пару ключей SSH, используйте следующую команду:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Скопируйте вывод приведенной выше команды cat
и вернитесь в консоль сервера Git.
На сервере откройте текстовый редактор и вставьте скопированный с локального компьютера публичный ключ в ~/.ssh/authorized_keys
:
vi /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 и создать репозитории.