Забрал отсюда, спасибо авторам
Техническая справка
Git — распределённая система управления версиями файлов. Проект
был создан Линусом Торвальдсом для управления разработкой ядра Linux.
Git используют такие проекты, как Chromium, jQuery, PHP, MediaWiki и
прочие. Программа является свободной и выпущена под лицензией GNU GPL
версии 2.
— Статья о Git на Википедии
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, следует
обновить список источников и существущие пакеты, выполнив в консоли
такие команды:
apt-get update -y
apt-get upgrade -y
Здесь и далее команды нужно выполнять от имени пользователя root.
Первой в списке необходимых компонент идет утилита sudo. Она установлена
на большинстве эксплуатируемых серверов. Но если вдруг ваш сервер
совсем чист и непорочен, для ее установки необходимо выполнить в консоли
следущую команду:
apt-get install sudo -y
Теперь установим библиотеки для компиляции Ruby:
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:
sudo apt-get install -y git-core
git --version
Если установлена устаревшая версия, нужно удалить ее:
sudo apt-get remove git-core
Если git не установлен либо был удален предыдущей командой, нужно скачать и скомпилировать его:
# Устанавливаем библиотеки, необходимые для компиляции
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 является актуальной, можно
на официальной странице проекта.
И наконец, если не установлен почтовый сервер, вот команда для его установки:
sudo apt-get install -y postfix
В процессе установки почтовый сервер попросит себя сконфигурировать. Для
этого нужно выбрать на появившемся экране пункт «Internet Site» и
указать правильное имя хоста — IP-адрес или доменное имя.
Установка Ruby
Для работы GitLab требуется Ruby 2.1.6. Если у вас уже установлен Ruby
1.8, его необходимо удалить перед установкой новой версии:
sudo apt-get remove ruby1.8
Теперь скачаем и скомпилируем Ruby 2.1.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:
sudo gem install bundler --no-ri --no-rdoc
Создание пользователя для SSH-подключений к GitLab
Создадим для SSH-подключений пользователя git:
sudo adduser --disabled-login --gecos 'GitLab' git
Установка и настройка GitLab Shell
GitLab Shell — это отдельная утилита для управления SSH-доступом и
репозиториями. Для ее установки необходимо выполнить следущие команды:
# Переходим в домашнюю директорию
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, например:
gitlab_url: http://gitlab.example.com/"
Теперь устанавливаем и инициализируем утилиту:
sudo -u git -H ./bin/install
Установка и настройка базы данных
Для работы GitLab требует базу данных. Разработчики GitLab рекомендуют
использовать PostgreSQL, однако поддержка MySQL также присутствует. Для
установки PostgreSQL, выполните:
sudo apt-get install -y postgresql-9.1 postgresql-client libpq-dev
Для установки MySQL:
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
sudo mysql_secure_installation
Во время установки необходимо будет придумать и ввести пароль root пользователя MySQL.
Теперь нужно создать саму базу данных для работы GitLab. Для этого нужно
выполнить несколько SQL-запросов. Начнем с PostgreSQL. В командной
строке это делается так:
# Логинимся в 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
поставить хороший, крепкий пароль):
# Логинимся в 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 и выглядит
примерно вот так:
# Переходим в домашнюю директорию
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, это также нужно учесть.
Второй шаг — развертывание и настройка. Сюда входят создание необходимых
файлов конфигурации, создание необходимых приложению папок и установка
прав доступа на уже существующие папки:
# Переходим в папку 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:
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:
sudo -u git cp config/database.yml.postgresql config/database.yml
sudo -u git -H chmod o-rwx config/database.yml
Для MySQL:
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:
cd /home/git/gitlab
sudo -u git -H bundle install --deployment --without development test mysql aws
Если используете MySQL:
cd /home/git/gitlab
sudo -u git -H bundle install --deployment --without development test postgres aws
Теперь нужно инициализировать приложение. Сюда входят инициализация базы данных и установка ротации логов:
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
Теперь осталось проверить статус приложения и запустить его. Проверяется статус такой командой:
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
Корректно установленное приложение должно выдавать примерно следущее:
Если все хорошо — приложение можно запускать:
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
sudo service gitlab start
Установка и настройка Nginx
Последний этап установки GitLab — установка и настройка сервера Nginx. Установка выглядит так:
sudo apt-get install -y nginx
Копируем конфигурационный файл Nginx из дистрибутива GitLab:
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
. Теперь нужно перезапустить сервер:
sudo service nginx restart
Готово! Установка и настройка GitLab окончена. Убедитесь, что все правильно настроено, выполнив команду:
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
Если все пункты списка зеленые — значит, приложение установлено и
настроено верно и можно начинать работу. Для этого зайдите по адресу
приложения и авторизуйтесь, используя данные по умолчанию:
Логин: root
Пароль: 5iveL!fe
Не забудьте сменить пароль после авторизации! Приятной работы!