Поиск по сайту:

Как настроить GitLab как собственный частный клон GitHub


Статус: устарело

В этой статье рассматривается версия Ubuntu, которая больше не поддерживается. Если вы в настоящее время используете сервер под управлением Ubuntu 12.04, мы настоятельно рекомендуем обновить или перейти на поддерживаемую версию Ubuntu:

  • Обновите Ubuntu до версии 14.04.
  • Обновление Ubuntu 14.04 до Ubuntu 16.04
  • Перенесите данные сервера в поддерживаемую версию.

Причина:

Смотрите вместо этого:

Введение

Git и GitHub — отличные инструменты, которые упрощают управление и администрирование множества репозиториев Git и связанных с ними разрешений. Это замечательно, если вы пишете программное обеспечение с открытым исходным кодом, но при написании программного обеспечения с закрытым исходным кодом вы можете не захотеть доверять свой код стороннему серверу. Итак, как вы можете получить контроль, гибкость и простоту использования чего-то вроде Github или BitBucket, не размещая свои репозитории git на серверах вне вашего контроля?

Войдите в Гитлаб. GitLab предоставляет простой, но мощный веб-интерфейс для ваших репозиториев Git в стиле GitHub, только вы можете разместить его на своем собственном облачном сервере, управлять доступом по своему усмотрению, а размер репозитория ограничен только объемом памяти вашего сервера. В этом руководстве вы узнаете, как настроить DigitalOcean VPS в качестве сервера GitLab.

Примечание. В этом руководстве объясняется, как установить GitLab из исходного кода. Когда изначально писалось, это был единственный вариант. Сегодня гораздо проще настроить и запустить его, используя образ нашего приложения в один клик.

В этом руководстве предполагается, что вы используете новый Ubuntu 12.04 VPS. Мы установим все необходимое программное обеспечение, необходимое для работы GitLab. Если вы используете существующий VPS (дроплет) или другой дистрибутив Linux, у вас могут возникнуть проблемы, особенно с несовместимыми версиями Python и Ruby. Перед началом убедитесь, что у вас установлены Ruby 2.0 и Python 2.7.

Первым шагом является установка некоторых необходимых пакетов:

sudo apt-get update
sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl git-core openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev

Убедитесь, что у вас не установлен Ruby 1.8 (на Ubuntu 12.04 VPS по умолчанию его не будет).

Установите Ruby 2.0 (это займет некоторое время):

mkdir /tmp/ruby && cd /tmp/ruby
curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz | tar xz
cd ruby-2.0.0-p247
./configure
make
sudo make install

Когда все будет готово, вы можете убедиться, что у вас установлен Ruby 2 (не 1.8), выполнив:

ruby --version

Если вывод выглядит так, как показано ниже, то все в порядке:

ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]

Теперь нам нужно установить гем Bundler:

sudo gem install bundler --no-ri --no-rdoc

И создайте пользователя git для использования GitLab:

sudo adduser --disabled-login --gecos 'GitLab' git

Установка оболочки GitLab

Загрузите оболочку GitLab с помощью следующих команд:

cd /home/git
sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git
cd gitlab-shell
sudo -u git -H git checkout v1.7.0
sudo -u git -H cp config.yml.example config.yml

Теперь у вас есть копия GitLab Shell 1.7.0, и пример config.yml готов к работе.

Если у вас есть доменное имя, указывающее на этот VPS, вам следует потратить время на редактирование config.yml для использования этого домена.

nano config.yml

Вверху будет строка вида:

gitlab_url: "http://localhost/"

Измените часть http://localhost/, чтобы она соответствовала вашему доменному имени. Итак, если ваш домен www.YOURDOMAIN.com, строка должна выглядеть так:

gitlab_url: "http://www.YOURDOMAIN.com/"

Теперь вы можете запустить установщик оболочки GitLab:

sudo -u git -H ./bin/install

Настройка базы данных

Мы настроим GitLab для использования серверной части MySQL. Первый шаг — установить MySQL с помощью приведенной ниже команды. В процессе установки вам будет предложено установить пароль root для MySQL. Установите его так, как вам нравится, но запишите его, так как он понадобится вам для следующих шагов.

sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

Теперь MySQL установлен, и для пароля root установлено значение, которое вы выбрали на последнем шаге. Теперь нам нужно создать пользователя MySQL для использования GitLab. Для этого мы сначала сохраним необходимые SQL-запросы во временный файл. Тип:

nano tempfile

Вставьте следующее, заменив $password в первой строке на реальный пароль. Запомните этот пароль, так как это будет пароль вашей базы данных GitLab.

CREATE USER 'gitlab'@'localhost' IDENTIFIED BY '$password';
CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';

Теперь сохраните файл и выполните следующую команду (введя свой пароль root MySQL из первого шага в приглашении), чтобы MySQL выполнил ваши запросы:

cat tempfile | mysql -u root -p

Чтобы убедиться, что ваш новый пользователь MySQL был успешно создан, давайте войдем в mysql с помощью пользователя gitlab:

mysql -u gitlab -p

Если вы видите текст, за которым следует:

mysql>

линии, то все работало успешно. Идите вперед и введите:

exit;

в приглашении mysql> выйти из MySQL и удалить файл tempfile, так как он содержит пароль:

rm tempfile

На данный момент у нас все настроено для успешной установки GitLab, поэтому давайте приступим к установке:

cd /home/git
sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
cd /home/git/gitlab
sudo -u git -H git checkout 6-0-stable
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

Как и при настройке оболочки GitLab, если у вас есть домен, настроенный для вашего VPS, нам нужно отредактировать config.yml, чтобы использовать этот домен.

sudo -u git -H nano config/gitlab.yml

В верхней части файла вы должны увидеть текстовый блок, который выглядит следующим образом:

  gitlab:
## Web server settings
host: localhost
port: 80
https: false

Измените запись host:, чтобы она соответствовала вашему доменному имени. Если ваш домен www.YOURDOMAIN.com, он должен выглядеть так:

  gitlab:
## Web server settings
host: www.YOURDOMAIN.com
port: 80
https: false

Давайте также установим некоторые разрешения для файлов linux, настроим конфигурацию Git пользователя git и настроим некоторые конфигурации и каталоги GitLab для пользователя git:

cd /home/git/gitlab
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 -u git -H mkdir tmp/pids/
sudo -u git -H mkdir tmp/sockets/
sudo chmod -R u+rwX  tmp/pids/
sudo chmod -R u+rwX  tmp/sockets/
sudo -u git -H mkdir public/uploads
sudo chmod -R u+rwX  public/uploads
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "gitlab@localhost"
sudo -u git -H git config --global core.autocrlf input
sudo -u git cp config/database.yml.mysql config/database.yml

Теперь нам нужно указать GitLab использовать пользователя gitlab MySQL, которого мы настроили ранее. Для этого отредактируйте файл config/database.yml:

sudo -u git -H nano config/database.yml

В верхней части будет раздел production:, который будет содержать записи username и password. По умолчанию это выглядит так:

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: gitlabhq_production
  pool: 10
  username: root
  password: "secure password"

Измените записи username и password, чтобы они соответствовали пользователю базы данных GitLab, который мы настроили ранее. Поэтому, если пароль, который вы использовали для своего пользователя GitLab MySQL, был $password, отредактированный файл должен выглядеть так:

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: gitlabhq_production
  pool: 10
  username: gitlab
  password: "$password"

Сохраните файл, а мы защитим его, чтобы другие пользователи сервера не видели пароль:

sudo -u git -H chmod o-rwx config/database.yml

Давайте установим еще несколько необходимых гемов (этот шаг может занять некоторое время):

cd /home/git/gitlab
sudo gem install charlock_holmes --version '0.6.9.4'
sudo -u git -H bundle install --deployment --without development test postgres aws

И запустите окончательную настройку (наберите yes, когда вас спросят, хотите ли вы продолжить):

sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

После этого на экране будет напечатано много информации, а в конце будет показано Создана учетная запись администратора и предоставлены учетные данные администратора. Это должно выглядеть примерно так:

