
Хотелось бы рассказать в моей статье «Установка GitLab сервер в Unix/Linux» процесс установки gitlab сервера на примере CentOS 7 и Debian 8. Установка очень легкая и не вызовет у вас никаких проблем, по крайней мере я так думаю (у меня не было никаких).
Я расскажу очень простую установку и без всяких излишек. Так же, возможно установить gitlab с mysql (postgres) и запустить на nginx или apache.
Установка GitLab сервер в Unix/Linux.
Если вы установите Postfix для отправки электронной почты, пожалуйста, выберите ‘Интернет-сайт (internet site) «во время установки. Вместо Postfix вы можете также использовать Sendmail или настроить пользовательский SMTP-сервер. Если вы хотите использовать Exim, пожалуйста, настроить его в качестве SMTP-сервера.
Устанавливаем дополнительные компоненты для Debian 8:
# apt-get install -y curl openssh-server ca-certificates postfix
Устанавливаем дополнительные компоненты для CentOS 7:
# yum install -y curl policycoreutils openssh-server openssh-clients postfix
Добавляем сервер с SSH и Postfix в автозагрузку ОС и запускаем его:
# systemctl enable sshd && systemctl start sshd # systemctl enable postfix && systemctl start postfix
И так же, добавляем правила в firewall:
# firewall-cmd --permanent --add-service=http && systemctl reload firewalld
Скачиваем установочный скрипт с gitlab для Debian/Ubuntu:
# cd /usr/local/src && curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash
И установим еще один пакет:
# apt-get install -y gitlab-ce
В качестве альтернативы вы можете выбрать и загрузить пакет вручную, а с помощью команды:
# cd /usr/local/src && curl -LJO https://packages.gitlab.com/gitlab/gitlab-ce/packages/debian/jessie/gitlab-ce-XXX.deb/download
Устанавливаем пакет:
# dpkg -i gitlab-ce-XXX.deb
Скачиваем установочный скрипт с gitlab для RedHat/CentOS:
# cd /usr/local/src && curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash
Выполняем установку пакета:
# yum install -y gitlab-ce
Или
# EXTERNAL_URL="http://gitlab-ci-server.local" yum install -y gitlab-ee
В качестве альтернативы вы можете выбрать и загрузить пакет вручную, а с помощью команды:
# cd /usr/local/src && curl -LJO https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-XXX.rpm/download
Выполняем установку пакета:
# rpm -i gitlab-ce-XXX.rpm
Установка GitLab сервер на другие Unix/Linux ОС
Один из способов использовать gitlab сервер — использовать docker контейнер. У кого не установлен докер, можно обратится к спомогательному мануалу:
Установка Docker на Debian/Ubuntu
Установка Docker на CentOS/RedHat/Fedora
Создам папку для хранения файлов:
$ sudo mkdir -p /usr/local/gitlab/{config,logs,data}
По необходомости можно выставить пермишены (chown, chmod). Если используете MacOS X — то стоит пробросить директорию в самом докере.
Чтобы запустить контейнер, выполните:
$ sudo docker run --detach \ --hostname localhost \ --publish 443:443 --publish 80:80 --publish 222:22 \ --name gitlab \ --restart always \ --volume /usr/local/gitlab/config:/etc/gitlab \ --volume /usr/local/gitlab/logs:/var/log/gitlab \ --volume /usr/local/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest
Пример вывода:
Unable to find image 'gitlab/gitlab-ce:latest' locally latest: Pulling from gitlab/gitlab-ce 22dc81ace0ea: Pull complete 1a8b3c87dba3: Pull complete 91390a1c435a: Pull complete 07844b14977e: Pull complete b78396653dae: Pull complete ad4077463a1d: Pull complete 4a3eb35121ed: Pull complete 886485c74c46: Pull complete f7c33689430a: Pull complete 47ba27d6f419: Pull complete 4b2901ef2173: Pull complete Digest: sha256:ac0bfee1ae08d18a16ec015322addc501df005950017b3c2d863a4b2fcca4f65 Status: Downloaded newer image for gitlab/gitlab-ce:latest ba7ebca4e05da037dfced3e470311dc378d6d6ba2f1f4233c3497fc524dc7609
Подключимся к докеру:
$ docker exec -ti gitlab /bin/bash root@localhost:/#
Запустим переконфигурирование:
# gitlab-ctl reconfigure
Как-то так.
Настройка GitLab сервер в Unix/Linux
Для настройки gitlab сервера, выполните:
# gitlab-ctl reconfigure
После чего, открываем ваш хост или IP и вводим следующие данные:
Пользователь: root
Пароль: 5iveL!fe
пароль можно будет изменить сразу после входа в gitlab.
Настройка Gitlab Docker Container Registry
Открываем конфиг:
# /etc/gitlab/gitlab.rb
И находим/прописываем в него следующие строки:
gitlab_rails['gitlab_default_projects_features_container_registry'] = true
registry_external_url 'http://registry.gitlab-ci-server.local:5005'
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "registry.gitlab-ci-server.local"
gitlab_rails['registry_port'] = "5005"
gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"
gitlab_rails['registry_api_url'] = "http://localhost:5000"
gitlab_rails['registry_issuer'] = "omnibus-gitlab-issuer"
registry['enable'] = true
registry['username'] = "registry"
registry['group'] = "registry"
registry['uid'] = nil
registry['gid'] = nil
registry['dir'] = "/var/opt/gitlab/registry"
registry['registry_http_addr'] = "localhost:5000"
registry['debug_addr'] = "localhost:5001"
registry['log_directory'] = "/var/log/gitlab/registry"
registry['env_directory'] = "/opt/gitlab/etc/registry/env"
registry['log_level'] = "debug"
registry['log_formatter'] = "text"
registry['health_storagedriver_enabled'] = false
registry['storage_delete_enabled'] = true
registry['storagedriver_health_enabled'] = false
registry['status_uri'] = "/@status"
registry['storage'] = {
filesystem: {
rootdirectory: "../shared/registry",
}
}
registry['default_notifications_timeout'] = "500ms"
registry['default_notifications_threshold'] = 5
registry['default_notifications_backoff'] = "1s"
registry['default_notifications_headers'] = {}
registry_nginx['enable'] = true
registry_nginx['listen_port'] = 5005
registry_nginx['listen_addresses'] = ['192.168.130.30']
Ну а на своем хостевой машине стоит прописать хосты (в /etc/hosts):
192.168.130.10 gitlab-ci-server.local
192.168.130.20 pages.gitlab-ci-server.local statics.pages.gitlab-ci-server.local
192.168.130.30 registry.gitlab-ci-server.local
После того как все настроено. Можно проверить следующей командой:
$ docker login registry.gitlab-ci-server.local:5005
Username: your_user_here
Password:
Получил следующую ошибку:
INFO[0021] Error logging in to v2 endpoint, trying next endpoint: Get https://registry.gitlab-ci-server.local:5005/v2/: http: server gave HTTP response to HTTPS client
INFO[0026] Error logging in to v1 endpoint, trying next endpoint: Get https://registry.gitlab-ci-server.local:5005/v1/users/: http: server gave HTTP response to HTTPS client
Get https://registry.gitlab-ci-server.local:5005/v1/users/: http: server gave HTTP response to HTTPS client
Решение заключается в следующем, нужно на хосте с докером (от куда запускаете команду) добавить строку.
Если используете Linux, то открыть стоит:
# vim /etc/docker/daemon.json
И прописать:
{ "insecure-registries":["http://registry.gitlab-ci-server.local:5005"] }
После чего, стоит перезапустить докер сервис:
$ service docker restart
Я использую MacOS и Docker Desktop, по этому зашел в настройки и добавил это следующим образом:

