Articles

Hoe je eigen Git-server draaien

Beheer je code op je eigen server door een kale, eenvoudige Git-server te draaien of via het GitLab GUI-hulpprogramma.

Lees hoe je je eigen Git-server instelt in deze tutorial uit onze archieven.

Git is een versiebeheersysteem dat is ontwikkeld door Linus Torvalds en dat door miljoenen gebruikers over de hele wereld wordt gebruikt. Bedrijven als GitHub bieden code hosting diensten gebaseerd op Git. Naar verluidt is GitHub, een site voor het hosten van code, ’s werelds grootste dienst voor het hosten van code. Het bedrijf beweert dat er op dit moment 9,2 miljoen mensen samenwerken in 21,8 miljoen repositories op GitHub. Grote bedrijven stappen nu over op GitHub. Zelfs Google, de zoekmachine gigant, sluit zijn eigen Google Code en stapt over op GitHub.

Run je eigen Git server

GitHub is een geweldige dienst, maar er zijn een aantal beperkingen en restricties, vooral als je een individu of een kleine speler bent. Een van de beperkingen van GitHub is dat de gratis dienst geen private hosting van de code toestaat. Je moet een maandelijks bedrag van $7 betalen om 5 privé repositories te hosten, en de kosten gaan omhoog met meer repos.

In gevallen als deze of als je meer controle wilt, is het het beste om Git op je eigen server te draaien. Niet alleen bespaar je kosten, je hebt ook meer controle over je server. In de meeste gevallen heeft een meerderheid van de gevorderde Linux gebruikers al een eigen server en Git op die servers laten draaien is als ‘gratis als in bier’.

In deze tutorial gaan we het hebben over twee methodes om je code op je eigen server te beheren. De ene is het draaien van een kale, basis Git server en de tweede is via een GUI tool genaamd GitLab. Voor deze tutorial heb ik een volledig gepatchte Ubuntu 14.04 LTS server gebruikt die op een VPS draait.

Installeer Git op je server

In deze tutorial overwegen we een use-case waar we een remote server en een lokale server hebben en we zullen tussen deze machines werken. Om het eenvoudig te houden noemen we ze remote-server en local-server.

Installeer Git eerst op beide machines. Je kunt Git installeren vanuit de pakketten die al beschikbaar zijn via de repo’s of je distro’s, of je kunt het handmatig doen. In dit artikel gebruiken we de eenvoudigere methode:

sudo apt-get install git-core

Voeg vervolgens een gebruiker voor Git toe.

sudo useradd gitpasswd git

Om de toegang tot de server te vergemakkelijken, stellen we een wachtwoord-loze ssh login in. Maak eerst een ssh sleutel aan op uw lokale machine:

ssh-keygen -t rsa

Het zal u vragen om de locatie voor het opslaan van de sleutel op te geven, druk gewoon op Enter om de standaard locatie te gebruiken. De tweede vraag is om een pass phrase op te geven die nodig is om toegang te krijgen tot de server op afstand. Het genereert twee sleutels – een publieke sleutel en een private sleutel. Noteer de locatie van de publieke sleutel die je in de volgende stap nodig hebt.

Nu moet je deze sleutels naar de server kopiëren, zodat de twee machines met elkaar kunnen praten. Voer het volgende commando uit op uw lokale machine:

cat ~/.ssh/id_rsa.pub | ssh git@remote-server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Nu ssh in de server en maak een project directory voor Git. Je kunt het gewenste pad voor de repo gebruiken.

git@server:~ $ mkdir -p /home/swapnil/project-1.git

Wij gaan nu naar deze directory:

cd /home/swapnil/project-1.git

Maak nu een lege repo aan:

git init --bareInitialized empty Git repository in /home/swapnil/project-1.git

We moeten nu een Git repo aanmaken op de lokale machine.

mkdir -p /home/swapnil/git/project

En ga naar deze directory:

cd /home/swapnil/git/project

Nu maak je in deze directory de bestanden aan die je nodig hebt voor het project. Blijf in deze directory en start git:

git init Initialized empty Git repository in /home/swapnil/git/project

Nu bestanden toevoegen aan de repo:

git add .

Nu moet je elke keer als je een bestand toevoegt of wijzigingen aanbrengt, het bovenstaande add commando uitvoeren. Je moet ook een commit boodschap schrijven bij elke verandering in een bestand. De commit boodschap vertelt in principe welke wijzigingen er zijn gemaakt.

git commit -m "message" -a message 2 files changed, 2 insertions(+) create mode 100644 GoT.txt create mode 100644 writing.txt

In dit geval had ik een bestand genaamd GoT (Game of Thrones review) en ik heb wat wijzigingen gemaakt, dus toen ik het commando uitvoerde gaf het aan dat er wijzigingen in het bestand zijn gemaakt. In het bovenstaande commando betekent ‘-a’ optie commits voor alle bestanden in de repo. Als je slechts in één bestand wijzigingen hebt aangebracht, kun je de naam van dat bestand opgeven in plaats van ‘-a’ te gebruiken.

Een voorbeeld:

git commit -m "message" GoT.txt message 1 file changed, 1 insertion(+)

Tot nu toe hebben we op de lokale server gewerkt. Nu moeten we deze wijzigingen naar de server pushen, zodat het werk toegankelijk is via het Internet en je kunt samenwerken met andere teamleden.

git remote add origin ssh://git@remote-server/repo-<wbr< a="">>path-on-server..git

