Инструкция по установку Redmine на Centos 7 + Nginx. Redmine будет работать на URL /redmine .
Установка RVM
Установка ключей:
_x000D_gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDBУстановка скрипта rvm
_x000D_yum install which git svn -y_x000D_curl -sSL https://get.rvm.io | bashУстановка Ruby
_x000D_rvm install 2.3.0_x000D_gem install bundler -v 1.17.3Установка Redmine
Установите зависимости:
_x000D_yum install ImageMagick-devel mysql-devel psmisc -yСоздайте пользователя redmine
_x000D_groupadd redmine_x000D_useradd -g redmine redmineСкачайте и распокуйте redmine в папку /srv
_x000D_cd /srv_x000D_wget http://www.redmine.org/releases/redmine-3.4.11.tar.gz_x000D_tar xvf redmine-3.4.11.tar.gz_x000D_chown -R redmine:redmine redmine-3.4.11_x000D_cd redmine-3.4.11Настройте redmine:
_x000D_su redmine_x000D_cp config/configuration.yml.example config/configuration.yml_x000D_cp config/database.yml.example config/database.ymlКонфигурация БД. Выполните nano config/database.yml и пропишите свои параметры mysql.
_x000D_production:_x000D_ adapter: mysql2_x000D_ database: redmine_x000D_ host: localhost_x000D_ username: root_x000D_ password: ""_x000D_ encoding: utf8Допишите в конце файла nano config/environment.rb следующее содержание:
_x000D_RedmineApp::Application.routes.default_scope = "/redmine"_x000D__x000D_# Initialize the Rails application_x000D_Rails.application.initialize!_x000D__x000D_Redmine::Utils::relative_url_root = "/redmine"Создайте симлинк в папке publib. Папка public — это web root. Он указывается в nginx. Т.к. redmine работает на /redmine, то нужно создать симлинк redmine на папку public, чтобы от туда nginx смог раздать файлы js и css
_x000D_cd public_x000D_ln -s . redmine_x000D_cd ..Установите redmine:
_x000D_bundle _1.17.3_ install --path vendor/bundle --without development test_x000D_bundle _1.17.3_ exec rake generate_secret_token_x000D_RAILS_ENV=production bundle _1.17.3_ exec rake db_migrate_x000D_RAILS_ENV=production bundle _1.17.3_ exec rake redmine:plugins:migrate_x000D_RAILS_ENV=production bundle _1.17.3_ exec rake tmp:cache:clearСоздайте скрипт запуска редмайн nano /etc/init.d/redmine
_x000D_#!/bin/bash_x000D_#_x000D_### BEGIN INIT INFO_x000D_# Provides: redmine_x000D_# Required-Start: $local_fs $network $syslog $remote_fs_x000D_# Required-Stop: $local_fs $network $syslog $remote_fs_x000D_# Default-Start: 2 3 4 5_x000D_# Default-Stop: 0 1 6_x000D_# Short-Description: Start up the redmine web server_x000D_# Description: Redmine_x000D_### END INIT INFO_x000D__x000D__x000D_SCREEN_NAME="redmine"_x000D_BASE_DIR="/srv/redmine-3.4.11"_x000D__x000D_screen -wipe > /dev/null 2>&1_x000D_screen_exists(){_x000D_ ch=`ps -ef | grep SCREEN | grep $1`_x000D_ if [ -n "$ch" ]; then_x000D_ return 0_x000D_ else_x000D_ return 1_x000D_ fi_x000D_ return 1_x000D_}_x000D_screen_create() {_x000D_ ch=`ps -ef | grep SCREEN | grep $1`_x000D_ if [ -n "$ch" ]; then_x000D_ return 0_x000D_ else_x000D_ screen -A -m -d -S $1_x000D_ fi_x000D_ return 1_x000D_}_x000D_screen_destroy() {_x000D_ ch=`ps -ef | grep SCREEN | grep $1 | awk '{print $2}'`_x000D_ if [ -n "$ch" ]; then_x000D_ kill $ch_x000D_ else_x000D_ return 0_x000D_ fi_x000D_ return 1_x000D_}_x000D_screen_send() {_x000D_ CMD=$1_x000D_ CMD="/usr/bin/screen -R $SCREEN_NAME -p 0 -X stuff '$CMD'$'n'"_x000D_ /bin/bash -c "$CMD"_x000D_}_x000D_screen_wait() {_x000D_ let ret=0_x000D_ TIMEOUT=$1_x000D_ sleep 1_x000D_ while [ $TIMEOUT -gt 0 ]; do_x000D_ a=`cat ${BASE_DIR}/loop.run`_x000D_ if [ "$a" == "0" ]; then_x000D_ let ret=1_x000D_ break_x000D_ fi_x000D_ echo $TIMEOUT_x000D_ sleep 1_x000D_ let TIMEOUT=${TIMEOUT}-1_x000D_ done_x000D_}_x000D__x000D__x000D__x000D_service_start(){_x000D_ screen_exists $SCREEN_NAME_x000D_ ch=$?_x000D_ if [ -n "$ch" ]; then_x000D_ screen_create $SCREEN_NAME_x000D_ screen_send "/bin/bash /etc/bashrc"_x000D_ screen_send "/etc/profile.d/rvm.sh"_x000D_ screen_send "sudo -u redmine service redmine loop"_x000D_ else_x000D_ echo "please stop $SERVICE_NAME"_x000D_ fi_x000D_}_x000D__x000D_service_stop() {_x000D_ echo "Terminate $SERVICE_NAME"_x000D_ echo 0 > ${BASE_DIR}/loop.run_x000D_ chown redmine:redmine ${BASE_DIR}/loop.run_x000D_ killall ruby > /dev/null_x000D_ screen_wait 10_x000D_ screen_destroy $SCREEN_NAME_x000D_}_x000D__x000D_service_loop() {_x000D_ if [ -f /etc/bashrc ]; then_x000D_ . /etc/bashrc_x000D_ fi_x000D__x000D_ RAILS_ENV=production_x000D_ export RAILS_ENV_x000D_ RAILS_GEM_VERSION=4.2.0 # this should match the result of typing 'rails -v'_x000D_ export RAILS_GEM_VERSION_x000D_ RAILS_ROOT=/redmine_x000D_ export RAILS_ROOT_x000D__x000D_ echo "Start $SERVICE_NAME"_x000D_ echo 1 > ${BASE_DIR}/loop.run_x000D_ while [ 1 ]; do_x000D_ pushd $BASE_DIR_x000D__x000D_ CMD="ruby bin/rails server webrick -e production -b 0.0.0.0 -p 3000 "_x000D_ echo exec $CMD_x000D_ $CMD_x000D__x000D_ popd_x000D__x000D_ a=`cat ${BASE_DIR}/loop.run`_x000D_ echo $a_x000D_ if [ "$a" == "1" ]; then_x000D_ sleep 5_x000D_ else_x000D_ echo "exit"_x000D_ echo 0 > ${BASE_DIR}/loop.run_x000D_ break_x000D_ fi_x000D_ done_x000D_}_x000D_RETVAL=0_x000D__x000D_case "$1" in_x000D_ start)_x000D_ service_start_x000D_ ;;_x000D_ stop)_x000D_ service_stop_x000D_ ;;_x000D_ restart)_x000D_ service_stop_x000D_ service_start_x000D_ ;;_x000D_ loop)_x000D_ service_loop_x000D_ ;;_x000D_ a)_x000D_ screen -D -r $SCREEN_NAME_x000D_ ;;_x000D_ *)_x000D_ echo "Usage: $0 {start|stop|restart|a}"_x000D_ RETVAL=1_x000D_esac_x000D__x000D_exit $RETVAL Добавьте redmine в автозапуск
_x000D_chkconfig --add redmine_x000D_chkconfig redmine onИнтеграция Nginx
_x000D_server {_x000D_ listen 80;_x000D_ server_name www.example.com;_x000D__x000D_ root /var/www/html;_x000D_ index index.html;_x000D_ _x000D_ location /redmine {_x000D_ try_files $uri @redmine;_x000D_ root /srv/redmine-3.4.11/public;_x000D_ }_x000D__x000D_ location @redmine {_x000D_ proxy_set_header HOST $host;_x000D_ proxy_set_header Referer $http_referer;_x000D_ proxy_set_header X-Real-IP $remote_addr;_x000D_ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;_x000D_ #proxy_set_header X-Forwarded-Proto $scheme;_x000D_ #proxy_set_header X-Forwarded-Port $server_port;_x000D_ proxy_pass http://127.0.0.1:3000;_x000D_ }_x000D__x000D_ # Root access_x000D_ location / {_x000D_ root /var/www/html;_x000D_ }_x000D__x000D_ location ~* ^.+.(css|js|jpg|jpeg|png|bmp|ico|svg)$ {_x000D_ expires max;_x000D_ }_x000D_}