После этого, все стало работать!
Я для своего теста, использую Vagrant и VagrantFile можно найти тут:
https://linux-notes.org/wp-content/uploads/files/gitlab/Vagrantfile
Так же, полный конфиг с gitlab.rb можно поглядеть тут:
https://linux-notes.org/wp-content/uploads/files/gitlab/gitlab.rb
Как-то так.
Настройка Gitlab Pages
Открываем конфиг:
# /etc/gitlab/gitlab.rb
И находим/прописываем в него следующие строки:
pages_external_url "http://pages.gitlab-ci-server.local:80"
gitlab_pages['enable'] = true
gitlab_rails['pages_enabled'] = true
gitlab_rails['pages_host'] = 'pages.gitlab-ci-server.local'
gitlab_rails['pages_port'] = 80
gitlab_pages['namespace_in_path'] = true
gitlab_pages['status_uri'] = "/@status"
gitlab_pages['max_connections'] = 5000
gitlab_pages['log_format'] = "text"
gitlab_pages['log_verbose'] = true
gitlab_pages['listen_proxy'] = "localhost:8090"
gitlab_pages['redirect_http'] = false
gitlab_pages['use_http2'] = false
gitlab_pages['dir'] = "/var/opt/gitlab/gitlab-pages"
gitlab_pages['log_directory'] = "/var/log/gitlab/gitlab-pages"
gitlab_pages['inplace_chroot'] = true
gitlab_pages['access_control'] = false
gitlab_pages['gitlab_id'] = nil # Automatically generated if not present
gitlab_pages['gitlab_secret'] = nil # Generated if not present
gitlab_pages['auth_redirect_uri'] = nil # Defaults to projects subdomain of pages_external_url and + '/auth'
gitlab_pages['auth_server'] = nil # Defaults to external_url
gitlab_pages['auth_secret'] = nil # Generated if not present
pages_nginx['enable'] = true
pages_nginx['listen_port'] = 80
pages_nginx['http2_enabled'] = false
pages_nginx['redirect_http_to_https'] = false
pages_nginx['listen_addresses'] = ['192.168.130.20']
Я для своего теста, использую Vagrant и VagrantFile можно найти тут:
https://linux-notes.org/wp-content/uploads/files/gitlab/Vagrantfile
Так же, полный конфиг с gitlab.rb можно поглядеть тут:
https://linux-notes.org/wp-content/uploads/files/gitlab/gitlab.rb
Я не использую https для своих тестов. Возможно, попозже появится необходимость использовать https и я дополню статью.
Ну а на своем хостевой машине стоит прописать хосты (в /etc/hosts):
192.168.130.10 gitlab-ci-server.local
192.168.130.20 pages.gitlab-ci-server.local statics.pages.gitlab-ci-server.local
192.168.130.30 registry.gitlab-ci-server.local
Т.е для каждого проекта стоит дописывать хост (Нет DNS резолвера, по этому вот так). Например, хост с пейджой у меня pages.gitlab-ci-server.local. У меня имеется группа statics и в этой группе будут лежать проекты. То я добавил хост следующим образом — statics.pages.gitlab-ci-server.local.
Как-то так.
Установка «Установка GitLab сервер в Unix/Linux» завершена.