带有符号链接的mod_xsendfile
我正在使用xsendfile和我的Rails 3应用程序遇到问题。
我使用capistrano来管理部署,在每个版本中,都有一个指向shared / assets目录的符号链接(例如/ var / www / site / releases / 1234 / assets => / var / www / site / shared / assets )。 问题是XSendFile似乎没有遵循符号链接。 在我的apache日志中,我看到以下错误:
The given path was above the root path: xsendfile: unable to find file: /var/www/site/releases/20110406205607/assets/pdfs/2/original/test.pdf
我将XSendFilePath配置设置为
XSendFilePath /var/www/site/shared/assets
如果我将配置切换到:
XSendFilePath /var/www/site/releases
一切正常。 所以我有几个问题:
1)有没有办法让XSendFilePath跟随符号链接?
2)将XSendFilePath设置为我的发行版dir是否存在安全风险? 换句话说,我是否打开了对所有dir的访问权限?
您是否使用类似于此的after "deploy:finalize_update"
任务创建链接:
task :storage_link, :except => { :no_release => true } do run "ln -nFs #{deploy_to}/shared/assets #{latest_release}/assets" end
这使得XSendFilePath将链接看作/var/www/site/current/assets
,将其置于根路径中。
还要确保运行您的应用程序的用户拥有并拥有/ var / www / site / shared / assets的写入权限。
- Capistrano 3资产:预编译需要数小时。 停在css文件
- Capistrano和GitHub Private Repo – 许可被拒绝(公钥)
- capistrano – NameError:未初始化的常量Net :: SSH :: KnownHosts :: SUPPORTED_TYPE
- 使用master.key进行数据海洋部署的Rails 5.2:ActiveSupport :: MessageEncryptor :: InvalidMessage:ActiveSupport :: MessageEncryptor :: InvalidMessage
- Capistrano部署的问题:迁移
- 使用EC2 + Rails + Nginx + Capistrano重启后Puma重启失败
- capistrano密码提示
- capistrano错误消息:请安装pg适配器:`gem install activerecord-pg-adapter`(无法加载此类文件 –
- 使用Capistrano开始后台任务