Инструменты пользователя

Инструменты сайта


Боковая панель


Программное обеспечение
Черновики


Краткая инструкция

hidden:redmine:git

Это старая версия документа!


redmine - git

Инструкция администратора по установке СКВ из дистрибутива

Для установки требуются хранилища: redmine_source.git, redmine_git_hosting.git, redmine_database.git, redmine_gitolite.git

Установка необходимых пакетов в системе

yum groupinstall "Development Tools"
yum install libssh2 libssh2-devel cmake libgpg-error-devel

Установка RVM и интерпретатора Ruby

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable --ruby=2.1.5p273

Установка posgresql и конфигурация

yum install postgresql

nano /var/lib/pgsql/data/pg_hba.conf # отредактировать файл

# TYPE  DATABASE    USER   CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
# IPv6 local connections:
host    all         all         ::1/128               trust

/etc/init.d/posgresql restart

git clone redmine_database.git redmine_database # клонировать хранилище с БД
cd redmine_database
pgql -f redmine-`date`.sql

Создать пользователей redmine и git в системе

adduser redmine
adduser git

Установка Redmine

gem install bundler
gem install puma
su redmine
cd ~
git clone redmine_source.git redmine
cd redmine
bundle install --without development test --path vendor/bundle # в случае отсутствия каких-либо библиотек установить их в системе и повторить команду
mkdir tmp tmp/pdf public/plugin_assets
sudo chown -R redmine:redmine files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets
bundle exec rails server webrick -e production # тестирование

</file>

Установка и конфигурация nginx

<code>yum install nginx

touch /etc/nginx/conf.d/redmine.conf

upstream puma_redmine {
  server   unix:///home/redmine/redmine/tmp/sockets/redmine.sock fail_timeout=0;
#  server        127.0.0.1:3000; #dev mode
}

server {
  server_name   repo.e-moskva.ru;
  listen *:80;
  rewrite ^(.*)$ https://$server_name$1 permanent;
}

server {
  server_name repo.e-moskva.ru;
  listen *:443;
  listen localhost:443;

  ssl on;
  ssl_certificate_key /etc/nginx/cert/privkey.pem;
  ssl_certificate /etc/nginx/cert/repo.cer;
  ssl_client_certificate /etc/nginx/cert/root.cer;
  #ssl_verify_client on;

  keepalive_timeout 70;
  fastcgi_param SSL_VERIFIED $ssl_client_verify;
  fastcgi_param SSL_CLIENT_SERIAL $ssl_client_serial;
  fastcgi_param SSL_CLIENT_CERT $ssl_client_cert;
  fastcgi_param SSL_DN $ssl_client_s_dn;

  root          /home/redmine/redmine;

  access_log    /var/log/nginx/redmine.log;
  error_log     /var/log/nginx/redmine.log;

  client_max_body_size 1G;

  location / {
    try_files $uri @ruby;
  }

  location /public/courses {
    autoindex on;
  }

  location @ruby {
    proxy_set_header X-Forwarded-Proto https; # unquote if you are in HTTPs
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_read_timeout 300;
    proxy_pass http://puma_redmine;
  }
}

/etc/init.d/nginx restart

</file>

Конфигурация Puma

<code>touch /etc/init.d/redmine

#!/bin/sh
### BEGIN INIT INFO
# Provides:   redmine
# Required-Start:    $local_fs $remote_fs $network $mysql $named
# Required-Stop:     $local_fs $remote_fs $network $mysql $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Redmine projects manager
# Description:       This file should be used to start and stop Redmine.
### END INIT INFO

[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions

REDMINE_USER="redmine"

WEBSERVER="server_puma"
WORKER1="sidekiq_git_hosting"

case "$1" in
  start)
    su - $REDMINE_USER -c "${WEBSERVER}.sh start"
#    su - $REDMINE_USER -c "${WORKER1}.sh start"
  ;;
  stop)
    su - $REDMINE_USER -c "${WEBSERVER}.sh stop"
#    su - $REDMINE_USER -c "${WORKER1}.sh stop"
  ;;
  restart)
    su - $REDMINE_USER -c "${WEBSERVER}.sh restart"
#    su - $REDMINE_USER -c "${WORKER1}.sh restart"
  ;;
  *)
    echo "Usage : /etc/init.d/redmine {start|stop|restart}"
  ;;
