Июл 19

Redmine свободная (free as freedom) система для отслеживания и контроля ошибок. Исходный код распространяется под GNU GPL лицензией. Написана на Ruby on Rails. Является мощнейшим решением среди свободных продуктов.

Установка пакетов Redmine:

# aptitude install redmine redmine-mysql

Инталяционные скрипты предложат настроить пакет. Выберем СУБД mysql и укажем логин/пароль доступа к базе.

Если после этого сравнение таблиц выставляется в latin1_swedish_ci (или в любую другую кодировку отличную от utf8_general_ci) добавляем в /etc/mysql/my.cfg в секцию mysqld директиву collation-server=utf8_general_ci. После чего удаляем полностью БД и создаем новую базу Redmine с сравнением utf8_general_ci. Теперь разворачиваем новую базу Redmine:

cd /usr/share/redmine/
/usr/share/redmine# rake db:migrate RAILS_ENV="production" 

После чего у нас будут все таблицы в utf8_general_ci и с кириллицей не будет никаких проблем.

Настройка mod-passenger
Mod Passenger используется для связки веб сервера Apache и приложений написанных на Ruby On Rails.
С его помощью Apache может работать как веб сервер для ROR приложений.
Установка пакетов:

# aptitude install libapache2-mod-passenger

Загружаем модуль Apache:

# a2enmod passenger

Настраиваем vhost для Redmine:

# vim /etc/apache2/sites-enabled/redmine.example.com
<VirtualHost *:80>

         ServerName redmine.example.com
         ServerAlias redmine.example.com
         DocumentRoot /usr/share/redmine/public
         PassengerDefaultUser www-data

         <Directory /usr/share/redmine/public>
                      Order allow,deny
                      Allow from all
                      RailsEnv production
         </Directory>

</VirtualHost>

Без PassengerDefaultUser www-data Redmine не сможет загружать файлы на сервер.
После этого Redmine должен быть доступен по адресу http://redmine.example.com

Настройка subversion и интеграция с Redmine
Redmine способен отображать изменения в хранилище, вести лог активности, рисовать графики по количеству комитов в хранилище. Так же Redmine может управлять правами доступа к хранилищам на основе своих пользователей и их подписок к проектам, автоматически создавать хранилища для новых проектов.
Установим требуемые пакеты:

# aptitude install subversion 
# aptitude install libapache2-svn libapache-dbi-perl libapache2-mod-perl2 libdbd-mysql-perl libdigest-sha1-perl

Загрузим все требуемые модули Apache:

# a2enmod dav
# a2enmod dav_svn
# a2enmod perl

Дальше добавим одну строку в конфиг модуля:

vim /etc/apache2/mods-enabled/perl.load

LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
PerlLoadModule Apache::Redmine

Для того, что б пользователи могли авторизоваться в svn под теме же учётными данными что и в Redmine создадим символическую ссылку на скрипт Redmine.pm (можно просто скопировать его, но лучше создать ссылку)

# ln -s /usr/share/redmine/extra/svn/Redmine.pm /usr/lib/perl5/Apache/Redmine.pm

Настроим vhost для svn:

vim /etc/apache2/conf.d/svn.example.com

<VirtualHost *:80>
        ServerName svn.example.com
        ServerAlias svn.example.com

        <Location /svn>        
                 # подключаем модуль dav svn
                 DAV svn
                 SVNParentPath "/var/svn" 

                 # настраиваем авторизацию по логину/паролю
                 AuthType Basic
                 AuthName redmine
                 Require valid-user

                 # подключаем скрипт Redmine.pm
                 PerlAccessHandler Apache::Authn::Redmine::access_handler
                 PerlAuthenHandler Apache::Authn::Redmine::authen_handler

                 # настройки подключения к БД
                 RedmineDSN "DBI:mysql:database=redmine_default;host=localhost" 

                 # логин и пароль для доступа к БД Redmine
                 RedmineDbUser "redmine" 
                 RedmineDbPass "password" 
        </Location>

        <Location /svn-private>
                  DAV svn
                  SVNParentPath "/var/svn" 
                  Order deny,allow
                  Deny from all
                  # only allow reading orders
                  <Limit GET PROPFIND OPTIONS REPORT>
                  Allow from redmine_server_ip
                  </Limit>
        </Location>

