Изначально ставил всё от root, настраивал создание задач из писем из командной строки так:
Код: Выделить всё
rake -f /opt/redmine/Rakefile redmine:email:receive_imap host=imap.yandex.ru port=993 ssl=YES username=*** password=*** project=mail tracker=bug RAILS_ENV=production allow_override=project,tracker,status,category,priority priority=★★★★ no_permission_check=1 unknown_user=accept delete_unprocessed=1
Для выполнения через крон потребовалось в скрипт это всё завернуть и дописать пути:
Код: Выделить всё
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
rake -f /opt/redmine0/Rakefile redmine:email:receive_imap host=imap.yandex.ru port=993 ssl=YES username=*** password=*** project=mail tracker=mail RAILS_ENV=production allow_override=project,tracker,status,category,priority priority=★★★★ no_permission_check=1 unknown_user=accept delete_unprocessed=1
Иначе, без указания PATH, "rake – команда не найдена".
В сам крон добавляю строку:
Код: Выделить всё
*/5 * * * * /bin/bash /путь/до/скрипта.sh
От рута – всё работает.
Для повышения безопасности устанавливаю от имени пользователя redmine0. Стенд такой же, версии программ те же, только ruby и bundler устанавливаю от пользователя в его /home. А Redmine туда же, в /opt/redmine.
В итоге, выполняю команду из-под пользователя – выполняется, даже менять ничего не пришлось:
Код: Выделить всё
rake -f /opt/redmine/Rakefile redmine:email:receive_imap host=imap.yandex.ru port=993 ssl=YES username=*** password=*** project=mail tracker=bug RAILS_ENV=production allow_override=project,tracker,status,category,priority priority=★★★★ no_permission_check=1 unknown_user=accept delete_unprocessed=1
А крону не могу найти как путь правильный указать. Пути пользователя узнал командой:
Код: Выделить всё
echo $PATH
/home/redmine0/.rvm/gems/ruby-2.3.0/bin:/home/redmine0/.rvm/gems/ruby-2.3.0@global/bin:/home/redmine0/.rvm/rubies/ruby-2.3.0/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/redmine0/.rvm/bin:/home/redmine0/.local/bin:/home/redmine0/bin
Добавляю этот путь в скрипт для крона, крон при выполнении выдает ошибку:
Код: Выделить всё
rake aborted!
LoadError: cannot load such file -- bundler/setup
/opt/redmine0/config/boot.rb:4:in `<top (required)>'
/opt/redmine0/config/application.rb:1:in `<top (required)>'
/opt/redmine0/Rakefile:5:in `<top (required)>'
Т.е. команда rake - найдена, выполняется (без путей не выполняется, ибо не найдена). Bundler установлен, работает, сайт Redmine работает на нем. Может какого-то ещё пути не хватает в PATH, поэтому bundler не найден?