安装了torquebox服务器gem。
$torquebox run没事。程序在Apache上运行良好,通过:80和SSL :8009。
这里是它最受欢迎的地方:“”在UpStart中运行良好,只有一个例外。浏览器中没有错误。只是一页空白的白纸。我用的是朱红。这是torquebox日志:
无法要求文件: torquebox/service_registry: org.jruby.exceptions.RaiseException:(LoadError)没有这样的文件来加载- torquebox/service_registry at jruby.jar: at RUBY.require(/home/klyde/.rubies/jruby-1.7.19/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54) at RUBY.(根)(:1)
当然,上面的目录和文件是存在的,就像torquebox自己的日志显示的那样。
torquebox run似乎执行得很好,因为jruby-1.7.19 (与Torquebox在JRuby-1.7.19上的V3.1.2运行时相同)、gems和程序都位于我的Ubuntu用户'klyde‘之下。但是这个命令只是用于开发/测试。当作为服务运行时,Torquebox会侧视“torquebox”用户,并拥有自己的bashrc。是的,Torquebox需要自己的用户!因此,在klyde和torquebox这两个用户下,bashrc包含相同的内容:
export TORQUEBOX_HOME=/home/klyde/.gem/jruby/1.9.3/gems/torquebox-server-3.1.2-java
export TORQUEBOX_HOME_RAKE_SUPPORT=/home/klyde/.gem/jruby/1.9.3/gems/torquebox-rake-support-3.1.2
export TORQUEBOX_SERVER=/home/klyde/.gem/jruby/1.9.3/gems/torquebox-server-3.1.2-java
export JBOSS_HOME=$TORQUEBOX_SERVER/jboss
export JRUBY_HOME=/home/klyde/.rubies/jruby-1.7.19
export PATH=$JRUBY_HOME/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin我读过Torquebox通过它自己版本的jruby运行时来预测路径等,而不是chruby (或rvm,rbenv)可能做的事情。本着这种精神,我将torquebox用户添加到klyde组中。我提高了对我的klyde .gem目录中的几个文件的权限,提供了快速而肮脏的解决方案。我甚至尝试过chown -R torquebox:torquebox /home/klyde/..rubies。没有运气)
问:我必须重新安装所有的东西,包括程序,在torquebox用户下面,好像这会起作用吗??还是有一种更优雅(理智)的方法?
发布于 2015-07-13 11:44:23
解决方案:
解决了。我自己回答问题。这是我记得的一堆小费。
这件事的核心似乎是宝石之路的问题。请看下面的评论。 还有这个。,而Ruby经理通常喜欢把宝石和红宝石分开,例如。当您查看Torquebox附带的本机JRuby时,您将看到Torquebox将宝石镶嵌在JRuby自己的子文件夹中:
/opt/torquebox/torquebox-3.1.2/jruby/lib/ruby/gems/shared/gems/
为了证明这一点,您将看到Torquebox二进制下载包含了gem套件“torquebox-server”。
我用了朱砂,然后跑了:
$ jruby -S gem install torquebox-server和RVM一样,它使用“torquebox run”也很好。但是为了利用类似于生产的命令'sudo service torquebox start‘,我发现有必要下载二进制文件并在/opt下安装,以便遵循'upstart’的说明。
莺为JBoss准备一个JBoss文件。但是封装JBoss的Torquebox提供了自己的代码,旨在取代.war的需求。但是,无论是“torquebox run”还是“sudo service torquebox start”,都是调用bundler。因此,如何通过邦德勒放置宝石似乎很重要。将宝石复制/粘贴到本机JRuby中(/opt/torquebox/torquebox-3.1.2/jruby.)可能行不通(就像我发现的那样)。
假设您(明智地)希望在~/下使用您自己的JRuby,并且在设置了环境变量之后(如我所示),那么在终端中,您会希望看到这样的内容:
$ jruby -S gem env
RubyGems Environment:
- RUBYGEMS VERSION: 2.4.5
- RUBY VERSION: 1.9.3 (2015-01-29 patchlevel 551) [java]
- INSTALLATION DIRECTORY: /home/klyde/.rubies/jruby-1.7.19/lib/ruby/gems/shared
- RUBY EXECUTABLE: /home/klyde/.rubies/jruby-1.7.19/bin/jruby
- EXECUTABLE DIRECTORY: /home/klyde/.rubies/jruby-1.7.19/bin
- SPEC CACHE DIRECTORY: /home/klyde/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /home/klyde/.rubies/jruby-1.7.19/etc
- GEM PATHS:
- /home/klyde/.rubies/jruby-1.7.19/lib/ruby/gems/shared注意.rubies,而不是.gem。
如果启用了RVM或rbenv或chruby,它将尝试控制GEM_HOME。这必须是禁用的。有一个建议,请参阅/etc/profile.d/
在任何目录中,GEM_HOME都应该是空的,或者至少指向JRuby子文件夹中的路径。
作为一种考验:
$ echo $GEM_HOME
(here we can have a blank line)和~/..gemrc
install: --no-ri --no-rdoc
update: --no-ri --no-rdoc
gemhome: /home/klyde/.rubies/jruby-1.7.19/lib/ruby/gems/shared
gempath: /home/klyde/.rubies/jruby-1.7.19/lib/ruby/gems/shared虽然上面的手册编辑会起作用,多不文明!)特别是在开发中,使用管理器来切换每个程序的红宝石是很方便的。为了充分利用这两个世界,我将以chruby为例。
ruby/jruby中用于宝石的自然目录实际上在它自己的子文件夹中。我是GEM_ROOT。GEM_ROOT保持不变。chruby根据它在GEM_HOME中找到的内容改变或人为地创建GEM_PATH和GEM_ROOT。然后,它继续将宝石归档到~/..gem下面。观察:
$ echo $GEM_ROOT
/home/klyde/.rubies/ruby-2.2.2/lib/ruby/gems/2.2.0
$ echo $GEM_HOME
/home/klyde/.gem/ruby/2.2.2
$ echo $GEM_PATH
/home/klyde/.gem/ruby/2.2.2:/home/clyde/.rubies/ruby-2.2.2/lib/ruby/gems/2.2.0对于jruby..。
$ echo $GEM_ROOT
/home/klyde/.rubies/jruby-1.7.19/lib/ruby/gems/shared
$ echo $GEM_HOME
/home/klyde/.gem/jruby/1.9.3
$ echo $GEM_PATH
/home/klyde/.gem/jruby/1.9.3:/home/clyde/.rubies/jruby-1.7.19/lib/ruby/gems/shared若要在chruby中重写此操作,请执行以下操作:
/usr/local/share/chruby/chruby.sh
function chruby_use()
{
....
if (( $UID != 0 )); then
# export GEM_HOME="$HOME/.gem/$RUBY_ENGINE/$RUBY_VERSION"
# export GEM_PATH="$GEM_HOME${GEM_ROOT:+:$GEM_ROOT}${GEM_PATH:+:$GEM_PATH}"
# export PATH="$GEM_HOME/bin${GEM_ROOT:+:$GEM_ROOT/bin}:$PATH"
export GEM_HOME="$GEM_ROOT"
export GEM_PATH="$GEM_ROOT"
export PATH=$GEM_HOME/bin:$PATH
export PATH=$GEM_PATH/bin:$PATH
fi
}每个红宝石/jruby都成为自己的宝石集。如果您不反对,这种快速编辑在chruby将解决您的问题与Torquebox的严格方式引用宝石。你仍然可以像往常一样在程序之间使用管理器。重新编辑chruby.sh,可以将管理器返回到它的默认行为。就这么简单!)
了解这个涉及GEM_ROOT的小技巧,也许同样的补救方法可以应用于RVM和rbenv。
/etc/profile.d/torquebox.sh:
export TORQUEBOX_HOME=/opt/torquebox/current
export JBOSS_HOME=$TORQUEBOX_HOME/jboss
export JRUBY_HOME=/home/klyde/jruby-1.7.19
PATH=$JBOSS_HOME/bin:$JRUBY_HOME/bin:$PATH我还编辑了..。/etc/概况
export TORQUEBOX_HOME=/opt/torquebox/current
export JBOSS_HOME=$TORQUEBOX_HOME/jboss
export JRUBY_HOME=/home/klyde/jruby-1.7.19
PATH=$JBOSS_HOME/bin:$JRUBY_HOME/bin:$PATH
export RUBY_HOME=/home/klyde/ruby-2.2.2
export PATH=$RUBY_HOME/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin然后编辑一行。JBoss需要一条通向其打开按钮(standalone.sh)的清晰路径:
/opt/torquebox/current/jboss/bin/standalone.sh >> /var/log/torquebox/torquebox.log 2>&1我用1.6.1代替nokogiri 1.6.6.2。对许多人来说,这一改变是必要的。谷歌它获得更多信息。它以1.6.1-java和我的Gemfile (gem‘nokogiri,'1.6.1-java')的形式出现在宝石列表中。您可能必须删除(删除) Gemfile.lock的内容,并直接编辑它- nokogiri (1.6.1-java)。“$jruby -S bundle”在直接编辑后不会覆盖Gemfile.lock,正如“包安装或更新”一样:
$jruby -S gem install nokogiri 1.6.1此站点通常在SSL下。为了那些好奇的人,也为了我,如果我忘记了,下面是我的Apache代理Torquebox的样子:
/etc/apache2/sites现有/example.conf
<VirtualHost example.com:80>
ServerAdmin webmaster@localhost
ServerName example.com
Redirect / https://example.com
</VirtualHost>/etc/apache2/sites现有/示例-ssl.conf:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/certs/16746xxxxxbbac.crt
SSLCertificateChainFile /etc/apache2/ssl/certs/sf_bundle-g2-g1.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/ks.key
ServerAdmin webmaster@localhost
ServerName example.com
ServerAlias example.com
DocumentRoot /home/klyde/ror/exampleprog/public
ProxyRequests Off
ProxyPreserveHost On
ProxyPassReverseCookiePath / /
ProxyPass /errors/ !
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
<Proxy *>
AddDefaultCharset off
Require all granted
Order allow,deny
Allow from all
</Proxy>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
</VirtualHost>
</IfModule>/opt/torquebox/torquebox-3.1.2/jboss/standalone/configuration
<subsystem xmlns='urn:jboss:domain:web:1.4' default-virtual-server='default-host' native='false'>
<connector name='http' protocol='HTTP/1.1' scheme='http' socket-binding='http'/>
<connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding='ajp' />
<virtual-server name='default-host'>
<alias name='localhost'/>
<alias name='example.com'/>
</virtual-server>
</subsystem>必要时修复权限。以用户的身份运行“torquebox”可能会克服一些第一次碰到的问题。
https://stackoverflow.com/questions/31364385
复制相似问题