</VirtualHost>

svn-private нужен для того, что б позволить самому Redmine получать доступ к хранилищам без авторизации. Это позволит полностью автоматизировать создание и подключения хранилища к новому проекту. Так же его можно использовать на своих серверах для обновления исходников без необходимости авторизации.
Теперь по адресу http://svn.example.com/svn Должен выводиться диалог авторизации.

Автоматическое создание svn хранилищ при добавлении нового проекта в Redmine
Скрипт /usr/share/redmine/extra/svn/reposman.rb. Он при запуске сверяет созданные проекты в Redmine и существующие svn хранилища. И если есть проект для которого нет хранилища — он создаст его. Для того что б это работало его нужно прописать в crontab.

*/5 * * * * /usr/share/redmine/extra/svn/reposman.rb --redmine redmine.example.com --key=ключ --svn-dir /var/svn --owner www-data --url http://svn.example.com/svn-private/ --verbose

Где —key это API ключ. В Redmine Администрирование — Настройки — Хранилище — API ключ. Выбираем «Сгенерировать ключ» и копируем его в скрипт.
—redmine — хост, на котором висит redmine.
—svn-dir — путь к svn.
—owner владелец хранилища.
—url — путь к svn. (svn-private нужен для того, что б redmine мог получать доступ к хранилищам без авторизации).

Все, настройка завершена. Теперь можно попробовать создать проект, через некоторое время для него автоматически будет создано хранилище. Добавить участников в проект и попробовать авторизоваться с использованием их учётных данных в хранилище.

