Один из самых популярных репозиториев для хранения и общего доступа к коду - это 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. Как видите, это не так сложно, как может показаться на первый взгляд. Здесь очень удобно отслеживать изменения в своих проектах и работать в команде, не рассчитывая на доступность сторонних сервисов.
Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали





















О! Спасибо за статью. Давно думаю о установке 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