GitLab
— сайт и система управления репозиториями кода для Git
, из дополнительных возможностей: собственная вики и система отслеживания ошибок.
Шаги по разворачиванию своего собственного GitLAB
сервиса на системе Ubuntu 16.04 Server:
ekzorchik@srv-xenial:~$ uname -a Linux srv-xenial 4.4.0-131-generic #157-Ubuntu SMP Thu Jul 12 15:51:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Перед началом установки следует ознакомиться с мануалом:
https://docs.gitlab.com/omnibus/README.html#installation-and-configuration-using-omnibus-package
ekzorchik@srv-xenial:~$ sudo apt-get install curl openssh-server ca-certificates postfix -y General type of mail configuration: No configuration
ekzorchik@srv-xenial:~$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5933 0 5933 0 0 1905 0 --:--:-- 0:00:03 --:--:-- 1905
Detected operating system as Ubuntu/xenial.
Checking for curl...
Detected curl...
Checking for gpg...
Detected gpg...
Running apt-get update... done.
Installing apt-transport-https... done.
Installing /etc/apt/sources.list.d/gitlab_gitlab-ee.list...done.
Importing packagecloud gpg key... done.
Running apt-get update... done.
The repository is setup! You can now install packages.
Gitlab-ee
весит более 500Mb:
(на момент написания заметки: 11.6.4-ee.0 [528 MB]
)
ekzorchik@srv-xenial:~$ export EXTERNAL_URL="http://172.33.33.41" ekzorchik@srv-xenial:~$ apt-cache search gitlab-ee
gitlab-ee - GitLab Enterprise Edition (including NGINX, Postgres, Redis)
ekzorchik@srv-xenial:~$ sudo apt-get install gitlab-ee -y
Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
sudo gitlab-ctl reconfigure
Итак, GITLAB
успешно установлен на системе Ubuntu Xenial Server amd64
, как на него попасть? – а все просто, помните по заметке выше я указывал переменную EXTERNAL_URL
, так вот с любой другой системы в пределах локальной сети Вам нужно запустить Ваш браузер и в строке адреса набрать или скопировать строку вида http://172.33.33.41
, вместо 172.33.33.41
— Вам следует указать Ваш IP
-адрес Вашей системы Ubuntu Xenail Server
. Если сервис GITLAB
поднимается в сети где есть DNS
сервис, то на нем Вы можете создать запись типа A
и при разворачивании GITLAB
сервиса экспортировать не IP
-адрес, а DNS
-имя и через браузер обратиться к нему, либо еще вариант на Вашей системе в файл C:\Windows\System32\Drivers\etc\hosts
прописать сопоставление ip=dns
, а на Ubuntu системе если она основная в файле /etc/hosts
. Не суть вообщем.
В моем случае браузер Mozilla Firefox
на основной системе Ubuntu 18.04 Desktopa amd64
ноутбука Lenovo E555: http://172.33.33.41
, но почему-то все не так как мне бы хотелось чтобы было хорошо, браузер вернул ошибку: «Попытка соединения не удалась». Проверяю, а не поторопился ли я, сервис поднят?
ekzorchik@srv-xenial:~$ sudo nano /etc/gitlab/gitlab.rb
external_url 'http://gitlab.example.com'
## Вот она ошибка, в конфигурационном файле не мой экспортированный URL, изменяю на свой
#external_url 'http://gitlab.example.com'
external_url 'http://172.33.33.41'
После не забываем сохранить внесенные изменения и перезапускаю сервис GITLAB:
ekzorchik@srv-xenial:~$ sudo gitlab-ctl status ekzorchik@srv-xenial:~$ sudo gitlab-ctl restart ekzorchik@srv-xenial:~$ sudo gitlab-ctl status ekzorchik@srv-xenial:~$ sudo netstat -tulpn | grep :80
Но вот в чем беда, на консоль ничего не выдалось, а из этого делаю вывод что сервис не запустился, да и порт не прослушивается, смотрю логи nginx:
ekzorchik@srv-xenial:~$ nginx -t
The program 'nginx' can be found in the following packages:
* nginx-core
* nginx-extras
* nginx-full
* nginx-light
Try: sudo apt install <selected package>
а его нет, помнится при установке скриптом проскакивала в выводе команда: (и судя по выводу на консоль она из плейбуков производит разворачивание сервиса, т. е. Он не установился Выше по заметке)
ekzorchik@srv-xenial:~$ sudo gitlab-ctl reconfigure
Starting Chef Client, version 13.6.4
resolving cookbooks for run list: ["gitlab-ee"]
Synchronizing Cookbooks:
- gitlab-ee (0.0.1)
- package (0.1.0)
- gitlab (0.0.1)
- consul (0.0.0)
- repmgr (0.1.0)
- runit (0.14.2)
- postgresql (0.1.0)
- redis (0.1.0)
- registry (0.1.0)
- mattermost (0.1.0)
- gitaly (0.1.0)
- nginx (0.1.0)
- letsencrypt (0.1.0)
- acme (3.1.0)
- crond (0.1.0)
- compat_resource (12.19.0)
Installing Cookbook Gems:
Compiling Cookbooks…
и т.д. Вот это мешанина всего и вся в единый механизм. Как я понял — gitlab
разворачивается как сборка кем-то составленная и если что не так то разбираться придется со всем и сразу и почему не работает. Проще же уже самим развернуть сервис по управлению проектами с использованием git
так хоть понятно куда копать если что не работает чем пользоваться комбайном. Ну это на любителя.
Running handlers:
Running handlers complete
Chef Client finished, 455/677 resources updated in 04 minutes 50 seconds
gitlab Reconfigured!
После того, как установка так сказать завершена, проверяю, что порт TCP/80
открыт и nginx
отвечает за него и в окне браузера где была ошибка нажимаю клавишу F5
и:
ekzorchik@srv-xenial:~$ sudo netstat -tulpn | grep :80
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 14484/config.ru
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 14528/nginx
tcp 0 0 127.0.0.1:8082 0.0.0.0:* LISTEN 14503/sidekiq 5.2.3
tcp 0 0 0.0.0.0:8060 0.0.0.0:* LISTEN 14528/nginx
Задаю пароль, он задается при первом входе в систему, а логин по умолчанию это root:
New password: 712mbddr@
Confirm new password: 712mbddr@
и нажимаю «Change your password
», затем авторизуюсь:
Username or email: root
Password: 712mbddr@
и нажимаю Sign in
Опять я размечтался, пишет «Invalid Login or password.
», тогде перехожу на Register
и регистрируюсь:
- Full name: ekzorchik
- Username: ekzorchik
- Email: support@ekzorchik.ru
- Email confirmation: support@ekzorchik.ru
- Password: 712mbddr@
и нажимаю Register
. Вот он Web
-интерфейс
Полазил по различным настройкам, да интересный продукт, главное что на своем подконтрольном железе с различными настройками разграничения, но я в повседневности использую Mercurial + Web-интерфейс к нему — мне функционала пока хватает, т. к. я один. А GITLAB
ориентирован на большую команду разработчиков. Как дорасту до этого то обязательно воспользуюсь текущей заметкой. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.