Любая команда разработчиков рано или поздно сталкивается с необходимостью использования системы контроля версий. Иначе отслеживать изменения в коде проектов становится сложно. Причем чем крупнее проекты и команды — тем сложнее. Сегодня систем контроля версий существует великое множество, одна лучше другой. Так что же выбрать? Наша команда остановилась на GitLab.
GitLab — это веб-приложение для хостинга исходного кода проектов, основанное на системе контроля версий Git. Своим функционалом GitLab очень напоминает GitHub, однако заточен под командную работу, в то время как GitHub отдает предпочтение индивидуальной работе.
Техническая справка
Git — распределённая система управления версиями файлов. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux. Git используют такие проекты, как Chromium, jQuery, PHP, MediaWiki и прочие. Программа является свободной и выпущена под лицензией GNU GPL версии 2.
GitLab существует как в виде SAAS — веб-сайта с открытой регистрацией, так и в качестве индивидуального решения — GitLab Community Edition, которое можно установить на свой сервер и настроить под собственные нужды. Процесс установки достаточно долгий и требует root-доступа к серверу. Для стабильной работы GitLab требует от сервера как минимум двухъядерный процессор и 2 Гб ОЗУ. Такая конфигурация обеспечит быструю работу приложения и поддержку до 500 пользователей. GitLab поддерживает множество различных дистрибутивов Linux, но инструкция по установке расчитана на Debian/Ubuntu.
Установка
Установку можно разбить на несколько этапов:
- установка необходимых системных утилит
- установка Ruby
- создание пользователя для SSH-подключений к GitLab
- установка и настройка GitLab Shell
- установка и настройка базы данных
- установка и настройка самого GitLab
- установка и настройка Nginx
Список внушительный, однако подавляющее большинство этапов состоят исключительно из консольных команд и занимают считаные секунды. Тем более, что какие-то из компонентов из списка выше на большинстве серверов уже установлены и им требуется лишь незначительная конфигурация. Итак, приступим.
Установка необходимых системных утилит
Для установки и настройки всех компонент, необходимых для работы GitLab, нам понадобятся: утилита sudo, набор библиотек для компиляции Ruby, актуальная версия Git и почтовый сервер.
Перед установкой каких-либо пакетов через утилиту apt-get, следует обновить список источников и существущие пакеты, выполнив в консоли такие команды:
1 2 |
apt-get update -y apt-get upgrade -y |
Здесь и далее команды нужно выполнять от имени пользователя root.
Первой в списке необходимых компонент идет утилита sudo. Она установлена на большинстве эксплуатируемых серверов. Но если вдруг ваш сервер совсем чист и непорочен, для ее установки необходимо выполнить в консоли следущую команду:
1 |
apt-get install sudo -y |
Теперь установим библиотеки для компиляции Ruby:
1 |
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 |
Убедитесь, что на сервере установлен git, и его версия не ниже 1.7.10:
1 2 |
sudo apt-get install -y git-core git --version |
Если установлена устаревшая версия, нужно удалить ее:
1 |
sudo apt-get remove git-core |
Если git не установлен либо был удален предыдущей командой, нужно скачать и скомпилировать его:
1 2 3 4 5 6 7 8 9 |
# Устанавливаем библиотеки, необходимые для компиляции sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential # Загружаем и компилируем исходники cd /tmp curl --progress https://git-core.googlecode.com/files/git-1.9.0.tar.gz | tar xz cd git-1.9.0/ make prefix=/usr/local all sudo make prefix=/usr/local install |
Обратите внимание на версию git. На момент написания это версия 1.9.0. Уточнить, какая версия git является актуальной, можно на официальной странице проекта.
И наконец, если не установлен почтовый сервер, вот команда для его установки:
1 |
sudo apt-get install -y postfix |
В процессе установки почтовый сервер попросит себя сконфигурировать. Для этого нужно выбрать на появившемся экране пункт «Internet Site» и указать правильное имя хоста — IP-адрес или доменное имя.
Установка Ruby
Для работы GitLab требуется Ruby 2.1.6. Если у вас уже установлен Ruby 1.8, его необходимо удалить перед установкой новой версии:
1 |
sudo apt-get remove ruby1.8 |
Теперь скачаем и скомпилируем Ruby 2.1.6:
1 2 3 4 5 6 |
mkdir /tmp/ruby && cd /tmp/ruby curl -L --progress http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.gz | tar xz cd ruby-2.1.6 ./configure --disable-install-rdoc make sudo make install |
Помимо самого Ruby нам понадобится библиотека bundler:
1 |
sudo gem install bundler --no-ri --no-rdoc |
Создание пользователя для SSH-подключений к GitLab
Создадим для SSH-подключений пользователя git:
1 |
sudo adduser --disabled-login --gecos 'GitLab' git |
Установка и настройка GitLab Shell
GitLab Shell — это отдельная утилита для управления SSH-доступом и репозиториями. Для ее установки необходимо выполнить следущие команды:
1 2 3 4 5 6 7 8 9 |
# Переходим в домашнюю директорию cd /home/git # Загружаем исходный код sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.9.3 cd gitlab-shell # Создаем конфигурационный файл sudo -u git -H cp config.yml.example config.yml |
После выполнения команд нужно отредактировать файл config.yml
. В нем в настройке gitlab_url
нужно указать будущий адрес GitLab, например:
1 |
gitlab_url: http://gitlab.example.com/" |
Теперь устанавливаем и инициализируем утилиту:
1 |
sudo -u git -H ./bin/install |
Установка и настройка базы данных
Для работы GitLab требует базу данных. Разработчики GitLab рекомендуют использовать PostgreSQL, однако поддержка MySQL также присутствует. Для установки PostgreSQL, выполните:
1 |
sudo apt-get install -y postgresql-9.1 postgresql-client libpq-dev |
Для установки MySQL:
1 2 |
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev sudo mysql_secure_installation |
Во время установки необходимо будет придумать и ввести пароль root пользователя MySQL.
Теперь нужно создать саму базу данных для работы GitLab. Для этого нужно выполнить несколько SQL-запросов. Начнем с PostgreSQL. В командной строке это делается так:
1 2 3 4 5 6 7 8 9 10 11 |
# Логинимся в PostgreSQL sudo -u postgres psql -d template1 # Создаем пользователя для GitLab template1=# CREATE USER git; # Создаем базу данных для GitLab и даем доступ к ней созданному пользователю template1=# CREATE DATABASE gitlabhq_production OWNER git; # Выходим из PostgreSQL template1=# \q |
Теперь MySQL (не забудьте вместо $password
поставить хороший, крепкий пароль):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# Логинимся в MySQL mysql -u root -p # Тут нужно будет ввести пароль root пользователя MySQL # Создаем пользователя для GitLab # вводить 'mysql>' не нужно, он показан для наглядности процесса # и не забудьте в следущей команде заменить $password на настоящий пароль! mysql> CREATE USER 'git'@'localhost' IDENTIFIED BY '$password'; # Устанавливаем тип базы данных mysql> SET storage_engine=INNODB; # Создаем базу данных для GitLab mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; # Даем доступ к созданной базе данных пользователю GitLab mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'git'@'localhost'; # Выходим из MySQL mysql> \q |
Установка и настройка самого GitLab
Этот этап самый сложный, поэтому будем выполнять его пошагово. Первый шаг — загрузка исходников GitLab. Делается это через git и выглядит примерно вот так:
1 2 3 4 5 |
# Переходим в домашнюю директорию cd /home/git # Загружаем GitLab sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-8-stable gitlab |
Обратите внимание на флаг -b 6-8-stable
во второй команде. На момент написания этой статьи актуальным является GitLab версии 6.8. Однако рекомендую перед установкой уточнить эту информацию на официальном сайте проекта и подставить в эту команду правильную версию. Кроме того, вместе с GitLab периодически обновляется и GitLab Shell, это также нужно учесть.
Второй шаг — развертывание и настройка. Сюда входят создание необходимых файлов конфигурации, создание необходимых приложению папок и установка прав доступа на уже существующие папки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# Переходим в папку GitLab cd /home/git/gitlab # Создаем файл конфигурации для GitLab sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml # Выставляем владельца и права на папки log/ и tmp/ sudo chown -R git log/ sudo chown -R git tmp/ sudo chmod -R u+rwX 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 # Выставляем права на папки tmp/pids/ и tmp/sockets/ sudo chmod -R u+rwX tmp/pids/ sudo chmod -R u+rwX tmp/sockets/ # Выставляем праав на папку public/uploads/ sudo chmod -R u+rwX public/uploads # Создаем файл конфигурации для сервера Unicorn sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb # Создаем файл конфигурации для Rack attack sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb |
После выполнения команд нужно отредактировать файл config/gitlab.yml
. В нем нужно указать следующие настройки:
Настройка | Раздел | Описание | Пример |
---|---|---|---|
host |
gitlab |
Cюда надо вписать адрес, по которому будет доступен GitLab | gitlab.example.com |
email_from |
gitlab |
Тут нужно прописать email, с которого будет отправляться почта | gitlab@example.com |
support_emal |
gitlab |
Адрес тех. поддержки. Если его закомментировать, будет использован адрес из email_from |
support@example.com |
bin_path |
git |
Установите значение /usr/local/bin/git , если компилировали git вручную на первом этапе установки |
/usr/local/bin/git |
E-mail адрес из email_from
также нужно установить в конфигурации git:
1 2 3 |
sudo -u git -H git config --global user.name "GitLab" sudo -u git -H git config --global user.email "gitlab@example.com" sudo -u git -H git config --global core.autocrlf input |
Теперь нужно сконфигурировать базу данных. Для PostgreSQL:
1 2 |
sudo -u git cp config/database.yml.postgresql config/database.yml sudo -u git -H chmod o-rwx config/database.yml |
Для MySQL:
1 2 |
sudo -u git cp config/database.yml.mysql config/database.yml sudo -u git -H chmod o-rwx config/database.yml |
Не забудьте указать в файле config/database.yml
логин и пароль для доступа к вашей базе данных. Следущий шаг — установка зависимостей. Делается это одной простой командой. Если вы используете PostgreSQL:
1 2 |
cd /home/git/gitlab sudo -u git -H bundle install --deployment --without development test mysql aws |
Если используете MySQL:
1 2 |
cd /home/git/gitlab sudo -u git -H bundle install --deployment --without development test postgres aws |
Теперь нужно инициализировать приложение. Сюда входят инициализация базы данных и установка ротации логов:
1 2 3 4 5 6 7 8 9 10 11 12 |
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production # Тут нужно будет ввести yes для подтверждения создания таблиц в базе данных # Создаем инициализационный скрипт sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab # Добавляем GitLab в местный авторан sudo update-rc.d gitlab defaults 21 # Создаем ротатор логов sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab |
Теперь осталось проверить статус приложения и запустить его. Проверяется статус такой командой:
1 |
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production |
Корректно установленное приложение должно выдавать примерно следущее:
Если все хорошо — приложение можно запускать:
1 2 |
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production sudo service gitlab start |
Установка и настройка Nginx
Последний этап установки GitLab — установка и настройка сервера Nginx. Установка выглядит так:
1 |
sudo apt-get install -y nginx |
Копируем конфигурационный файл Nginx из дистрибутива GitLab:
1 2 |
sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab |
Не забудьте указать правильный адрес вашего GitLab в файле /etc/nginx/sites-available/gitlab
в настройке server_name
раздела server
. Мне также пришлось указать IP-адрес сервера в настройке listen
раздела server
. Теперь нужно перезапустить сервер:
1 |
sudo service nginx restart |
Готово! Установка и настройка GitLab окончена. Убедитесь, что все правильно настроено, выполнив команду:
1 |
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production |
Если все пункты списка зеленые — значит, приложение установлено и настроено верно и можно начинать работу. Для этого зайдите по адресу приложения и авторизуйтесь, используя данные по умолчанию:
1 2 |
Логин: root Пароль: 5iveL!fe |
Не забудьте сменить пароль после авторизации! Приятной работы!
P.S. Еще более подробно написано о настройке gitlab в статье: https://www.linode.com/docs/applications/development/how-to-install-and-configure-gitlab-on-ubuntu-14-04-trusty-tahr
Источник: http://popel-studio.com/blog/article/sobstvenniy-hosting-repozitoriev-s-pomoshyu-gitlab.html
https://corp2.info/razrabotka-i-sozdanie-sajtov-internet-magazinov-veb-proektov-kiev-1038.html
Leave a Reply