Настройка git на сервере ubuntu

Обновлено: 07.07.2024

Привет. Если вы пишете скрипты/конфиги/программируете, то рано или поздно вы задумывались, или обязательно задумаетесь о системе контроля версий, что бы не записывать изменения в ручную или не держать их в голове (от куда они очень быстро пропадают =) ). Всем должен быть известен github, и можно пользоваться им без проблем, если вы планируете делать публичные проекты с открытым исходным кодом. Но если вы не хотите показывать исходники другим, но при этом так же хотите получить преимущества использования git репозитория, то вам пригодится эта заметка.

В ней я покажу, как можно поставить на свой сервер git сервер — gitlab. А так же покажу как создать свой первый репозиторий.

У меня, как всегда, свеже установленная ubuntu server 16.04. Подключимся к ней и войдем в режим суперпользователя:

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

Вводим доменное имя во время уствновки postfix

Далее скачаем и выполним скрипт установки репозиториев gitlab:

Далее установим собственно gitlab:

Далее поправим доменное имя сайта нашего сервера:

Находим тут строчку external_url и исправляем адрес на правильный (если конечно он не верный)

Изменяем доменное имя сервера gitlab

После чего остался последний шаг — запустим команду конфигурирования нашего сервера:

Теперь можно подключиться через веб интерфейс, можно использовать либо доменное имя (если оно у вас заведено на dns сервере или прописано в фале hosts), либо ip адрес сервера.

При первом заходе будет предложено ввести пароль администратора.

Задаем пароль администратора

Дальше можно войти в ваш аккаунт. По умолчанию имя пользователя — root.

Теперь можно создать новый проект. Жмем New project.

Начальная страница

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

Создаем новый проект

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

В новом окне будет ссылка на инструкцию как сгенерировать ключ, там все подробно написано, для разных систем. Для linux — нужно выполнить команду:

Во время генерации будет задано несколько вопросов, один из которых — куда сохранить ключ. Запомните место и имя. После генерации скопируйте содержимое вашего публичного ключа (c расширением .pub),

Дальше вставьте это дело в поле key на предыдущей станице.

Вставляем наш публичный ключ

Теперь можно вернуться к проектам. И там уже воспользоваться написанными командами.

Возвращаемся к проектам

Например создадим новый репозиторий:

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

Материал, перевод которого мы сегодня публикуем, посвящён настройке Git-серверов. Git — это система управления версиями, разработанная Линусом Торвальдсом. Git пользуются миллионы людей во всём мире. Компании, вроде GitHub, предлагают службы хостинга кода, основанные на Git. По информации, которую можно найти в различных публикациях, GitHub является крупнейшим сервисом для хостинга IT-проектов. В частности, в 2017-м году сообщество GitHub достигло 24 миллионов разработчиков, которые трудятся над 67 миллионами репозиториев. В наши дни GitHub пользуются абсолютно все — от программистов-одиночек, до крупных организаций. Надо сказать, что даже компания Google перешла на GitHub, закрыв собственный проект схожей направленности.

image


Зачем нужен собственный Git-сервер?

GitHub — это замечательный сервис, но, особенно если вы — индивидуальный разработчик или небольшая компания, вы, при работе с GitHub, столкнётесь с некоторыми ограничениями. Одно из них заключается в том, что в бесплатный пакет услуг не входит хостинг приватных репозиториев. За эту возможность придётся заплатить, как минимум, $7 в месяц.

В подобных ситуациях, для того, чтобы обойти ограничения, или если вам нужно контролировать то, что происходит с вашими репозиториями, лучше всего создать собственный Git-сервер. Это, с одной стороны, поможет сэкономить, а с другой — даст полный контроль над сервером. Среди продвинутых пользователей Linux весьма распространена практика использования собственных Git-серверов, размещаемых, можно сказать, бесплатно, на уже используемых ими серверах.

В этом руководстве мы поговорим о двух подходах к управлению кодовой базой с использованием собственного Git-сервера. Первый заключается в использовании обычного Git-сервера, а второй — в применении инструмента с графическим интерфейсом GitLab. В качестве платформы для экспериментов тут используется сервер на полностью пропатченной Ubuntu 14.04 LTS, развёрнутый на VPS.

Использование Git

Здесь мы рассматриваем сценарий, в соответствии с которым у нас имеется удалённый сервер и локальный сервер. Работаем мы периодически то с одним, то с другим.

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


Затем добавим пользователя для Git:


Для того чтобы упростить доступ к удалённому серверу, настроим вход по ssh без пароля.

Создадим ssh-ключи на локальном компьютере:


Система спросит у вас о том, куда нужно сохранить ключ. Если вас устраивает стандартное место хранения ключа, просто нажмите Enter. Далее вам предложат задать пароль, который будет нужен для доступа к удалённому серверу.

Вышеописанная команда генерирует два ключа — открытый и закрытый. Запишите или запомните расположение открытого ключа. Он понадобится нам на следующем шаге.