Administrator account created:

login.........admin@local.host
password......5iveL!fe

Теперь давайте настроим GitLab на запуск при загрузке вашего сервера:

sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab
sudo update-rc.d gitlab defaults 21

Запустите следующее, чтобы убедиться, что все работает:

sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

Если сообщений об ошибках нет, а данные, выведенные этой командой, выглядят правильно, значит, ваша установка GitLab работает. Практически завершенный! Запустите GitLab с помощью этой команды:

sudo service gitlab start

Настройка Nginx

GitLab по умолчанию работает с веб-сервером nginx. Если у вас уже есть собственный веб-сервер, такой как Apache, эти шаги не применяются. Ознакомьтесь с этими рецептами, чтобы узнать, как настроить GitLab для работы с другими веб-серверами. В противном случае следуйте этим инструкциям, чтобы установить и настроить nginx для работы с GitLab:

sudo apt-get -y install nginx
cd /home/git/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

Отредактируйте /etc/nginx/sites-available/gitlab, чтобы использовать ваше доменное имя:

sudo nano /etc/nginx/sites-available/gitlab

Немного отступив от верхней части файла, вы увидите запись server_name, которая имеет значение YOUR_SERVER_FQDN. Как и в предыдущих шагах, замените YOUR_SERVER_FQDN своим доменным именем. Исходный файл выглядит так:

server {
  listen *:80 default_server;     # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea
  server_name YOUR_SERVER_FQDN;       #

Если ваш домен www.YOURDOMAIN.com, вам следует изменить его, чтобы он выглядел следующим образом:

server {
  listen *:80 default_server;         # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea
  server_name www.YOURDOMAIN.com;     #

И перезапустите nginx:

sudo service nginx restart

Вуаля! Готово. Подключитесь к GitLab через веб-браузер, используя указанные выше логин и пароль администратора (пользователь по умолчанию: admin@local.host, пароль: 5iveL!fe) и наслаждайтесь GitLab.

Если вы используете VPS на 512 МБ, то из-за требований GitLab к памяти вполне вероятно, что вы столкнетесь с ошибкой 502 Bad Gateway. Если это так, читайте дальше…

Поиск неисправностей

502 Неверная ошибка шлюза

В идеальном мире GitLab теперь работал бы идеально. К сожалению, у GitLab удивительно высокие требования к памяти, поэтому на VPS с 512 МБ он часто зависает при первом входе в систему. Это связано с тем, что GitLab использует много памяти при самом первом входе в систему. Поскольку Ubuntu 12.04 VPS не имеет места подкачки, когда память превышена, части GitLab прекращают работу. Излишне говорить, что GitLab работает плохо, когда некоторые его части неожиданно завершаются.

Самое простое решение — просто выделить больше памяти для вашего VPS, по крайней мере, для первого входа в систему. Если вы не хотите этого делать, другой вариант — увеличить пространство подкачки. В DigitalOcean уже есть полное руководство о том, как это сделать, доступное здесь (хотя я бы рекомендовал добавить больше, чем просто 512 МБ подкачки). Быстрое исправление состоит в том, чтобы запустить следующее:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k
sudo mkswap /swapfile
sudo swapon /swapfile

Теперь ваш файл подкачки запущен и активен, но чтобы настроить его так, чтобы он активировался при каждой загрузке, нам нужно отредактировать /etc/fstab:

sudo nano /etc/fstab

Вставьте следующее в конец файла:

/swapfile       none    swap    sw      0       0 

Теперь перезапустите ваш VPS:

sudo restart

Подождите минуту или две, пока ваш VPS перезагрузится, а затем снова попробуйте GitLab. Если это не сработает в первый раз, обновите страницу Bad Gateway пару раз, и вскоре вы должны увидеть страницу входа в GitLab.

Использованная литература:

  1. Ознакомьтесь с великолепной документацией по установке Gitlab здесь.
  2. Информацию об ошибке 502 bad gateway можно найти в этой теме.

Прислал: Ник ван дер Плоэг