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.
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.
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
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.
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.
Instalace Gitlabu VPS Centrum + Nginx (HTTPS)
Ve VPS Centru se ujistíme, že běží pouze jediný web server – Nginx.
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.
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.
V dalším článku ukážeme, jak si nastavit deploy, tak nás sleduj na Facebooku ať ti nový návod neunikne.