Redmine ошибка при добавлении файла
Иногда возникает задача развернуть, например, redmine по-быстрому и без всяких премудростей, чтобы сразу приступить к своим задачам. Чтобы долго не тупить над ошибками во время установки, можно поступить проще и использовать контейнеризацию, а конкретно, многим уже известный Docker.
P.S. [2020.07.16] Актуализировал редмайн на версию 4.1. И поправил небольшие баги в тексте.
Но так как контейнеры все же в сути своей неизменяемые сущности и, просто запустив redmine и базу данных без подготовки, можно любоваться на сделанные изменения до перезапуска контейнера, то после его остановки надо всё начинать сначала. Это если в общих чертах.
Поэтому были придуманы разные способы для выноса данных, которые необходимо сохранять. Здесь я не буду упоминать слои докера и тому подобное, мысль веду к тому, что нужно вынести отдельно некоторые директории, в которых будут важные и необходимые данные.
Поэтому начнём с быстрой установки docker и затем перейдём к установке redmine через docker-compose.
Ставим Docker
Обновляем список пакетов
Устанавливаем требуемые компоненты
Устанавливаем ключ из официального репозитория.
Проверяем, что ключ установился:
В выводе команды долго содержаться словосочетание «Docker release (CE deb)»
Устанавливаем репозиторий стабильной версии
Устанавливаем docker и docker-compose
Настраиваем Docker
Добавим себя (например, пусть наш логин будет administrator) в группу docker, чтобы не писать каждый раз sudo при выполнении команд
Создадим под проект папку
Создадим Dockerfile со следующим содержимым
Dockerfile нам понадобится для создания кастомного образа Redmine. Например, если для какого то плагина нужно установить зависимости, мы просто дописываем команды для установки зависимостей в Dockerfile после инструкции RUN.
Создаём docker-compose.yml файл с таким содержимым:
Все эти папки доступны в хостовой системе по пути, указанному выше:
Теперь при запуске контейнера по пути
В основном всё готово. Можно выполнить docker-compose up и, дождавшись скачивания необходимых образов, увидеть строки, говорящие, что всё прошло успешно.
Запуск
Если хочется ещё и отправки уведомлений на почту, то пишем файл configuration.yml
с примерно таким содержимым. Настройки почты для каждого отдельного сервиса, будь то gmail, yandex или rambler свои
В файл docker-compose.yml вставляем после строк с вынесенными вовне директориями следующую строку
Redmine готов к работе.
Обновлять его достаточно просто. Для обновления версии redmine нужно всего лишь выполнить две команды
Установка плагинов:
В файле Dockerfile можно указать нужную версию redmine, если планируете переходить на, например, четвёртую версию.
Обратите внимание, что пользователь Redmine будет иметь возможность запускать команды root, но это только для упрощения последующих шагов. Удалите эту строку после установки.
5. Авторизируемся пользователем redmine и установим для него rvm:
6. Разлогинились, теперь снова логинимся и устанавливаем ruby:
sudo su - redmine
rvm install 2.2.4
exit
sudo apt-get install mysql-server libmysqlclient-dev
9. Создаем базу данных и пользователя для нее:
sudo mysql -u root -p
10. Сконфигурируем подключение к базе данных:
sudo su - redmine
cp redmine/config/database.yml.example redmine/config/database.yml
11. Редактируем конфиг Redmine для соединения с БД:
sudo nano redmine/config/database.yml
Изменяем имя пользователя и пароль:
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: my_password
encoding: utf8
12. Инициализация Redmine
sudo apt-get install libmagickcore-dev libmagickwand-dev libmysqlclient-dev
gem install bundler
cd redmine/
bundle install --without development test postgresql sqlite
rake generate_secret_token
RAILS_ENV=production rake db:migrate
RAILS_ENV=production redmine:load_default_data
exit
Если видим ошибку при выполнении команды rake generate_secret_token:
То открываем файл зависимостей на редактирование:
Находим в нем строку с htmlentities 4.3.1 и заменяем на 4.3.4
Если встречаем ошибку:
/redmine$ rake generate_secret_token
[DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead.
Находим в /opt/redmine/redmine/Gemfile.lock, rake 11.1.2 (в моем случае) и заменяем на 10.4.2)
Установка Phusion Passenger
13. Добавление репозитория:
14. Открываем конфиг файл репозитория:
sudo nano /etc/apt/sources.list.d/passenger.list
15.Добавляем в /etc/apt/sources.list.d/passenger.list адрес репозитория:
16. Прописываем пользователя и права доступа к файлу:
sudo chown root: /etc/apt/sources.list.d/passenger.list
sudo chmod 600 /etc/apt/sources.list.d/passenger.list
17. Устанавливаем сам Phusion Passenger:
sudo apt-get update
sudo apt-get install libapache2-mod-passenger
sudo apt-get install apache2
19. Конфигурируем Passenger:
sudo nano /etc/apache2/sites-available/000-default.conf
20. Добавляем следующий блок в конфиг файл:
<Directory /var/www/html/redmine>
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on
</Directory>
21. Включаем passenger, добавляем ссылку на redmine и перезапускаем apache2:
sudo a2enmod passenger
sudo ln -s /opt/redmine/redmine/public/ /var/www/html/redmine
sudo service apache2 restart
22. Генерируем новый секретный ключ, подчищаем сессии и кеш:
sudo su - redmine
cd redmine
rake generate_secret_token
rake db:migrate RAILS_ENV=production
rake redmine:plugins:migrate RAILS_ENV=production
rake tmp:cache:clear
rake tmp:sessions:clear
exit
Данная документацию по установке Redmine 1.4.0 и выше. Вы все еще можете прочитать документ для 1.3.x здесь.
Требования¶
Операционная система¶
Redmine должен работать на Unix, Linux, Mac, Mac Server и Windows поскольку Ruby доступен для этих платформ. Конкретные инструкции доступны здесь.
Ruby интерпретатор¶
Соответствие версий Ruby и версий Redmine:
Версия Redmine | Поддерживаемая версия Ruby | Необходимая версия Rails |
---|---|---|
текущий trunk | ruby 1.9.3, 2.0.0, 2.1, 2.2 | Rails 4.2 |
3.0 | ruby 1.9.3, 2.0.0, 2.1, 2.2 | Rails 4.2 |
2.6 | ruby 1.8.7, 1.9.2, 1.9.3, 2.0.0, 2.1, 2.2, jruby-1.7.6 | Rails 3.2 |
База данных¶
Не обязательные компоненты¶
- Бинарники системы управления исходным кодом (SCM) (например svn), для просмотра хранилища(должны быть доступны в PATH). Прочитайтехранилища Redmine для получения информации о совместимости и требованиях. (чтобы включить возможность экспорта диаграммы Ганта в png изображение) (чтобы активировать поддержку OpenID). Требуется версия 2 или выше.
Версии Redmine¶
Большинству пользователей рекомендуется устанавливать последние версии релизов Redmine. В настроящее время новые версии Redmine выпускаются каждые 6 месяцев, эти релизы считаются стабильными и пригодными к использованияю. Не рекомендуется устанавливать Redmine из trunc репозитария, пока если вы глубоко не изучите Ruby On Rails и не сможете идти в ногу с изменениями - время от времени транк ломается.
Установка¶
Шаг 1 - Redmine application¶
Получите исходный код Redmine, загрузив архив релиза или получив код из хранилища. См. Download.
Шаг 2 - Установка зависимостей¶
Redmine использует Bundler для управления зависимостями gems пакетов.
Вам необходимо вначале установить Bundler:
Затем вы можете установить все зависимости требующиеся Redmine. Для этого распаковываете полученный на первом шаге архив релиза в какую-нибудь папку. Делаете эту папку рабочей и устанавливаете зависимости с помощью следующей команды:
не обязательные зависимости¶
RMagick (позволяет использовать ImageMagick для работы с изображениями в при экспорте в PDF и PNG)¶
Если ImageMagick не установлен в вашей системе, вы должны пропустить установку gem-пакета rmagick используя команду:
Если у вас проблемы с установкой rmagick на Windows, посмотрите это HowTo.
Неиспользуемые адаптеры баз данных¶
Вы также можете пропустить установку адаптеров баз данных, которые вы не используете.
Например, если вы используете MySQL, вы можете пропустить установку пакетов PostgreSQL, SQLite с помощью команды:
Дополнительные зависимости ( Gemfile.local )¶
Если вам нужно загрузить gem-пакеты, которые не требуются для ядра Redmine (например, Puma, FCGI), создайте файл Gemfile.local в корневом каталог Redmine. Данный файл будет автоматически загружаться при запуске bundle install .
Создайте пустую базу данных и сопутствующего пользователя¶
Здесь для примера база данных и пользователь базы будет назван redmine , но вы его можете заменить на что-нибудь ещё.
MySQL¶
Для версий MySQL до 5.0.2 вместо шага create user используйте:
PostgreSQL¶
Шаг 4 - Настройка подключения к базе данных¶
Скопируйте файл config/database.yml.example в config/database.yml и отредактируйте этот файл так, чтобы настроить параметры базы данных для "production" окружения(реальное окружения, используемое для работы).
Пример для базы данных MySQL, использующей ruby1.8 или jruby:
Пример для базы данных MySQL, использующей ruby1.9 (адаптер должен быть установлен в mysql2 ):
Если ваш сервер не работает со стандартным портом (3306), используйте эту конфигурацию:
Пример для PostgreSQL (порт по-умолчанию):
Шаг 5 - Генерация ключа для безопасного хранения сессий¶
Этот шаг генерирует случайный ключ, используемый Rails для шифрования хранилища, содержащего данные сессий, тем самым предотвращая их фальсификацию.
Генерация нового ключа сделает недействительными все существующие сеансы после перезагрузки.
Шаг 6 - Создание структуры базы данных¶
- Создайте структуру базы данных, выполнив следующую команду в корневом каталоге приложения:
Это создаст таблицы и учетную запись администратора с именем admin .
Если вы получите вот такую ошибку:
вам необходимо установить libopenssl-ruby1.8 , в Ubuntu выполните: apt-get install libopenssl-ruby1.8
Шаг 7 - Загрузка данных по умолчанию¶
Установите в базу данных конфигурацию по умолчанию, выполнив следующую команду:
Redmine запросит у вас язык набора данных, которые должны быть загружен. Вы можете также перед запуском команды установить в переменную окружения REDMINE_LANG значение, которое будет автоматически использовано в процессе загрузки.
Шаг 8 - Настройка разрешений¶
Пользователи Windows могут пропустить этот шаг.
- files (хранит вложения)
- log (логи приложения production.log )
- tmp and tmp/pdf (создайте, если их нет. Используется для создания PDF документов).
Предполагается, что вы запустили Redmine от пользователя redmine:
Шаг 9 - Тестирование установки¶
Протестируйте установку путем запуска веб-сервера WEBrick:
- для Redmine 1.4.x:
- для Redmine 2.x:
- для Redmine 3.x
Примечание: Webrick не подходит для нормальной эксплуатации, пожалуйста, используйте WEBrick только для тестирования установки. Не рекомендуется использовать webrick ни для чего кроме разработки. Используйте одно из многих руководств в этой вики для настройки Passenger(также известного как mod_rails ), FCGI или Rack сервер (Unicorn, Thin, Puma, hellip;) для обслуживания вашего redmine.
Используйте учетную запись администратора по умолчанию, чтобы войти:
Теперь вы можете посетить раздел Administration (Администрирование) для изменения настроек приложения.
Настройка¶
Настройки Redmine определяются в файле config/configuration.yml .
Если вам необходимо изменить настройки по-умолчанию, просто скопируйте config/configuration.yml.example в config/configuration.yml и отредактируйте новый файл. Этот файл хорошо прокомментирован, так что смотрите его.
Эти настройки могут быть определены для каждого окружения Rails ( production / development / test ).
: Не забудьте перезапустить приложение после любого изменения.
Настройка Email / SMTP-серверов¶
Настройка email описана на отдельной странице.
Настройки SCM ¶
- изменить имена команд по-умолчанию, если бинарники SCM в PATH используют нестандартные имена (Windows .bat/.cmd не работают)
- определить полный путь к бинарникам
Переопределение имени команды:
Настройка хранилища вложений¶
Вы можете задать путь, где Redmine будет хранить вложения, который отличается от стандартного 'files', используя параметр attachments_storage_path .
Настройка логирования¶
По-умолчанию в Redmine уровень журналирования :info (информация). В зависимости от использования сайта, лог может сильно вырасти. Чтобы это избежать, необходимо его ротировать, либо с помощью системной утилиты logrotate , либо через файл сonfig/additional_environment.rb .
Для использования последнего, необходимо скопировать config/additional_environment.rb.example в config/additional_environment.rb и в нем добавить следующие строки. Отметим, что по умолчанию в файле установлен высокий уровень журналирования, следовательно, должен быть явно установлен в информацию.
Резервное копирование¶
- данные (хранящиеся в базе данных Redmine)
- вложения (хранится в директории files вашей установки Redmine, если не настроено иное местоположение этих файлов)
Вот простой скрипт, который может быть использован для создания ежедневных резервных копий (предположим вы используете базу данных MySQL):
Замечания по установке на Windows¶
После его установки, выберите Start Command Prompt with Ruby в меню Пуск.
При выполнении команд, описанных в данном руководстве, вы должны установить переменной окружения RAILS_ENV с помощью отдельной команды.
Например команды со следующим синтаксисом:
должны быть превращены в 2-е последовательные команды:
Вам может понадобиться установить gem mysql с помощью команды:
Важное замечание для Win7 и последующих
В Win7 и последующих, запись localhost закомментирована в host-файле 1 , а IPV6 является записью по умолчанию 2 . Так как gem-пакет mysql2 не поддерживает адресацию IPV6 3 , то соединение с базой данных не может быть установлено и вы получаете ошибку " Can't connect to MySQL server on 'localhost' (10061) ".
Вы можете проверить это пропинговав localhost , если будет пинговаться "::1:", значит используется адресация IPV6.
В файле database.yml заменить localhost на 127.0.0.1 .
Альтернатива ручной установке¶
Некоторые пользователи предпочитают пропустить ручную установку и использовать один из сторонних пакетов Redmine со страницы загрузки.
На другом в точности таком же серваке стоит такой же редмаин, но цепляется к базе MSSQL, все работает, все хорошо?
Лето, телепаты в отпуске.
куда пишется лог? сразу после ошибки смотри:
ActionView::Template::Error (Permission denied @ dir_s_mkdir - /opt/redmine_izum/redmine-3.2.2/tmp/cache/D39): 10: <p><%= f.text_field :lastname, :required => true %></p> 11: <p><%= f.text_field :mail, :required => true %></p> 12: <% unless @user.force_default_language? %> 13: <p><%= f.select :language, lang_options_for_select %></p> 14: <% end %> 15: <% if Setting.openid? %> 16: <p><%= f.text_field :identity_url %></p> lib/redmine/i18n.rb:112:in `languages_options' app/helpers/application_helper.rb:1020:in `lang_options_for_select' app/views/users/_form.html.erb:13:in `_app_views_users__form_html_erb___3919865609844663674_69987547021260' app/views/users/new.html.erb:4:in `block in _app_views_users_new_html_erb__2684325232714271160_69987546948980' app/helpers/application_helper.rb:1030:in `labelled_form_for' app/views/users/new.html.erb:3:in `_app_views_users_new_html_erb__2684325232714271160_69987546948980' lib/redmine/sudo_mode.rb:63:in `sudo_mode'
Походу что-то с правами перемудрил.
Проверяй права на /opt/redmine_izum/redmine-3.2.2/tmp/cache
Проблему локализовал: выставил 777 на права. Притом на файловое хранилище ./files и на ./tmp. Наверное не совсем верно сделал. Убрал 777, пробую добавить пользователя www-data в группу(из под которого работает redmine), но этого не помогает. Или в эту группу нужно добавлять всех пользователей, которых я завожу в редмаин?! Каких пользаков добавить?
Просто сделай как написано в документации.
Читайте также: