Установка GitLab на Slackware

  • Эта тема пуста.
Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Автор
    Сообщения
  • #921
    Аноним
    Неактивированный

    Так что такое GitLab? Если вам знаком GitHub, то это похожая структура, только на вашем сервере и под вашем контролем.

    Для того, чтобы GitLab у нас заработал, необходимо установить Ruby 2+, MySQL, Git, Apache 2+, а также Python 2.6+ и последний Redis. Я упущу процесс установки mysql.

    Итак, по порядку.

    Необходимые компоненты
    Установка GitLab на Slackware Устанавливаем Python
    Поставим сначала пайтон. Стягиваем отсюда пакет.

    План действий
    #делаем файл исполняемым
    sudo chmod +x python.SlackBuild

    #запускам скрипт
    sudo ./python.SlackBuild

    #устанавливаем пакет
    sudo installpkg python
    Установка GitLab на Slackware Устанавливаем Ruby
    Следующим делом установим руби. Процесс аналогичный установке пайтона, скачиваем отсюда файлики.

    План действий
    #делаем файл исполняемым
    sudo chmod +x ruby.SlackBuild

    #запускам скрипт
    sudo ./ruby.SlackBuild

    #устанавливаем пакет
    sudo installpkg ruby
    Альтернативный способ установки ruby:

    Альтернативный план действий
    #создаем временную папку и переходим в нее
    mkdir /tmp/ruby && cd /tmp/ruby

    #скачиваем исходники руби и распаковываем их
    curl —progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz | tar xz

    #переходим в распакованную папку исзодиников и начинаем процесс сборки
    cd ruby-2.0.0-p353
    ./configure —prefix=/usr/local/
    make
    sudo make install
    Не зависимо от того каким способом устанавливали руби, проверим, что у нас установилось:

    #проверяем куда установился руби
    which ruby

    #проверяем версию руби
    ruby —version

    #устанавливаем bundler, без него никуда
    gem install bundler —no-ri —no-rdoc
    Установка GitLab на Slackware Устанавливаем Redis
    Процедура установки Redis отличается от двух предыдущих.

    План действий
    #зайдем во временный каталог
    cd /tmp

    #создадим папку где будем производить все махинации
    mkdir redis
    cd redis

    #стягиваем и распаковываем исходники редиса
    wget http://download.redis.io/redis-stable.tar.gz
    tar xvzf redis-stable.tar.gz
    cd redis-stable

    #собираем все до купы
    make

    #далее копируем исполняемые файлы сервера и клиента
    cd src
    sudo cp redis-server /usr/local/bin/
    sudo cp redis-cli /usr/local/bin/
    Это еще не все. Чтобы сервис редиса поднимался когда стартует сервер, необходимо подправить файл /etc/local.conf:

    #открываем от рута файл на редактирование
    sudo nano /etc/local.conf

    #находим строчку где написано [components] и под ней добавляем
    /usr/local/bin/redis-server
    Запускаем redis-server просто выполнив комманду «redis-server» (без кавычек). В другом терминале сделаем проверку, что сервер редиса поднялся:

    #Выполняем комманду
    redis-cli ping

    #Ответ
    PONG
    Установка GitLab на Slackware Устанавливаем Git
    Осталось установить git.

    #скачаем и распакуем нужную версию гита
    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

    #установим git
    sudo make prefix=/usr/local install
    Установка GitLab на Slackware GitLab
    Приступим непосредственно к процессу установки GitLab.
    Добавление пользователя git в систему
    Если у вас еще не был создан пользователь git в системе, то необходимо с этого начать. Для этого выполним комманду в терминале:

    sudo /usr/sbin/adduser —disabled-login git
    Проходим пошаговое создание профиля пользователя. После создания проверяем, что у нас в /home создалась папка нового пользователя с именем git (если вы указали другое имя пользователя, к примеру gitlab, то имя папки будет gitlab, а так же в конце статьи будут заметки, где и что надо будет изменить в gitlab и gitlab-shell, чтобы все заработало).

    Устанавливаем и настраиваем gitlab-shell
    Первым делом стянем и установим gitlab-shell:

    План действий
    #заходим в папку пользователя git
    cd /home/git

    #клонируем с гитхаба исходники
    sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git
    cd gitlab-shell

    #вместо VERSION подставим необходимую версию, я использовал на тот момент v1.9.0
    sudo -u git -H git checkout VERSION

    #переименовываем пример конфига
    sudo -u git -H cp config.yml.example config.yml

    #отредактируем конфиг
    nano config.yml

    #найдем строчку
    #gitlab_url: «http://localhost/»
    #и поменяем http://localhost/ на валидный адрес

    #запустим установку от лица пользователя git
    sudo -u git -H ./bin/install
    Создаем mysql пользователя и db
    Далее надо создать в mysql таблички для gitlab. Создадим временный файлик, к примеру gitlab_tables.sql и сохраним в нем следующее:

    sql
    — подставляем вместо USER_PASSWORD валидный пароль или оставляем так
    CREATE USER ‘gitlab’@’localhost’ IDENTIFIED BY ‘USER_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’;
    Логинимся в mysql пользователем root и выполняем не хитрую комманду

    — gitlab_tables.sql — имя временного файлика
    source gitlab_tables.sql;
    Легким движением рук мы создали пользователя с именем gitlab и базу данных gitlabhq_production, а так же дали права для оного пользователя на эту базу.
    Более этот файл не понадобится, можем смело его удалять.

    Устанавливаем и настраиваем gitlab
    Теперь приступим к установке и настройке самого gitlab:

    План действий
    #переходим в корень домашней папки пользователя git
    cd /home/git

    #клонируем исходники gitlab в папку gitlab и переходим в новую склонированную папку
    sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
    cd /home/git/gitlab

    #вместо VERSION подставим необходимую версию, я использовал на тот момент 7-2-stable
    sudo -u git -H git checkout VERSION

    #переименуем пример конфига в обычный кофиг
    sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

    #откроем на редактирование конфиг файл
    sudo -u git -H nano config/gitlab.yml

    #и заменим localhost на верный адрес
    ## Web server settings
    host: localhost
    port: 80
    https: false

    #скопируем конфиг для базы
    sudo -u git cp config/database.yml.mysql config/database.yml

    #откроем на редактирование настройки gitlab для работы с mysql базой
    sudo -u git -H nano config/database.yml

    #в этом файле следующие три строчки встречаются три раза, меняем параметры на те которые мы использовали при создании mysql базы ранее
    database: gitlabhq_production
    username: root
    password: «secure password»
    Устанавливаем права на файлы и папки внутри /home/git/gitlab:

    План действий
    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 -H chmod o-rwx config/database.yml
    Устанавливаем ruby gems
    Следующим шагом будет установка ruby gems:

    #заходим в папку gitlab в домашней папке пользователя git
    cd /home/git/gitlab

    #установим charlock_holmes, на момент установки актуальная версия была 0.7.3
    sudo gem install charlock_holmes —version ‘0.7.3’

    #запустим установку всего бандла зависимостей(этот шаг может занять много времени, запаситесь терпением)
    sudo -u git -H bundle install —deployment —without development test postgres aws
    Запускаем установку gitlab
    Осталось только запустить установку и настройку самого gitlab:

    #если запустите от пользователя root — процесс пойдет, вам покажут предупреждение что от рута нет гарантии, что все верно будет работать
    #когда спросят подтверждения старта установки — отвечаем ‘yes’
    sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
    По окончанию установки, если все прошло успешно, в консоли высветится следующее:

    Administrator account created:

    login………root
    password……5iveL!fe
    Проверка валидности конфигурации gitlab
    Осталось совсем не много. Проверим, что у нас все сконфигурировано верно и донастроим конфиг, чтобы при старте сервера, gitlab стартовал автоматически:

    План действий
    #проверим как сконфигурирован наш gitlab
    sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

    #если предыдущая комманда выполнилась без ошибок, продолжаем далее, иначе резолвим ошибки
    #скопируем скрипт
    sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab

    #сделаем скрипт исполняемым
    sudo chmod +x /etc/init.d/gitlab

    #откроем на редактирование local.conf:
    sudo nano /etc/local.conf

    #находим строчку где написано [components] и под ней добавляем
    git@/etc/init.d/gitlab
    #git — имя пользователя от лица которого выполнить скрипт
    Стартуем gitlab
    Теперь самое время стартануть gitlab, для этого выполняем следующую комманду:

    sudo -u git -H /etc/init.d/gitlab start
    Если все хорошо, то в консоли мы увидим следующее:

    The GitLab Unicorn web server with pid 15869 is running.
    The GitLab Sidekiq job dispatcher with pid 16468 is running.
    GitLab and all its components are up and running.
    По умолчанию gitlab крутится через unicorn на порту 8080 и мы можем убедиться в этом:

    #запустим браузер lynx
    lynx localhost:8080
    Результат работы lynx будет вывод страницы для авторизации пользователя. Вводим логин ‘root’ и пароль ‘5iveL!fe’ (все без кавычек). Сабмитим форму и видим предложение от gitlab сменить текущий пароль, меняем.

    Настраиваем Apache конфиг для gitlab
    Осталось настроить Apache. Переходим в папку /etc/httpd/sites-available и создаем там файлик gitlab со следующим содержимым:

    Содержимое конфиг файла gitlab для Apache

    ServerName OUR_COOL_URL

    ServerSignature Off

    ProxyPreserveHost On

    # Ensure that encoded slashes are not decoded but left in their encoded state.
    AllowEncodedSlashes Off


    Order deny,allow
    Allow from all

    ProxyPassReverse http://127.0.0.1:8080
    ProxyPassReverse http://OUR_COOL_URL/

    # apache equivalent of nginx try files
    RewriteEngine on
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
    RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA]

    # needed for downloading attachments
    DocumentRoot /home/git/gitlab/public

    Alias /gitlab /home/git/gitlab/public

    Options All -Indexes
    AllowOverride All
    Order deny,allow
    Allow from all


    Options All -Indexes
    AllowOverride All
    Order deny,allow
    Allow from all

    LogFormat «%{X-Forwarded-For}i %l %u %t «%r» %>s %b» common_forwarded
    ErrorLog /var/log/httpd/gitlab_error.log
    LogLevel warn
    CustomLog /var/log/httpd/gitlab_access.log combined env=!dontlog
    CustomLog /var/log/httpd/gitlab combined


    Полезные заметки
    Проблемы, с которыми возможно столкнуться во время установки и после
    Если вы использовали другое имя пользователя отличное от git то необходимо во всех конфигах gitlab, gitlab-shell, redis поменять пути. К примеру, в gitlab-shell в файле config.yml необходимо в нескольких местах исправить пути, допустим у нас пользователь gitlab:
    План действия
    #путь где будут созданы репозитории
    repos_path: «/home/gitlab/repositories»

    #путь к папке где будут храниться паблик ключи пользователей
    auth_file: «/home/gitlab/.ssh/authorized_keys»

    #путь к файлу логов
    log_file: «/home/gitlab/gitlab-shell/gitlab-shell.log»
    По умолчанию пользователь Administrator(root) создан с email example@localhost, мы можем изменить этот email, а так же email from на нужные в следующих файлах:
    Список файлов
    /home/git/gitlab/config/gitlab.teatro.yml: email_from: example@localhost
    /home/git/gitlab/config/gitlab.teatro.yml: support_email: example@localhost
    /home/git/gitlab/config/gitlab.yml: email_from: example@localhost
    /home/git/gitlab/db/fixtures/development/01_admin.rb: s.email = «example@localhost»
    /home/git/gitlab/db/fixtures/production/001_admin.rb: email: «example@localhost»
    Если у вас при git push в репозиторий проекта, созданного в gitlab, вылазит следующая ошибка «constants.rb:2:in `‘: uninitialized constant Bundler: :RbConfig (NameError)», то необходимо обновить установленный в системе ruby.
    План действия
    #запускаем
    sudo /sbin/pkgtool

    #открываем View и ищем в списке ruby (для быстрого перехода можно нажать на «r»)
    #выходим и пишем
    which ruby
    which rake
    which gem

    #сравниваем версии, 99% , что версия в pkgtool младше и нужно будет сделать обновление

    #так же на всякий случай откроем на редактирование файлик boot в папке gitlab
    sudo -u git -H nano config/boot.yml

    #и добавим следующее прямо перед строчкой require ‘rubygems’, и заменим RIGHT_PATH_TO_GEM_FROM_WHICH_RESULT на путь который мы получили
    #как результат комманды which gem
    ENV = «RIGHT_PATH_TO_GEM_FROM_WHICH_RESULT»
    Gem.clear_paths
    Если у вас во время git push в репозиторий проекта созданного в gitlab вылазит следующая ошибка «GitLab: An unexpected error occurred (redis-cli returned 127).», делаем следующее:
    План действия
    #открываем на редактирование файл config в gitlab-shell
    cd /home/git/gitlab-shell && sudo -u git -H nano config.yml

    #находим следующий блок
    # Redis settings used for pushing commit notices to gitlab
    redis:
    bin: /usr/local/redis-cli
    #и меняем значение в bin на правильный путь к redis-cli

Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Для ответа в этой теме необходимо авторизоваться.