У меня проблемы с работой пассажира и svn в Redmine.
Когда я позволяю Passenger выполнять обычное переключение пользователей и работать как www-data, интеграция svn не работает. Я обязательно ввел абсолютный путь к svn (/ usr / bin / svn) в configuration.yml, но когда я перехожу к Администрирование-> Настройки-> Репозитории рядом с командой отображается красный восклицательный знак. Кроме того, когда я создаю новый проект и пытаюсь создать репозиторий, я получаю это сообщение об ошибке
Команда SCM недоступна. Пожалуйста, проверьте настройки в панели администрирования.
Теперь, если я вместо этого позволю пассажиру работать как собственный пользователь myusername svn работает. Хотя, насколько я знаю, это не то, как следует запускать.
Я думаю, что это где-то проблема с разрешением, но я просто не могу понять, где.
Я убедился, что мой самоподписанный сертификат не вызывает проблем, приняв его постоянно при запуске svn в качестве www-данных, например:
sudo -u www-data -H svn --username mysvnusername info https://svn.mydomain.com/myrepo
Насколько я понимаю, это работает правильно. Он пишет в /var/www/.subversion и когда я запускаю его снова, меня не спрашивают о сертификате.
Вот соответствующий вывод ps -ef:
UID PID PPID C STIME TTY TIME CMD
root 16151 1 0 14:41 ? 00:00:00 /usr/sbin/apache2 -k start
root 16155 16151 0 14:41 ? 00:00:00 PassengerWatchdog
root 16158 16155 0 14:41 ? 00:00:02 PassengerHelperAgent
root 16160 16158 0 14:41 ? 00:00:00 Passenger spawn server
nobody 16165 16155 0 14:41 ? 00:00:00 PassengerLoggingAgent
www-data 16205 1 0 14:41 ? 00:00:04 Rack: /var/www/redmine
www-data 16391 16151 0 14:52 ? 00:00:01 /usr/sbin/apache2 -k start
www-data 16418 16151 0 14:53 ? 00:00:01 /usr/sbin/apache2 -k start
www-data 16427 16151 0 14:53 ? 00:00:01 /usr/sbin/apache2 -k start
Чтобы было понятно, проблема, похоже, не в фактическом подключении к серверу svn, а в том, что www-data запускает фактическую команду svn.
Где мне искать? Что я должен делать?
Я решил это на данный момент, добавив нового системного пользователя и указав каталог приложения redmine пользователю redmine:
sudo adduser --system redmine
sudo chown -R redmine:www-data /var/www/redmine
Теперь приложение Redmine запущено от имени пользователя redmine, а svn работает. Может быть, это тоже лучшее решение с точки зрения безопасности?