Задача была обновить redmine с версии 3.4.4 на 4.0.1. Одновременно с этим нужно было переехать на новый виртуальный сервер из-за смены тарифного плана на хостинге.
Данная инструкция писалась параллельно с проводимой установкой Redmine 4.0.1 на Debian 9 Stretch (чистый, нулячий сервер). В качестве сервера выступал VDS от хостинга «1vds». Кстати, рекомендую. (Если будете регистрироваться — введите промокод 648520249, который даст скидку 25%). При заказе услуги я не стал выбирать предустановку LAMP (аббревиатура от Linux Apache MySQL PHP). Все поставим сами. Крайне желательно, чтобы на сервере было не менее 2 гигабайт оперативной памяти! С меньшими ресурсами у меня не захотел ставиться passenger.
Для тех, кто не любит долго разбираться в тонкостях настройки и работы приложений, не имеет своего системного администратора и серьезно относится к отказоустойчивости системы бизнес-процессов, рекомендую использовать облачный Redmine. Например, от компании RedmineUP. В облаке уже развернут базовый Redmine, дополнительно установлены популярные плагины Agile, CRM, Helpdesk и ребята помогают с конфигурацией и настройкой пользователей. Одним словом — все готово к работе. Пробуйте бесплатно.
На момент написания статьи версии ПО:
Debian 9.8
Redmine 4.0.1
Ruby 2.6.1
Rails 5.2.2
Apache 2.4.25
Passenger 6.0.1
MariaDB 10.3
Обновляем пакеты, настраиваем локализацию консоли и выставляем правильное время
apt-get update apt-get upgrade
На новом сервере не русифицирована консоль — сделаем это:
apt-get install locales dpkg-reconfigure locales
Выбрать кодировку «ru_RU.UTF-8».
dpkg-reconfigure tzdata
Дополнительный софт
apt-get install mc apt-get install sudo
Устанавливаем Ruby
Установку проводим при помощи RVM (Ruby Version Manager):
apt-get install curl apt-get install dirmngr gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable
Добавляем пользователя root в группу rvm, как этого требует установщик:
usermod -G rvm root
После установки RVM была дана инструкция по запуску RVM:
To start using RVM you need to run `source /etc/profile.d/rvm.sh` in all your open shell windows, in rare cases you need to reopen all shell windows.
Сделаем это в текущей сессии:
source /etc/profile.d/rvm.sh
Устанавливаем Ruby ruby-2.6.1:
rvm install ruby-2.6.1
Утилита обновит систему и установит необходимые пакеты.
Далее определяем версию Ruby по умолчанию:
rvm use ruby 2.6.1 --default rvm gemset create redmine rvm use 2.6.1@redmine --default
Установка базы данных
apt-get install software-properties-common dirmngr apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8 add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.mephi.ru/mariadb/repo/10.3/debian stretch main' apt-get update apt-get install mariadb-server
apt-get install libmysqlclient-dev
Создаем базу данных для CRM
Входим в консоль управления СУБД:
mysql -uroot -p
Создаем базу для redmine. Пароль должен быть такой же, как на старом сервере. (Посмотреть можно в конфиге по адресу config/database.yml):
create database redmine character set utf8; create user 'redmine'@'localhost' identified by 'HARDPASSWORD'; grant all privileges on redmine.* to 'redmine'@'localhost'; exit;
HARDPASSWORD замените на свое. По идее пароль должен быть такой же, как на старом сервере, но при желании можно и сменить.
Устанавливаем Redmine
apt-get install git cd /opt git clone https://github.com/redmine/redmine.git
chmod 775 -R /opt/redmine chown -R www-data:www-data /opt/redmine
Устанавливаем RMagic
apt-get install graphicsmagick-libmagick-dev-compat apt-get install libmagickwand-dev
Создаем конфиг для базы данных
cp /opt/redmine/config/database.yml.example /opt/redmine/config/database.yml mcedit /opt/redmine/config/database.yml
Делаем чтобы было так:
production: adapter: mysql2 database: redmine host: localhost username: redmine password: "HARDPASSWORD" encoding: utf8
Устанавливаем bundler и все необходимые на данный момент gem’ы
cd /opt/redmine source /etc/profile.d/rvm.sh gem install bundler -v 1.17.1
bundle install --without development test bundle exec rake generate_secret_token
Переносим данные со старого сервера
Бэкапим информацию на старом сервере:
mysqldump -uroot -p redmine > ./redmine.sql tar -czf /opt/redmine.tar.gz /opt/redmine
Копируем оба новых получившихся файла на новый сервер. Разворачиваем их:
- Распаковываем архив redmine.tar.gz командой tar -xzf redmine.tar.gz.
- Заходим в распакованную директорию и переносим из нее все, что находится в каталоге /files/ в такую же папку нового редмайна.
- Также копируем старый конфиг из каталога /config/ (файл configuration.yml).
- Заливаем дамп базы данных:
mysql -uroot -p redmine < ./redmine.sql
Еще раз скинем права:
chmod 775 -R /opt/redmine chown -R www-data:www-data /opt/redmine
Делаем миграцию и грузим старые данные в новую базу:
cd /opt/redmine source /etc/profile.d/rvm.sh rake db:migrate RAILS_ENV=production
Настраиваем веб-сервер
apt-get install apache2 apt-get install libcurl4-openssl-dev apt-get install apache2-dev cd /opt/redmine/ source /etc/profile.d/rvm.sh gem install passenger passenger-install-apache2-module
Следуем инструкциям установщика. В самом конце скрипт попросит внести правки в конфиги apache. Открываем новую консольку и выполняем (ВНИМАНИЕ! обязательно проверьте так ли у вас, потому как версия passenger’а скорее всего поменялась, и будут уже другие цифры; ниже только ПРИМЕР):
touch /etc/apache2/mods-available/passenger.conf touch /etc/apache2/mods-available/passenger.load echo "LoadModule passenger_module /usr/local/rvm/gems/ruby-2.6.1@redmine/gems/passenger-6.0.1/buildout/apache2/mod_passenger.so" > /etc/apache2/mods-available/passenger.load mcedit /etc/apache2/mods-available/passenger.conf
И добавляем в него (АНАЛОГИЧНО ПРОВЕРЯЕМ ВЕРСИЮ):
<IfModule mod_passenger.c> PassengerRoot /usr/local/rvm/gems/ruby-2.6.1@redmine/gems/passenger-6.0.1 PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.6.1@redmine/wrappers/ruby </IfModule>
Сохраняем, закрываем. Выполняем:
a2enmod passenger systemctl restart apache2
Возвращаемся в консоль, где происходит установка и жмем Enter для завершения установки.
Настройка Apache и Passenger
touch /etc/apache2/sites-available/redmine.conf mcedit /etc/apache2/sites-available/redmine.conf
Туда:
<VirtualHost *:80> ServerName new-redmine.ru ServerAdmin admin@new-redmine.ru DocumentRoot /opt/redmine/public RailsEnv production RailsBaseURI / <Directory /opt/redmine/public> Options Indexes ExecCGI FollowSymLinks Options -MultiViews AllowOverride all <RequireAll> Require all granted </RequireAll> </Directory> </VirtualHost>
Сохраняем, выходим. Выполняем:
a2ensite redmine systemctl reload apache2
ImageMagic
apt-get install imagemagick systemctl reload apache2
Поздравляю! Установка завершена. Результат:
Команда
curl -sSL https://get.rvm.io | bash -s stable
долго висит, а потом выдает ошибку, что не возможно соединиться с узлом.
Никита, бывает, что просто сервер get.rvm.io не доступен. Можно попробовать запустить эту команду чуть позже. Если через браузер зайти на https://get.rvm.io — откроется что-нибудь? Если увидишь текст на bash’е, то сохраняй эту страницу, закидывай на сервер, делай его исполняемым и запускай командой
bash ./filename -ruby
Добрый день.
Был установлен redmine 3.0.1 (Centos 5.6)
Переехал на 3.3.1 (Debian 9)
Теперь пытаюсь перейти на Redmine 4
Пока всё заканчивается этим:
┌─ root /usr/share/redmine
└─ # rake db:migrate RAILS_ENV=production
rake aborted!
NoMethodError: undefined method `tenant’ for Redmine:Module
/usr/share/redmine/config/initializers/secret_token.rb:11:in `’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:285:in `load’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:285:in `block in load’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:257:in `load_dependency’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:285:in `load’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/engine.rb:657:in `block in load_config_initializer’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/activesupport-5.2.2/lib/active_support/notifications.rb:170:in `instrument’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/engine.rb:656:in `load_config_initializer’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/engine.rb:614:in `block (2 levels) in ‘
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/engine.rb:613:in `each’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/engine.rb:613:in `block in ‘
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/initializable.rb:32:in `instance_exec’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/initializable.rb:32:in `run’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/initializable.rb:61:in `block in run_initializers’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/initializable.rb:50:in `each’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/initializable.rb:50:in `tsort_each_child’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/initializable.rb:60:in `run_initializers’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/application.rb:361:in `initialize!’
/usr/share/redmine/config/environment.rb:14:in `’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/application.rb:337:in `require’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/application.rb:337:in `require_environment!’
/usr/local/rvm/gems/ruby-2.6.1@redmine/gems/railties-5.2.2/lib/rails/application.rb:520:in `block in run_tasks_blocks’
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with —trace)
Вы плагины уже перенесли? Попробуйте перед этой командой очистить папку с плагинами. Не все модули из 3-ей версии redmine работают на четверке.