跳到主要内容

如何使用 Ruby on Rails 和 Passenger 安装 Redmine

注意:

  • 使用 Ruby on Rails 和 Passenger 安装 Redmine 不在 Bluehost 技术支持范围内。
  • 开始之前,您需要有 SSH 访问权限。

  • Redmine 安装前提条件
  • Redmine 安装分步指南
  • Redmine 安装错误排查
  • 总结

Redmine 安装前提条件

安装 Ruby on Rails 和 Passenger

本文假设您已通过 SSH 以 root 用户登录服务器。

  1. 安装基础组件 - 我们将使用位于 /scripts 目录下的 installruby 脚本开始安装。虽然该脚本安装的内容超过以下列出的内容,但以下是需要重点注意的部分:
  • Ruby 1.8.7
  • RubyGems 2.1.9 和 1.8.25
  • rails-2.3.18
  • rake-10.1.0
  • rack-1.1.6
  • mongrel-1.1.5
# /scripts/installruby
  1. 安装 Passenger 和 MySQL 支持 - Ruby 安装完成后,使用以下命令:
# gem install passenger mysql
  1. 安装 curl-devel
# yum install curl-devel

当提示 "Is this ok [y/N]:" 时,输入字母 "y" 并按 Enter。 4. 安装 postgresql-devel

# yum install postgresql-devel

同样,当提示 "Is this ok [y/N]:" 时,输入字母 "y" 并按 Enter。 5. 安装 ImageMagick

# /scripts/installimagemagick
  1. 安装 Apache 的 Passenger 模块
# passenger-install-apache2-module

Enter 确认。

系统将检查缺失项。按 Enter

  1. 当提示 "Are you sure you want to install against Apache 2.2.24 (/usr/bin/apxs)? [y/n]:" 时,输入字母 "y" 并按 Enter。系统将返回 "The Apache 2 module was successfully installed"。
  2. Enter
  3. 将以下内容添加到文件:
/usr/local/apache/conf/includes/pre_main_2.conf
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.21/buildout/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.21
PassengerDefaultRuby /usr/bin/ruby

或者,您可以使用以下命令添加上述代码:

echo -en "LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.21/buildout/apache2/mod_passenger.so\nPassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.21\nPassengerDefaultRuby /usr/bin/ruby\n" >> /usr/local/apache/conf/includes/pre_main_2.conf
  1. 重启 Apache
# service httpd restart
  1. 切换到您的 cPanel 用户 - 现在,您必须以 cPanel 用户身份安装应用程序,否则会遇到权限问题。
# su _cpanelusr_
# cd ~

最后一步是安装应用程序。

发布网站

# rake db:migrate RAILS_ENV=production

Redmine 安装分步指南

  1. 创建 rails_apps 文件夹及其下的 redmine 文件夹,然后进入该文件夹。
# mkdir -p ~/rails_apps/redmine/
# cd ~/rails_apps/redmine/
  1. 下载 Redmine 2.1.4,解压并移动内容,然后删除不需要的文件。
# wget http://rubyforge.org/frs/download.php/76589/redmine-2.1.4.tar.gz
# tar xvzf redmine-2.1.4.tar.gz
# mv redmine-2.1.4/* ./
# rm -rf redmine-2.1.4*
  1. 移动示例文件以便使用。
# cd config
# mv database.yml.example database.yml
# mv configuration.yml.example configuration.yml
  1. 创建 MySQL 数据库/用户/密码 - 详细步骤请参考《如何创建和删除 MySQL 数据库和用户》。确保为用户分配数据库的全部权限。

  2. 修改 database.yml 文件

# vim database.yml

修改以下内容:

production:
adapter: mysql
database: redmine
host: localhost
username: root
password:
encoding: utf8
  1. 更新 ~/rails_apps/redmine/public/.htaccess 文件
# cd ../public/
# pwd

您应看到如下路径:

/home/<user>/rails_apps/redmine/public
# vim .htaccess

添加以下内容:

Options -MultiViews
PassengerResolveSymlinksInDocumentRoot on
# 设置您运行的环境
RailsEnv production
RackBaseURI /
SetEnv GEM_HOME /home1/examplec/ruby/gems

将此行更新为匹配 pwd 输出的路径:

SetEnv GEM_HOME /home/<user>/ruby/gems
  1. 创建子域名 - 目标是将子域名指向 Redmine 文件夹。如果没有特定子域名,可以使用 Redmine 作为子域名。请参考《什么是子域名及其工作原理?如何创建子域名》获取操作步骤。确保子域名指向 Redmine 的文档根目录。

  2. 创建符号链接
    现在需要删除 redmine 文件夹。您可以在 ~/public_html 目录下删除:

# rm -rf redmine

创建符号链接:

# ln -s ~/rails_apps/redmine/public redmine
  1. 更新您的 ~/.bashrc 文件
    在 ~/.bashrc 文件末尾添加以下内容:
