← Zpět na všechny články blogu

Jak nainstalovat GitLab

Karel Dytrych
Váš Hosting 27. 5. 2019 - 8 min. čtení
Blog

Tuhle aplikaci není třeba moc představovat, jedná se o webový repozitář s wikipedii a podporou sledování chyb a v tomhle článku se podíváme, jak GitLab nainstalovat a nastavit jednoduchý deploy na testovací a ostrou doménu.

Zrychlí vývoj jakéhokoliv projektu a de-facto stačí pouze jedna aplikace pro celý “cykl” vývoje. Od správy projektu, plánování, verzování až po testování, monitoring a bezpečnost.

Minimální konfigurace

Test jsme prováděli na tarifu Basic VPS

VPS Centrum

Vyzkoušejte zdarma naši aplikaci pro správu serveru a domén. Budete si připadat jako zkušený administrátor.

Na Lite VPS nám server bohužel po instalaci GitLabu začal ihned padat, protože vyžaduje alespoň 4 GB RAM, a hlavně 20GB prostoru nemusí na většinu projektů stačit a už vůbec není na serveru místo pro weby/aplikace.

Basic VPS je ideální řešení kde hostovat GitLab + menší weby a aplikace. Máte dostatek výkonu a i prostoru. Navíc není problém navýšit pouze jednotlivé parametry

Pokud to s projektem nebo programováním myslíte vážně, tak GitLab je správná cesta.

Co všechno GitLab zvládne

Na naše virtuální servery už GitLab nějakou dobu našim zákazníkům instalujeme. Nastavíme bezvýpadkový deploy s přepínáním buildů aplikací.

Více informací o GitLabu na našich serverech + poptávkový formulář.

Freelo - Nástroj na řízení úkolů a projektů

Přidej se, pozvi svůj tým a klienty, rozděl práci a sleduj, jak se úkoly dají do pohybu.

Pokud GitLab neznáte a nemáte čas všechno přečíst, tak doporučujeme krátké video.

What is GitLab?

Jestli vám je už jasný, že GitLab potřebujete, tak pojďme na instalaci!

Instalace Debian + VPS Centrum Nginx/Apache2

Upozornění: Tento návod slouží k serverům nainstalovaným u nás s VPS Centrem, kde je většina potřebných aplikací/modulů již nainstalovaná.

Kvůli vygenerování certifikátu od Let’s Encrypt je potřeba na FTP vytvořit složku na stejné úrovni jako je /www. V našem příkladě použijeme /gitlab. Doména vč. subdomény “gitlab” už musí směřovat na IP adresu vašeho serveru, aby se certifikát povedlo vygenerovat.

Vygenerování certifikátu v našem VPS Centru

Jako první krok musíme přidat GitLab repository:

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash

Následně aplikaci nainstalujeme pomocí příkazu:

apt-get install gitlab-ce

Úspěšná instalace GitLabu

Po instalaci je třeba upravit konfigurační soubor Gitlabu. Cesta /etc/gitlab/gitlab.rb

Musíte najít a upravit tyto hodnoty:

external_url 'https://gitlab.vhtest.cz' (na jaké adrese bude gitlab k nalezení, nezapomenout na HTTPS)

nginx['enable'] = true

nginx['listen_port'] = 8081 (na jakém portu má nginx naslouchat)

nginx['listen_https'] = false

nginx['gzip_enabled'] = off

web_server['external_users'] = ['www-data']

PS: Při hledání pomůžou klávesy Ctrl + F

Poté provedeme příkaz:

gitlab-ctl reconfigure (tento příkaz opakujte pokud vždy něco upravíte v konfiguraci gitlabu)

Nastavíme práva

sudo usermod -aG gitlab-www www-data

A přesuneme se na Apache2, ujistíme se, že jsou zapnuté 2 moduly.

Do příkazové řádky napište:

a2enmod proxy_http

a2enmod proxy_http2
systemctl restart apache2

Jakmile příkazy provedeme, tak se přesuneme do Apache Configu pro doménu. který najdete:

/etc/apache2/sites-available/nazevdomeny.com.conf

Nebo v našem VPS Centru v nastavení domény.

Jednoduchá úprava configu v našem VPS Centru

POZOR: vas-hosting.cz vyměntě za svojí doménu a vložte tuto část configu.

Tento vhost musí být nad ## *.vas-hosting.cz ## a pod ## only vas-hosting.cz and vas-hosting.cz ##

# ################ only gitlab.vas-hosting.cz ####################



ServerName gitlab.vas-hosting.cz

ServerSignature Off

RewriteEngine on

RewriteCond %{HTTPS} !=on

RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [NE,R,L]

Use vas-hosting.cz





ServerName gitlab.vas-hosting.cz

SSLCompression Off

ServerSignature Off

ProxyPreserveHost On

AllowEncodedSlashes NoDecode



Require all granted

ProxyPassReverse http://127.0.0.1:8081

ProxyPassReverse http://gitlab.vas-hosting.cz/



RewriteEngine on

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]

RewriteCond %{REQUEST_URI} ^/uploads/.*

RewriteRule .* http://127.0.0.1:8081%{REQUEST_URI} [P,QSA,NE]

RequestHeader set X_FORWARDED_PROTO 'https'

RequestHeader set X-Forwarded-Ssl on

# needed for downloading attachments

DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public

Use vas-hosting.cz

Use vas-hosting.cz-ssl

Konec úprav v Apache2.

Teď se vrhneme na nastavení reverse proxy u Nginx:

Cesta ke konfigu: /etc/nginx/sites-available/nazevdomeny.com.conf nebo zase v našem VPS Centru.

Tento vhost musí být nad ## *.vas-hosting.cz ## a pod ## only vas-hosting.cz and www.vas-hosting.cz ##

# ################ only gitlab.vas-hosting.cz ####################

# gitlab internal reverse proxy https://gitlab.com/gitlab-org/gitlab-workhorse/

upstream gitlab-workhorse {

server unix:/var/opt/gitlab/gitlab-workhorse/sockets/socket fail_timeout=0;

}

server {

listen 80;

server_name gitlab.vas-hosting.cz gitlab.vas-hosting.cz.erm07.vas-server.cz;

limit_conn perip 20;

include /etc/nginx/scripts/acme.conf;

include /etc/nginx/scripts/php-version.conf;

access_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-access.log;

error_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-error.log notice;

## redirect to https

location / {

return 301 https://$server_name$request_uri;

}

}

server {

listen 443 ssl http2;

server_name gitlab.vas-hosting.cz gitlab.vas-hosting.cz.erm07.vas-server.cz;

# gitlab conf

# ===========

server_tokens off;

root /opt/gitlab/embedded/service/gitlab-rails/public; # some gitlab public content

# Increase this if you want to upload larger attachments

client_max_body_size 50m;

limit_conn perip 20;

include /etc/nginx/scripts/acme.conf;

include /etc/nginx/scripts/php-version.conf;

access_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-access.log;

error_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-error.log notice;

location ~ /.git {

deny all;

}

ssl on;

ssl_certificate /etc/letsencrypt/live/gitlab.vas-hosting.cz/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/gitlab.vas-hosting.cz/privkey.pem;

ssl_session_timeout 20m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

ssl_prefer_server_ciphers on;

ssl_session_cache shared:SSL:60m;

ssl_dhparam /etc/ssl/certs/dhparam.pem;

ssl_stapling on;

ssl_stapling_verify on;

ssl_trusted_certificate /etc/ssl/certs/ssl-bundle.pem;

resolver 8.8.4.4 8.8.8.8 valid=300s;

resolver_timeout 10s;

add_header X-Content-Type-Options nosniff;

# gitlab conf

# ===========

location / {

client_max_body_size 0;

gzip off;

## https://github.com/gitlabhq/gitlabhq/issues/694

## Some requests take more than 30 seconds.

proxy_read_timeout 300;

proxy_connect_timeout 300;

proxy_redirect off;

proxy_http_version 1.1;

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-Ssl on;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_pass http://gitlab-workhorse;

}

location /index.html {

return 301 /;

}

}

Konec úpravy v Nginx.

Ve VPS Centru se ujistíme, že běží webserver Apache2 a poté můžeme navštívit naší external URL, kterou jsme zadali.

Když pak navštívíte stránku gitlab.vase-domena.cz, tak se zobrazí přihlašovací stránka, kde zadáte nové heslo a poté se pomocí username: root přihlásíte.

Pokud se nic nepokazí, tak uvidíte tuto stránku

Instalace Gitlabu VPS Centrum + Nginx (HTTPS)

Ve VPS Centru se ujistíme, že běží pouze jediný web server – Nginx.

Přepnutí webserveru v sekci Správa serveru