esac

mkdir -p /home/redmine/bin/
cd !$
touch server_puma.sh

#!/bin/bash

# You should place this script in user's home bin dir like :
# /home/redmine/bin/server_puma.sh
#
# Normally the user's bin directory should be in the PATH.
# If not, add this in /home/redmine/.profile :
#
# ------------------>8
# #set PATH so it includes user's private bin if it exists
# if [ -d "$HOME/bin" ] ; then
#   PATH="$HOME/bin:$PATH"
# fi
# ------------------>8
#
#
# This script *must* be run by the Redmine user so
# switch user *before* running the script :
# root$ su - redmine
#
# Then :
# redmine$ server_puma.sh start
# redmine$ server_puma.sh stop
# redmine$ server_puma.sh restart

SERVER_NAME="redmine"

RAILS_ENV="production"

REDMINE_PATH="$HOME/redmine"
CONFIG_FILE="$HOME/etc/puma.rb"

PID_FILE="$REDMINE_PATH/tmp/pids/puma.pid"
SOCK_FILE="$REDMINE_PATH/tmp/sockets/redmine.sock"

BIND_URI="unix://$SOCK_FILE"

THREADS="0:8"
WORKERS=2

function start () {
  echo "Start Puma Server..."
  puma --daemon --preload --bind $BIND_URI \
       --environment $RAILS_ENV --dir $REDMINE_PATH \
       --workers $WORKERS --threads $THREADS \
       --pidfile $PID_FILE --tag $SERVER_NAME \
       --config $CONFIG_FILE
  echo "Done"
}

function stop () {
  echo "Stop Puma Server..."
  if [ -f $PID_FILE ] ; then
    kill $(cat $PID_FILE) 2>/dev/null
    rm -f $PID_FILE
    rm -f $SOCK_FILE
  fi
  echo "Done"
}

case "$1" in
  start)
    start
  ;;
  stop)
    stop
  ;;
  restart)
    stop
    start
  ;;
  *)
    echo "Usage : server_puma.sh {start|stop|restart}"
  ;;
esac

mkdir -p /home/redmine/etc/
cd !$
touch puma.rb

stdout_redirect '/home/redmine/redmine/log/puma.stderr.log', '/home/redmine/redmine/log/puma.stdout.log'

on_worker_boot do
  ActiveSupport.on_load(:active_record) do
    ActiveRecord::Base.establish_connection
  end
end

/etc/init.d/redmine start

</file>

Автозагрузка сервисов

<code>chkconfig nginx on
chkconfig posgresql on
chkconfig redmine on

Установка и конфигурация дополнения redmine-git-hosting.io

su redmine

cd REDMINE_ROOT/plugins
git clone https://github.com/jbox-web/redmine_bootstrap_kit.git
cd redmine_bootstrap_kit/
git checkout 0.2.4

cd REDMINE_ROOT/plugins
git clone redmine_git_hosting.git redmine_git_hosting
cd redmine_git_hosting/
git checkout e-moskva

cd REDMINE_ROOT
bundle install --without development test
bundle exec rake redmine:plugins:migrate RAILS_ENV=production NAME=redmine_git_hosting

cd ~
mkdir ssh_keys
ssh-keygen -N '' -f ssh_keys/redmine_gitolite_admin_id_rsa

cd /tmp/
git clone redmine_gitolite.git redmine_gitolite
cd redmine_gitolite
rm -rf /home/git/*
cp -r . /home/git/
cp /home/redmine/ssh_keys/redmine_gitolite_admin_id_rsa.pub /home/git/

touch /etc/sudoers.d/redmine

Defaults:redmine !requiretty
redmine ALL=(git) NOPASSWD:ALL

/etc/init.d/redmine restart

Проверка авторизации Redmine

root$ su redmine
redmine$ ssh -i ssh_keys/redmine_gitolite_admin_id_rsa git@localhost info
# accept key

Доп. инфо:
http://redmine-git-hosting.io/get_started/
https://www.redmine.org/projects/redmine/wiki/RusRedmineInstall

hidden/redmine/git.1547725196.txt.gz · Последние изменения: 2019/01/17 14:39 — Алексей Кожевников