export HPATH=$HOME
export GEM_HOME=$HPATH/ruby/gems
export GEM_PATH=$GEM_HOME:/lib64/ruby/gems/1.9.3
export GEM_CACHE=$GEM_HOME/cache
export PATH=$PATH:$HPATH/ruby/gems/bin
export PATH=$PATH:$HPATH/ruby/gems

然后执行以下命令使配置生效:

# source ~/.bashrc

接着检查 rails 版本:

# rails -v

您应看到如下信息:

Rails 3.2.13

如果出现如下错误:

Invalid gemspec in [/home/<user>/ruby/gems/specifications/mail-2.4.4.gemspec]: invalid date format in specification: "2012-03-14 00:00:00.000000000Z"
Invalid gemspec in [/home/<user>/ruby/gems/specifications/tilt-1.3.3.gemspec]: invalid date format in specification: "2011-08-25 00:00:00.000000000Z"

打开错误提示中的文件,例如 /home/<user>/ruby/gems/specifications/mail-2.4.4.gemspec

修改该行:

s.date = %q\{2012-03-14 00:00:00.000000000Z\}

改为:

s.date = %q\{2012-03-14\}

这样即可修正该错误。您也可以使用以下简便命令:

# find $HOME/ruby/gems/specifications -name \*.gemspec | xargs sed -i "s/\ 00:00:00.000000000Z//"
  1. 进入 Redmine 目录,运行 bundle install 和生成会话存储
# cd ~/rails_apps/redmine/
# bundle install
# rake generate_session_store
  1. 运行 bundle install

rake generate_session_store 是 Redmine 特有的命令。其他应用可能在运行 rake 后使用此命令。如果出现如下错误:

Invalid gemspec in [/home/<user>/ruby/gems/specifications/jquery-rails-2.0.3.gemspec]: invalid date format in specification: "2012-08-16 00:00:00.000000000Z"

同样打开该文件 /home/<user>/ruby/gems/specifications/jquery-rails-2.0.3.gemspec 并修正日期格式,具体方法见上文约10行处。
然后执行:

# bundle install
  1. 运行 generate_session_store 或 generate_secret_token
# rake generate_session_store

如果提示该命令已废弃,请改用:

# rake generate_secret_token

Redmine 安装错误排查

常见问题

# rails generate controller First list
/home4/lorentzo/ruby/gems/gems/execjs-1.4.0/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
from /home/<user>/ruby/gems/gems/execjs-1.4.0/lib/execjs.rb:5
from /home/<user>/ruby/gems/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `require'
from /home/<user>/ruby/gems/gems/coffee-script-2.2.0/lib/coffee_script.rb:1
from /home/<user>/ruby/gems/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `require'
from /home/<user>/ruby/gems/gems/coffee-script-2.2.0/lib/coffee-script.rb:1
from /home/<user>/ruby/gems/gems/coffee-rails-3.2.2/lib/coffee-rails.rb:1:in `require'
from /home/<user>/ruby/gems/gems/coffee-rails-3.2.2/lib/coffee-rails.rb:1
from /home/<user>/ruby/gems/gems/bundler-1.2.2/lib/bundler/runtime.rb:68:in `require'
from /home/<user>/ruby/gems/gems/bundler-1.2.2/lib/bundler/runtime.rb:68:in `require'
from /home/<user>/ruby/gems/gems/bundler-1.2.2/lib/bundler/runtime.rb:66:in `each'
from /home/<user>/ruby/gems/gems/bundler-1.2.2/lib/bundler/runtime.rb:66:in `require'
from /home/<user>/ruby/gems/gems/bundler-1.2.2/lib/bundler/runtime.rb:55:in `each'
from /home/<user>/ruby/gems/gems/bundler-1.2.2/lib/bundler/runtime.rb:55:in `require'
from /home/<user>/ruby/gems/gems/bundler-1.2.2/lib/bundler.rb:128:in `require'
from /home/<user>/rails_apps/first/config/application.rb:7
from /home/<user>/ruby/gems/gems/railties-3.2.9/lib/rails/commands.rb:24:in `require'
from /home/<user>/ruby/gems/gems/railties-3.2.9/lib/rails/commands.rb:24
from script/rails:6:in `require'
from script/rails:6

解决方案

# gem install therubyracer

然后运行:

# bundle install

总结

学习如何使用 Ruby on Rails 和 Passenger 安装 Redmine。请注意,使用 Ruby on Rails 和 Passenger 安装 Redmine 的过程不在 Bluehost 提供的技术支持范围内。本指南包括 Redmine 安装所需的前提条件列表、Redmine 安装分步指南,以及安装过程中可能出现的错误及其排查方法。本文假设您已通过 SSH 以 root 用户身份登录服务器,并拥有 SSH 访问权限。


注:原文中“Remine”一词为拼写错误,已在本翻译中更正为“Redmine”。

注:文中路径示例中 #pwd# 符号为命令提示符或占位符,实际使用时请替换为对应用户名或路径。