Статьи

Настройка Raspberry Pi в качестве Git-сервера

В недавней статье Джереми представил Raspberry Pi , крошечный компьютер размером с вашу руку. В этой статье он приводит еще один пример впечатляющего использования этого удивительного устройства.

Git to Raspberry Pi

Управление версиями проекта полезно. Даже если ваш проект является частным, всегда хорошо иметь возможность восстановить старую версию, если (например) новая по какой-то причине сломана.

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

Одним из таких инструментов является Git . Git отлично подходит для управления версиями проекта, независимо от того, работаете ли вы над ним в одиночку или нет. Этот инструмент можно использовать на одном компьютере без каких-либо проблем. Однако, если вы хотите поделиться своим кодом между несколькими компьютерами, вам понадобится сервер Git. Это то, что мы будем строить в этом уроке.

Сначала я объясню, что мы будем строить, и зачем нам это нужно. Затем мы увидим, как конкретно построить наш сервер с Raspberry Pi. Наконец, мы увидим, как использовать наш сервер.

Что мы хотим сделать?

Git сервер?

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

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

С этим сервером процесс будет следующим:

  1. Вы модифицируете свой код
  2. вы отправляете свои изменения на сервер
  3. на другом компьютере вы или кто-либо другой загружает изменения с сервера
  4. новые изменения сделаны с этого другого компьютера
  5. эти изменения отправляются на сервер, чтобы другие могли их скачать, и так далее.

Сервер Git — это в основном компьютер, подключенный к Интернету, на котором мы можем хранить репозитории Git. Для этого можно использовать любой компьютер, и здесь мы будем использовать Raspberry Pi , поскольку он имеет преимущество, заключающееся в том, что он является очень недорогим вариантом и обеспечивает хорошую производительность.

Зачем создавать наш собственный сервер?

В Интернете существуют различные сервисы, которые позволяют нам делиться репозиториями Git, например, GitHub, который является одним из самых популярных.

Проблема в том, что такие репозитории часто являются общедоступными. Иногда мы не хотим делиться нашим кодом публично, а хотим делиться им с несколькими людьми (или даже с другим нашим компьютером).

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

Мы не воссоздаем GitHub здесь

Просто для ясности: мы не пытаемся копировать GitHub с простым Raspberry Pi. Сервер, который мы создадим, очень прост со всеми функциями Git, но не более того. Таким образом, не будет возможности для таких вещей, как запросы на извлечение или даже графический интерфейс.

Даже если он прост, этот сервер будет далеко не бесполезным. У меня в настоящее время есть сервер Git на моем Raspberry Pi. Я использую его для обмена кодом между моим рабочим столом и ноутбуком. Я использую GitHub для некоторых проектов, но не для всех. Для некоторых частных проектов или экспериментальных вещей, которыми я сейчас не хочу делиться, я использую свой маленький сервер. Таким образом, я могу работать с любого компьютера, не публикуя свой код.

Что нам понадобится?

Существует несколько версий Raspberry Pi, от очень маленькой и дешевой Raspberry Pi Zero до недавней и мощной Raspberry Pi 3. Какую версию выбрать для своего сервера Git?

Я не тестировал Raspberry Pi Zero, поэтому, честно говоря, я не смогу сказать, достаточно ли этого (хотя я думаю, что это так). Тем не менее, самой первой версии Raspberry Pi в основном достаточно, и поскольку Pi 2 и 3 доступны, возможно, вы сможете найти первый Raspberry Pi за небольшую цену, так что это хороший вариант для размышления.

Во всяком случае, Raspberry Pi — это просто материнская плата. Какую бы версию вы ни выбрали, вам понадобится как минимум чехол для его защиты, источник питания (через microUSB, например смартфон), SD-карта для хранения ОС (классическая SD-карта или microSD в соответствии с версией Pi, которую вы выбрал) и способ подключения пи к интернету. В зависимости от имеющегося у вас Pi, вы можете подключить его через Ethernet, напрямую через Wi-Fi (для Pi 3) или с помощью ключа Wi-Fi.

Теперь, когда у вас есть все необходимое для этого проекта, давайте посмотрим, как получить сервер Git с этого небольшого компьютера!

Как собрать Git-сервер с Raspberry Pi

Установка Git

Первое, что понадобится нашему серверу, это Git. Вы можете найти его в пакете git

 sudo apt-get install git

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

Создание выделенного пользователя