Теперь надо скопировать эти ключи на сервер, что даст возможность наладить канал связи между двумя машинами. На локальном компьютере выполните следующую команду:


Теперь подключитесь по ssh к серверу и создайте директорию проекта для Git. Для репозитория можно использовать любую папку, которая покажется вам подходящей:


Затем перейдите в эту директорию:


Создайте пустой репозиторий:


Теперь нужно создать Git-репозиторий на локальной машине. Для этого создаём директорию:


Переходим в неё:


Далее, создаём в ней файлы проекта, и, оставаясь в ней, инициализируем репозиторий:


Теперь добавим файлы проекта в репозиторий:


В нашем случае здесь имеется файл, который называется GoT (в нём лежит текст обзора Game of Thrones), в который внесены некоторые изменения. Изменения внесены и в другой файл. Поэтому при выполнении команды система сообщила о том, какие изменения были внесены в файлы. В вышеописанной команде опция -a означает обработку всех файлов репозитория. Если вы внесли изменения лишь в один файл, можно, вместо опции -a , указать имя этого файла.


Теперь можно отправлять изменения с локальной машины на сервер или загружать данные с сервера, используя, соответственно, опции push или pull :


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


В данной команде /home/swapnil/project.git — это путь к папке проекта на удалённом сервере, в вашем случае тут будет другой путь.

Затем, после клонирования, надо перейти в директорию проекта:


У вас, вместо project будет имя другой директории. Теперь можно приступать к работе над проектом, принимать изменения и отправлять их на сервер:


Мы полагаем, что вышеприведённых сведений достаточно для того, чтобы помочь тем, у кого не было опыта работы с Git, приступить к использованию собственного Git-сервера. Если вам нужен некий инструмент с графическим интерфейсом, позволяющий работать с проектом на локальной машине, можно воспользоваться чем-то вроде QGit или GitK для Linux.


QGit — графический инструмент для локальной работы с Git-репозиториями

Использование GitLab

Выше мы описали систему, позволяющую организовать совместную работу над проектами с помощью Git, полностью основанную на средствах командной строки. Работать в такой среде, конечно, сложнее, чем с GitHub. По иронии судьбы, хотя GitHub — это крупнейший в мире сервис для хостинга кода, его собственный код закрыт. Это — не опенсорсный проект, то есть, нельзя взять этот код и создать на его основе собственный GitHub. В отличие от чего-то вроде WordPress и Drupal, код GitHub нельзя загрузить и развернуть на собственном сервере.

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

GitLab задействует бизнес-модель, характерную для опенсорсных проектов. А именно, имеется свободно распространяемая версия ПО, которую все желающие могут разворачивать на своих серверах, и хостинг кода, похожий на GitHub.

Среди возможностей GitLab можно отметить управление Git-репозиториями, средства обзора кода, наличие системы отслеживания ошибок, ленты активности, поддержку вики-страниц. Здесь имеется и GitLab CI — система непрерывной интеграции.

Многие VPS-провайдеры, вроде DigitalOcean, предлагают пользователям дроплеты GitLab. Если вы хотите развернуть GitLab на собственном сервере, вы можете установить эту систему вручную. GitLab предлагает пакет Omnibus для различных операционных систем. Прежде чем установить GitLab, может возникнуть необходимость в настройке почтового SMTP-сервера для того, чтобы система могла отправлять электронную почту. Рекомендовано для этих целей пользоваться Postfix. Поэтому, перед установкой GitLab, установим Postfix:


В процессе установки Postfix система задаст вам несколько вопросов. Не стоит пропускать ответы на них, но если ответы на них не даны, можно перенастроить систему, выполнив следующую команду:


После запуска этой команды нужно указать параметр Internet Site и задать почтовый идентификатор для домена, который будет использоваться GitLab. Далее, надо будет указать имя пользователя для Postfix и почтовый адрес. Значения остальных параметров можно не менять. После установки и настройки Postfix можно заняться GitLab.

Загрузим свежий пакет отсюда с помощью wget :


Теперь установим его:


Настроим и запустим GitLab:


Теперь надо будет настроить доменное имя в конфигурационном файле, что даст возможность работать с GitLab. Откроем файл:


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


Сайт GitLab, открытый в браузере

По умолчанию система создаёт учётную запись администратора с именем root и паролем 5iveL!fe . Сразу после первого входа на сайт следует поменять пароль.


Смена пароля на сайте GitLab

После того, как пароль изменён, можно войти на сайт и заняться работой с проектами.


Работа с проектами в GitLab

GitLab — это серьёзная система, имеющая массу возможностей. Как в них разобраться? Позволим себе привести тут несколько изменённую цитату из фильма «Матрица»: «Увы, невозможно рассказать о том, что умеет GitLab. Вы должны увидеть это сами».

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

Многие проектные файлы ПО хранятся в репозиториях Git, а такие платформы, как GitHub, GitLab и Bitbucket, упрощают работу над проектами разработки программного обеспечения и совместную работу.

