Git
Chapters ▾ 2nd Edition

4.2 Гит на серверу - Постављање програма Гит на сервер

Постављање програма Гит на сервер

Сада ћемо показати како се подешава Гит сервис тако да извршава ове протоколе на вашем сопственом серверу.

Белешка

Овде ћемо демонстрирати команде и кораке неопходне ради основне, поједностављене инсталације на серверу базираном на Линуксу, мада је могуће покренути ове сервисе и на мекОС или Виндоуз серверима. Заправо, постављање продукционог сервера унутар ваше властите инфраструктуре ће несумњиво подразумевати и неке разлике по питању сигурносних мера или алата које пружа оперативни систем, али надамо се да ће вам ово дати општу слику о томе шта треба урадити.

Да бисте иницијално поставили било који Гит сервер, постојећи репозиторијум морате прво да извезете у нови огољени репозиторијум — репозиторијум који не садржи радни директоријум. У општем случају се то ради једноставно. Да бисте клонирали свој репозиторијум и направили нови огољени репозиторијум, можете да извршите команду clone уз опцију --bare. По конвенцији, огољени репозиторијуми се завршавају са .git, на пример:

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

Сада би требало да имате копију података из Гит директоријума у директоријуму my_project.git.

Ово је отприлике еквивалентно са следећим:

$ cp -Rf my_project/.git my_project.git

Постоји неколико малих разлика у конфигурационом фајлу; али за ову сврху, у питању је довољно приближна алтернатива. Ова команда узима сâм Гит репозиторијум, без радном директоријума, и креира директоријум намењен посебно њему.

Постављање огољеног репозиторијума на сервер

Сада када имате огољену копију репозиторијума, све што треба да урадите јесте да је окачите на сервер и поставите протоколе. Рецимо да сте поставили сервер git.example.com коме имате SSH приступ и све своје Гит репозиторијуме желите да ускладиштите у директоријум /srv/git. Под претпоставком да /srv/git постоји на том серверу, нови репозиторијум можете да подесите тако што ћете тамо прекопирати свој огољени репозиторијум:

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

Сада и други корисници који имају SSH приступ истом серверу за читање директоријума /srv/git могу да клонирају ваш репозиторијум извршавањем:

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

Ако корисник изврши SSH приступ серверу и има приступ писања у директоријум /srv/git/my_project.git, аутоматски ће имати и привилегију да гурају измене.

Програм Гит ће аутоматски додати групне дозволе за упис у репозиторијум ако покренете команду git init уз опцију --shared.

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

Видите колико је једноставно узети Гит репозиторијум, креирати његову огољену верзију и поставити је на сервер коме ви и ваши сарадници имате SSH приступ. Сада сте спремни за сарадњу над истим пројектом.

Важно је да приметити да је ово буквално све што треба да урадите ако желите да покренете употребљив Гит сервер коме неколико људи може да приступи — само додајте налоге који поседују SSH приступ на сервер и поставите огољени репозиторијум негде где сви ти корисницима имају приступ за читање и упис. Спремни сте да кренете — ништа више вам није потребно.

У следећих неколико одељака, видећете како да начините нека софистициранија подешавања. Ова дискусија ће показати и начин којим не морате да креирате корисничке налоге за сваког корисника, затим додавање јавног приступа за читање репозиторијумима, подешавање веб корисничких интерфејса и још тога. Ипак, имајте на уму да вам је за сарадњу неколико људи на приватном пројекту потребно да имате само SSH сервер и огољени репозиторијум.

Мали системи

Ако сте мала група људи или једноставно испробавате програм Гит за своју организацију и имате само неколико програмера, ствари за вас могу бити врло једноставне. Један од најкомпликованијих аспеката подешавања Гит сервера је управљање корисницима. Ако желите да неки репозиторијуми неким корисницима буду доступни само за читање, а другима и за читање и за упис, подешавање приступа и дозвола може бити нешто компликованије.

SSH приступ

Ако имате сервер коме сви програмери већ имају SSH приступ, у општем случају је најједноставније да прво тамо поставите први репозиторијум, јер скоро ништа више није потребно да урадите (као што смо видели у претходном одељку). Ако желите дозволе сложенијег типа контроле приступа над репозиторијумима, можете да их обрадите користећи уобичајене дозволе фајл система које поседује оперативни систем вашег сервера.

Ако своје репозиторијуме желите да поставите на сервер који нема налоге за сваку особу из тима којој желите да доделите права уписа, онда морате да подесите SSH за сваког од њих. Претпостављамо да ако имате сервер на којем ово можете остварити, већ имате инсталиран SSH сервер и да је то начин којим приступате серверу.

Постоји неколико начина на које можете свима из тима дозволити приступ. Први је да подесите налоге за свакога, што је просто, али може бити заморно. Можда не желите да покрећете adduser (или могућу алтернативу useradd) и да морате постављати привремене шифре за сваког новог корисника.

Друга метода је да на машини креирате јединственог корисника ’git’, па да питате сваког корисника који има приступ за упис на сервер да вам пошаље свој јавни SSH кључ и да додате тај кључ у фајл ~/.ssh/authorized_keys тог новог корисника ’git’. Сада сви могу да приступе машини кроз ’git’ налог. Ово ни на који начин не утиче на комитоване податке — SSH корисник који се повезује никако не утиче на комитове које бележите.

Други начин да ово урадите јесте да подесите ваш SSH сервер тако да аутентификацију ради помоћу LDAP сервера или неког другог централизованог извора аутентификације ког сте већ подесили. Све док сваки корисник има приступ машини преко командног окружења, било који механизам за аутентификацију преко SSH који вам пада на памет би требало да функционише.