Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Capistrano和XSendFile配置_Ruby On Rails_Apache_Capistrano_Passenger_X Sendfile - Fatal编程技术网

Ruby on rails Capistrano和XSendFile配置

Ruby on rails Capistrano和XSendFile配置,ruby-on-rails,apache,capistrano,passenger,x-sendfile,Ruby On Rails,Apache,Capistrano,Passenger,X Sendfile,我正在尝试用Apache2.2、Passenger 4.0.59和XSendFile 0.12配置Rails生产服务器。应用程序通过Capistrano部署 部署的应用程序可能会生成到{Rails.root}/tmp的大型PDF文件,并使用send_文件提供此文件 问题是Capistrano使用符号链接指向当前部署的应用程序版本。另一方面,如果文件的实际位置在文档根目录之外,即使XSendFilePath允许,XSendFile也会取消对符号链接的引用,并拒绝为文件提供服务。Apache的err

我正在尝试用Apache2.2、Passenger 4.0.59和XSendFile 0.12配置Rails生产服务器。应用程序通过Capistrano部署

部署的应用程序可能会生成到{Rails.root}/tmp的大型PDF文件,并使用send_文件提供此文件

问题是Capistrano使用符号链接指向当前部署的应用程序版本。另一方面,如果文件的实际位置在文档根目录之外,即使XSendFilePath允许,XSendFile也会取消对符号链接的引用,并拒绝为文件提供服务。Apache的error.log状态:

(20023)The given path was above the root path: xsendfile: unable to find file: /resolved/path/to/file.pdf
当我将PassengerAppRoot和XSendFilePath设置为当前版本应用程序的实际位置时,一切都很好,路径上没有符号链接。但在下一次部署之前一切正常,这需要apache重新配置。不是很有用

我应该如何配置Capistrano deploy和XSendFile参数以使其协同工作


我尝试了中和中所述的ln-nFs解决方案,但没有一个有效。

我终于成功了。为那些在XSendFile方面有问题的人提供一些提示

我将XSendFilePath设置为用户的$HOME,在$HOME的路径上没有符号链接,因此它可以工作。从功能和安全的角度来看,我可以接受这一点,但这显然是一个解决办法。 请注意,XSendFilePath对包含多个斜杠的路径非常敏感,例如//如下所示。我使用的是apache宏,在从几个宏参数连接XSendFilePath参数时,我使用了一些过时的斜杠。这导致XSendFile拒绝发送文件。 祝你好运