Один из самых популярных репозиториев для хранения и общего доступа к коду - это GitHub, однако после покупки проекта компанией Microsoft популярность стали набирать и другие проекты, один из них - GitLab. Это аналогичный свободный менеджер репозиториев, с помощью которого можно работать с кодом, принимать Pull Request'ы, отслеживать сообщения об ошибках и тестировать свои приложения.
У GitLab есть такие же инструменты, как и у GitHub, есть страница Issue для сообщений об ошибках, есть поддержка код-ревью, wiki, а также вы можете работать с несколькими приватными проектами.
Содержание статьи
Установка GitLab в Ubuntu 18.04
У GitLab есть несколько версий. Кроме онлайн версии, в которую вы можете выгружать свои проекты, доступной на веб-сайте GitLab.com, есть версия Community Edition и платная версия Enterprice Edition, которые можно установить на свой компьютер и создать собственный Git-сервер. В этой инструкции мы рассмотрим, как установить GitLab Ubuntu 18.04 версии Community Edition. Для этого будем использовать официальный репозиторий.
Сначала обновите репозитории до самой последний версии:
sudo apt upgrade
1. Установка репозитория
Затем нужно загрузить установщик репозитори из официального сайта. Этот скрипт загрузит и установит все ключи и инструменты необходимые, чтобы подключить репозиторий Gitlab в систему. Для его загрузки и запуска выполните команду:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
2. Установка пакета программы
После завершения вы можете установить gitlab-ce командой:
sudo apt install gitlab-ce
Когда установка GitLab Ubuntu 18.04 будет завершена, вы увидите такое сообщение:
3. Развёртывание GitLab
Теперь нам необходимо подготовить программу к работе. Сначала нужно настроить URL, по которой будет открываться интерфейс GitLab. Для этого откройте файл /etc/gitlab/gitlab.rb и найдите там строчку external_url. Здесь нужно указать ваш домен. На своём локальном компьютере я буду использовать домен gitlab.local:
sudo vi /etc/gitlab/gitlab.rb
Сохраните и закройте файл. После этого надо пересобрать программу, учитывая изменённую конфигурацию:
sudo gitlab-ctl reconfigure
Если на вашем сервере включён брандмауэр, необходимо добавить в исключения порты для протоколов http и ssh:
sudo ufw allow ssh
sudo ufw allow http
Чтобы наш локальный домен работал, необходимо добавить запись о нём в файл /etc/hosts:
sudo vi /etc/hosts
4. Развёртывание программы с установленным Apache
Если на вашем компьютере уже установлен веб-сервер Apache, вы можете настроить программу таким образом, чтобы она работала через существующий веб-сервер. Для этого измените такие строки в /etc/gitlab/gitlab.rb:
sudo vi /etc/gitlab/gitlab.rb
Затем пересоберите программу:
sudo gitlab-ctl reconfigure
В Apache надо добавить новый виртуальный хост с такой конфигурацией:
sudo vi /etc/apache2/sites-available/gitlab.conf
<VirtualHost *:80> ServerName gitlab.local ServerSignature Off ProxyPreserveHost On AllowEncodedSlashes NoDecode <Location /> Require all granted ProxyPassReverse http://127.0.0.1:8080 ProxyPassReverse http://gitlab.local </Location> RewriteEngine on RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA] DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public ErrorDocument 404 /404.html ErrorDocument 422 /422.html ErrorDocument 500 /500.html ErrorDocument 503 /deploy.html LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded ErrorLog /var/log/apache2/gitlab_error.log CustomLog /var/log/apache2/gitlab_forwarded.log common_forwarded CustomLog /var/log/apache2/gitlab_access.log combined env=!dontlog CustomLog /var/log/apache2/gitlab.log combined </VirtualHost>
Здесь gitlab.local - это домен, который будет использоваться для доступа к gitlab, а порт 8080 - тот порт, на котором сервис gitlab ожидает соединений. Его можно посмотреть командой:
sudo netstat -pant | grep unicorn
После этого активируйте модули Apache - rewrite, proxy и proxy_http:
sudo a2enmod rewrite
sudo a2enmod proxy
sudo a2enmod proxy_http
А потом активируйте наш виртуальный хост и перезапустите Apache:
sudo a2ensite gitlab
sudo systemctl restart apache2
Настройка GitLab в Ubuntu
1. Авторизация
Дальше вы можете войти в веб-интерфейс. Для этого откройте в браузере выбранный домен: http://gitlab.local
На первом шаге вам нужно ввести пароль для суперпользователя.
Далее надо авторизоваться в системе. Для этого введите логин root и ранее выбранный пароль, затем нажмите Sign in.
2. Настройка аккаунта
Затем настроим имя вашего пользователя. По умолчанию используется Administrator. Откройте меню Settings и найдите там пункт Full Name и укажите там желаемое имя:
Затем нажмите кнопку Update profile settings.
3. Настройка SSH-ключа
Для того чтобы вы могли без ввода логина и пароля отправлять данные в этот репозиторий, нужно прописать сюда ваш публичный ключ. Для этого сначала создайте соответствующий ключ для GitLab командой:
ssh-keygen
Если в вашей системе уже есть другие ssh-ключи, то вы можете изменить имя создаваемого ключа. Для этого, когда программа спросит путь, куда нужно сохранить ключ, введите старый путь и новое имя:
Ключ будет находится в файле с расширением *.pub. Если вы выбрали имя файла gitlab_rsa, то публичный ключ будет находится в файле gitlab_rsa.pub. Скопируйте этот ключ. Затем откройте в левом меню веб-интерфейса GitLab пункт SSH Keys, вставьте ключ в поле Key и нажмите Add key:
После этого ключ будет добавлен и вы сможете пользоваться репозиторием. Однако надо заметить, что с пользователем root на локальной машине такая операция не пройдёт, также ничего не будет работать, если вы попытаетесь использовать того же пользователя, от имени которого вы авторизованы в системе.
4. Отключение регистрации
Кликните по значку ключа на верхней панели, а затем в левом меню выберите Settings. Здесь найдите пункт Sign-up restrictions и снимите галочку с пункта sign-up enabled:
Затем сохраните настройки.
5. Создание проекта
Кликните по кнопке со значком Плюс, затем выберите New Project:
В открывшемся окне введите имя проекта, например testproject, и нажмите кнопку Create Project:
Затем откройте терминал и клонируйте полученный репозиторий:
git clone http://gitlab.local/root/testproject.git
Далее добавьте файл README.md:
cd testproject
vi README.md
И отправьте изменения на сервер:
git add --all
git commit -m 'Add README.md'
git push origin master
Теперь в интерфейсе программы вы увидите только что созданный коммит и новый файл:
Выводы
В этой статье мы разобрали, как выполняется установка GitLab Server Ubuntu 18.04. Как видите, это не так сложно, как может показаться на первый взгляд. Здесь очень удобно отслеживать изменения в своих проектах и работать в команде, не рассчитывая на доступность сторонних сервисов.
О! Спасибо за статью. Давно думаю о установке gitlab на своём сервере...
sudo vi /etc/gitlab/gitlab.rb после этой команды лучше писать IP а не доменное имя а то потом докер не видит его
У Вас ошибка в статье.
При РАЗВЁРТЫВАНИЕ ПРОГРАММЫ С УСТАНОВЛЕННЫМ APACHE активация модуля proxy_http происходит командой sudo a2enmod proxy_http ,
А не sudo a2enmod http как указано у Вас.
Исправьте пожалуйста, людей вводит в заблуждение. В том числе и меня ввела 😀
Господа, а есть ли шанс впилить git на 19.04 ?
Даёт ошибку конфига репозитория при попытке curla
Здравствуйте! При git clone http://gitlab.local/root/testproject.git просят ввести пароль. Ни один пароль не подходит, с ssh ключом тоже просит ввести пароль. Что я делаю не так?
При создании ssh ключа вы задавали пароль? Если да, то попробуйте его
Отличная статья
Давно мечтаю о домашнем гитлабе 🙂
А CI работает? 🙂
Кто-нибудь пробовал разворачивать на raspberry pi?
Добрый день! Можете написать статью как настроить Container Registry? Как продолжение данной статьи.
Добрый день. Сервер ubuntu 14.x + Gitlab переехал в новое облако. В файле gitlab.rb сменил external_url. Все ок! Gitlab открывается по новому IP. Но! При смени пароля пользователя ссылка в письме приходит на старый url. Никак не пойму что ещё нужно поменять. В файле etc/hosts запись не менялась - следующая запись: 127.0.0.1 localhost