我在让 Passenger 和 svn 在 Redmine 中工作时遇到了一些问题。
系统
- Ubuntu 12.04
- Apache 2.2.22
- PassengerRuby 1.9.1
- 乘客 3.0.19
问题
当我让 Passenger 进行正常的用户切换并以 www-data 身份运行时,svn 集成不起作用。我已确保在 configuration.yml 中输入 svn 的绝对路径 (/usr/bin/svn),但当我转到管理->设置->存储库该命令旁边有一个红色感叹号图标。此外,当我创建新项目并尝试创建存储库时,我收到此错误消息
SCM 命令不可用。请检查管理面板上的设置。
现在,如果我让乘客以我自己的用户身份运行我的用户名svn 可以工作。但据我所知,它不应该这样运行。
所以我认为某个地方存在权限问题,但我就是不知道在哪里。
我已确保我的自签名证书不会导致问题,方法是在以 www-data 形式运行 svn 时永久接受它,如下所示:
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 命令的问题。
我应该去哪里找?我应该做什么?
答案1
我现在通过添加一个新的系统用户并将 redmine 应用程序目录 chown 给 redmine 用户来解决这个问题:
sudo adduser --system redmine
sudo chown -R redmine:www-data /var/www/redmine
现在,Redmine 应用程序以用户 redmine 身份运行,并且 svn 可以正常工作。也许这也是安全性方面的最佳解决方案?