В этом руководстве мы расскажем, как установить и настроить Git на сервере Ubuntu 20.04. Мы узнаем о двух способах установки программного обеспечения: посредством встроенного диспетчера пакетов и из файла с исходным кодом. Каждый из этих подходов имеет собственные преимущества, зависящие от конкретных потребностей.

Предварительные требования

Вам потребуется сервер Ubuntu 20.04 с учетной записью non-root superuser.

После настройки сервера и пользователя вы можете продолжить.

Установка Git с пакетами по умолчанию

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

Git, вероятнее всего, уже установлен на вашем сервере Ubuntu 20.04. Это можно подтвердить на вашем сервере с помощью следующей команды:

Если вы получите вывод, аналогичный следующему, то Git уже установлен.

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

Однако если вы не получили вывод с номером версии Git, его можно установить с помощью диспетчера пакетов APT по умолчанию в Ubuntu.

Во-первых, воспользуйтесь инструменты управления пакетами apt для обновления локального индекса пакетов.

После завершения обновления вы можете выполнить установку Git:

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

После успешной установки Git вы можете перейти к разделу Настройка Git данного обучающего руководства и выполнению настройки.

Установка Git из файла с исходным кодом

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

Проверьте текущую версию Git, установленную на сервере:

Если Git установлен, вы получите вывод, аналогичный следующему:

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

После установки необходимых зависимостей создайте временную директорию и перейдите в нее. В эту директорию мы загрузим тар-архив Git.

Перейдите в новую директорию Git:

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

Теперь замените процесс оболочки, чтобы использовать только что установленную версию Git:

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

Мы успешно выполнили установку Git и теперь можем завершить настройку.

Настройка Git

Это можно сделать с помощью команды git config . В частности, нам нужно указать наше имя и адрес электронной почты, поскольку Git вставляет эту информацию в каждое внесение изменений. Мы можем двигаться дальше и добавить эту информацию с помощью следующей команды:

Мы можем просмотреть все настроенные пункты конфигурации, введя следующую команду:

Информация, которую вы вводите, сохраняется в файле конфигурации Git, и вы можете при желании изменить ее вручную с помощью текстового редактора на ваш выбор (мы используем nano):

Нажмите CTRL и X , затем Y , затем ENTER , чтобы выйти из текстового редактора.

Существует множество других вариантов настроек, но эти две опции устанавливаются в обязательном порядке. Если вы пропустите этот шаг, вы, скорее всего, будете видеть предупреждения при внесении изменений в Git. Это будет требовать дополнительной работы, поскольку вам нужно будет исправлять вносимые изменения, которые вы делали, вводя корректную информацию.

Заключение

Вы установили Git и готовы к его использованию в системе.

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

Давайте рассмотрим настройку доступа по SSH на стороне сервера. В этом примере мы будем использовать метод authorized_keys для аутентификации пользователей. Мы подразумеваем, что вы используете стандартный дистрибутив Linux типа Ubuntu.

Вместо ручного копирования и установки открытых ключей, многое из описанного ниже может быть автоматизировано за счёт использования команды ssh-copy-id .

Для начала создадим пользователя git и каталог .ssh для этого пользователя:

Затем вам нужно добавить открытые SSH-ключи разработчиков в файл authorized_keys пользователя git . Предположим, у вас уже есть несколько таких ключей и вы сохранили их во временные файлы. Напомним, открытый ключ выглядит примерно так:

Вы просто добавляете их в файл .ssh/authorized_keys в домашнем каталоге пользователя git :

Теперь вы можете создать пустой репозиторий для них, запустив git init с параметром --bare , что инициализирует репозиторий без рабочего каталога:

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

Этим способом вы можете быстро получить Git-сервер с доступом на чтение/запись для небольшой группы разработчиков.

Заметьте, что теперь все эти пользователи могут заходить на сервер как пользователь git . Чтобы это предотвратить, нужно изменить ему оболочку на что-то другое в файле /etc/passwd .

Вы можете легко ограничить пользователя git только действиями, связанными с Git, с помощью ограниченной оболочки git-shell , поставляемой вместе с Git. Если указать её в качестве командного интерпретатора для пользователя git , то он не сможет получить доступ к обычной командной оболочке на вашем сервере. Для её использования, укажите git-shell вместо bash или csh для пользователя git . Для этого вы должны сначала добавить git-shell в /etc/shells если её там ещё нет:

Теперь можно изменить оболочку для пользователя используя chsh <username> -s <shell> :

Теперь пользователь git может использовать SSH соединение только для работы с репозиториями Git и не может зайти на машину. Если вы попробуете войти в систему, то вход будет отклонён:

На текущий момент пользователи всё ещё могут использовать перенаправление порта SSH для доступа к другим Git серверам, к которым текущий может подключиться. Если это нужно отключить, вы можете добавить следующие опции в файл authorized_keys перед теми ключами, для которых нужно применить это ограничение:

В результате файл будет выглядеть следующим образом:

Читайте также: