如何使用 Ruby on Rails 和 Passenger 安装 Redmine
注意:
- 使用 Ruby on Rails 和 Passenger 安装 Redmine 不在 Bluehost 技术支持范围内。
- 开始之前,您需要有 SSH 访问权限。
- Redmine 安装前提条件
- Redmine 安装分步指南
- Redmine 安装错误排查
- 总结
Redmine 安装前提条件
安装 Ruby on Rails 和 Passenger
本文假设您已通过 SSH 以 root 用户登录服务器。
- 安装基础组件 - 我们将使用位于 /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
- 安装 Passenger 和 MySQL 支持 - Ruby 安装完成后,使用以下命令:
# gem install passenger mysql
- 安装 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
- 安装 Apache 的 Passenger 模块
# passenger-install-apache2-module
按 Enter 确认。
系统将检查缺失项。按 Enter。
- 当提示 "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"。
- 按 Enter。
- 将以下内容添加到文件:
/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
- 重启 Apache
# service httpd restart
- 切换到您的 cPanel 用户 - 现在,您必须以 cPanel 用户身份安装应用程序,否则会遇到权限问题。
# su _cpanelusr_
# cd ~
最后一步是安装应用程序。
发布网站
# rake db:migrate RAILS_ENV=production
Redmine 安装分步指南
- 创建 rails_apps 文件夹及其下的 redmine 文件夹,然后进入该文件夹。
# mkdir -p ~/rails_apps/redmine/
# cd ~/rails_apps/redmine/
- 下载 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*
- 移动示例文件以便使用。
# cd config
# mv database.yml.example database.yml
# mv configuration.yml.example configuration.yml
-
创建 MySQL 数据库/用户/密码 - 详细步骤请参考《如何创建和删除 MySQL 数据库和用户》。确保为用户分配数据库的全部权限。
-
修改 database.yml 文件
# vim database.yml
修改以下内容:
production:
adapter: mysql
database: redmine
host: localhost
username: root
password:
encoding: utf8
- 更新 ~/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
-
创建子域名 - 目标是将子域名指向 Redmine 文件夹。如果没有特定子域名,可以使用 Redmine 作为子域名。请参考《什么是子域名及其工作原理?如何创建子域名》获取操作步骤。确保子域名指向 Redmine 的文档根目录。
-
创建符号链接
现在需要删除 redmine 文件夹。您可以在 ~/public_html 目录下删除:
# rm -rf redmine
创建符号链接:
# ln -s ~/rails_apps/redmine/public redmine
- 更新您的 ~/.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//"
- 进入 Redmine 目录,运行 bundle install 和生成会话存储
# cd ~/rails_apps/redmine/
# bundle install
# rake generate_session_store
- 运行 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
- 运行 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 和 # 符号为命令提示符或占位符,实际使用时请替换为对应用户名或路径。