我正在嘗試使用nginx和Passenger部署Rails應用程序(具體而言)的不同方法。假設我已經安裝在/var/local/railapps/redmine-1.1
中。將應用程序部署到主機根時,Nginx +乘客無法解析軟鏈接
當我部署爲子URI,我可以做軟鏈接只是爲了public
文件夾:
sudo ln -s /var/local/railapps/redmine-1.1/public /var/www/rails/redmine
,並加入到server
塊nginx.conf
:
root /var/www/rails;
passenger_enabled on;
passenger_base_uri /redmine;
有了這個,管理平臺可訪問與public
相同級別的文件夾,例如,/var/local/railapps/redmine-1.1/config
。
在另一方面,乘客不解決軟鏈接,當它被安裝到主機的根(根據this guide):
sudo ln -s /var/local/railapps/redmine-1.1/public /var/www/rails/redmine
root /var/www/rails/redmine;
passenger_enabled on;
我正在從客運錯誤:No such file or directory - config/environment.rb
根/var/www/rails
,這意味着它試圖獲取不是來自鏈接目標的相對路徑,而是來自鏈接本身。如果我做了鏈接到主redmine的文件夾,整個事情的作品:
sudo ln -s /var/local/railapps/redmine-1.1 /var/www/rails/redmine
root /var/www/rails/redmine/public;
passenger_enabled on;
所以,問題是,爲什麼乘客能夠「子URI」模式來解決軟鏈接,而不是在「主機根「模式?是否有一些額外的設置?
這是正確的;看到[這個SO問題和答案](http://stackoverflow.com/questions/4485349/can-my-public-directory-be-a-symlink-with-rails-3-passenger-3-nginx-0-8/4689901#4689901)可能的解決方法。 – 2011-02-06 19:28:30