Как установить Gitlab на Rocky Linux 9
GitLab Server — это версия облачного контроля версий GitLab с открытым исходным кодом, используемая для размещения репозиториев Git. Преимущество самостоятельного размещения ваших репозиториев перед облачным хостингом заключается в полном контроле над вашим кодом. Он обладает всеми функциями, которые вы можете найти в облачном сервисе, что делает его полезным инструментом для вашей команды разработчиков. Он также поставляется с чат-сервисом Mattermost, который позволяет вашим пользователям общаться друг с другом и обмениваться обзорами кода.
Это руководство научит вас, как установить GitLab Server с помощью Docker на сервер Ubuntu 22.04. GitLab предлагает две версии — бесплатную версию Community и платную версию Enterprise. Мы будем устанавливать версию Community. Вы можете обновить его до версии Enterprise, если вам нужны дополнительные функции.
Предварительные условия
Сервер под управлением Rocky Linux 9, минимум 4 ГБ ОЗУ и 4 ядрами ЦП для поддержки до 500 пользователей.
Пользователь без полномочий root с привилегиями sudo.
Доменное имя, настроенное для указания на сервер, gitlab.example.com
. В зависимости от ваших требований мы также будем использовать mattermost.example.com
и pages.example.com
.
Все обновляется.
$ sudo dnf update
Несколько пакетов, которые нужны вашей системе.
$ sudo dnf install -y wget nano unzip yum-utils policycoreutils-python-utils
Некоторые из этих пакетов могут уже быть установлены в вашей системе.
Шаг 1. Настройка брандмауэра
Прежде чем устанавливать какие-либо пакеты, первым делом необходимо настроить брандмауэр на открытие портов для HTTP и HTTPS. Rocky Linux использует межсетевой экран Firewalld. Проверьте состояние брандмауэра.
$ sudo firewall-cmd --state
running
Брандмауэр работает с разными зонами, и общедоступная зона — это зона по умолчанию, которую мы будем использовать. Перечислите все службы и порты, активные на брандмауэре.
$ sudo firewall-cmd --zone=public --list-all
Он должен показать следующий вывод.
public
target: default
icmp-block-inversion: no
interfaces: enp1s0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Откройте порты HTTP и HTTPS в брандмауэре.
$ sudo firewall-cmd --zone=public --add-service=http
$ sudo firewall-cmd --zone=public --add-service=https
Еще раз проверьте состояние брандмауэра.
$ sudo firewall-cmd --zone=public --list-all
Вы должны увидеть аналогичный результат.
public
target: default
icmp-block-inversion: no
interfaces: enp1s0
sources:
services: cockpit dhcpv6-client http https ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Сделайте все изменения постоянными и перезагрузите брандмауэр, чтобы изменения вступили в силу.
$ sudo firewall-cmd --runtime-to-permanent
$ sudo firewall-cmd --reload
Шаг 2 — Установите зависимости
Перед установкой GitLab важно установить пакеты, необходимые GitLab для правильной работы. Все эти пакеты доступны в репозитории Rocky Linux.
Введите следующую команду, чтобы установить зависимости.
$ sudo dnf install -y curl policycoreutils openssh-server perl
GitLab требуется работающее решение для электронной почты для отправки уведомлений по электронной почте. Есть два варианта одного и того же. Один из них — установка Postfix. И второй — использовать внешний SMTP-сервис. Если вы хотите использовать опцию Postfix, установите ее, используя команду ниже.
$ sudo dnf install postfix
Во время установки вас могут спросить о типе сайта. Для продолжения выберите Интернет-сайт, а затем добавьте полное доменное имя вашего сервера для имя почты
и нажмите Enter, чтобы продолжить. Если вы видите какие-либо дополнительные экраны, продолжайте нажимать клавишу Ввод, чтобы выбрать параметры по умолчанию.
Вам понадобится гораздо больше, чтобы настроить Postfix в качестве SMTP-сервера, инструкции для которого выходят за рамки этой статьи. В GitLab есть статья о настройке Postfix, которую вы можете просмотреть.
Шаг 3. Установите GitLab
Загрузите и запустите скрипт установщика репозитория GitLab.
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
Не обращайте внимания на предупреждение об отсутствующем пакете pygpgme
, поскольку он недоступен в Rocky Linux 9.
GitLab поставляется с множеством пакетов, что значительно упрощает управление им. Например, GitLab поставляется с веб-сервером Nginx и поддерживает создание SSL-сертификатов Let's Encrypt.
Если во время установки вы укажете внешний URL-адрес для своего веб-сайта GitLab, он будет настроен автоматически, а сертификаты SSL будут сгенерированы и применены. Вы также можете указать пароль администратора во время установки. Если вы этого не сделаете, GitLab сгенерирует временный пароль, который будет автоматически удален через день.
Мы укажем как внешний URL, так и пароль администратора. Запустите следующую команду, чтобы установить GitLab.
$ sudo GITLAB_ROOT_PASSWORD="<strongpassword>" EXTERNAL_URL="https://gitlab.example.com" dnf install -y gitlab-ee
Выберите надежный пароль для вашей установки. Здесь мы устанавливаем версию GitLab Enterprise (gitlab-ee
). Если вы не купите лицензию и не подадите заявку на ее получение, она будет работать так же хорошо, как и ее бесплатная версия Community Edition. Но если вы установите версию Community (gitlab-ce
), вам придется снова установить версию Enterprise для обновления. Поэтому мы рекомендуем использовать версию Enterprise, даже если вы не хотите обновляться.
После завершения установки вы должны получить аналогичный результат.
Notes:
Default admin account has been configured with following details:
Username: root
Password: You didn't opt-in to print initial root password to STDOUT.
NOTE: Because these credentials might be present in your log files in plain text, it is highly recommended to reset the password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
gitlab Reconfigured!
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
GitLab should be available at https://gitlab.example.com
For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
Help us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=16-9
Verifying : gitlab-ee-16.9.1-ee.0.el9.x86_64 1/1
Installed:
gitlab-ee-16.9.1-ee.0.el9.x86_64
Complete!
Вы также можете установить определенную версию GitLab. Сначала проверьте список доступных версий GitLab.
$ sudo dnf --showduplicates list gitlab-ee*
Вы должны получить аналогичный результат.
Available Packages
gitlab-ee.x86_64 16.0.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.8-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.8-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.9-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.8-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.8.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.8.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.8.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.8.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.9.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.9.1-ee.0.el9 gitlab_gitlab-ee
Давайте установим версию 16.7.0
.
$ sudo GITLAB_ROOT_PASSWORD="<strongpassword>" EXTERNAL_URL="https://gitlab.example.com" dnf install -y gitlab-ee-16.7.0-ee.0.el9
Проверьте статус GitLab и связанных с ним сервисов.
$ sudo gitlab-ctl status
Вы должны увидеть следующий вывод.
run: alertmanager: (pid 6551) 1013s; run: log: (pid 6306) 1093s
run: crond: (pid 6507) 1018s; run: log: (pid 5663) 1251s
run: gitaly: (pid 6479) 1020s; run: log: (pid 5297) 1419s
run: gitlab-exporter: (pid 6522) 1016s; run: log: (pid 6183) 1118s
run: gitlab-kas: (pid 5553) 1400s; run: log: (pid 5566) 1399s
run: gitlab-workhorse: (pid 6455) 1021s; run: log: (pid 5766) 1233s
run: logrotate: (pid 5181) 1434s; run: log: (pid 5189) 1433s
run: nginx: (pid 6470) 1021s; run: log: (pid 5806) 1227s
run: node-exporter: (pid 6515) 1017s; run: log: (pid 6150) 1124s
run: postgres-exporter: (pid 6563) 1013s; run: log: (pid 6351) 1087s
run: postgresql: (pid 5360) 1411s; run: log: (pid 5385) 1408s
run: prometheus: (pid 6532) 1016s; run: log: (pid 6268) 1100s
run: puma: (pid 5666) 1247s; run: log: (pid 5673) 1246s
run: redis: (pid 5227) 1428s; run: log: (pid 5236) 1427s
run: redis-exporter: (pid 6524) 1016s; run: log: (pid 6233) 1110s
run: registry: (pid 6480) 1020s; run: log: (pid 5956) 1165s
run: sidekiq: (pid 5692) 1241s; run: log: (pid 5700) 1240s
Вы можете остановить и запустить GitLab, используя следующие команды.
$ sudo gitlab-ctl stop
$ sudo gitlab-ctl start
GitLab должен быть запущен и работать.
Вы также можете остановить и запустить отдельную службу, используя следующие команды.
$ sudo gitlab-ctl stop nginx
$ sudo gitlab-ctl start nginx
$ sudo gitlab-ctl restart nginx
Вы можете получить доступ к своей установке GitLab, посетив https://gitlab.example.com
в браузере. Мы вернемся к настройке GitLab на следующих шагах.
Шаг 4. Настройте SSL
GitLab хранит свою конфигурацию в файле /etc/gitlab/gitlab.rb
. Откройте его для редактирования.
$ sudo nano /etc/gitlab/gitlab.rb
Найдите раздел Let's Encrypt Integration
и измените значения, как показано ниже.
letsencrypt['contact_emails'] = ['[email '] # This should be an array of email addresses to add as contacts
letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"
Это включает Let's Encrypt, устанавливает адрес электронной почты для получения уведомлений об истечении срока действия SSL и устанавливает автоматическое обновление сертификатов каждый 7-й день месяца в 12:30 по серверному времени.
Включить директиву DHParam
Создайте сертификат группы Диффи-Хеллмана.
$ sudo openssl dhparam -dsaparam -out /etc/gitlab/ssl/dhparams.pem 4096
Установите следующий параметр в файле.
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem" # Path to dhparams.pem, eg. /etc/gitlab/ssl/dhparams.pem
Отключить строгую транспортную безопасность HTTP (HSTS)
Включение HTTPS автоматически включает службу HSTS. Иногда это может вызвать проблемы, когда в дальнейшем это вам не понадобится. Чтобы отключить HSTS, настройте следующие переменные.
nginx['hsts_include_subdomains'] = false
Закончив, сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Переконфигурируйте GitLab с новыми настройками.
$ sudo gitlab-ctl reconfigure
Этот процесс может занять некоторое время. После завершения вы сможете получить доступ к своей установке GitLab, посетив https://gitlab.example.com
в браузере. Вас должна приветствовать следующая страница входа.
Шаг 5 — Настройка SMTP
GitLab необходимо отправлять уведомления по электронной почте, и для этого нам нужно включить для него настройки SMTP. Если вы используете Postfix, вы можете пропустить этот шаг. В противном случае, продолжим.
Откройте файл конфигурации GitLab для редактирования.
$ sudo nano /etc/gitlab/gitlab.rb
Для нашего урока мы будем использовать Amazon SES. Найдите в файле раздел SMTP и установите значения, как показано ниже.
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "email-smtp.region-1.amazonaws.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "IAMmailerKey"
gitlab_rails['smtp_password'] = "IAMmailerSecret"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
# If your SMTP server does not like the default 'From: gitlab@localhost' you
# can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = '[email '
gitlab_rails['gitlab_email_display_name'] = 'Howtoforge GitLab'
gitlab_rails['gitlab_email_reply_to'] = '[email '
Вы можете включить пул соединений SMTP, установив следующий параметр.
gitlab_rails['smtp_pool'] = true
Это позволяет работникам Sidekiq повторно использовать SMTP-соединения для нескольких заданий.
Закончив, сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Вы также можете зашифровать данные аутентификации SMTP. Выполните следующую команду.
sudo gitlab-rake gitlab:smtp:secret:edit EDITOR=nano
Введите имя пользователя и пароль SMTP в файл, как показано.
user_name: 'smtp user'
password: 'smtp password'
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Удалите переменные gitlab_rails['smtp_user_name'] и gitlab_rails['smtp_password']
из /etc/gitlab/gitlab.rb
.
После завершения настройки SMTP измените настройки GitLab.
$ sudo gitlab-ctl reconfigure
Шаг 6. Настройте Nginx
Встроенный сервер Nginx GitLab можно настраивать в широких пределах. Мы рассмотрим некоторые важные варианты.
Откройте файл конфигурации GitLab для редактирования.
$ sudo nano /etc/gitlab/gitlab.rb
Перенаправить HTTP на HTTPS.
Измените следующие значения для автоматического перенаправления ссылок HTTP на HTTPS.
nginx['redirect_http_to_https'] = true
Установка заголовка Referrer-Policy
По умолчанию GitLab устанавливает для заголовка Referrer-Policy
значение strict-origin-when-cross-origin
во всех ответах. Настройте следующую переменную, чтобы установить для этого заголовка другое значение.
nginx['referrer_policy'] = 'same-origin'
Вставьте пользовательские настройки Nginx в блок сервера GitLab.
Используйте следующую переменную, чтобы вставить пользовательские настройки в блок сервера GitLab.
# Example: block raw file downloads from a specific repository
nginx['custom_gitlab_server_config'] = "location ^~ /foo-namespace/bar-project/raw/ {\n deny all;\n}\n"
Вставьте пользовательские настройки в конфигурацию Nginx.
Используйте следующий параметр для вставки пользовательских настроек.
# Example: include a directory to scan for additional config files
nginx['custom_nginx_config'] = "include /etc/gitlab/nginx/sites-enabled/*.conf;"
Создайте каталог /etc/gitlab/nginx/sites-available
.
$ sudo mkdir /etc/gitlab/nginx/sites-available
Создайте в нем файл блока.
$ sudo touch /etc/gitlab/nginx/sites-enabled/example.conf
Отредактируйте его и добавьте свои настройки.
$ sudo nano /etc/gitlab/nginx/sites-enabled/example.conf
После завершения вернитесь к терминалу и выполните следующую команду, чтобы создать каталог /etc/gitlab/nginx/sites-enabled
.
$ sudo mkdir /etc/gitlab/nginx/sites-enabled
Запустите следующую команду, чтобы создать символическую ссылку.
sudo ln -s /etc/gitlab/nginx/sites-available/example.conf /etc/gitlab/nginx/sites-enabled/example.conf
Завершив настройку Nginx, сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перенастройте настройки GitLab.
$ sudo gitlab-ctl reconfigure
Шаг 7 — Включите реестр контейнеров
Реестр контейнеров автоматически включается и доступен в вашем домене GitLab, порт 5050, если вы используете встроенную интеграцию Let’s Encrypt.
Откройте файл конфигурации GitLab.
$ sudo nano /etc/gitlab/gitlab.rb
Установите внешний URL-адрес для вашего реестра контейнеров GitLab.
registry_external_url 'https://gitlab.example.com:5050'
Установите перенаправление HTTP на HTTPS, добавив следующую строку ниже приведенной выше.
registry_nginx['redirect_http_to_https'] = true
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перенастройте настройки GitLab.
$ sudo gitlab-ctl reconfigure
Откройте порт 2425 в брандмауэре.
$ sudo firewall-cmd --zone=public --add-port=5050/tcp
$ sudo firewall-cmd --runtime-to-permanent
$ sudo firewall-cmd --reload
Подтвердите с помощью следующей команды.
$ openssl s_client -showcerts -servername gitlab.example.com -connect gitlab.example.com:5050 > cacert.pem
У вас должна быть возможность войти в реестр контейнеров из Docker, используя свои учетные данные GitLab, используя следующую команду.
$ docker login gitlab.example.com:5050
Вы можете использовать другой URL-адрес, например https://registry.gitlab.example.com
, для своего реестра контейнеров, что потребует дополнительной настройки. Вы также можете настроить хранилище S3 для контейнеров. Инструкции см. в документации по реестру контейнеров GitLab.
Шаг 8. Включите страницы GitLab
Вам необходим домен, который не является субдоменом URL-адреса GitLab. В наших целях мы будем использовать https://pages.example.com
для размещения страниц GitLab. Мы также исходим из предположения, что мы не используем Wildcard DNS.
Откройте файл конфигурации GitLab.
$ sudo nano /etc/gitlab/gitlab.rb
Установите следующие переменные, как показано.
pages_external_url 'https://pages.example.com'
.....
# Experimental - Enable namespace in path
gitlab_pages["namespace_in_path"] = true
Настройте Nginx для страниц GitLab в разделе GitLab Pages NGINX
.
# Below you can find settings that are exclusive to "GitLab Pages NGINX"
pages_nginx['enable'] = true
pages_nginx['redirect_http_to_https'] = true
pages_nginx['ssl_certificate'] = "/etc/letsencrypt/live/pages.example.com/fullchain.pem"
pages_nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/pages.example.com/privkey.pem"
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перенастройте настройки GitLab.
$ sudo gitlab-ctl reconfigure
Если вы хотите разместить домен на основе Wildcard DNS, обратитесь к документации GitLab Pages.
Шаг 9 — Включите MatterMost
Mattermost — это служба онлайн-чата с открытым исходным кодом и такими функциями, как обмен файлами, смайлики, GIF-файлы, поддержка уценок, подсветка синтаксиса и многоязычная поддержка. GitLab поставляется с MatterMost, который вы можете включить и позволить пользователям компании, использующим экземпляр GitLab, общаться друг с другом.
GitLab Mattermost отключен по умолчанию. Чтобы включить его, откройте файл конфигурации GitLab.
$ sudo nano /etc/gitlab/gitlab.rb
Добавьте внешний URL-адрес Mattermost. GitLab автоматически сгенерирует SSL для URL-адреса с помощью Let's Encrypt.
mattermost_external_url 'https://mattermost.example.com'
Убедитесь, что для параметра конфигурации HTTP to HTTPS для Mattermost установлено значение true, добавив следующую строку.
mattermost_nginx['redirect_http_to_https'] = true
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перенастройте настройки GitLab.
$ sudo gitlab-ctl reconfigure
У вас должен быть доступ к Mattermost через https://mattermost.example.com
. При запуске URL-адреса вы должны увидеть следующую страницу.
Если у вас установлено приложение Mattermost, нажмите кнопку Просмотр в настольном приложении или выберите вариант кнопки Просмотр в браузере. Обязательно установите флажок Запомнить мои предпочтения, чтобы вас больше не спрашивали. Мы вернемся к настройке Mattermost на следующем шаге.
Настройте SMTP для Mattermost
Mattermost хранит свою конфигурацию в файле /var/opt/gitlab/mattermost/config.json
. Откройте его для редактирования.
$ sudo nano /var/opt/gitlab/mattermost/config.json
Найдите раздел "EmailSettings"
и настройте его, как показано. FeedbackEmail
, ReplyToAddress
, EnableSMTPAuth
, SMTPUsername
, SMTPPassword
, SMTPServer
, SMTPPort
, ConnectionSecurity
и SkipServerCertificateVerification
— это те, которые нам нужно установить, чтобы все работало.
"EmailSettings": {
"EnableSignUpWithEmail": true,
"EnableSignInWithEmail": true,
"EnableSignInWithUsername": true,
"SendEmailNotifications": true,
"UseChannelInEmailNotifications": false,
"RequireEmailVerification": false,
"FeedbackName": "Howtoforge Mattermost",
"FeedbackEmail": "[email ",
"ReplyToAddress": "[email ",
"FeedbackOrganization": "",
"EnableSMTPAuth": true,
"SMTPUsername": "AmazonSESUsername",
"SMTPPassword": "AmazonSESPassword",
"SMTPServer": "email-smtp.us-west-2.amazonaws.com",
"SMTPPort": "465",
"SMTPServerTimeout": 10,
"ConnectionSecurity": "TLS",
"SendPushNotifications": true,
"PushNotificationServer": "https://push-test.mattermost.com",
"PushNotificationContents": "full",
"PushNotificationBuffer": 1000,
"EnableEmailBatching": false,
"EmailBatchingBufferSize": 256,
"EmailBatchingInterval": 30,
"EnablePreviewModeBanner": false,
"SkipServerCertificateVerification": true,
"EmailNotificationContentsType": "full",
"LoginButtonColor": "#0000",
"LoginButtonBorderColor": "#2389D7",
"LoginButtonTextColor": "#2389D7"
},
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Шаг 10. Доступ и настройка GitLab Web
Доступ к GitLab
Откройте URL-адрес https://gitlab.example.com
в своем браузере, и вы увидите следующий экран входа в систему.
Введите root
в качестве имени пользователя и пароля, которые вы получили на предыдущем шаге, чтобы войти в свою панель управления GitLab. При входе в систему вы попадете на следующий экран панели управления.
Как видите, GitLab уже создал проект для мониторинга экземпляра.
Завершите работу GitLab на техническое обслуживание.
Если вы хотите перевести свой экземпляр GitLab на обслуживание во время выполнения серверных задач, используйте следующую команду.
$ sudo gitlab-ctl deploy-page up
cp /opt/gitlab/embedded/service/gitlab-rails/public/deploy.html /opt/gitlab/embedded/service/gitlab-rails/public/index.html
Когда пользователь посещает веб-сайт GitLab, он видит страницу Выполняется развертывание
.
Чтобы удалить страницу, выполните следующую команду.
$ sudo gitlab-ctl deploy-page down
Если вы хотите сделать проекты доступными только для чтения, выполните следующую команду, чтобы открыть консоль Rails.
$ sudo gitlab-rails console
Это выглядит следующим образом.
--------------------------------------------------------------------------------
Ruby: ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux]
GitLab: 16.9.2-ee (0d71d32d321) EE
GitLab Shell: 14.33.0
PostgreSQL: 14.10
------------------------------------------------------------[ booted in 78.60s ]
Loading production environment (Rails 7.0.8)
irb(main):001:0>
Установите для всех проектов доступ только для чтения, используя следующую команду.
Project.all.find_each { |project| project.update!(repository_read_only: true) }
Выйдите из консоли, набрав exit
. Чтобы вернуть проекты в нормальное состояние, используйте следующую команду в консоли.
Project.all.find_each { |project| project.update!(repository_read_only: false) }
Ограничить публичную регистрацию
По умолчанию любой может создать учетную запись и получить доступ. Если вам это не нужно, вы можете отключить его. К счастью, его настройка отображается в виде всплывающего экрана на приборной панели. Нажмите кнопку Отключить, чтобы ограничить публичную регистрацию в вашем экземпляре GitLab. Вы будете перенаправлены на следующую страницу настроек.
Снимите флажок с параметра Регистрация включена, чтобы ограничить их. Нажмите кнопку Сохранить изменения, чтобы применить настройки.
Если вы не видите всплывающее окно на панели управления, вы можете получить доступ к странице настроек, нажав кнопку Площадь администратора в левом нижнем углу меню.
Зайдя в панель администратора, наведите указатель мыши на параметр Настройки на левой боковой панели и выберите подменю Общие. Отсюда вы можете перейти на панель Ограничения регистрации.
Настроить профиль GitLab
Ваш профиль по умолчанию довольно скучен, и в нем нет ничего, что можно было бы показать. Чтобы изменить это, нажмите значок пользователя в верхнем левом углу, чтобы открыть раскрывающееся меню, и выберите параметр Редактировать профиль.
Вы попадете на страницу настроек профиля, где сможете добавить свое имя, адрес электронной почты и другую информацию о себе. Когда закончите, нажмите Обновить настройки профиля. Не возвращайтесь на домашнюю страницу, так как здесь нам нужно настроить еще кое-что.
Изменить корневой пароль
Это один из самых важных шагов. Вам следует немедленно изменить пароль root по умолчанию. В более ранних версиях GitLab требовал, чтобы вы изменили его во время установки, но теперь это стало необязательным. Чтобы изменить пароль, нажмите меню Пароль на левой боковой панели.
Введите данные своего пароля и нажмите Сохранить пароль, чтобы внести изменения. Вы выйдете из своего экземпляра, и вам придется войти снова.
Измените имя пользователя и включите двухфакторную аутентификацию.
Вы можете изменить имя пользователя GitLab по умолчанию с root
на любое по вашему выбору. Для этого нажмите меню Аккаунт на левой боковой панели.
На странице введите новое имя пользователя и нажмите кнопку Обновить имя пользователя, чтобы внести изменения. Вам снова будет предложено подтвердить. Нажмите кнопку Обновить имя пользователя еще раз, чтобы подтвердить изменение.
Вам также следует включить здесь двухфакторную аутентификацию, чтобы повысить безопасность вашей учетной записи.
Отключите метрики Prometheus и улучшите конфиденциальность
На предыдущем шаге мы обсуждали увеличение размера общей памяти для капли и сохранение его на уровне минимум 256 МБ. В основном это требуется для хранения данных, связанных с метриками Prometheus, на диске. Если вы не используете эту функцию, вам следует отключить ее. Сделать это можно только после установки. Чтобы отключить его, откройте Панель администратора в строке меню.
Зайдя в панель администратора, откройте пункт меню Настройки >> Метрики и профилирование.
На странице «Метрики» разверните раздел Метрики — Prometheus и снимите флажок Включить конечную точку показателей работоспособности и производительности. Нажмите кнопку Сохранить изменения, чтобы применить изменения.
GitLab также собирает информацию об использовании при каждой установке. Если вы цените конфиденциальность и не хотите, чтобы это происходило, разверните параметр Статистика использования на той же странице и снимите флажок Включить служебный пинг. Нажмите кнопку Сохранить изменения, чтобы применить изменения.
Настройка Mattermost
Откройте URL-адрес https://mattermost.example.com
, и вы попадете на следующую страницу входа.
Нажмите кнопку GitLab, чтобы зарегистрироваться. Это позволит интегрировать вашу учетную запись Mattermost с вашей учетной записью GitLab. Вы будете перенаправлены на страницу входа в GitLab, где вам нужно будет ввести свои учетные данные и нажать кнопку Войти, чтобы продолжить. Вы попадете на страницу авторизации, показанную ниже.
Нажмите кнопку Авторизовать, чтобы продолжить. Вы вернетесь в приложение Mattermost, которое запрашивает название вашей организации.
Введите название своей организации и нажмите страницу Продолжить. Далее вас спросят, какие инструменты вы используете в работе.
Нажмите значок GitLab, а затем кнопку Продолжить, чтобы продолжить. Вы всегда можете добавить другие инструменты позже. Далее вам будет предложено пригласить членов вашей команды и будет предоставлена ссылка для приглашения.
Сохраните ссылку на будущее и нажмите Завершить настройку, чтобы завершить установку Mattermost. Вы попадете на панель управления Mattermost, откуда сможете начать ее использовать.
GitLab разрешено использовать только для входа в экземпляр Mattermost. Экземпляр Mattermost поставляется с предустановленным плагином GitLab, который может отправлять коммиты и уведомления из вашего репозитория в ваш экземпляр Mattermost. Нам тоже нужно это настроить.
Посетите страницу GitLab >> Редактировать профиль и выберите меню Приложения на левой боковой панели. Вы должны увидеть, что существующее приложение для входа в Mattermost уже зарегистрировано.
Нажмите кнопку Добавить новое приложение, чтобы создать еще одно приложение для плагина GitLab.
Дайте название проекту. Установите https://mattermost.example.com/plugins/com.github.manland.mattermost-plugin-gitlab/oauth/complete
в качестве URI перенаправления. Проверьте параметры Конфиденциально, api и read_user. Чтобы закончить, нажмите кнопку Сохранить заявку внизу страницы.
Вы попадете на следующую страницу. Скопируйте и сохраните Идентификатор приложения и Секрет приложения, которые понадобятся вам позже. Секрет приложения будет показан только один раз, поэтому убедитесь в этом.
Нажмите кнопку Продолжить, чтобы завершить.
Откройте свой сайт Mattermost и нажмите самую верхнюю левую кнопку, чтобы открыть следующее всплывающее меню.
Нажмите кнопку App Marketplace, чтобы открыть следующее всплывающее окно.
Нажмите кнопку Настроить рядом с плагином GitLab, чтобы продолжить.
Введите URL-адрес GitLab, Идентификатор клиента OAuth и Секрет клиента OAuth, созданный ранее, и нажмите кнопку Сохранить. заканчивать.
Теперь каждому пользователю необходимо подключить свою учетную запись GitLab к Mattermost. Посетите канал GitLab на Mattermost и введите следующую команду, чтобы запустить /gitlab Connect
, и нажмите клавишу ввода, и вы получите следующее сообщение.
Нажмите кнопку Ссылка, и вы перейдете на новую страницу с просьбой авторизовать соединение. Нажмите Подключиться, и вы вернетесь на страницу Mattermost, где вы увидите следующее сообщение, подтверждающее соединение.
Шаг 11 — Создание вашего первого проекта
Давайте попробуем создать наш первый проект и отправить коммит.
Добавление вашего SSH-ключа
Прежде чем продолжить, нам следует добавить наш SSH-ключ. Это позволяет нам взаимодействовать с нашей установкой без использования каких-либо паролей. Если у вас есть ключ SSH, вы можете пропустить следующую команду. Если у вас его нет, вы можете создать его с помощью следующей команды.
$ ssh-keygen -t ed25519 -C "gitlab.example.com"
Эта команда является общей для macOS, Linux и Git Bash/WSL в Windows. Примите значения по умолчанию и введите надежную парольную фразу. Мы создаем ключи SSH в терминале Windows Powershell.
Generating public/private rsa key pair.
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\<username>/.ssh/id_ed25519):
Enter same passphrase again:
Your identification has been saved in C:\Users\<username>/.ssh/id_ed25519.
Your public key has been saved in C:\Users\<username>/.ssh/id_ed25519.pub.
SHA256:CI3Ja1LSTN+j4LQnDYkAoP+DvZB8SWrD26zDyUBRbUY gitlab.example.com
+--[ED25519 256]--+
|* ..+E |
|. + / o o |
| o = B o . |
|. o B = S |
|.o X + |
| +X.* |
| .=B o |
+----[SHA256]-----+
Добавьте идентификатор закрытого ключа в агент аутентификации SSH. Убедитесь, что служба Агент аутентификации OpenSSH запущена, если вы используете Windows. Если вы используете Linux или macOS, выполните следующую команду.
$ eval $(ssh-agent -s)
Добавьте ключ.
$ ssh-add C:\Users\<username>/.ssh/id_ed25519
В Linux и macOS команда изменится на
$ ssh-add ~/.ssh/id_ed25519
Вам будет предложено ввести парольную фразу. Введите его и ключ будет добавлен.
Далее нам нужно сохранить эти настройки в файл ~/.ssh/config
. В Windows это будет каталог C:\Users\
. Вставьте следующий код в конец файла.
Host gitlab.example.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_ed25519
В этом файле путь будет одинаковым во всех операционных системах. Сохраните файл.
Далее нам нужно скопировать открытый ключ в нашу учетную запись GitLab. Вы можете отобразить свой открытый ключ с помощью следующей команды. Здесь путь снова будет работать во всех операционных системах.
$ cat ~/.ssh/id_ed25519.pub
Вы получите аналогичный результат.
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGCEIN84O/9tcvE5wsTswY76xeJyY7TwkMW6uCvYulm1 gitlab.example.com
Откройте настройки своего профиля в GitLab и выберите меню Ключи SSH на левой боковой панели.
Вставьте ключ SSH в соответствующее поле и нажмите Добавить ключ, чтобы продолжить. Вам будет предоставлена дата истечения срока действия по умолчанию. Вы можете изменить его в соответствии с вашими потребностями.
Далее нам нужно проверить, успешно ли работает наше SSH-соединение. Запустите следующую команду на терминале вашего ПК.
$ ssh -T [email
Вы получите аналогичный результат. Сначала вам будет предложено добавить ключ SSH в список известных хостов вашей системы. Введите да, чтобы продолжить. Затем вы получите сообщение об успешном подключении к вашему экземпляру GitLab.
The authenticity of host 'gitlab.example.com (178.62.213.105)' can't be established.
ECDSA key fingerprint is SHA256:x1647s5G1iL/cnRFoBuE6qzRZF775fVLZzcLJTGaIvQ.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitlab.example.com,178.62.213.105' (ECDSA) to the list of known hosts.
Welcome to GitLab, @navjot!
Теперь мы можем перейти к созданию нашего первого репозитория и сделать несколько коммитов.
Создание проекта
Каждый репозиторий в GitLab принадлежит проекту. Проект включает в себя репозиторий, систему отслеживания ошибок, запросы на слияние, вики, непрерывную интеграцию, конвейеры непрерывной доставки (CI/CD) и множество других функций.
Чтобы создать свой первый репозиторий, нажмите раздел Создать проект на главной странице.
Вы попадете на страницу «Новый проект», где вам будет предложено несколько вариантов создания нового проекта.
Чтобы продолжить, выберите параметр Создать пустой проект. На следующей странице введите Название проекта. Выберите свое имя пользователя из раскрывающегося меню в разделе URL-адрес проекта в поле Выберите группу или пространство имен. Задайте слаг проекта, если хотите изменить значение по умолчанию. Измените Уровень видимости проекта в соответствии со своими потребностями. Вы можете инициализировать свой репозиторий с помощью файла README
. Если вы хотите, чтобы GitLab анализировал ваш код на наличие уязвимостей безопасности, установите флажок Включить SAST.
Закончив, нажмите Создать проект, чтобы завершить работу. Вы попадете на страницу своего репозитория с одним пустым файлом README.md
.
Теперь, когда наш репозиторий запущен, давайте попробуем добавить журнал изменений из командной строки. Введите следующие команды на своем компьютере, чтобы создать файл CHANGELOG
и отправить его обратно в репозиторий. Убедитесь, что на вашем компьютере установлен Git.
Первым шагом является клонирование репозитория. Клонировать можно с помощью SSH или HTTPS. Клонируйте с помощью SSH. Вам будет предложено ввести парольную фразу.
$ git clone [email :user/howtoforge-test.git
Вы должны увидеть аналогичный результат.
Cloning into 'howtoforge-test'...
Enter passphrase for key '/c/Users/navjo/.ssh/id_ed25519':
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
Введите оставшиеся команды для создания и отправки файла CHANGELOG
.
$ cd howtoforge-test
$ touch CHANGELOG # Or create the file in your editor and enter a project description
$ git add CHANGELOG
$ git commit -m "add Changelog"
[main d6c7a9c] add Changelog
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 CHANGELOG
$ git push -u origin main
Enter passphrase for key '/c/Users/navjo/.ssh/id_ed25519':
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 958 bytes | 958.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To gitlab.example.com:navjot/howtoforge-test.git
523db9a..d6c7a9c main -> main
branch 'main' set up to track 'origin/main'.
Во время команды push вам снова будет предложено ввести парольную фразу.
Вернитесь на страницу своего проекта GitLab, и вы увидите на ней файл CHANGELOG
. Поздравляем! Вы успешно создали свой первый проект и зафиксировали в нем файл.
На этом мы завершаем наш первый проект GitLab.
Шаг 12 — Резервное копирование GitLab
GitLab предоставляет интерфейс командной строки для резервного копирования всего вашего экземпляра, включая базу данных, вложения, данные репозитория, артефакты заданий CI/CD, журналы выходных данных заданий CI/CD, объекты LFS, состояния Terraform, образы реестра контейнеров, содержимое GitLab Pages, пакеты. , фрагменты, групповые вики, различия мерж-реквестов и защищенные файлы на уровне проекта.
Резервные копии не включают данные Mattermost, данные Redis, задания Sidekiq и хранилище объектов.
Запустите следующую команду, чтобы выполнить резервное копирование.
$ sudo gitlab-backup create STRATEGY=copy
Опция STRATEGY=copy
предназначена для предотвращения ошибок в случае быстрого изменения данных. Это скопирует данные во временное место и позволит избежать возможных ошибок.
Вы должны увидеть аналогичный результат.
2024-03-07 11:48:37 UTC -- Dumping database ...
Dumping PostgreSQL database gitlabhq_production ... [DONE]
2024-03-07 11:48:45 UTC -- Dumping database ... done
2024-03-07 11:48:45 UTC -- Dumping repositories ...
{"command":"create","gl_project_path":"navjot/howtoforge-test","level":"info","msg":"started create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git","storage_name":"default","time":"2024-03-07T11:48:45.720Z"}
{"command":"create","gl_project_path":"navjot/howtoforge-test","level":"info","msg":"completed create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git","storage_name":"default","time":"2024-03-07T11:48:45.772Z"}
{"command":"create","gl_project_path":"navjot/howtoforge-test.wiki","level":"info","msg":"started create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git","storage_name":"default","time":"2024-03-07T11:48:45.874Z"}
{"command":"create","gl_project_path":"navjot/howtoforge-test.wiki","level":"info","msg":"completed create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git","storage_name":"default","time":"2024-03-07T11:48:45.894Z"}
2024-03-07 11:48:45 UTC -- Dumping repositories ... done
2024-03-07 11:48:45 UTC -- Dumping uploads ...
2024-03-07 11:48:46 UTC -- Dumping uploads ... done
2024-03-07 11:48:46 UTC -- Dumping builds ...
2024-03-07 11:48:46 UTC -- Dumping builds ... done
2024-03-07 11:48:46 UTC -- Dumping artifacts ...
2024-03-07 11:48:46 UTC -- Dumping artifacts ... done
2024-03-07 11:48:46 UTC -- Dumping pages ...
2024-03-07 11:48:46 UTC -- Dumping pages ... done
2024-03-07 11:48:46 UTC -- Dumping lfs objects ...
2024-03-07 11:48:46 UTC -- Dumping lfs objects ... done
2024-03-07 11:48:46 UTC -- Dumping terraform states ...
2024-03-07 11:48:46 UTC -- Dumping terraform states ... done
2024-03-07 11:48:46 UTC -- Dumping container registry images ...
2024-03-07 11:48:46 UTC -- Dumping container registry images ... done
2024-03-07 11:48:46 UTC -- Dumping packages ...
2024-03-07 11:48:46 UTC -- Dumping packages ... done
2024-03-07 11:48:46 UTC -- Dumping ci secure files ...
2024-03-07 11:48:46 UTC -- Dumping ci secure files ... done
2024-03-07 11:48:46 UTC -- Creating backup archive: 1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar ...
2024-03-07 11:48:46 UTC -- Creating backup archive: 1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar ... done
2024-03-07 11:48:46 UTC -- Uploading backup archive to remote storage ... [SKIPPED]
2024-03-07 11:48:46 UTC -- Deleting old backups ... [SKIPPED]
2024-03-07 11:48:46 UTC -- Deleting tar staging files ...
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/backup_information.yml
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/db
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/repositories
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/uploads.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/builds.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/artifacts.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/pages.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/lfs.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/terraform_state.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/registry.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/packages.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/ci_secure_files.tar.gz
2024-03-07 11:48:46 UTC -- Deleting tar staging files ... done
2024-03-07 11:48:46 UTC -- Deleting backups/tmp ...
2024-03-07 11:48:46 UTC -- Deleting backups/tmp ... done
2024-03-07 11:48:46 UTC -- Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually.
2024-03-07 11:48:46 UTC -- Backup 1709812117_2024_03_07_16.9.1-ee is done.
2024-03-07 11:48:46 UTC -- Deleting backup and restore PID file ... done
Ваш файл резервной копии хранится в каталоге /var/opt/gitlab/backups
.
$ sudo ls /var/opt/gitlab/backups
1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar
Как упоминалось в выводе, ваша конфигурация и секреты GitLab не включены в резервную копию. Скопируйте эти файлы вручную в безопасное место для восстановления.
Скопируйте их.
$ sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json /var/opt/gitlab/backups
Вы можете настроить cron для ежедневного резервного копирования.
Откройте crontab для пользователя root
.
$ sudo su -
$ EDITOR = nano crontab -e
Добавьте в него следующую строку.
0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Параметр CRON=1
позволяет скрыть весь вывод, если ошибок нет. Это помогает ограничить спам cron. Однако если вы выполняете отладку, замените CRON=1
на --trace
, чтобы вести подробный журнал.
Вы можете проверить официальную документацию по резервному копированию GitLab, чтобы узнать больше о дополнительных параметрах и о том, как убедиться, что ваши резервные копии автоматически копируются в S3-совместимый сервис.
Шаг 13 — Восстановление GitLab
Прежде чем восстанавливать GitLab, убедитесь, что вы соответствуете следующим требованиям.
Версия и редакция GitLab должны совпадать с той, из которой была сделана резервная копия.
Вы выполнили команду sudo gitlab-ctl reconfigure
хотя бы один раз.
GitLab должен быть запущен.
Секреты и настройки GitLab необходимо восстановить.
$ sudo cp gitlab.rb gitlab-secrets.json /etc/gitlab
Скопируйте файл резервной копии в каталог /var/opt/gitlab/backups
.
$ sudo cp 1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar /var/opt/gitlab/backups/
Установите правильные разрешения.
$ sudo chown git:git /var/opt/gitlab/backups/1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar
Остановите процессы, подключенные к базе данных. Вы можете оставить остальную часть GitLab работать как обычно.
$ sudo gitlab-ctl stop puma
$ sudo gitlab-ctl stop sidekiq
Проверьте процессы.
$ sudo gitlab-ctl status
run: alertmanager: (pid 68055) 76797s; run: log: (pid 66127) 78476s
run: crond: (pid 68045) 76798s; run: log: (pid 65624) 78566s
run: gitaly: (pid 66424) 78414s; run: log: (pid 65273) 78710s
run: gitlab-exporter: (pid 66466) 78411s; run: log: (pid 66002) 78497s
run: gitlab-kas: (pid 65535) 78691s; run: log: (pid 65547) 78690s
run: gitlab-pages: (pid 68003) 76801s; run: log: (pid 67700) 76996s
run: gitlab-workhorse: (pid 66392) 78415s; run: log: (pid 65727) 78550s
run: logrotate: (pid 106163) 3124s; run: log: (pid 65169) 78724s
run: mattermost: (pid 68027) 76799s; run: log: (pid 67820) 76890s
run: nginx: (pid 72647) 75588s; run: log: (pid 65781) 78544s
run: node-exporter: (pid 66458) 78411s; run: log: (pid 65968) 78505s
run: postgres-exporter: (pid 66505) 78407s; run: log: (pid 66162) 78470s
run: postgresql: (pid 65341) 78702s; run: log: (pid 65362) 78699s
run: prometheus: (pid 66476) 78410s; run: log: (pid 66070) 78483s
down: puma: 14s, normally up; run: log: (pid 65649) 78562s
run: redis: (pid 65207) 78719s; run: log: (pid 65216) 78718s
run: redis-exporter: (pid 66468) 78410s; run: log: (pid 66034) 78490s
run: registry: (pid 66414) 78414s; run: log: (pid 65864) 78528s
down: sidekiq: 5s, normally up; run: log: (pid 65681) 78554s
Восстановите резервную копию. Убедитесь, что вы делаете, поскольку это перезапишет вашу базу данных. Вам не нужно указывать полное имя файла в команде. Только часть перед -ee_gitlab_backup.tar
имени файла.
$ sudo gitlab-backup restore BACKUP=1709812117_2024_03_07_16.9.1-ee
Это должно успешно восстановить вашу установку GitLab.
Шаг 14 — Обновление GitLab
Создайте резервную копию перед обновлением GitLab. Обновить GitLab так же просто, как запустить команду sudo dnf update
.
$ sudo dnf update
Незначительные обновления можно безопасно выполнять таким образом.
DigitalOcean Agent 40 kB/s | 3.3 kB 00:00
DigitalOcean Droplet Agent 44 kB/s | 3.3 kB 00:00
gitlab_gitlab-ee 1.4 kB/s | 1.0 kB 00:00
gitlab_gitlab-ee-source 1.2 kB/s | 951 B 00:00
Dependencies resolved.
========================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================
Upgrading:
gitlab-ee x86_64 16.9.2-ee.0.el9 gitlab_gitlab-ee 1.1 G
Transaction Summary
========================================================================================================================
Upgrade 1 Package
Total download size: 1.1 G
Is this ok [y/N]: y
Введите y
и нажмите Enter
, чтобы начать обновление. Для основных версий перед выполнением обновления следует проверять наличие критических изменений.
Во время обновления сайт станет недоступен, или в браузере появится сообщение Выполняется развертывание
.
После завершения обновления выполните следующую проверку после обновления, чтобы убедиться, что все работает правильно.
Проверьте общую конфигурацию.
$ sudo gitlab-rake gitlab:check
Убедитесь, что зашифрованные значения базы данных можно расшифровать.
$ sudo gitlab-rake gitlab:doctor:secrets
Проверьте, могут ли пользователи войти в систему, отображается ли список проектов, доступны ли проблемы проекта и мерж-реквесты, могут ли пользователи клонировать репозитории и отправлять коммиты в GitLab в пользовательском интерфейсе GitLab.
Для GitLab CI/CD убедитесь, что исполнители могут подхватывать задания и что реестр Docker работает.
Заключение
На этом завершается наше руководство, в котором вы узнали, как установить и настроить GitLab на сервере Rocky Linux 9. Вы также создали свой первый проект и зафиксировали в нем файл со своего ПК. Если у вас есть вопросы, задавайте их в комментариях ниже.