Kvůli vygenerování certifikátu od Let’s Encrypt je potřeby na FTP vytvořit složku na stejné úrovni jako je /www. V našem příkladě použijeme /gitlab. Doména vč. subdomény “gitlab” už musí směřovat na IP adresu vašeho serveru.

Vygenerování certifikátu v našem VPS Centru

Jako první krok musíme přidat GitLab repository:

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

Následně aplikaci nainstalujeme pomocí příkazu:

apt-get install gitlab-ce

Po instalaci je třeba upravit konfigurační soubor Gitlabu. Cesta /etc/gitlab/gitlab.rb

Musíte najít a upravit tyto hodnoty:

external_url 'https://gitlab.vas-hosting.cz'

web_server['external_users'] = ['www-data']

nginx['enable'] = false

nginx['listen_port'] = 8081

nginx['listen_https'] = false

nginx['gzip'] = "off"

PS: Pro hledání použíjte kombinaci kláves Ctrl +F

Soubor uložíme a spustíme příkaz:

gitlab-ctl reconfigure (ten musíte spustit pokaždé, když změníte konfiguraci GitLabu

Poté musíme upravit config pro nginx.

Tento vhost musí být nad ## *.vas-hosting.cz ## a pod ## only vas-hosting.cz and www.vas-hosting.cz ##

Změnte vas-hosting.cz na vaší doménu + upravte název serveru

# ################ only gitlab.vas-hosting.cz ####################

# gitlab internal reverse proxy https://gitlab.com/gitlab-org/gitlab-workhorse/

upstream gitlab-workhorse {

server unix:/var/opt/gitlab/gitlab-workhorse/socket fail_timeout=0;

}

server {

listen 80;

server_name gitlab.vas-hosting.cz gitlab.vas-hosting.cz.xxx07.vas-server.cz;

limit_conn perip 20;

include /etc/nginx/scripts/acme.conf;

include /etc/nginx/scripts/php-version.conf;

access_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-access.log;

error_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-error.log notice;

## redirect to https

location / {

return 301 https://$server_name$request_uri;

}

}

server {

listen 443 ssl http2;

server_name gitlab.vas-hosting.cz gitlab.vas-hosting.cz.erm07.vas-server.cz;

# gitlab conf

# ===========

server_tokens off;

root /opt/gitlab/embedded/service/gitlab-rails/public; # some gitlab public content

# Increase this if you want to upload larger attachments

client_max_body_size 50m;

limit_conn perip 20;

include /etc/nginx/scripts/acme.conf;

include /etc/nginx/scripts/php-version.conf;

access_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-access.log;

error_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-error.log notice;

location ~ /.git {

deny all;

}

ssl on;

ssl_certificate /etc/letsencrypt/live/gitlab.vas-hosting.cz/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/gitlab.vas-hosting.cz/privkey.pem;

ssl_session_timeout 20m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

ssl_prefer_server_ciphers on;

ssl_session_cache shared:SSL:60m;

ssl_dhparam /etc/ssl/certs/dhparam.pem;

ssl_stapling on;

ssl_stapling_verify on;

ssl_trusted_certificate /etc/ssl/certs/ssl-bundle.pem;

resolver 8.8.4.4 8.8.8.8 valid=300s;

resolver_timeout 10s;

add_header X-Content-Type-Options nosniff;

# gitlab conf

# ===========

location / {

client_max_body_size 0;

gzip off;

## https://github.com/gitlabhq/gitlabhq/issues/694

## Some requests take more than 30 seconds.

proxy_read_timeout 300;

proxy_connect_timeout 300;

proxy_redirect off;

proxy_http_version 1.1;

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-Ssl on;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_pass http://gitlab-workhorse;

}

location /index.html {

return 301 /;

}

}

Po navštívení external url se zobrazí přihlašovací stránka do Gitlabu.

Pokud se nic nepokazí, tak uvidíte tuto stránku.

V dalším článku ukážeme, jak si nastavit deploy, tak nás sleduj na Facebooku ať ti nový návod neunikne.

Zůstaňte s námi v kontaktu

Jednou za měsíc posíláme souhrn novinek. Nemusíte se bát, spam neposíláme a odhlásit se můžete kdykoliv...

Karel Dytrych
Tým Váš Hosting
Vyzkoušejte náš trial na týden zdarma

Garance 14denní záruky vrácení peněz

Vyzkoušejte server na týden zdarma

Vyzkoušet server