Налаштування git-сервера


57

Нещодавно я створив ubuntu-сервер на Amazon EC2. Я хотів би використовувати його як мій сервер git, щоб я міг зберігати там свої репости.

Отже, де я можу знайти докладні інструкції, як налаштувати git на ubuntu-сервер? Усі ці SSH ключі та подібні речі, кілька користувачів тощо.


2
Я не думаю, що це питання, пов’язане з Ubuntu (за винятком очевидного "це linux"). Ви також навіть переглянули документацію на git ? Там згадується створення загальнодоступного , а також приватного сховища.
Ward Muylaert

22
@BonboBingo Скажіть: "Просто шукайте Google" насправді не є рішенням. Більшість питань тут можна відповісти «якщо ви будете шукати досить довго ...» Ask Ubuntu прагне бути Вопрос власти і відповідь сайт , містить 1 - ие відповіді рівня замість стіни відповідей , які говорять «Просто Google» - для отримання додаткової інформації перевірити FAQ
Marco Ceppi

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 @ адреса: / var / www / dir1 / dir2), а не просто клонувати git git.mydomain.com/repository
Pawełkowy

1
@Pawel хороший момент. Ось чому деякі люди поміщають сховище 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

Я не бачив нічого прямолінійного ... більшість навчальних посібників для геройців та гітозів не проходять через створення зразкового проекту та тестування (те, що я думаю, повинно бути у кожному підручнику). Якщо я побачу ще одне, що є більш прямим, я пам’ятаю цю тему
RobotHumans

@ 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. Зовсім не потрібно гнатися з апачем.
psusi

3

Мені також подобається підхід під управління gitolite для управління користувачами та безпекою. У мене зараз тестується сервер GI + gitolite AMI для EC2. Сміливо спробуйте; Документація доступна тут:

Alestic Git Server

Використовуючи такий підхід, ви можете мати центральний сервер Git з приватними сховищами, які працюють за лічені хвилини. Існує крива навчання гітоліту та EC2, якщо ви не знайомі з ними.


3

Це дуже легко досягти за допомогою гітоліту . Менш ніж за годину у вас буде легко настроюватися та захищати багатокористувацький сервер git.

На моєму веб-сайті є стаття з технікою

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.