Хорошей практикой является создание нового пользователя для каждого использования Raspberry Pi. Этот пользователь является официальным менеджером соответствующего использования.

Некоторые программы автоматически добавляют своих собственных пользователей. Например, медиацентр Kodi создает пользовательский kodi В том же духе установка решения LAMP (для получения веб-сервера) создаст пользовательские www-data Здесь мы создадим пользователя git Для этого введите следующую команду на Raspberry Pi:

 sudo adduser git

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

Вам будет предложено ввести пароль для этого пользователя. Затем вы сможете ввести другую информацию, например, настоящее имя пользователя или номер его телефона. Поскольку git

Использование SSH для доступа к серверу

Наличие выделенного экрана для сервера практически бесполезно. В большинстве случаев мы просто хотим обмениваться данными с ним. Для этого мы можем использовать SSH, безопасный способ связи между двумя компьютерами.

Объяснение того, как работает SSH, не является целью этой статьи, поэтому я не буду описывать, как его использовать. Тем не менее, вы можете найти отличную документацию на официальном сайте Raspberry Pi.

Как использовать наш сервер

Логотип Raspberry Pi

Наш сервер теперь готов к использованию. Итак, пришло время посмотреть, как это использовать. Здесь мы увидим, как создать новый репозиторий и как его обновить.

Давайте покажем миру наши великие силы воображения, создав тестовое хранилище под названием Hello-World

Создание нового репо на Raspberry Pi

Первое, что нужно сделать, это инициализировать наш новый репозиторий на Raspberry Pi. На стороне сервера репозиторий — это то же самое, что и на вашем компьютере: папка с подпапкой .git Поэтому первое, что нужно сделать, это создать эту папку.

На Raspberry Pi используйте пользователя git Вы можете создать эту папку где угодно: на SD-карте Raspberry Pi или на внешнем жестком диске . В следующей команде мы создаем папку в домашней папке git

 mkdir /home/git/Hello-World.git

Обратите внимание на суффикс .git Этот суффикс не является обязательным, и это просто соглашение: на стороне сервера этот суффикс есть в репозиториях. Это соглашение, которое вы можете найти на GitHub, например.

Теперь измените ваш текущий каталог на новый:

 cd /home/git/Hello-World.git

Наконец, мы инициализируем репозиторий:

 git init --bare

Опция --bare Еще раз, это соглашение: голое хранилище не хранит данные так же, как они хранятся в рабочем хранилище. Голые репозитории не приспособлены для работы репозиториев, но они идеально подходят для сервера. Более подробную информацию о пустых репозиториях можно найти в документации Git .

Инициализация репо на вашем компьютере

На компьютере, который вы будете использовать для работы над проектом, создайте новую папку (где угодно). В терминале перейдите в этот каталог (с помощью cd

 git init

Здесь мы создаем нормальный репозиторий, а не пустой. Таким образом, мы увидим файлы так, как мы ожидаем, на нашем компьютере.

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

 git remote add pi [email protected]:/home/git/Hello-World.git

Эта команда создает новый пульт с именем pi XXX.XXX.XXX.XXX Наконец, часть /home/git/Hello-World.git

Работа с репозиториями

Теперь наш репо готов к использованию. Создавайте новые файлы, редактируйте их, как всегда, удаляйте другие. Когда вы будете готовы создать свой первый коммит, просто выполните следующее:

 git commit -m 'My first commit'

После нескольких коммитов вы захотите отправить свои изменения на ваш сервер. Для этого используйте следующую команду, которая должна показаться вам знакомой, если вы уже использовали что-то вроде GitHub:

 git push pi master

В приведенной выше команде мы отправляем ветку masterpi Это пульт, который мы создали в предыдущей части, поэтому подумайте об изменении его имени, если вы выбрали другое!

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

 git pull pi master

Клонирование репозитория

Привлечение нового пользователя? Или добавить себя на другом компьютере? Репозиторий существует на сервере, но его необходимо добавить на другой компьютер. Это когда пришло время клонировать хранилище.

Клонирование репо требует знания того, где он живет, или, другими словами, каков его адрес. Поскольку это ваш сервер, вы должны это знать, и он такой же, как тот, который мы использовали выше:

 git clone [email protected]:/home/git/Hello-World.git

Клонируя репозиторий, автоматически создается пульт с именем origin

Заключительные слова

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

Вы настроили Raspberry Pi в качестве сервера Git? Или сделал что-то еще интересное с Пи? Пожалуйста, сообщите нам об этом в комментариях.