1

我在安装 Redmine 时遇到问题。它似乎在 webrick 下运行得很好,如下所示:

redmine@machine:~$ /usr/bin/ruby1.8 script/rails server webrick -e production

请注意,这是当我以用户“redmine”身份登录时。

我针对现有的 Apache2 安装安装了 Passenger (v3.0.17),并使用 /etc/apache2/mods-enabled/passenger.conf,如下所示:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.17/ext/apache2/mod_passenger.so
PassengerDefaultUser www-data
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.17
PassengerRuby /usr/bin/ruby1.8

我的虚拟主机配置也很简单:

<VirtualHost *:80>
    ServerAdmin webmaster@machine.com
    ServerName redmine.machine.com

    RailsEnv production

    DocumentRoot /home/redmine/redmine-2.1/public

    <Directory /home/redmine/redmine-2.1/public>
        # This relaxes Apache security settings.
        AllowOverride all
        # MultiViews must be turned off.
        Options -MultiViews
    </Directory>


    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    ErrorLog /var/log/apache2/redmine.error.log
    CustomLog /var/log/apache2/redmine.access.log combined
</VirtualHost>

当我运行它时,我收到一个错误“没有要加载的文件--bundler”。但是,请注意:

redmine@machine:~$ gem list

*** LOCAL GEMS ***

actionmailer (3.2.8)
actionpack (3.2.8)
activemodel (3.2.8)
activerecord (3.2.8)
activerecord-mysql2-adapter (0.0.3)
activeresource (3.2.8)
activesupport (3.2.8)
arel (3.0.2)
builder (3.0.0)
bundler (1.2.1)
coderay (1.0.8)
daemon_controller (1.0.0)
erubis (2.7.0)
fastercsv (1.5.5)
fastthread (1.0.7)
hike (1.2.1)
i18n (0.6.1)
journey (1.0.4)
jquery-rails (2.0.3)
json (1.7.5)
mail (2.4.4)
mime-types (1.19)
multi_json (1.3.6)
mysql (2.8.1)
mysql2 (0.3.11)
net-ldap (0.3.1)
passenger (3.0.17)
pg (0.14.1)
polyglot (0.3.3)
rack (1.4.1)
rack-cache (1.2)
rack-openid (1.3.1)
rack-ssl (1.3.2)
rack-test (0.6.2)
rails (3.2.8)
railties (3.2.8)
rake (0.9.2.2)
rdoc (3.12)
rmagick (2.13.1)
ruby-openid (2.1.8)
rvm (1.11.3.5)
sprockets (2.1.3)
sqlite3 (1.3.6)
thor (0.16.0)
tilt (1.3.3)
treetop (1.4.11)
tzinfo (0.3.33)

中的所有文件/home/redmine/redmine-2.1都归redmine:redmine. 所有目录都是0755,所有文件都是0644.

现在,当我展示流程时,我注意到了一件有趣的事情:

redmine@machine:~$ ps -ef | grep "Passenger"
root     21764 21759  0 10:49 ?        00:00:00 PassengerWatchdog
root     21773 21764  0 10:49 ?        00:00:00 PassengerHelperAgent
root     21775 21773  0 10:49 ?        00:00:00 Passenger spawn server                                                                                                                                           
nobody   21778 21764  0 10:49 ?        00:00:00 PassengerLoggingAgent

我当然不是 Ruby/Rails/Passenger/Redmine 方面的专家,但我怀疑Passenger 运行nobody而不是redmine可能是问题所在。根据此处的文档:http ://www.modrails.com/documentation/Users%20guide%20Apache.html#user_switching,Passenger应该将用户切换到拥有 /config/environment.ru 的用户,只要那个用户可以读/写日志,但不是root,对吗?从上面可以看出,该文件(实际上是整个应用程序)由 拥有redmine,包括rwx所有者的日志和redmineroot所以,我相信我已经通过了乘客切换运行的要求redmine.

三个直接问题:

  1. 这是我无法在Passenger下运行Redmine的原因吗?和**
  2. 为什么乘客仍然运行nobody?**
  3. 在尝试解决此问题时,我尝试添加以下行:

    乘客默认用户 www 数据

进入我的 /etc/apache2/mods-enabled/passenger.conf (如上所示),但它似乎没有生效。有这条线和没有这条线,一切的结果都是一样的。我没想到它会解决问题,但我确实希望它会显示为当我列出进程时,Passenger 运行的用户。它没有。

其他可能相关的信息:

redmine@machine:~$ uname -a
Linux machine.****.com 2.6.18-028stab092.1 #1 SMP Wed Jul 20 19:47:12 MSD 2011 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS

redmine@machine:~$ /usr/bin/ruby1.8 --version
ruby 1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux]
4

1 回答 1

0

捆绑器是问题所在。你有什么特别的理由使用 Ruby 1.8.x 吗?我强烈建议您升级到 Ruby 1.9.x,最好是 1.9.3。否则,您可能想尝试更古老的捆绑器版本,例如 0.9.x。此外,您应该将 Rubygems 降级到1.3.7 或类似的版本。

理论上Rubygems可以降级如下:

sudo gem update --system 1.3.7

要安装旧的捆绑器版本:

sudo gem uninstall bundler
sudo gem install bundler --version=0.9.1

有几次我不得不处理过时的 Ruby 软件,最好的办法是不要安装系统 Ruby,而是自己从源代码编译它。(毕竟不是那么难,Ruby 已经很好地打包了。)然后从源代码安装适当的 Rubygems 版本。或者看看RVM,虽然这在开始时可能会很痛苦。

顺便说一句:我还建议使用 nginx 而不是 Apache。安装没有很好的文档记录,但因此配置文件要简单得多。

于 2012-10-12T21:12:19.927 回答