- PVSM.RU - https://www.pvsm.ru -
Так сложилось, что для ведения проекта не хватало обычного GitHub или GitBucket. Оснавная причина в хранении и контроле версий больших бинанрых файлов psd, 3dsmax и других. На самом деле вариантов решения масса, можно например было использовать Облачный диск или git Large Files System, представленный GitHub. Но взвесив все плюсы и минусы разных подходов к организации, мы пришли к связке GitLab + redmine.
Я не думаю, что есть смысл описывать продукты, я лишь приведу основные достоинства, которые подтолкнули нас на этот выбор.
Основные плюсы GitLab:
Также оба проекта 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>
Мы будем использовать Nginx,Thin и MySQL. Если по религиозным причинам вам необходима PostgreSQL, читайте заметки после кода, я буду указывать где менять настройки. Также вместо Thin можно использовать Unicorn, но мы опустим его установку в рамках данной статьи.
Установка сводится к следующему:
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
Нам потребуются загаловки для компиляции.
# Внимание: libmagickcore-dev libmagickwand-dev потянут за собой много зависимостей. Если система была не чистой смотрите.
apt-get install libmagickcore-dev libmagickwand-dev imagemagick build-essential
Теперь мы готовы скачать свежий redmine. На момент написания статьи это 3.2.0 [1]. Скачаем и положим в рабочую директорию.
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 [2]:3000 все должно отлично работать.
После чего нажимаем Ctrl+C.
Для того что бы 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
Создадим хост:
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 на своем
Автор: grabedinex
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ruby/114444
Ссылки в тексте:
[1] 3.2.0: http://www.redmine.org/projects/redmine/wiki/Download
[2] hostname: http://hostname
[3] VPS: https://www.reg.ru/?rlink=reflink-717
[4] Источник: https://habrahabr.ru/post/278843/
Нажмите здесь для печати.