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


57

Я недавно установил Ubuntu-сервер на Amazon EC2. Я хотел бы использовать его в качестве моего сервера Git, чтобы я мог хранить свои репозитории там.

Итак, где я могу найти некоторые подробные инструкции по настройке git на сервере Ubuntu? Все эти ключи SSH и тому подобное, несколько пользователей и т. Д.


2
Я не думаю, что это вопрос, связанный с Ubuntu (помимо очевидного "это linux"), вы также смотрели документацию по git ? Там упоминается о создании как публичного, так и частного хранилища.
Уорд Мюйлаерт

22
@BonboBingo Сказать «Просто поиск Google» действительно не является решением. Большинство вопросов здесь можно ответить «если вы будете искать достаточно долго ...» Задать цели Ubuntu быть авторитет Вопрос и ответ сайт , содержащий 1 - ые ответы уровня вместо стены ответов , которые говорят «Просто Google» - для получения дополнительной информации проверить FAQ
Марко Сеппи

1
Здесь есть полезное руководство по шагам: help.ubuntu.com/community/Git. @ Marco Ceppi Извините, но я не был полемиком. И тогда ссылка, которую я разместил, кажется, имеет отношение к вопросу ... Хорошо, теперь как ответ?
BonboBingo

Комментарии @BonboBingo не считаются ответами! Я просто комментировал часть вашего комментария "Поиск в Google". Если вы хотите подробно ответить на статью о Git в Справочном руководстве по Ubuntu, используйте поле «Ваш ответ» в нижней части этой страницы! :)
Марко Чеппи

2
"вместо стены ответов, которые говорят" Просто Google "- для получения дополнительной информации проверьте" ... хорошо, вы правы :) Давайте остановимся здесь.
BonboBingo

Ответы:


38

Вы можете использовать это руководство для установки сервера Git, как предлагал aking1012 , или вы можете просто установить SSH-сервер на свой экземпляр EC2 (возможно, было бы разумно защитить его и изменить порт по умолчанию).

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

GIT_DIR=project.git git init  
cd project.git  
git --bare update-server-info  
cp hooks/post-update.sample hooks/post-update

Наконец, установите SSH на свой сервер:

sudo apt-get install ssh-server

Теперь вы должны настроить SSH для его защиты.

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

git push ssh://<username>@<remote-git-hostname>/path/to/project.git master

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

git clone ssh://<username>@<remote-git-hostname>/path/to/dir.git

Проверьте этот отличный ресурс на Git .

А для генерации ключей ssh ​​для более безопасной аутентификации вы можете прочитать эту статью об аутентификации SSH .


Разве это не должно быть openssh-server?
Хорхе Кастро

1
@jorge кажется, что ssh-serverэто псевдоним openssh-сервера, по крайней мере, в Ubuntu 10.04.
Гюйгенс

1
Что ж, это может сработать, но для входа через SSH на компьютеры Amazon EC2 требуется пара открытых / закрытых ключей (ssh -i key.pem ubuntu @ address). Кроме того, я должен запомнить путь (ubuntu @ address: / var / www / dir1 / dir2), а не просто git clone git.mydomain.com/repository
Pawełkowy

1
@ Павел хороший момент. Вот почему некоторые люди помещают репозиторий git в корень файловой системы. Но да, вам нужны ssh ключи или учетные записи. Или вы можете использовать HTTP, но тогда у вас нет действительно хорошего контроля доступа AFAIK.
Гюйгенс

3
@ PawełKarpiński - Вы можете настроить файл конфигурации SSH на стороне клиента ~/.ssh/configдля обработки имени пользователя / адреса хоста, ввода ключа, портов и тому подобного.
Шона

15

Для всех моих настроек Git-сервера я использую Gitolite, который обеспечивает гранулярность безопасности доступа «на ветвь». Настройка довольно проста, если вы делаете это на удаленном сервере, это так же просто, как запуск интерактивного скрипта. В дополнение к этому «простому в настройке» характеру у него также есть пакет в Natty и Maverick

