Как установить Gitlab с PostgreSQL и Nginx на Ubuntu 15.04
На этой странице
- Предпосылки
- Шаг 1. Обновление системы Linux
- Шаг 2. Установите зависимости Gitlab
- Шаг 3. Установите Ruby и вперед
- Шаг 4. Создайте нового пользователя Linux и настройте базу данных PostgreSQL.
- Шаг 5. Настройка сервера Redis
- Шаг 6. Установите GitLab
- - Настройка GitLab
- - Конфигурация базы данных
- - Установите драгоценные камни
- - Установить Gitlab-оболочку
- - Установите gitlab-workhorse
- - Инициализировать базу данных и активировать функции gitlab.
Gitlab — это веб-приложение для управления репозиторием git, написанное на Ruby. Он похож на GitHub и включает в себя такие функции, как вики проекта и систему отслеживания проблем. Проект Gitlab был запущен Дмитрием Запорожцем, и программное обеспечение используется более чем 100 000 технологических компаний, включая IBM, StackExchange, NASA, Alibaba, Red Hat и т. д. Gitlab — одно из лучших решений для создания собственного сервера git.
Gitlab поддерживается основными дистрибутивами Linux, такими как Ubuntu, Debian и CentOS. Gitlab предоставляет пакет .deb для Debian/Ubuntu и пакеты .rpm для Rhel и CentOS. Пакет содержит все зависимости, включая Ruby, Redis, Nginx, Unicorn и PostgreSQL. Gitlab доступен в двух версиях: Community Edition (Gitlab CE) и Enterprise Edition (Gitlab EE). Если вы хотите создать свой собственный сервер git, то, скорее всего, бесплатная версия CE предложит все необходимые вам функции.
В этом руководстве я шаг за шагом проведу вас через установку Gitlab CE с PostgreSQL в качестве системы базы данных и Nginx в качестве веб-сервера в версии Ubuntu 15.04. Мы будем использовать Ruby версии 2.x.x, стабильную версию gitlab 8.x.
Предпосылки
- Ubuntu 15.04 — 64-разрядная версия.
- ЦП 2 ядра — рекомендуется с сайта gitlab.
- 2 ГБ ОЗУ/памяти — рекомендуется с сайта gitlab.
- Привилегии root.
Шаг 1 — Обновите систему Linux
Перед установкой зависимостей Gitlab мы получаем последние обновления из репозитория Ubuntu. Войдите на сервер Ubuntu с доступом по SSH, станьте пользователем root и обновите репозитории.
sudo su
apt-get updateШаг 2 — Установите зависимости Gitlab
Gitlab имеет множество программных зависимостей, таких как redis-server, git-core, nodejs и postfix для отправки уведомлений по электронной почте. Я установлю их с помощью одной команды apt:
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 python-docutils pkg-config cmake nodejs git-core postfix
Примечание. Во время установки postfix выберите \интернет-сайт\, а затем нажмите клавишу ВВОД, чтобы подтвердить имя хоста.
Если все пакеты установлены, проверьте версию git и убедитесь, что версия git 1.7.x или выше.
git --version
git version 2.1.4Шаг 3 — Установите Ruby и вперед
Для Gitlab требуется ruby версии 2.x или выше. В этом уроке мы будем использовать ruby версии 2.7. На этом этапе нам нужно установить ruby вручную (из исходного кода). Если в вашей системе ранее был установлен ruby, удалите его с помощью команды ниже:
apt-get remove ruby -y
Далее мы установим ruby вручную. Создайте новый каталог для исходных файлов ruby:
mkdir -p /tmp/ruby && cd /tmp/ruby
Загрузите исходный код ruby с помощью команды curl:
curl -O --progress https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.gz
Теперь проверьте и распакуйте ruby.tar.gz, затем войдите в каталог ruby:
echo 'e2e195a4a58133e3ad33b955c829bb536fa3c075 ruby-2.1.7.tar.gz' | shasum -c - && \
tar xzf ruby-2.1.7.tar.gz && \
cd ruby-2.1.7Скомпилируйте и установите Ruby:
./configure --disable-install-rdoc --prefix=/usr/local
make
make installВ качестве следующего шага мы должны установить Go. Начиная с gitlab 8.0, HTTP-запрос git обрабатывается gitlab-workhorse, написанным на Go. Чтобы установить gitlab-workhorse, нам понадобится компилятор go, скачайте и установите его.
Создайте новый каталог для Go:
mkdir -p /tmp/go && cd /tmp/go
Скачиваем Go — используем 64 битную версию:
curl -O --progress https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz
Проверьте и извлеките его в каталог \/usr/local/\:
echo '46eecd290d8803887dec718c691cc243f2175fe0 go1.5.1.linux-amd64.tar.gz' | shasum -c - && \
sudo tar -C /usr/local -xzf go1.5.1.linux-amd64.tar.gzТеперь создайте символическую ссылку для Go в каталоге bin:
sudo ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/
Теперь у нас установлены Ruby и Go.
Шаг 4. Создайте нового пользователя Linux и настройте базу данных PostgreSQL.
На этом шаге мы создадим нового системного пользователя Linux с именем \git\ и домашним каталогом \/home/git\. Gitlab будет работать от имени пользователя git позже.
Создайте нового пользователя git с помощью команды adduser:
sudo adduser --disabled-login --gecos 'GitLab' git
Теперь настраиваем базу данных для gitlab. Gitlab поддерживает MySQL и PostgreSQL, в этом руководстве мы будем использовать рекомендуемый тип базы данных PostGreSQL.
Установите PostgreSQL с помощью приведенной ниже команды apt:
sudo apt-get install -y postgresql postgresql-client libpq-dev
Как только это будет сделано, войдите в PostgreSQL и создайте новую роль/пользователя с именем «git» для gitlab:
sudo -u postgres psql -d template1
CREATE USER git CREATEDB;Затем создайте новую базу данных для gitlab с именем «gitlabhq_production» и предоставьте базу данных пользователю/роли git:
CREATE DATABASE gitlabhq_production OWNER git;
Теперь выйдите из оболочки postgresql и протестируйте новую роль/пользователя с созданной нами базой данных:
\q
sudo -u git -H psql -d gitlabhq_productionСоздан новый системный пользователь по имени \git\.
Также была создана новая роль/пользователь git для psotgreSQL, которая была предоставлена базе данных gitlab gitlabhq_production.
Шаг 5. Настройте сервер Redis.
Прежде чем редактировать файл конфигурации Redis в каталоге \/etc/redis\, мы создадим резервную копию с именем redis.conf.original.
cd /etc/redis/
cp redis.conf redis.conf.originalЗатем отредактируйте файл \redis.conf\ с помощью редактора vim:
vim redis.conf
Перейдите к строке 45 и измените значение на 0, потому что мы хотим, чтобы Redis прослушивал только сокет unix, а не порт:Listen 0
Затем перейдите в конец файла и добавьте сокет redis и разрешение для него:
unixsocket /var/run/redis/redis.sock
unixsocketperm 777Сохраните файл и выйдите.
Затем создайте новый каталог для сокета redis в каталоге \/var/run\ и настройте владельца и права доступа к каталогу:
mkdir -p /var/run/redis
chown redis:redis /var/run/redis
chmod 755 /var/run/redisПерейдите в каталог сокетов redis и выполните команду ниже:
cd /var/run/redis
if [ -d /etc/tmpfiles.d ]; then
echo 'd /var/run/redis 0755 redis redis 10d -' | sudo tee -a /etc/tmpfiles.d/redis.conf
fiЕсли все сделано, перезапустите сервер redis и добавьте пользователя «git» в группу «redis»:
sudo service redis-server restart
sudo usermod -aG redis gitШаг 6 — Установите GitLab
Перейдите в каталог \/home/git\ и загрузите gitlab из репозитория GIT:
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 8-2-stable gitlabПримечание :
Команда sudo -u git -H clone=мы запускаем команду \clone\ от имени пользователя \git\.
- Настроить GitLab
Перейдите в каталог gitlab, чтобы настроить gitlab:
cd /home/git/gitlab
Скопируйте пример файла конфигурации gitlab gitlab.yml.example в gitlab.yml в каталоге \config\:
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
В каталоге gitlab измените владельца подкаталогов \log and tmp\ на пользователя git:
sudo chown -R git {log,tmp}
Затем измените разрешения для других каталогов, чтобы gitlab (пользователь git) мог писать в них:
mkdir -p public/uploads/
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX {tmp,tmp/pids,tmp/sockets,builds,shared/artifacts}
sudo chmod -R 0750 public/uploadsСкопируйте примеры конфигураций атаки unicorn и Rack:
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rbТеперь нам нужно настроить глобальные настройки для пользователя git с помощью команды git ниже:
sudo -u git -H git config --global core.autocrlf input
И мы должны настроить соединение с Redis, скопировав файл \resque.yml\ в каталог конфигурации, затем отредактировав его с помощью vim, чтобы изменить конфигурацию Redis, используя сокет unix, поскольку мы настроили Redis для прослушивания сокета:
sudo -u git -H cp config/resque.yml.example config/resque.yml
- Конфигурация базы данных
Следующим шагом является настройка параметров БД GitLab, мы используем postgreSQL для нашей базы данных. Скопируйте файл конфигурации и измените разрешения:
sudo -u git -H cp config/database.yml.postgresql config/database.yml
sudo -u git -H chmod o-rwx config/database.yml- Установите драгоценные камни
sudo gem install bundler
sudo -u git -H bundle install --deployment --without development test mysql aws kerberosПодождите, пока команды закончатся.
- Установить Gitlab-шелл
Gitlab-shell обеспечивает доступ по SSH и управление репозиторием для Gitlab. Мы будем использовать конфигурацию по умолчанию, поэтому нам не нужно ее редактировать. Запустите команду ниже, чтобы установить gitlab-shell:
sudo -u git -H bundle exec rake gitlab:shell:install[v2.6.8] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production
REDIS_URL=убедитесь, что вы используете сокет unix для настройки Redis в производственной среде.
- Установить gitlab-рабочую лошадку
Gitlab-workhorse — небольшой демон для обработки Git HTTP-трафика от unicorn, написанный на Go. Клонируем и устанавливаем:
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
cd gitlab-workhorse
sudo -u git -H git checkout 0.4.2
sudo -u git -H make- Инициализировать базу данных и активировать функции gitlab
Перейдите в каталог установки gitlab и выполните команду ниже:
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=productionвведите «да», чтобы создать таблицы.
Результатом будет учетная запись gitlab с именем пользователя «root» и паролем «5iveL! fe».
Шаг 7. Настройте сценарий инициализации
Скопируйте сценарий инициализации gitlab из каталога установки gitlab и добавьте gitlab для запуска во время загрузки с помощью команды update-rc.d:
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo update-rc.d gitlab defaults 21Затем скопируйте конфигурацию gitlab logrotate для управления журналами:
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Если ошибки нет, запустите gitlab с помощью:
/etc/init.d/gitlab start
Шаг 8 — Установите и настройте Nginx
Мы будем использовать Nginx в качестве внешнего веб-сервера для обработки запросов браузера. Просто установите его с помощью этой подходящей команды:
apt-get install nginx -y
Скопируйте конфигурацию виртуального хоста Nginx из каталога gitlab и удалите виртуальный хост Nginx по умолчанию:
sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
sudo rm /etc/nginx/sites-enabled/defaultОтредактируйте файл конфигурации с помощью vim:
sudo vim /etc/nginx/sites-available/gitlab
Измените значение строк Listen и ServerName в разделе HTTP:
Listen *:80; #Port Default
#Listen 0.0.0.0:80; #comment one of this
ServerName my.gitlab.me; #Gitlab FQDN/DomainСохранить и выйти.
Активируйте виртуальный хост gitlab, запустите nginx и перезапустите gitlab:
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
service nginx start
/etc/init.d/gitlab restartТеперь вы можете получить доступ к gitlab с помощью браузера my.gitlab.me (имя хоста, которое вы выбрали для своего сервера) и войти в систему с именем пользователя по умолчанию \root\ и пароль \5iveL!fe\.
Сначала вы должны заменить пароль по умолчанию gitlab своим паролем.
Gitlab 8 с PostgreSQL и Nginx на Ubuntu 15.04 успешно установлен.
Примечание :
Если у вас есть ошибка, например, «502 bad gateway», то исправьте ее, увеличив время ожидания единорога или обновите свое оборудование. Перейдите в каталог установки gitlab и отредактируйте файл unicorn.rb с помощью vim:
sudo -u git -H vim config/unicorn.rb
Подробнее об устранении неполадок в Gitlab см. здесь https://github.com/gitlabhq/gitlab-public-wiki/wiki/Trouble-Shooting-Guide.
Заключение
Gitlab — это программное обеспечение для управления репозиторием git с открытым исходным кодом, написанное на Ruby. Это одно из лучших решений для создания собственного сервера git. Gitlab создан Дмитрием Запорожцем и доступен в двух версиях: Gitlab CE (Community Edition) и Gitlab EE (Enterprise Edition). Gitlab легко установить и настроить с красивым интерфейсом, который используют более 100 000 технологических компаний. Это очень мощное программное обеспечение, которое помогает разработчикам создавать приложения вместе с другими разработчиками.