Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия | |||
hidden:redmine:git [2019/01/17 14:39] Алексей Кожевников удалено |
— (текущий) | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== redmine - git ====== | ||
- | |||
- | == Инструкция администратора по установке СКВ из дистрибутива == | ||
- | |||
- | Для установки требуются хранилища: redmine_source.git, redmine_git_hosting.git, redmine_database.git, redmine_gitolite.git | ||
- | |||
- | Установка необходимых пакетов в системе | ||
- | |||
- | <code>yum groupinstall "Development Tools" | ||
- | yum install libssh2 libssh2-devel cmake libgpg-error-devel | ||
- | |||
- | </code> | ||
- | |||
- | Установка RVM и интерпретатора Ruby | ||
- | |||
- | <code>gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 | ||
- | \curl -sSL https://get.rvm.io | bash -s stable --ruby=2.1.5p273 | ||
- | |||
- | </code> | ||
- | |||
- | Установка posgresql и конфигурация | ||
- | |||
- | <code>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 | ||
- | |||
- | </code> | ||
- | |||
- | Создать пользователей redmine и git в системе | ||
- | |||
- | <code>adduser redmine | ||
- | adduser git | ||
- | |||
- | </code> | ||
- | |||
- | Установка Redmine | ||
- | |||
- | <code>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 | ||
- | |||
- | </code> | ||
- | |||
- | Установка и конфигурация дополнения redmine-git-hosting.io | ||
- | |||
- | <code>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 | ||
- | |||
- | </code> | ||
- | |||
- | Проверка авторизации Redmine | ||
- | |||
- | <code>root$ su redmine | ||
- | redmine$ ssh -i ssh_keys/redmine_gitolite_admin_id_rsa git@localhost info | ||
- | # accept key | ||
- | |||
- | </code> | ||
- | |||
- | Доп. инфо:\\ | ||
- | [[http://redmine-git-hosting.io/get_started/|http://redmine-git-hosting.io/get_started/]]\\ | ||
- | [[https://www.redmine.org/projects/redmine/wiki/RusRedmineInstall|https://www.redmine.org/projects/redmine/wiki/RusRedmineInstall]] | ||
- | |||
- | {{tag> git }} | ||
- | |||