Установка GitLab сервер в Unix/Linux

Хотелось бы рассказать в моей статье «Установка 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» завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.