Skip to content

Latest commit

 

History

History
141 lines (114 loc) · 14.1 KB

git-on-a-server.asc

File metadata and controls

141 lines (114 loc) · 14.1 KB

Отримання Git на Сервері

Тепер ми розглянемо налаштування сервісу Git з цими протоколами на вашому власному сервері.

Note

Тут ми продемонструємо команди та кроки, що потрібні для базового, спрощеного встановлення на базовому Linux сервері, хоча ці сервіси також можуть працювати під Mac або Windows серверами. Насправді налаштування виробничого серверу у вашій інфраструктурі безперечно буде накладати відмінності у міри безпеки чи в роботі з системними утилітами, проте сподіваємось, що ця секція дасть вам загальне уявлення про процес.

Щоб налаштувати сервер Git, спочатку треба експортувати існуюче сховище до нового очищеного сховища – сховища, що не містить робочої теки. Це доволі просто зробити. Щоб зробити клон вашого сховища та створити нове очищене сховище, треба виконати команду clone з опцією --bare. За умовною домовленістю, теки очищених сховищ закінчуються на .git, наприклад:

$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.

Тепер у вас є копія даних теки Git у теці my_project.git.

Це майже рівнозначно виконанню

$ cp -Rf my_project/.git my_project.git

Є декілька незначних відмінностей у файлі конфігурації, проте для наших цілей, це майже одне й те саме. Ми беремо саме сховище Git, без робочої теки, та створюємо теку спеціально і тільки для нього.

Розміщення Очищеного Сховища на Сервер

Тепер, коли у вас є очищена копія вашого сховища, все, що вам потрібно зробити – це розмістити його на сервері та налаштувати протоколи. Припустимо, ви налаштували сервер за назвою git.example.com, до якого у вас є SSH доступ, та ви бажаєте зберігати усі ваші сховища Git під текою /opt/git. Якщо тека /opt/git вже існує на сервері, ви можете налаштувати своє нове сховище, просто копіюванням вашого очищеного сховища:

$ scp -r my_project.git user@git.example.com:/opt/git

Наразі, інші користувачі що мають SSH доступ до цього серверу, та мають доступ тільки на читання теки /opt/git можуть зробити клон вашого сховища, виконавши

$ git clone user@git.example.com:/opt/git/my_project.git

Якщо користувач зайде через SSH до серверу та має доступ на запис до теки /opt/git/my_project.git, він автоматично матиме право викладати зміни.

Git автоматично додасть групові права на запис до сховища вірно, якщо ви виконаєте команду git init з опцією --shared.

$ ssh user@git.example.com
$ cd /opt/git/my_project.git
$ git init --bare --shared

Бачите як просто взяти сховище Git, створити його очищену версію, та розмістити її на сервері, до якого ви та ваші колеги мають SSH доступ. Тепер ви готові до співпраці над одним проектом.

Важливо зазначити, що це літерально все, що вам потрібно щоб отримати працюючий корисний Git сервер, до якого мають доступ декілька людей – просто додайте SSH акаунти на сервері, та закиньте кудись очищене сховище, до якого всі користувачі мають доступ на читання та запис. Ось і все – більше нічого не треба.

У декількох наступних секціях, ви побачите як перейти до більш витончених схем. Ми розглянемо як не створювати акаунти для кожного користувача, як додати відкритий доступ на читання сховища, налаштування веб інтерфейсу та інше. Втім, пам’ятайте, що для співпраці з декількома людьми над закритим проектом, усе що треба – це SSH сервер та очищене сховище.

Маленькі Проекти

Якщо ви маленька контора, або ви просто випробовуєте Git у вашій організації, та маєте тільки кількох програмістів, усе дуже просто. Один з найскладніших аспектів налаштування серверу Git – це керування користувачами. Якщо ви бажаєте, щоб якісь сховища були доступні на читання деяким користувачам, а на читання та запис іншим, налаштувати доступ та права може бути трохи складніше.

SSH Доступ

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

Якщо ви бажаєте розмістити ваші сховища на сервері, до якого не у всіх з вашої команди, у кого має бути доступ на запис, є акаунти, вам треба налаштувати SSH доступ для них. Ми далі припускаємо, що на вашому сервері SSH сервер вже є встановленим, та ви саме так заходите на сервер.

Є декілька способів надати доступ усій вашій команді. Ви можете просто додати акаунти всім, що є найпростішим варіантом, проте може бути трудомістким варіантом. Ви можете не захотіти виконувати adduser та встановлювати тимчасові паролі для кожного користувача.

Другий метод – це створити єдиного користувача 'git', попросити кожного користувача, у котрого має бути доступ на запис відправити вам публічний ключ SSH, та додати всі ключі до файлу ~/.ssh/authorized_keys вашого нового користувача 'git'. Після цього, усі будуть мати доступ до машини через користувача 'git'. Це ніяким чином не впливає на дані фіксації – користувач SSH, з якого ви підключаєтесь, не впливає на фіксації, що ви записуєте.

Інший спосіб це зробити щоб SSH сервер авторизувався з LDAP серверу чи іншого централізованого джерела авторизації, що у вас може бути вже встановленим.