Установка и настройка совместной работы GitLab + Redmine на Debian 8 jessie + Nginx — Часть 1

от автора


Вступление

Так сложилось, что для ведения проекта не хватало обычного GitHub или GitBucket. Оснавная причина в хранении и контроле версий больших бинанрых файлов psd, 3dsmax и других. На самом деле вариантов решения масса, можно например было использовать Облачный диск или git Large Files System, представленный GitHub. Но взвесив все плюсы и минусы разных подходов к организации, мы пришли к связке GitLab + redmine.

Я не думаю, что есть смысл описывать продукты, я лишь приведу основные достоинства, которые подтолкнули нас на этот выбор.
Основные плюсы GitLab:

  • Свой репозиторий.
  • Тонкая настройка прав.
  • Поддержка git lfs почти из коробки.

Также оба проекта Open Source.

Подготовка рабочего пространства

Решил не опускать всех мелочей, чтобы даже уровень пользователя «Первый раз вижу консоль Linux» мог поднять себе связку Redmine + GitLab.

Начнем с подготовки рабоченго пространства, а именно с установки sudo, так как использовать систему под пользователем root не есть хорошо. А также при установке от root возникали некоторые проблемы с GitLab:

#Также установит nano, если у вас его вдруг нет. apt-get install nano sudo -y 

Настроим sudo, добавив своего пользователя:

#Создадим пользователя, ответив на вопросы и задав пароль <username> # Там уже будет пример пользвателя root. Нужно лишь повторить с именем своего пользователя. nano /etc/sudoers #Перейдем на пользователя sudo su <username> 

Установка Redmine

Мы будем использовать Nginx,Thin и MySQL. Если по религиозным причинам вам необходима PostgreSQL, читайте заметки после кода, я буду указывать где менять настройки. Также вместо Thin можно использовать Unicorn, но мы опустим его установку в рамках данной статьи.

Установка сводится к следующему:

Установка Nginx на роль внешнего веб-сервера

sudo apt-get update sudo apt-get install nginx -y 

Установка базы данных

# База данных MySql apt-get install mysql-server mysql-client libmysqlclient-dev # База данных PostgreSQL apt-get install postgresql 

При установке MySql может запросить пароль супер пользователя. Придумайте и запишите его. Теперь нам нужно создать базу данных и пользователя дня нее.

# Если был выбран MySql mysql -uroot -p CREATE DATABASE redmine CHARACTER SET utf8; CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost'; exit  # Если был выбран PostgreSQL su postgres psql CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'password' NOINHERIT VALID UNTIL 'infinity'; CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine TEMPLATE template0; \q exit 

Установка самого Redmine

Нам потребуются загаловки для компиляции.

# Внимание: libmagickcore-dev libmagickwand-dev потянут за собой много зависимостей. Если система была не чистой смотрите. apt-get install libmagickcore-dev libmagickwand-dev imagemagick build-essential 

Теперь мы готовы скачать свежий redmine. На момент написания статьи это 3.2.0. Скачаем и положим в рабочую директорию.

cd /tmp mkdir redmine cd redmine wget http://www.redmine.org/releases/redmine-3.2.0.tar.gz tar -zxvf ./redmine-3.2.0.tar.gz mv ./redmine-3.2.0 /usr/local/share/redmine 

Redmine написан на Ruby и требует его. Устанавливаем.

# Потянет много зависимостей. apt-get install ruby ruby-dev rubygems libruby # Нам потребуется bundler это почти как apt-get только для ruby gem install bundler 

Добавим thin.

nano /usr/local/share/redmine/Gemfile #после добавляем gem "thin" 

Установим все необходимые gem’ы для redmine:

cd /usr/local/share/redmine #ЗАМЕТКА: Если вы используете PostgreSQL то замените --without PostgreSQL на --without mysql bundle install --without development test postgresql sqlite 

Осталось настроить.

cp config/database.yml.example config/database.yml mv public/dispatch.fcgi.example public/dispatch.fcgi nano config/database.yml 

Изменяем production примерно к такому виду.

