Введение
Git — это мощная, распределенная система контроля версий с открытым исходным кодом, которая имеет решающее значение для эффективного управления версиями проектов. Настройка собственного сервера Git не только углубит ваше понимание внутренних механизмов Git, но и обеспечит безопасную среду для управления частными проектами. Эта лабораторная работа проведет вас через процесс настройки сервера Git на машине Linux. Несмотря на наличие таких платформ, как GitHub, для размещения кода, частный сервер Git гарантирует, что ваши данные останутся в безопасности под вашим контролем.
🎯 Задачи
В этом проекте вы научитесь:
- Как установить и настроить Git в системе Linux
- Как создать и управлять пользователем специально для операций Git
- Как генерировать и настраивать SSH-ключи для защиты соединений между вашей локальной машиной и сервером Git
- Как инициализировать и управлять репозиторием Git локально и на сервере
- Как выполнять операции контроля версий, такие как фиксация изменений (commit) и их отправка (push) в удаленный репозиторий
- Как проверить настройку, клонировав репозиторий, чтобы убедиться, что все функционирует правильно
🏆 Достижения
После завершения этого проекта вы сможете:
- Понять основы установки и настройки Git, распределенной системы контроля версий, в среде Linux
- Обрабатывать разрешения пользователей и безопасность в системе Unix/Linux для задач, специфичных для приложений
- Использовать методы безопасного обмена данными между машинами с помощью SSH-ключей, что является важным навыком для управления удаленными серверами
- Создавать и управлять "голыми" (bare) репозиториями Git, которые используются для серверного хранения в операциях Git
- Фиксировать и версионировать ваши проекты с помощью команд Git, а также отправлять эти изменения на удаленный сервер
- Проверять и устранять распространенные проблемы при управлении удаленными репозиториями, клонируя и проверяя целостность данных
Установка Git
На этом шаге мы установим Git на вашу машину, которая будет служить как локальным, так и удаленным сервером. Это упражнение подготовит вас к потенциальной настройке сервера Git на вашем персональном компьютере для размещения в локальной сети.
## Обновляем базу данных пакетов apt, чтобы убедиться, что мы работаем с последним списком программ
sudo apt-get update
## Устанавливаем Git с помощью apt-get
sudo apt-get install git
Эта команда обновляет ваш список пакетов, чтобы гарантировать, что все последующие установки будут актуальными, а затем устанавливает Git — систему контроля версий, которая будет управлять нашими репозиториями.
Настройка пользователя Git
Для упрощения управления мы создадим нового пользователя специально для операций Git и настроим его рабочую директорию.
## Создаем нового пользователя для операций Git
sudo useradd labex-git
sudo passwd labex-git
Установите пароль для пользователя Git (например, "labex"), вам потребуется ввести пароль дважды.
Далее, создайте рабочую директорию для пользователя Git и назначьте права владения
sudo mkdir /home/labex-git
sudo chown -R labex-git:labex-git /home/labex-git
Эта серия команд создает нового пользователя, устанавливает пароль и создает выделенную рабочую директорию для операций Git, гарантируя, что управление репозиториями изолировано от других системных действий.
Генерация SSH-ключей
Использование SSH-ключей упростит наши операции с Git, устранив необходимость вводить учетные данные пользователя при каждой операции. Давайте сгенерируем пару SSH-ключей и настроим ее.
## Генерация пары SSH-ключей
ssh-keygen -t rsa -C "labex@labex.io"
Нажмите Enter на все запросы, чтобы использовать настройки по умолчанию. Затем отправьте публичный ключ на машину пользователя Git.
cat ~/.ssh/id_rsa.pub | ssh labex-git@localhost 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
Здесь вам следует ввести "yes" и затем пароль, который вы установили ранее.
Этот шаг генерирует пару SSH-ключей, обеспечивая безопасное соединение между вашей локальной и удаленной установками. Публичный ключ затем добавляется в список авторизованных ключей на сервере Git, что позволяет безопасно обмениваться данными без необходимости ввода пароля для каждой операции.
Создание удаленного репозитория
Теперь мы переключимся на пользователя Git и настроим "bare" (голый) Git-репозиторий, который подходит для серверного хранения.
## Переключение на пользователя Git
su labex-git
Введите установленный вами пароль.
Теперь вы можете создать папку репозитория и инициализировать "bare" репозиторий.
mkdir -p /home/labex-git/project.git
cd /home/labex-git/project.git
git init --bare
Эта последовательность команд переключает текущего пользователя на пользователя Git, создает новый каталог для вашего репозитория и инициализирует "bare" репозиторий. Эта настройка имеет решающее значение для Git-сервера, поскольку он будет хранить все отправляемые ему данные без поддержания каких-либо рабочих копий, что делает его идеальным для отправки и получения данных.
Настройка локального репозитория
На этом шаге мы настроим локальный репозиторий на вашей машине. Этот процесс аналогичен тому, что вы обычно делаете на платформе для хостинга кода.
Сначала вернитесь к своему обычному пользователю из пользователя Git:
## Выход из пользователя Git
exit
Теперь давайте создадим каталог для вашего проекта и инициализируем Git-репозиторий:
## Создание каталога для вашего проекта
mkdir -p /home/labex/project/labex_project
cd /home/labex/project/labex_project
## Инициализация Git-репозитория
git init
Это создает новый Git-репозиторий в указанном каталоге, который будет служить вашим локальным репозиторием для проекта.
Настройте детали вашего Git-пользователя:
## Установка имени пользователя Git
git config --global user.name "labex"
## Установка электронной почты Git
git config --global user.email "labex@labex.io"
Этот шаг гарантирует, что все ваши коммиты будут записываться с вашим именем пользователя и электронной почтой, что облегчит отслеживание изменений.
Создайте файл для тестирования процесса коммита:
## Создание тестового документа
echo "I am Labex Readme Doc" > readme.md
Эта команда создает простой текстовый файл с именем readme.md, содержащий пример сообщения, которое мы будем использовать для тестирования процесса коммита и отправки в удаленный репозиторий.
Фиксация и отправка изменений
После инициализации репозитория и настройки конфигурации Git пришло время закоммитить и отправить ваши первые изменения.
## Добавление всех изменений в staging (область подготовленных файлов)
git add .
## Коммит изменений
git commit -m "Initial commit"
## Добавление удаленного репозитория
git remote add origin labex-git@localhost:/home/labex-git/project.git
Теперь мы можем отправить изменения в удаленный репозиторий.
git push origin master
Проверка настройки
Наконец, давайте клонируем репозиторий, чтобы убедиться, что ваши коммиты правильно размещены на удаленном сервере.
## Переход в каталог для клонирования
cd /home/labex/project
## Клонирование репозитория
git clone labex-git@localhost:/home/labex-git/project.git
Вы можете увидеть, что новый репозиторий был клонирован по пути /home/labex/project, и в нем находится файл readme.md.
Резюме
В этой лабораторной работе вы научились настраивать и конфигурировать Git-сервер в системе Linux, управлять SSH-ключами и выполнять типичные операции Git, такие как инициализация репозиториев, коммит изменений и их отправка на удаленный сервер. Это упражнение продемонстрировало полный цикл настройки и использования Git-сервера, предоставив вам прочную основу для безопасного управления собственными репозиториями кода. Приобретенные здесь навыки являются не только фундаментальными для разработки программного обеспечения, но и углубляют ваше понимание контроля версий проектов в частной, безопасной среде.



