Na moich serwerach mam zainstalowany panel administracyjny ajenti.org. Bindowanie dwóch instancji nginx’a na jeden port jest niemożliwe, więc postanowiłem zmusić gitlab’a do używania już istniejącej. Rozwiązanie znajduje się praktycznie w dokumentacji, ale postanowiłem zebrać te informacje w jednym miejscu.
Instalacja Gitlab-CI
Nasza instancja gitlaba będzie instalowana za pomocą omnipackage.
- Wchodzimy na stronę projektu. I wybieramy naszą dystrybucję.
- Wklejamy link.
- sudo apt-get update
- sudo apt-get install gitlab-ce
Instalacja nginx
- Edytujemy plik /etc/apt/sources.list
$ sudo nano /etc/apt/sources.list
Dodajemy odpowiednie wpisy dla naszego systemudeb http://nginx.org/packages/debian/ wheezy nginx
deb-src http://nginx.org/packages/debian/ wheezy nginx
- Instalujemy paczkę.
$ sudo apt-get update
$ sudo apt-get install nginx apt-transport-https ca-certificates
- Zatrzymujemy instancje gitlab’a
$ sudo gitlab-ctl stop
W zwrotce z polecenia będzie się pokazywała informacja odnośnie zatrzymania Nginx.# Pod jakim linkiem bedzie widoczny nasz gitlab
external_url "http://git.example.com/"
# Nie chcemy wymuszac przekierowania na polaczenie szyfrowane
nginx['redirect_http_to_https'] = false
# Nasze ssh nie dziala na domyslnym porcie.
gitlab_rails['gitlab_shell_ssh_port'] = 49653
# informujemy gitlab'a, ze chcemy uzywac wlasnej instancji nginx'a.
nginx['enable'] = false
# informujemy gitlab-ci, ze chcemy uzywac wlasnej instancji nginx'a.
ci_nginx['enable'] = false
- Zmiana domyślnego portu dla ssh
Poza zmianą w konfiguracji trzeba dodać jeszcze wpis do pliku /etc/hosts$ sudo nano /etc/hosts
I dodajemy tam linijkę111.222.333.444 git.example.com
Po wprowadzaniu powyższych zmian rekonfigurujemy instancje Gitlab’a i uruchamiamy ją ponownie.$ sudo gitlab-ctl reconfigure
$ sudo gitlab-ctl start
A tutaj efekt uruchomienia polecenia startu Gitlaba.$ sudo gitlab-ctl start
ok: run: logrotate: (pid 31474) 2617s
ok: run: postgresql: (pid 4547) 326623s
ok: run: redis: (pid 4555) 326622s
ok: run: sidekiq: (pid 4563) 326620s
ok: run: unicorn: (pid 4585) 326619s
Instalacja modułu passenger
Do poprawnego działania potrzebujemy zainstalować moduł obsługi passenger dla nginx.
- Dodanie kluczy repozytorium.
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
- Edytujemy plik /etc/apt/sources.list
$ sudo nano /etc/apt/sources.list
Dodajemy odpowiednie wpisy dla naszego systemudeb https://oss-binaries.phusionpassenger.com/apt/passenger wheezy main
- Instalujemy paczkę.
$ sudo apt-get update
$ sudo apt-get -y nginx-extras passenger
Po poprawnym skonfigurowaniu pliku vhostu dla nginx – gitlab będzie działał na istniejącej wcześniej instancji Nginx’a.
Efekty naszych zmian
Poza działającą instancją gitlaba powinniśmy widzieć inny układ linków przy klonowaniu naszego projektu:
ssh://git@git.example:49653/superuser/test-repository.git