69 Responses to “Установка Redmine на Debian/Ubuntu”

  1. Chaser Says:

    Отлично, вполне вероятно, что пригодится в недалеком будущем для рутины. Еще бы рассказал о интеграции с git… эх… :)

  2. jeka Says:

    Вообще как-то забыл, допишу в ближайшее время.

  3. Иван Says:

    Последняя инструкция не работает. Не создается вкладка хранилище. В чем проблема?

  4. jeka Says:

    Запустите reposman.rb вручную с опцией —verbose и посмотрите все ли нормально.(желательно перед этим создать новый проект, что б он попытался создать хранилище)

  5. Иван Says:

    Запустил reposman.rb. Ответ — repository for project PROJECT created.
    Появилась вкладка Хранилище — однако она пустая. А в crontab не работает.
    Причем если записывать в reposman.log отчет об ошибках, в нем появляются строки this script requires activeresource
    и run gem install activeresource to install it.
    Но последняя команда после запуска и установки activeresource ничего не изменяет.
    В crontab’е у меня в конце —url file:///var/local/svn.

  6. jeka Says:

    А вручную с http пускали? Пустая вкладка это нормально, значит редмайн подключился к хранилищу. Просто там ещё ничего нет.

  7. Иван Says:

    В смысле вручную?

  8. jeka Says:

    Когда из консоли пускали reposman.rb в –url использовали file или http? Просто по вашему описанию — когда вы его пустили сами(не из крона), все прошло нормально. Можете ещё в кроне перенаправить вывод в файл и посмотреть какие там ошибки. */5 * * * * some_script >> /path/logfile 2>&1 (только права на лог проверьте). Проблема скорее всего где-то с правами, редмайн по каким-то причинам не может достучаться /var/local/svn. В эту сторону надо копать как мне кажется. Или использовать http и не париться)

  9. jeka Says:

    И к стати, под каким юзером в кронтабе скрипт исполняется?

  10. Иван Says:

    В crontab’е использовал url file и запускал под root’ом, а в логе выдает про activeresource (в предыдущем комментарии). А как использовать http?

  11. jeka Says:

    —url http://svn.example.com/svn-private/
    и в vhost’e svn-private прописать

  12. Иван Says:

    Нужно создать файл svn.example.com? DocumentRoot — /var/svn/ или как у меня var/local/svn? И где узнать RedmineDbUser и RedmineDbPass? SVNParentPath будет «/var/local/svn», поскольку у меня нет папки /var/svn, я правильно понимаю?

  13. jeka Says:

    DocumentRoot и SVNParentPath там, где у вас лежат хранилища(/var/local/svn). RedmineDbUser и RedmineDbPass можно посмотреть в /etc/redmine/default/database.yml

  14. Иван Says:

    Я не могу понять почему в reposman.log появляется this script requires activeresource, хотя после запуска команды gem install activeresource в log’е опять появляется ошибка, связанная с activeresource. В чем может быть проблема?

  15. jeka Says:

    Какая ОС на сервере? Попробуйте поставить через пакетный менеджер/порты(хз если в фряхе порт, потом посмотрю). В дебиане есть пакеты:
    $ aptitude search activeresource
    p libactiveresource-ruby — Connects objects and REST web services
    p libactiveresource-ruby1.8 — Connects objects and REST web services
    Попробуйте их поставить. Хотя и gem должен был помочь.

  16. Иван Says:

    Ubuntu 10.04. Команды, приведенные вами для activeresource не работают.

  17. Иван Says:

    Еще один вопрос. Как сделать так чтобы появлялись папки trunk, branches, tags.

  18. jeka Says:

    $ svn checkout http://….
    $ mkdir trunk branches tags
    $ svn commit -m «my comment»
    Или воспользоваться гуишным клиентом. Kdesvn например или что-то другое, что больше понравиться. Мне и консольного хватает.

  19. jeka Says:

    А, а если автоматом то хз. Думаю можно поправить reposman.rb. Просто мне это не особо нужно.

  20. Иван Says:

    Когда запускаю /usr/share/redmine/extra/svn/reposman.rb —redmine redmine.example.com —key=ключ —svn-dir /var/svn —owner www-data —url http://svn.example.com/svn-private/ —verbose появляется:

    Unable to connect to http://redmine.example.com /sys/: Failed. Response code = 403. Response message = Forbidden. В чем проблема?

  21. Марина Says:

    Сейчас можно ставить из репозитория, берется он на сайте BitNami, на убунту стал как родной.

  22. Fatboy Slim Says:

    Всё замечательно, но автор статьи тактично умолчал один важный пункт!

    Не работает авторизация в svn через perl модуль в Ubuntu 10.10!
    Это один из багов который к счастью лечится обновлениями.

    Поэтому, перед всеми вышеописанными в статье манипуляциями выполняем 2 команды:

    sudo apt-get update
    sudo apt-get upgrade

    И только после этого… начинаем конфигурировать систему!

  23. jeka Says:

    Я это все настраивал на Ubuntu 10.04, Debian Lenny/Squeeze, там таких проблем не было, надо будет в статью добавить версии дистров.

  24. Fatboy Slim Says:

    jeka, это как я понял нормальное явление. Вот например настройки почты postfix+dovecot что прекрасно работают под 10.10, на последнем сервере 11.04 вообще не работают. Честно говоря разбираться не стал. 10.10 доволен как слон, ну… с небольшими оговорками, которые в принципе излечимы.
    Так что всё новое — не значит лучше.

    Но это так, к слову.

    Спасибо за статью! По ней настраивал! :)

  25. Erop Says:

    Всем привет, все сделал как в инструкции, при попытки зайти на страницу /svn сайта, просить авторизацию. При вводе логина из базы редмайна, в репозиторий не пускает :( куда покурить еще можно? спасибо

  26. Василий Says:

    Это одна строка в конфиге?
    LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
    PerlLoadModule Apache::Redmine

    Если да, то выдает ошибку:
    apache2: Syntax error on line 204 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/perl.load: LoadModule takes two arguments, a module name and the name of a shared object file to load it from

  27. Василий Says:

    И вообще:
    Если у меня на одном домене http://project.lcl.ru (не локально) и Redmine (http://project.lcl.ru/redmine) и svn (http://project.lcl.ru/svn), то как в подобном случае должны выглядеть конфиги? Ведь ServerName уже не пропишешь? Или я загоняю?

  28. jeka Says:

    1 строка: LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
    2 строка: PerlLoadModule Apache::Redmine

    Если нужно разместить в одном домене — все директивы нужно вынести в отдельные локации( Location /redmine….) и DocumentRoot’ы перенести в них.

  29. Василий Says:

    Не работает авторизация через пользователей Redmine в SVN по адресу http://project.lcl.ru/svn, версия Ubuntu 10.4, все инструкции выполнены. В чем может быть проблема?

  30. jeka Says:

    Какая версия редмайна? В 1.2.0 в хеши паролей добавили соль. Руки не дошли написать об этом здесь еще.
    http://www.redmine.org/boards/2/topics/24386?r=24723#message-24723
    Вот тут я выложил патч для апачевского mod_auth_mysql.

  31. Василий Says:

    Redmine 0.9.3.stable. Для общей авторизации требуется только:
    Цитата: «Дальше добавим одну строку в конфиг модуля: …»
    и Цитата: «Настроим vhost для svn». Ведь так?

  32. jeka Says:

    Симлинк на Redmine.pm сделали?

  33. Василий Says:

    Да. А в кроне надо http://… писать?

  34. Василий Says:

    А кронтаб так должно быть: http://project.lcl.ru/svn/svn-private?

  35. jeka Says:

    Строка в кроне — это для автоматического создания хранилищ для новых проектов. По поводу же авторизации — переводите уровень логирования апача в дебаг и смотрите логи. Пока не будет хоть какой-то информации из логов — сложно сказать что не так.

  36. Василий Says:

    Вот так выглядит конфиг апача:

    ServerAdmin webmaster@localhost

    DocumentRoot /var/www

    Options FollowSymLinks
    AllowOverride None

    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all

    RailsBaseUri /redmine

    Я добавил симлинк в DocumentRoot (/var/www) на /var/svn (Папка, где создаются хранилища)
    Для авторизации через SVN нужно теперь добавить:

    и далее строки из вашего конфига…

    и строки из вашего конфига…

    Так или нет?

  37. Василий Says:

    Теги «» были удалены из предыдущего комментария.

  38. Василий Says:

    Теги Documentt и Locationn были удалены

  39. Василий Says:

    В лог apach’a выдает следующее:
    ip-adress — redmine [30/Aug/2011:14:36:45 +0700] «GET /svn/ HTTP/1.1″ 401 660 «-» «Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1″

  40. jeka Says:

    401 код. Значит авторизация все же есть, просто юзер/пароль не подходит? Пользователя добавили в проект, которому принадлежит хранилище?

  41. Василий Says:

    «Пользователя добавили в проект, которому принадлежит хранилище?». Я же захожу на http://project.lcl.ru/svn (т.е. в этой папке все хранилища) — появляется диалог авторизации, который не пускает с любым пользователем из Redmine. Если я захожу на http://project.lcl.ru/svn/project1, то авторизации нет, и я спокойно в браузере просматриваю каталоги проекта project1.

  42. jeka Says:

    Значит проект в редмайне общедоступный, смотрите в Настройки — информация.

  43. Василий Says:

    А как добавить пользователя в хранилище?

  44. jeka Says:

    Пользователь в проекте = пользователь в хранилище. Добавляйте пользователей в проект(Настройки — Участники) и они смогут авторизоваться в хранилище.

  45. Василий Says:

    Добавил участника в проект — зашел на http://project.lcl.ru/svn/project1, авторизовался, появилась следующее:

    Could not open the requested SVN filesystem

  46. jeka Says:

    Вы не создали хранилище. Настройте скрипт из статьи для автоматического создания для новых проектов хранилищ или svnadmin help.

  47. Василий Says:

    Другой вопрос: я создал хранилище, все вроде бы работает по вашей инструкции (отдельное вам спасибо). Вы не знаете, как делать svncheckout в Windows, используя TortoiseSVN? Сейчас выдает ошибку:
    Error: Repository moved permanently to please relocate

  48. jeka Says:

    Я с подобной проблемой сталкивался только когда изменял адрес хранилища, нужно сделать svn sw —relocate старый_адрес новый_адрес.
    Конкретно где релокейт в TortoiseSVN сделать можно не знаю, не использовал.
    Но подобная проблема у меня возникала только с уже существующими хранилищами.

  49. Василий Says:

    Почему-то после успешного создания хранилища, если снять «Общедоступный» в настройках Redmine, через некоторое время (я думаю из crontab’а) появляется ошибка в Redmine для данного проекта: Хранилище не содержит записи и/или исправления.

  50. jeka Says:

    Скрипт для создания хранилищ весит в кроне? Вероятно он права на директорию сбивает, проверьте владельца — им должен быть юзер веб-сервера, посмотрите umask

  51. Василий Says:

    Еще один глупый вопрос (по Linux): www-data — это группа юзеров апача?

  52. jeka Says:

    да

  53. Василий Says:

    Заново поставил Redmine и SVN. Теперь когда в консоли делаю:
    ruby /usr/share/redmine/extra/svn/reposman.rb —redmine http://sitedomain/redmine —key=nZWGFxvyz8AYH8BUDGhY —svn-dir /var/svn —owner www-data —url file:///var/svn/ —verbose
    Получаю ошибку:
    Unable to connect to http://sitedomain/redmine/sys/: 756: unexpected token at ‘ …’

  54. jeka Says:

    Redmine точно доступен по этому адресу с сервера?

  55. Василий Says:

    Ты имеешь ввиду в браузере по адресу: http://sitedomain/redmine? Да, доступен.

  56. jeka Says:

    С той же системы где скрипт пускаешь в смысле. Еще глянь в логе есть ли обращения и с каким кодом веб-сервер отдает страницу cat access.log|grep ип_сервера|less

  57. Василий Says:

    С той же системы где скрипт пускаешь в смысле — не понял, это как?

    cat access.log|grep ип_сервера|less —
    cat: access.log: Нет такого файла или каталога

  58. Василий Says:

    cat access.log|grep ип_сервера|less –
    cat: access.log: Нет такого файла или каталога — затупил…
    На самом деле такая последняя запись в log’е, если в браузере redmine запускаешь:
    ип_сервера — — [24/Feb/2012:14:56:35 +0700] «GET /favicon.ico HTTP/1.1″ 404 502 «-» «Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11″

  59. Василий Says:

    Downgrading activeresource from 3.1.0 to 2.3.11 did the trick for me.

  60. Василий Says:

    Почему-то не работает авторизация в svn пользователями Redmine. При переходе на http://sitedomain/svn появляется диалог авторизации, но при вводе user и password из Redmine авторизация не проходит. В чем может быть проблема?

  61. Василий Says:

    У меня вопрос по настройке уведомлений по почте. Я настроил postfix на сервере, но при отправлении тестового письма из Redmine появляется ошибка: Во время отправки письма произошла ошибка (hostname was not match with the server certificate)
    В логе следующее: lost connection after STARTTLS. Что не так?

  62. jeka Says:

    http://davidroetzel.wordpress.com/2011/01/14/rails-3-actionmailer-tls-certificate-verification/
    Возможно, у тебя подобная проблема(сам я с таким не сталкивался).

  63. Hectorquien Says:

    Если попробовать дать предельно упрощенное определение определение в доступной форме Bitcoin, то можно отметить, что это по всему миру принимается в оплату любой покупки По итогам 2017 года зафиксировали существенное увеличение обмена] крипто-валюты Bitcoin. Это объясняется тем, что в Японии, , она и вовсе признана официально. | |Эта крипто-валюта создана и с успехом функционирует в интернете, и базируется она на математической обработке сложных алгоритмов при помощи определенной программы.|Пользуясь такой валютой, как Bitcoin, предприниматели, среди большого количества других преимуществ, увидели вариант подстраховки имеющихся денежных средств от инфляции (обесценивания), и что ещё более важно, стали инвестировать в новые проекты для извлечения прибыли.|Биткоин, наряду с прочими крипто-валютами, сегодня получает всё большую известность.|Благодаря присущим ему преимуществам, самым главным из которых является децентрализованность, появился вариант выполнять коммерческие сделки, не тратя собственные денежные средства на разнице обменных курсов и без взимания каких-либо специальных и .] Таким образом, отсутствие централизованного органа надзора гарантирует любому обладателю крипто-валюты Bitcoin анонимность при выполнении транзакций, при этом он считается равноправным участником системы.
    https://wmsell.biz/exchange_qiwi_na_bitcoin/

  64. BarryPes Says:

    Если Вы решили быстро, безопасно, выгодно осуществить продажу, покупку или обмен электронной валюты Bitcoin, мы рекомендуем профессиональный online-сервис на портале Betatransfer.net. Этот обменник может гарантировать быстрые, анонимные и безопасные денежные операции с рублевыми карточками как Сберегательного банка России, так и прочих финучреждений — ВТБ, Альфа-Банк и Тинькофф банк. Кроме этого, возможны валютные переводы на WIRE, поддерживаются направления webmoney и Яндекс.Деньги, проработаны и другие популярные системы.

    Своим посетителям мы предоставляем самые привлекательные условия:

    — сервис в автоматическом режиме корректирует валютные курсы согласно трендам на финансовом рынке;
    — выгодные обменные курсы;
    — оперативная помощь группы поддержки посетителей;
    — конвертация средств осуществляется достаточно быстро, в течение получаса;
    — мы можем предоставить бонусы для постоянных клиентов.

    Так, все, кто имеет дело с виртуальными средствами (online-коммерсанты, фрилансеры, владельцы интернет-магазинов и др.) получают превосходную возможность исполнять мгновенные финансовые трансферы, пополнять баланс, свободно распоряжаться личными средствами и выполнять любые операции с валютой. Плюс ко всему, на веб-сайте Betatransfer.net можно получить индивидуальное рабочее пространство для хранения частных сведений по всем вашим транзакциям, быстро и удобно погасить кредит в ВТБ24, а также хранить сведения по балансу и намечаемым платежам. Большой запас денежных средств обменника обеспечит вам не только наиболее заманчивый курс обмена Bitcoin, и не на одни лишь рубли, возможна также конвертация фактически по всем направлениям и валютам. К тому же, на нашем портале разработана программа для партнеров, предлагающая весьма выгодные условия для профессиональных рефоводов, которые имеют активные подписи для форумов, блоги и свои сайты, также поощряются группы в социальных сетях. Для этих клиентов предусматривается гонорар — 0,8%, что составляет приблизительно 30 процентов от прибыли обменного пункта, а также обратная связь, которая возможна по электронной почте, скайпу, онлайн-чату или вайберу (адреса имеются на портале). Betatransfer.net предоставляет нужный набор инструментов для финансовых операций с биткоином с помощью услуги по покупке, обмену и продаже валюты посредством весьма известных платежных систем.

    Наш биткоин-обменник Betatransfer.net предоставляет свои услуги для исполнения транзакций в любом направлении, а самое главное, делает это анонимно, в любое время, с гарантией безопасности и очень быстро.

    вики криптовалюта

  65. Randallereta Says:

    Hi there! walmart online pharmacy very good site.

  66. EROscounty Says:

    Visitors to workshop can find many questionnaires girl of any age and nationality performing body to body massage in the city New York.

    Masseuses are able not only to give pleasure in this way, but also to the strong semi-gentlemen. Girls perform japanese a massage that will produce a Strong gender a vivid impression.
    Prices for nude massage depends on qualification Beauties and the skills that she possesses. Before making a choice, carefully study the prices for services and customer feedback about the work of one or another masseur specialist. We are sure that the search for a real professional masseur will be crowned with success and you will be satisfied with the quality of our services. Specialists are skilled workers in their field and they will help you relax after a hard day.

    We have a massage parlour Brooklyn. — Soapy massage

  67. Stephenrhype Says:

    sullivan pharmacy roslindale ma http://stilnox.forum-prive.com/ natural penile enlargement pills

  68. Perrycruck Says:

    Hello there! online pharmacy oxycodone 30mg great web site.

  69. Normanref Says:

    Hi! discount online pharmacy excellent web page.

Написать ответ