2 варианта установки GitLab и настройка быстродействия
GitLab – это инструмент для создания и управления Git репозиториями. Настройка непрерывной интеграции (Continuous Integration — CI) описана в статье GitLab CI/CD. После установки сервиса Gitlab мы получим бесплатный приватный GIT репозиторий и бесплатный CI/CD.
Старайтесь придерживаться концепции 1 VPS - 1 роль (сервис), не нужно загромождать разными службами (задачами) один и тот же сервер.
Минимальные системные требования для запуска сервиса GitLab
Минимальные это значит, что вы GitLab запустите, но вот будет ли он работать? Итак: 2 ядра и 4 ОЗУ. GitLab рекомендуется устанавливать на выделенный VPS c 4 ядрами и 8 ГБ оперативной памяти и быстрые диски (много операций ввода-вывода на диск). Разработчики настоятельно рекомендуют перед установкой настроить SWAP на 50% доступной памяти, мотивируя тем что и без свапа будет работать, но может упасть!!! :( Достаточно ли хороша производительность вашей системы для запуска GitLab в ограниченной среде можно проверить при помощи утилит в разделе Как измерить производительность VPS (bench).
PostgreSQL — единственная поддерживаемая база данных, которая входит в пакет Omnibus GitLab. Вы также можете использовать внешнюю базу данных PostgreSQL (поддержка MySQL была удалена в GitLab 12.1).
Какую редакция GitLab выбрать или gitlab-ee vs gitlab-ce
GitLab предлагает две разные версии: Community Edition (CE) и Enterprise Edition (EE). Разница gitlab-ee заключается в поддержке, которую вы получаете от GitLab B.V. и если в будущем вы захотите перейти на платный уровень, то вам не придется переустанавливать GitLab.
Существует 2 версии
- Enterprise Edition (Документация по установке gitlab-ee)
- Community Edition (Очень спрятанная ссылка по установке gitlab-ce)
Вариант установки 1: На чистый VPS или облачный сервис
Как я писал выше, если вы используйте практику 1 сервер - 1 задача, то проблем с установкой GitLab. GitLab при установке подтягивает все нужные зависимости, например Nginx, PostgreSQL. Приведу пример для установки gitlab-ce то есть версии Community Edition.
Предварительно нужно только настроить домен, указывающий на ваш сервер (то есть прописать А запись в DNS). Это важно, потому что сервис GitLab будет самостоятельно пытаться получить SSL сертификат Let’s Encrypt в процессе установки. В этой статье как пример используется домен your_domain, не забудьте заменить его на ваше доменное имя.
- Установка зависимостей:
apt update apt install ca-certificates curl openssh-server postfix tzdata perl
- Настройте брандмауэра, вам нужно открыть порты 80 и 443. На чистых VPS, обычно фаервол полностью открыт, поэтому этот шаг можете пропустить.
- Установка GitLab CE, первой командой добавим репозитории:
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash apt install gitlab-ce
- Настройка GitLab в файле /etc/gitlab/gitlab.rb, измените 2 параметр: ваш домен и почту для SSL сертификата
external_url 'https://your_domain' letsencrypt['contact_emails'] = ['8host@example.com']
После внесения изменений сохраните и закройте файл.
- Обновим параметры GitLab:
gitlab-ctl reconfigure
Команда инициализирует GitLab, используя информацию о вашем сервере. Это полностью автоматизированный процесс, поэтому вам не придется предпринимать какие-либо действия. Также будет настроен SSL сертификат Let’s Encrypt для указанного вами домена.
- GitLab сгенерирует для вас безопасный пароль, который находится в файле /etc/gitlab/initial_root_password (пароль нужно изменить сразу после входа в систему). Дальнейшая настройка через происходит через веб-интерфейс в браузере по адресу
https://your_domain
Всё! Измените пароль и имя пользователя так как по умолчанию учетной записи администратора GitLab присваивается имя root (Users Settings → Account).
Вариант установки 2: За GitLab находится Nginx
Этот вариант, когда у вас на сервере уже что-то установлено, но вы вынуждены установить еще и GitLab (чтобы окончательно убить ваш сервер ). И так, у нас уже установлен Nginx, как-то он настроен и нам нужно за ним установить GitLab. Мы будем использовать установку GitLab EE (gitlab-ee), которая работает за сервером Nginx, который будет выполнять обратное проксирование и осуществлять обработку SSL-трафика.
- Добавляем репозиторий в систему и устанавливаем GitLab EE:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash apt install gitlab-ee
- Конфигурационный файл GitLab /etc/gitlab/gitlab.rb. Меняем параметры:
# Укажите своё доменное имя и протокол: external_url 'example.domain' -> external_url 'http://gitlab.<ваш_домен>' # выключаем встроенный nginx nginx['enable'] = true -> nginx['enable'] = false # пользователь, от имени которого работает веб-сервер web_server['external_users'] = [] -> web_server['external_users'] = ['www-data'] # параметр для определения IP адресов проксируемого сервера gitlab_rails['trusted_proxies'] = [ '127.0.0.1', '<внешний IP адрес сервера>' ] # протокол для работы с веб-сервером gitlab_workhorse['listen_network'] = "unix" # интерфейс и порт для прослушивания gitlab_workhorse['listen_addr'] = "/var/opt/gitlab/gitlab-workhorse/socket"
- Реконфигурируем GitLab:
gitlab-ctl reconfigure
- Скачиваем с GIT подготовленный Balasankar "Balu" файл конфигурации виртульного хостинга для Nginx. В нем нужно поменять только server_name и после этого перегрузить Nginx.
- Обязательно выпустить SSL сертификат, иначе возможна ошибка "422 The change you requested was rejected. Make sure you have access to the thing you tried to change." Для выпуска сертификата я использую Certbot.
- Всё! Заходим на нашу страницу, вводим логин root и пароль из файла /etc/gitlab/initial_root_password, который мы нашли до этого, и настраиваем аккаунт администратора.
Настройка производительности или запуск GitLab на слабом сервере
Ознакомитесь с официальная документация по настройке производительности GitLab Running GitLab in a memory-constrained environment. Я же пробегусь кратко. Если не сказано обратного, тюнинг делаем в файле /etc/gitlab/gitlab.rb изменяя указанные ниже параметры.
- Обязательно включите SWAP на любом сервере даже на супер супер выделенном сервере.
- Для Puma отключаем режим Clustered - нам хватит и 1 запущенного процесса Puma.
puma['worker_processes'] = 0
Это должно освободить 100-400 МБ памяти.
- Оптимизировать Sidekiq по умолчанию 50 параллельных потоков, а мы уменьшим в 10 раз :)
sidekiq['max_concurrency'] = 5
- Оптимизация службы хранения Gitaly, обеспечивающая эффективный доступ к репозиториям на основе Git. Ее пока не трогаем, потому что настройки устарели с 15.10 и был удалены в 16.0.
- Отключаем мониторинг. Некоторые службы по умолчанию, такие как мониторинг, не обязательны для работы GitLab и могут быть отключены для экономии памяти.
prometheus_monitoring['enable'] = false
- Настроим GitLab на освобождение памяти сразу после того, как она больше не нужна, вместо того, чтобы удерживать ее в течение более длительного времени. Эти строки нужно добавить, в файле их нет.
gitlab_rails['env'] = { 'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000' } gitaly['env'] = { 'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000' }
После внесения всех этих изменений перенастройте GitLab, чтобы использовать новые настройки:
gitlab-ctl reconfigure
Cразу после установки сервисов Gitlab
# free -h total used free shared buff/cache available Mem: 5.8Gi 4.9Gi 194Mi 128Mi 765Mi 568Mi Swap: 2.0Gi 2.0Mi 2.0Gi
И после примененных вышеприведённых настроек оптимизации, как видим они впечатляют:
total used free shared buff/cache available Mem: 5.8Gi 2.7Gi 2.1Gi 116Mi 1.1Gi 2.8Gi Swap: 2.0Gi 6.0Mi 2.0Gi
Как сбросить пароля пользователю root в GitLab
Для сбрасывания пароля от пользователя root в GitLab, используем консоль Rails, запускаем её:
gitlab-rails console
На следующем этапе нам нужно узнать настоящий логин пользователя root (ведь вы его могли переименовать). Пользователья с правами root всегда будет первым. И в итоге получается так:
irb(main):007:0> user = User.find(1) => #<User id:1 @root> irb(main):014:0> user.password = 'New_Password' => "New_Password" irb(main):015:0> user.password_confirmation = 'New_Password' => "New_Password" irb(main):016:0> user.save! => true
Если все хорошо, консоль выведет true, после этого можете логинеться как обычно через веб-интерфейс GitLab.
Заключение
На этом этапе у нас есть рабочий экземпляр GitLab, который размещен на сервере. Вы можете начать импортировать или создавать новые проекты, настраивать соответствующий уровень доступа, конфигурировать GitLab Runner CI/CD.
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!
7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах