Používáním tohoto webu souhlasíte s ukládáním cookies (více informací). Rozumím

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

Jak nainstalovat GitLab

  • David Janik
  • 30. 5. 2019
Jak nainstalovat GitLab

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 2 našich tarifech. Lite VPS a Basic VPS.

Image

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 RAM nestíhala, 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 jednoduchý deploy anebo bez výpadkový s přepínáním buildů aplikací.

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

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 | sudo 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'] = 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 ####################

<VirtualHost *:80>

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

</VirtualHost>

<VirtualHost *:443>

ServerName gitlab.vas-hosting.cz

SSLCompression Off

ServerSignature Off

ProxyPreserveHost On

AllowEncodedSlashes NoDecode

<Location />

Require all granted

ProxyPassReverse http://127.0.0.1:8081

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

</Location>

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

</VirtualHost>

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/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.

Hledáte něco?

Volejte +420 776 133 789 nebo pište

© 2019 Váš Hosting s.r.o.