2011-04-06 18 views
8

Rails 3 uygulamam ile xsendfile kullanarak bir sorunla karşılaşıyorum.Sembolik bağlantılar içeren mod_xsendfile

Dağıtımları yönetmek için capistrano kullanıyorum ve her sürümde, paylaşılan/varlıklar dir (örneğin/var/www/site/sürümleri/1234/varlıklar =>/var/www/site) için sembolik bir bağlantı var./paylaşılan/varlıklar). Sorun şu ki XSendFile sembolik bağları takip etmiyor gibi görünüyor. Sonra

XSendFilePath /var/www/site/releases 

herşey: Ben config geçerseniz

The given path was above the root path: xsendfile: unable to find file: /var/www/site/releases/20110406205607/assets/pdfs/2/original/test.pdf 

Ben XSendFilePath yapılandırma

XSendFilePath /var/www/site/shared/assets 

olarak belirledik: Benim apache günlükleri, ben aşağıdaki hatayı görüyorum iyi çalışıyor.

1) XSendFilePath sembolik bağlantıyı takip yapmak için bir yolu var mı: Ben birkaç soru var?

2) benim bültenleri dir XSendFilePath ayarı ile bir güvenlik riski var mı? Diğer bir deyişle, tüm bu direklere erişimi açabilir miyim? Bu XSendFilePath kök yolunun içine koyar /var/www/site/current/assets olarak bağlantıya bakın yapar

task :storage_link, :except => { :no_release => true } do 
    run "ln -nFs #{deploy_to}/shared/assets #{latest_release}/assets" 
end 

:

cevap

7

buna benzer bir after "deploy:finalize_update" görevini kullanarak bağlantı oluşturarak musunuz.

Ayrıca uygulamanızı çalıştıran kullanıcının sahip ve/var/www/Site/paylaşılan/varlıkların yazma izinlerine sahip olduğundan emin olun.

+0

Cevabınız için teşekkürler. Bu projeden geçtim ama cevabınız kesinlikle mantıklı. – bostonou

+1

Bu, "Pathname # realdirpath" kullanılarak sembolik bağlantıyı çözene kadar bizim için çalışmadı. 'Pathname # realdirpath' kullanırken bile –

+0

O benim için çalışmıyor :( – wrzasa