Nu kun je wijzigingen tussen de server en de lokale machine pushen of pullen met de ‘push’ of ‘pull’ optie:

git push origin master

Als er andere teamleden zijn die met het project willen werken, moeten ze de repo op de server klonen naar hun lokale machine:

git clone git@remote-server:/home/swapnil/project.git

Hier /home/swapnil/project.git is het projectpad op de externe server, verwissel de waarden voor je eigen server.

Dan verander je de directory op de lokale machine (wissel project uit met de naam van project op je server):

cd /project

Nu kunnen ze bestanden bewerken, commit wijzigingsberichten schrijven en ze dan naar de server pushen:

git commit -m 'corrections in GoT.txt story' -aAnd then push changes:
git push origin master

Ik neem aan dat dit genoeg is voor een nieuwe gebruiker om met Git op hun eigen servers aan de slag te gaan. Als je op zoek bent naar wat GUI tools om wijzigingen op lokale machines te beheren, dan kun je GUI tools gebruiken zoals QGit of GitK voor Linux.

QGit

GitLab gebruiken

Dit was een pure commandoregel oplossing voor projecteigenaar en -medewerker. Het is zeker niet zo eenvoudig als het gebruik van GitHub. Helaas is GitHub weliswaar ’s werelds grootste code hosting service, maar de eigen software is niet beschikbaar voor anderen om te gebruiken. Het is niet open source, dus je kunt niet de broncode pakken en je eigen GitHub compileren. In tegenstelling tot WordPress of Drupal kun je GitHub niet downloaden en op je eigen servers draaien.

Zoals gebruikelijk in de open source wereld is er geen eind aan de opties. GitLab is een handig project dat precies dat doet. Het is een open source project dat gebruikers in staat stelt om een project management systeem vergelijkbaar met GitHub op hun eigen servers te draaien.

Je kunt GitLab gebruiken om een service vergelijkbaar met GitHub te draaien voor je teamleden of je bedrijf. U kunt GitLab gebruiken om aan privé projecten te werken voordat u ze vrijgeeft voor publieke bijdragen.

GitLab hanteert het traditionele Open Source bedrijfsmodel. Ze hebben twee producten: gratis open source software, die gebruikers op hun eigen servers kunnen installeren, en een gehoste dienst vergelijkbaar met GitHub.

De downloadbare versie heeft twee edities – de gratis community editie en de betaalde enterprise editie. De enterprise-editie is gebaseerd op de community-editie, maar komt met extra functies gericht op enterprise-klanten. Het is min of meer vergelijkbaar met wat WordPress.org of WordPress.com bieden.

De community editie is zeer schaalbaar en kan 25.000 gebruikers op een enkele server of cluster ondersteunen. Enkele van de functies van GitLab zijn: Git repository management, code reviews, issue tracking, activity feeds, en wiki’s. Het wordt geleverd met GitLab CI voor continue integratie en levering.

Veel VPS providers zoals Digital Ocean bieden GitLab droplets aan voor gebruikers. Als je het op je eigen server wilt draaien, kun je het handmatig installeren. GitLab biedt een Omnibus pakket voor verschillende besturingssystemen. Voordat we GitLab installeren, wil je misschien een SMTP email server configureren, zodat GitLab emails kan pushen als en wanneer dat nodig is. Ze raden Postfix aan. Dus, installeer Postfix op je server:

sudo apt-get install postfix

Tijdens de installatie van Postfix zal het je een aantal vragen stellen; sla ze niet over. Als je ze gemist hebt, kun je ze altijd opnieuw configureren met dit commando:

sudo dpkg-reconfigure postfix

Als je dit commando uitvoert, kies dan “Internet Site” en geef het email ID op voor het domein dat door Gitlab gebruikt gaat worden.

In mijn geval heb ik het voorzien van:

This e-mail address is being protected from spambots. You need JavaScript enabled to view it 

Gebruik Tab en creëer een gebruikersnaam voor postfix. De volgende pagina vraagt u om een bestemming voor mail op te geven.

In de rest van de stappen, gebruik de standaard opties. Zodra Postfix is geïnstalleerd en geconfigureerd, gaan we verder met het installeren van GitLab.

Download de pakketten met wget (vervang de download link door de laatste pakketten van hier) :

wget https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab_7.9.4-omnibus.1-1_amd64.deb

Installeer vervolgens het pakket:

sudo dpkg -i gitlab_7.9.4-omnibus.1-1_amd64.deb

Nu is het tijd om GitLabs te configureren en te starten.

sudo gitlab-ctl reconfigure

Je moet nu de domeinnaam configureren in het configuratie bestand, zodat je toegang krijgt tot GitLab. Open het bestand.

nano /etc/gitlab/gitlab.rb

In dit bestand bewerk je de ‘external_url’ en geef je het server domein op. Sla het bestand op en open dan de nieuw aangemaakte GitLab site vanuit een webbrowser.

GitLab 1

Het maakt standaard ‘root’ aan als de systeembeheerder en gebruikt ‘5iveL!fe’ als het wachtwoord. Log in op de GitLab site en verander dan het wachtwoord.

GitLab 2

Als het wachtwoord is veranderd, log dan in op de site en begin met het beheren van je project.

GitLab beheer project pagina

GitLab wordt overspoeld met mogelijkheden en opties. Ik leen populaire regels uit de film The Matrix: “Helaas kan niemand worden verteld wat GitLab allemaal kan. Je moet het zelf proberen.”

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *