ruby-on-rails – 我的/ public目录可以是rails 3 passenger 3 nginx 0.8的符号链接吗?

我正在组建一个公共目录所在的rails部署
符号链接到系统上的另一个目录.这是乘客3
Nginx .8.它似乎不喜欢这种设置.默认情况下,Nginx总是遵循符号链接,所以AFAIK不是做与Apache的FollowSymLinks等效的事情.

更新

看起来这里有这个:http://www.modrails.com/documentation/Users%20guide%20Nginx.html#application_detection

Note that Phusion Passenger for Nginx
does not resolve any symlinks in the
root path. So for example,suppose
that your root points to
/home/www/example.com,which in turn
is a symlink to
/webapps/example.com/public. Phusion
Passenger for Nginx will check for
/home/www/config/environment.rb,not
/webapps/example.com/config/environment.rb.
This file of course doesn’t exist,and
as a result Phusion Passenger will not
activate itself for this virtual host,
and you’ll most likely see some output
generated by the Nginx default
directory handler such as a Forbidden
error message.

Detection of Rack applications happens
through the same mechanism,exception
that Phusion Passenger will look for
config.ru instead of
config/environment.rb.

所以我想知道是否有一些正确的配置符号可以解决这个问题.

解决方法

我认为不可能使用符号链接的公共目录.我能想象的唯一解决方法是对公共目录中的任何文件和目录进行符号链接.
# public folder: /data/public
# app folder: /webapp/
mkdir -p /webapp/public && ln -sf /data/public/* /webapp/public/

对于/ data / public中的每个新文件或目录,您必须再次运行此命令.

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...