sudo apt-get install gitolite

Это не обеспечит веб-интерфейс, такой как Github или Gitweb, но вы можете легко настроить и установить их поверх чего-то вроде Gitolite.


9

Мне нравится гитолит . В книге Pro Git есть раздел, но я рекомендую прочитать всю книгу.

Что касается вашего требования нескольких пользователей:

Gitolite позволяет указывать разрешения не только для репозитория (как это делает Gitosis), но также для имен веток или тегов в каждом репозитории. То есть вы можете указать, что определенные люди (или группы людей) могут выдвигать только определенные «ссылки» (ветви или теги), но не другие.


7

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way можно немного изменить в соответствии с вашими целями ... аналогичное учебное пособие http: // blog .agdunn.net /? p = 277 .


1
примечание: в настоящее время я собираю руководство по rvm, ree / ruby, rails, git для клиента разработки и сервера разработки. он просто рисует множество онлайн-уроков в одном месте и немного их модифицирует, но в данный момент он все еще находится в стадии разработки.
RobotHumans

эти уроки потрясающие, но они довольно сложные. Нет ли более коротких руководств? :)
Pawełkowy

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

@ PawełKarpiński - Что в них такого сложного? Я использовал настройку Gitosis прежде, и это на самом деле очень просто.
Шона


4

Лучшим решением для меня была настройка WebDAV.

  • sudo a2enmod sudo dav_fs

  • sudo a2enmod dav

  • добавьте новый файл /etc/apache2/sites-availableи назовите его, например git.yourserver.com,. Отредактируйте его и добавьте следующие строки:

<VirtualHost *:80>

DocumentRoot /var/www/git.yourserver.com/repos
ServerName git.yourserver.net
Options Indexes FollowSymLinks MultiViews

<Location />
    DAV On
    AuthType Basic
    AuthName "git repos"
    AuthUserFile /var/www/git.yourserver.net/password.dav
    Require valid-user
</Location>

</VirtualHost>

  • создать каталог /var/www/git.yourserver.comи каталог reposвнутри id
  • sudo chown www-data /var/www/git.yourserver.com/repos
  • sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login и введите пароль для имени пользователя user_login
  • sudo chown root:www-data /var/www/git.yourserver.com/password.dav
  • sudo chmod 640 /var/www/git.yourserver.com/password.dav

Теперь sudo a2ensite git.yourserver.comи sudo service apache2 restart.

  • Введите /var/www/git.yourserver.com/reposи создайте каталог, например,myrepo.git
  • cd myrepo.git
  • git --bare init
  • git update-server-info

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

git clone http://user_login:user_password@git.yourserver.com/myrepo.git

и вы закончили. Если вы хотите отправить свои зафиксированные изменения на сервер:

git push origin master

Вы можете создать столько пользователей, сколько захотите sudo htpasswd. Просто не используйте -cпереключатель при добавлении большего количества пользователей, потому что старый файл будет удален.


3
HTTP - это «тупой» протокол, который поддерживается, но настоятельно не рекомендуется. Собственный протокол git работает намного лучше, и его проще настроить, так как все, что вам нужно сделать, это иметь работающий ssh-сервер (который вы уже должны) и установить git-core. Нет нужды возиться с Apache.
psusi

3

Мне также нравится подход gitolite для управления пользователями и безопасностью. У меня есть сервер AMI Git + gitolite для EC2, который в настоящее время тестируется. Не стесняйтесь попробовать; Документация доступна здесь:

Alestic Git Server

Используя этот подход, вы можете создать центральный сервер Git с частными репозиториями, работающими за считанные минуты. Существует кривая обучения для Gitolite и EC2, если вы не знакомы с ними.


3

Это очень легко достичь с помощью гитолита . Менее чем через час вы получите легко настраиваемый и безопасный многопользовательский git-сервер.

У меня есть статья с практическими рекомендациями на моем сайте

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.