ЗАМЕТКА: Если вы устанавливаете PostgreSQL сделайте по примеру внизу файла database.yml. Также акуратней с табуляцией т.к *.yml достаточно специфичный формат.

production:   adapter: mysql2   database: redmine   host: localhost   username: redmine   password: "<password_Mysql_redmine_user>"   encoding: utf8 

Создадим секретный ключ:

rake generate_secret_token 

Ошибок быть не должно. Но если вдруг он попросит mysql2 или другой гем для PostgreSQL, просто установите их:

gem install mysql2 # после чего снова попробуйте сделать ключ rake generate_secret_token 

Заполнение базы данных происходит 2 командами. После 2 попросят выбрать язык.

RAILS_ENV=production rake db:migrate RAILS_ENV=production rake redmine:load_default_data # также если вы хотите зашифровать стандартный пароль выполните: rake db:encrypt RAILS_ENV=production 

Итак. Redmine полностью настроен и давайте проверим его. Для этого есть WebRic:

ruby script/rails server webrick -e production 

Если увидели INFO WEBrick::HTTPServer#start: pid=27676 port=3000 то можно проверить в браузере hostname:3000 все должно отлично работать.

После чего нажимаем Ctrl+C.

Настройка Thin

Для того что бы nginx понимал ruby нам нужен thin:

thin install #так же нам понадобится пользователь adduser redmine chown -hR redmine:redmine /usr/local/share/redmine 

Осталось настроить thin:

nano /etc/thin/redmine.yml

pid: tmp/pids/thin.pid group: redmine wait: 30 timeout: 30 log: log/thin.log max_conns: 1024 require: []  environment: production max_persistent_conns: 512 servers: 1 daemonize: true user: redmine socket: /tmp/thin.sock chdir: /usr/local/share/redmine 

Запустим thin:

/etc/init.d/thin start # Проверим работоспособнасть nano /usr/local/share/redmine/logs/thin.0.log 

Настройка Nginx

Создадим хост:

nano /etc/nginx/sites-available/redmine.hostname.ru 

В файл копируем настройки и изменяем под себя:

# Настраиваем upstream на сокет нашего "слушающего" сервера thin upstream thin_server {     server unix:/tmp/thin.0.sock; } # Веб-сервер видимый из вне server {     #имя сервера     server_name redmine.hostname.ru           #НЕ Используем HTTPS(SSL)     listen *:80;           #логи     access_log /var/log/nginx/redmine.mihanentalpo.me-access.log;     error_log  /var/log/nginx/redmine.mihanentalpo.me-error.log;       #Папка public редмайна     root /usr/local/share/redmine/public;           # Основной location. Он отдаёт все статические файлы "как следует", а все     # нестатические адреса редиректит на прокси-сервер, которым и является thin     location  / {                proxy_redirect off;         proxy_set_header Host redmine.mihanentalpo.me;         try_files $uri/index.html $uri.html $uri @thin;     }       # Именованый Location для того, чтобы было куда сослаться      location @thin     {         proxy_pass http://thin_server;     } }  

После чего включаем сайт и перезапускаем nginx:

ln -s /etc/nginx/sites-available/redmine.hostname.ru /etc/nginx/sites-enabled/redmine.hostname.ru /etc/init.d/nginx restart 

На этом установка Redmine завершена. А сам он будет доступен по адрессу redmine.hostname.ru. Для работы ему не хватает интересных плагинов а самое важное разрешений на записиь. Выполните:

chmod -R 0777 /usr/local/share/redmine/tmp chmod -R 0777 /usr/local/share/redmine/files 

У администратора по умолчанию логин admin и пароль admin.

В следующей статье мы рассмотрим установку и настройку GitLab. Возможно, будет настройка ldap.

P.S.: Первая статья, жду конструктивной критики. Может быть, был слишком дотошен и для такого крупного проекта, как Хабр, где собрались ИТ-шники, не нужно было столь подробно разбирать всякие мелочи. Мне просто хотелось что бы любой желающий мог настроить Redmine + GitLab на своем VPS VDS сервере.

ссылка на оригинал статьи https://habrahabr.ru/post/278843/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *