Установка/настройка GitLab и интеграция с контроллером домена
Установка и настройка Ubuntu 14.04 x64 GITLab
Наша цель — установить и настроить сервер GitLab в Ubuntu 14.04 x64 для размещения и синхронизации исходного кода. Это WEB-сервер и управлять им очень просто. Программисты синхронизируют исходные коды с клиентом git. Проверка исходного кода осуществляется с помощью утилит контрольной суммы и сравнения. Нам необходимо создать группы на веб-портале и добавить в эту группу программистов. Различия в изменениях кода синхронизируются инкрементно. Весь этот процесс протоколируется. Простыми словами это для программистов.
GitLab – это веб-вики-система отслеживания событий с контроллером репозитория GIT. Программа написана украинцем Дмитрием Запорожцем на Ruby.
Сначала посмотрите учетные данные контроллера домена:
DC: ДОМЕН.LAN
порт: 636
bind_dn: 'CN=DCADM,CN=Пользователи,DC=домен,DC=lan'
пароль: 'DC_PASSWORD'
user_filter: '(memberOf=CN=GITUsers,OU=DOMAINTech Groups,OU=DOMAINTech,DC=domain,DC=lan)'
Ресурсы виртуальной машины Ubuntu 14.04 x64:
1 ЦП 2 ядра
4 ГБ оперативной памяти
200 ГБ жесткий диск
- Пакеты и зависимости
apt-get update – обновление системных репозиториев
apt-get dist-upgrade – обновить системные пакеты и ядро.
Обратите внимание: пакеты необходимо устанавливать только из sudo.
sudo apt-get install -y vim – установить vim
sudo update-alternatives –set editor /usr/bin/vim.basic – установить VIM в качестве текстового редактора по умолчанию
Установите необходимые зависимости для Ruby и расширений Ruby GEMS.
sudo apt-get install -y build-essential zlib1g-dev libyaml- dev libssl-dev libgdbm-dev libreadline- dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils pkg-config cmake libkrb5-dev
sudo apt-get install -y git-core – установить GIT
git –version – посмотрите версию GIT, она должна быть между 1.7.12 и 2.0.0 или выше.
git версия 1.9.1
Или, если вы хотите удалить старый GIT и установить его из исходных кодов, сначала удалите GIT и установите его из исходных кодов, выполнив следующие действия:
sudo apt-get удалить git-core – сначала удалите установленное ядро GIT.
Установите необходимые зависимые пакеты:
sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential
cd /tmp – для компиляции и установки исходных кодов перейдите в папку /tmp.
Загрузите и извлеките исходный код
curl -L –progress https://www.kernel.org/pub/software/scm/git/git-2.1.2.tar.gz | смола xz
cd git-2.1.2/ – перейдите в папку кода GIT
./configure – настройка для компиляции
make prefix=/usr/local all – для папки назначения укажите /usr/local
sudo make prefix=/usr/local install – установка GIT по пути /usr/local/bin.
Примечание. На 5-м этапе настройки не забудьте в файле конфигурации config/gitlab.yml изменить bin_path следующим образом:< бр/> git:
bin_path: /usr/local/bin/git
sudo apt-get install -y postfix – установить почтовый сервер для отправки электронной почты. Настройте следующим образом. Выберите Интернет-сайт и введите имя домена.
- Установите Ruby
GitLab Shell вызывается с помощью OpenSSH, и мы можем запретить существующему менеджеру версий отправлять и получать сообщения с помощью SSH. Менеджеры версий не поддерживаются, и для этого мы должны использовать Ruby. Если существует старый Ruby, сначала удалите его.
sudo apt-get Remove Ruby1.8 – удалить старый Ruby
mkdir /tmp/ruby && cd /tmp/ruby – для загрузки и установки Ruby создайте папку и перейдите в эту папку.
Загрузите и установите в текущий каталог.
curl -L –progress http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.gz | смола xz
cd Ruby-2.1.5/ – войдите в извлеченную папку
./configure –disable-install-rdoc – настроить для компиляции
сделать – Компилировать
sudo make install – Установить
sudo gem install Bundle –no-ri –no-rdoc – установите Bundler GEM
- Пользователи системы
sudo adduser –disabled-login –gecos ‘GitLab’ git – добавить пользователя git для GitLab
- Базы данных
Советы GitLAB для базы данных PostgreSQL. Для использования расширения цели мы будем использовать PostgreSQL9.1. Установите PostgreSQL, создайте базу данных и имя пользователя.
sudo apt-get install -y postgresql postgresql-client libpq-dev – пакеты обновления для базы данных
sudo -u postgres psql -d template1 – вход в PostgreSQL
template1=# CREATE USER git CREATEDB; – создать пользователя базы данных git (template1=# — это приглашение консоли, и его нельзя ввести как команду)
Создайте рабочую базу данных GITLAB и предоставьте к ней полный доступ:
template1=# СОЗДАТЬ БАЗУ ДАННЫХ gitlabhq_production OWNER git;
template1=# \q – выход из консоли базы данных.
sudo -u git -H psql -d gitlabhq_production – попытаться войти в базу данных с уже созданным пользователем
gitlabhq_production=> \q – Выход из консоли базы данных
- Редис
sudo apt-get install redis-server – установите пакет сервера redis.
Предоставьте доступ для использования сокетов Redis:
sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.orig
Измените TCP-порт прослушивателя Redis на 0, чтобы прекратить прослушивание.
sed ‘s/^port .*/port 0/’ /etc/redis/redis.conf.orig | sudo тройник /etc/redis/redis.conf
Запустить сокет Debian/Ubuntu по умолчанию для Redis:
echo ‘unixsocket /var/run/redis/redis.sock’ | sudo tee -a /etc/redis/redis.conf
Предоставьте доступ к этому сокету всем участникам Redis:
echo 'unixsocketperm 770' | sudo tee -a /etc/redis/redis.conf
Создать папку для сокета, предоставить доступ пользователю и группе:
sudo mkdir /var/run/redis
sudo chown redis:redis /var/run/redis
sudo chmod 755 /var/run/redis/
Если папка tempfiles сокетов существует, добавьте строку в файл redis.conf:
if [ -d /etc/tmpfiles.d ]; тогда
echo 'd /var/run/redis 0755 redis redis 10d -' | sudo tee -a /etc/tmpfiles.d/redis.conf
фи
После изменений в redis.conf перезапустите службу:
перезапуск сервера redis-сервера службы sudo
sudo usermod -aG redis git – добавить пользователя git в группу redis.
- Установка и настройка GitLab
cd /home/git # Мы установим GitLab в домашнюю папку пользователя git. Для этого перейдите в эту папку.
Клонируйте исходный код gitlab в локальную папку:
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 7-6-stable gitlab
Настроить:
cd /home/git/gitlab – перейдите в папку установки GitLab
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml – скопировать конфигурацию из файла примера
sudo -u git -H editor config/gitlab.yml – измените начальные строки в файле конфигурации следующим образом. Обратите внимание: скоро мы настроим HTTPS для nginx.
gitlab:
хост: git.domain.lan
порт: 443
https: верно
email_from: [адрес защищен]
Убедитесь, что у вас есть доступ для записи в папки log/ и tmp/:
sudo chown -R git log/
sudo chown -R git tmp/
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX tmp/
Создать папку и предоставить доступ для Спутника:
sudo -u git -H mkdir /home/git/gitlab-satellites
sudo chmod u+rwx,g=rx,o-rwx /home/git/gitlab-satellites
Убедитесь, что у GitLab есть доступ для записи в папки tmp/pids/ и tmp/sockets/:
sudo chmod -R u+rwX tmp/pids/
sudo chmod -R u+rwX tmp/sockets/
Убедитесь, что у GitLab есть доступ для записи в папку public/uploads/:
sudo chmod -R u+rwX public/uploads
Скопируйте файл конфигурации единорога:
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
nproc – определение количества ядер ЦП
4
Если у вас много нагрузок, активируйте режим кластера. Если ваша оперативная память составляет 4 ГБ, установите количество worker_processes равным количеству CORE:
sudo -u git -H редактор config/unicorn.rb
Скопируйте файл конфигурацииrack_attack:
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
Настройте глобальную конфигурацию Git для пользователя git. Это необходимо, когда вы будете настраивать через веб-браузер. Измените user.email, как мы это сделали в файле конфигурации gitlab.yml:
sudo -u git -H git config –global user.name «GitLab»
sudo -u git -H git config –global user.email «[электронная почта защищена]»
sudo -u git -H git config –global core.autocrlf input
Настройте соединение Redis:
sudo -u git -H cp config/resque.yml.example config/resque.yml
Если вы не используете сокет по умолчанию в Debian/Ubuntu-da, вы можете изменить путь в следующем файле.
Важное примечание. Убедитесь, что конфигурации gitlab.yml и unicorn.rb одинаковы.
Конфигурация базы данных GitLab
Скопировать файл конфигурации для PostgreSQL
sudo -u git cp config/database.yml.postgresql config/database.yml
Для PostgreSQL и MySQL измените конфигурацию в следующем файле:
настройте имя пользователя и пароль в файле конфигурации config/database.yml. Мы должны написать базу данных, имя пользователя и пароль, о которых говорилось на первом этапе. Если вы изменили пароль, напишите новый пароль в директиве пароля. Вы можете писать в одинарных кавычках ”
sudo -u git -H редактор config/database.yml
Для PostgreSQL и MySQL. Измените доступ на чтение для пользователя git к файлу config/database.yml:
sudo -u git -H chmod o-rwx config/database.yml
Установить GEMS
Примечание. Для Bundler 1.5.2 вы можете использовать команду bundle install -jN (N – количество ядер ЦП. Вы можете найти ядра с помощью nproc > команда). Это делает нашу работу на 60% быстрее. Но убедитесь, что у вас установлена версия 1.5.2 новее. Вы можете проверить это с помощью команды bundle -v.
bundle -v – Моя версия была
Связчик версии 1.7.9
# Для PostgreSQL (эта опция указывает на установку без MySQL)
sudo -u git -H Bundle install –deployment –без тестирования разработки mysql aws
Установите GitLab Shell
GitLab Shell — это специально написанная для GitLab программа, которая используется для предоставления доступа к SSH и управления репозиторием. Для установки gitlab-shell используйте следующую команду (если вы изменили `redis path`, вы должны изменить это здесь). Напишите команду в одну строку
sudo -u git -H Bundle exec rake gitlab:shell:install[v2.4.0] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production
По умолчанию конфигурация gitlab-shell генерируется из основной конфигурации Gitlab. Вы можете просмотреть конфигурацию оболочки GitLab с помощью следующей команды.
sudo -u git -H editor /home/git/gitlab-shell/config.yml – вывод команды
пользователь: git
gitlab_url: https://git.domain.lan/
http_settings:
self_signed_cert: правда
repos_path: «/home/git/repositories/»
auth_file: «/home/git/.ssh/authorized_keys»
редис:
bin: «/usr/bin/redis-cli»
пространство имен: resque:gitlab
сокет: «/var/run/redis/redis.sock»
уровень_журнала: ИНФОРМАЦИЯ
имя_пользователя_аудит: ложь
Инициализируйте базу данных и активируйте функциональные возможности
sudo -u git -H Bundle exec rake gitlab:setup RAILS_ENV=production
Для создания таблиц базы данных напишите да и кнопку ENTER. После вы увидите следующие строки:
Учетная запись администратора создана:
вход………root
пароль……5iveL!fe
Примечание. Вы можете изменить пароль администратора, используя переменную пути GITLAB_ROOT_PASSWORD. Конечно, это возможно и через Интернет.
sudo -u git -H Bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=newpassword
Установить сценарий инициализации
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab – скопируйте сценарий инициализации в путь к сценариям запуска.
Если вы устанавливаете из другой папки, чем по умолчанию, скопируйте из этой папки. Но мы установили из папки по умолчанию.
sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab
Если вы устанавливаете GitLab от другого пользователя и из другой папки, чем по умолчанию, вам необходимо изменить эти конфигурации в файле /etc/default/gitlab . Обратите внимание: в файле /etc/init.d/gitlab ничего не меняйте, поскольку этот файл изменится автоматически.
sudo update-rc.d gitlab defaults 21 – добавьте GitLab в автозагрузку
ЛогРотасиясини ише салирик:
sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab – скопировать файл logrotate
Проверьте статус программы. Проверьте GitLab и его среду:
sudo -u git -H Bundle Exec Rake gitlab:env:info RAILS_ENV=production
Собрать активы:
sudo -u git -H Bundle exec rake assets:precompile RAILS_ENV=production
Запустите сервис GitLab:
запуск службы sudo gitlab
Или
sudo /etc/init.d/gitlab перезапустить
- Установите и настройте nGinx
nginx официально поддерживается GitLab. Если вы хотите использовать веб-сервер, отличный от nginx, проверьте портал GitLab об этом веб-сервере.
Установка:
sudo apt-get install -y nginx
Конфигурация сайта:
Скопируйте шаблон конфигурации сайта по пути и создайте ссылку на него (gitlab для HTTP и gitlab-ssl для HTTPS)
Для HTTP
sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
Для HTTPS:
sudo cp lib/support/nginx/gitlab-ssl /etc/nginx/sites-available/gitlab-ssl
sudo ln -s /etc/nginx/sites-available/gitlab-ssl /etc/nginx/sites-enabled/gitlab-ssl
Отредактируйте файлы конфигурации, которые вы выбрали:
редактор sudo /etc/nginx/sites-available/gitlab – для HTTP этого файла
редактор sudo /etc/nginx/sites-available/gitlab-ssl – я выбрал HTTPS
Важные строки конфигурации должны быть правильно настроены для вашего имени записи DNS A:
upstream gitlab {
server unix:/home/git/gitlab/tmp/sockets/gitlab.socket fail_timeout=0;
}
server {
listen 10.50.3.206:80;
server_name git.domain.lan;
server_tokens off;
return 301 https://$server_name$request_uri;
access_log /var/log/nginx/gitlab_access.log;
error_log /var/log/nginx/gitlab_error.log;
}
server {
listen 10.50.3.206:443 ssl;
server_name git.domain.lan;
server_tokens off; root /home/git/gitlab/public;
client_max_body_size 20m;
ssl on;
We will create SSL certificates
ssl_certificate /etc/nginx/ssl/gitlab.crt;
ssl_certificate_key /etc/nginx/ssl/gitlab.key;
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_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
access_log /var/log/nginx/gitlab_access.log;
error_log /var/log/nginx/gitlab_error.log;
location / {
try_files $uri $uri/index.html $uri.html @gitlab;
}
location @gitlab {
gzip off;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
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_set_header X-Frame-Options SAMEORIGIN;
proxy_pass http://gitlab;
}
location ~ ^/(assets)/ {
root /home/git/gitlab/public;
gzip_static on;
expires max;
add_header Cache-Control public;
}
error_page 502 /502.html;
}
Когда вы создали сертификаты по правильному адресу, проверьте статус nginx с помощью следующей команды. Вы должны увидеть тот же ответ:
sudo nginx -t
nginx: синтаксис файла конфигурации /etc/nginx/nginx.conf в порядке
nginx: тест файла конфигурации /etc/nginx/nginx.conf прошел успешно
Перезапустите службу nGinx:
перезапуск службы sudo nginx
Создать сертификат для HTTPS:
Точно выполните следующие шаги.
В файле yml.
- измените порт на 443
- В первом разделе измените https на true.
В файле yml.
- Параметр для gitlab_url установлен как https (https://git.domain.lan)
В файле конфигурации nGinx измените gitlab на gitlab-ssl.
- Напишите правильный FQDN сервера.
- Создайте самоподписанный сертификат:
sudo mkdir -p /etc/nginx/ssl/
cd /etc/nginx/ssl/
sudo openssl req -newkey rsa:2048 -x509 -nodes -days 3560 -out gitlab.crt -keyout gitlab.key
Название страны (2-буквенный код) [AU]:AZ
Название штата или провинции (полное название) [Some-State]:Баку
Название населенного пункта (например, город) []:ЕниЯсамал
Название организации (например, компания) [Internet Widgits Pty Ltd]:ДОМЕН
Название организационного подразделения (например, раздел) []:IT
Общее имя (например, полное доменное имя сервера или ВАШЕ имя) []:git.domain.lan
Адрес электронной почты []:[адрес электронной почты защищен]
sudo chmod или gitlab.key
- В оболочке gitlab для файла yml измените параметр self_signed_cert на true.
Проверьте состояние программы еще раз
Еще раз проверьте состояние всех конфигураций:
cd /home/git/gitlab
sudo -u git -H Bundle exec rake gitlab:check RAILS_ENV=production
Результат должен быть следующим:
Версия Redis >= 2.0.0? … да
Рубиновая версия >= 2.0.0? … да (2.1.5)
Ваш путь к git bin — «/usr/bin/git»
Версия Git >= 1.7.10? … да (1.9.1)
Проверка GitLab… Завершено
Примечание. При установке переменной среды SANITIZE=true вы заблокируете вывод данных о проектах при использовании gitlab:check команда. Откройте ссылку https://git.domain.lan в своем браузере, указав следующие логин и пароль, и измените пароль.
логин: root
пройти: 5iveL!fe
Затем нажмите кнопку Войти и измените пароль следующим образом:
Вы можете перезапустить, остановить или запустить службы с помощью следующих команд.
перезапуск службы sudo gitlab
[sudo] пароль для Джамала:
Закрытие Unicorn и Sidekiq.
GitLab не работает.
Запускаем GitLab Unicorn и Sidekiq.
Веб-сервер GitLab Unicorn с идентификатором pid 28862 запущен.
Диспетчер заданий GitLab Sidekiq с идентификатором pid 28904 запущен.
GitLab и все его компоненты запущены и работают.
Вы можете изменить соединения Redis в соответствии со своими требованиями:
Если вы хотите подключиться к Redis с другим хостом и портом, измените конфигурацию в файле config/resque.yml.
# Пример
производство: redis://redis.example.tld:6379
Если вы хотите подключиться к Redis с помощью сокета «unix:», измените файл конфигурации config/resque.yml следующим образом:
# Копировать
производство: unix:/path/to/redis/socket
Другое соединение SSH
Если вы изменили порт прослушивания SSH, вам необходимо изменить конфигурацию SSH для пользователя GitLab.
Добавьте следующие строки в файл /home/git/.ssh/config
локальный хост хоста # имя хоста
user git # имя пользователя удаленного git
порт 2222 # номер порта SSH
имя хоста 127.0.0.1; # Имя или IP-адрес сервера
Конечно, вы должны изменить правильные конфигурации в файле config/gitlab.yml для параметров ssh_user, ssh_host, admin_uri.
Регистрация MSLDAP
Если мы хотим аутентифицировать пользователей GitLAB на контроллере домена нашей компании, мы должны изменить в файле config/gitlab.yml правильные конфигурации для подключения к DC и проверки пользователей.
cd /home/git/gitlab – перейдите в папку конфигурации
sudo -u git editor config/gitlab.yml – измените конфигурацию LDAP следующим образом.
ldap:
включено: истина
серверы:
главное:
метка: ‘LDAP’
хост: ‘domain.lan’
порт: 636
uid: ‘sAMAccountName’
метод: ‘ssl’ # «tls» или «ssl» или «plain»
bind_dn: ‘CN=DCADM,CN=Users,DC=domain,DC=lan’
пароль: ‘DC_PASSWORD’
active_directory: истина
allow_username_or_email_login: false
база: ‘DC=domain,DC=lan’
user_filter: '(memberOf=CN=GITUsers,OU=DOMAINTech Groups,OU=DOMAINTech,DC=domain,DC=lan)'
sudo /etc/init.d/gitlab restart – перезапустить службу Gitlab
Проверьте конфигурации LDAP. Мы должны видеть пользователей.
sudo -u git -H Bundle exec rake gitlab:ldap:check RAILS_ENV=production
Проверка LDAP…
Пользователи LDAP с доступом к вашему серверу GitLab (показаны только первые 100 результатов)
Сервер: ldapmain
DN: CN=Эльданиз Ибрагимов,OU=DOMAINTech Users,OU=DOMAINTech,DC=domain,DC=lan sAMAccountName: eldaniz
DN: CN=Джамал Шахвердиев,OU=DOMAINTech Users,OU=DOMAINTech,DC=domain,DC=lan sAMAccountName: jamal
DN: CN=Сукур Рзаев,OU=DOMAINTech Users,OU=DOMAINTech,DC=domain,DC=lan sAMAccountName: SukurR
DN: CN=Musaqil Musabeyli,OU=DOMAINTech Users,OU=DOMAINTech,DC=domain,DC=lan sAMAccountName: MusaqilM
DN: CN=Хидаят Солтанзаде,OU=DOMAINTech Пользователи,OU=DOMAINTech,DC=домен,DC=lan sAMAccountName: HidayatS
DN: CN=Алакбар Велизаде,OU=DOMAINTech Пользователи,OU=DOMAINTech,DC=домен,DC=lan sAMAccountName: AlakbarV
DN: CN=Руфат Бабакишиев,OU=DOMAINTech Users,OU=DOMAINTech,DC=domain,DC=lan sAMAccountName: RufatBa
DN: CN=Джавид Исмаилзаде,OU=DOMAINTech Пользователи,OU=DOMAINTech,DC=domain,DC=lan sAMAccountName: JavidI
DN: CN=Юнис Бабаев,OU=DOMAINTech Users,OU=DOMAINTech,DC=domain,DC=lan sAMAccountName: YunisB
DN: CN=Ровшан Багиров,OU=DOMAINTech Users,OU=DOMAINTech,DC=domain,DC=lan sAMAccountName: RovshanB
Проверка LDAP… Завершено
В конце перейдите по ссылке https://git.domain.lan и войдите в систему под именем пользователя DC следующим образом:
Теперь программисты могут синхронизировать свои исходные коды из выбранной папки на наш сервер.
В конце еще раз отмечу. В параметре файла конфигурации /home/git/gitlab/config/gitlab.yml для bin_path двоичный путь должен соответствовать вашей системе git(/usr/ local/bin/git).