2012-05-30 105 views
5

我爲在nginx上運行的rails應用程序設置了一個OSX webserver。 當我手工啓動服務器,Rails應用程序工作正常,但是當我重新啓動服務器,我總是得到乘客的錯誤消息nginx,passenger,rails:no such file to load --bundler

沒有這樣的文件來加載--bundler

我想這有做一些與啓動守護進程手動設置:

# /Library/LaunchDaemons/org.nginx.ngnx.plist 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>nginx</string> 
    <key>UserName</key> 
    <string>MyUser</string> 
    <key>ProgramArguments</key> 
    <array> 
     <string>/usr/local/Cellar/nginx/1.0.11/sbin/nginx</string> 
     <string>-g</string> 
     <string>daemon off;</string> 
    </array> 
    <key>KeepAlive</key> 
    <true/> 
    <key>NetworkState</key> 
    <true/> 
    <key>LaunchOnlyOnce</key> 
    <true/> 
</dict> 
</plist> 

正如你看到的,我的plist中使用MyUser作爲用戶名。 nginx服務器在啓動後啓動並作爲MyUser運行,但是我收到了此錯誤消息。

當我在命令行上使用sudo nginx -s stop && nginx重新啓動它時,一切正常。

任何想法爲什麼?

編輯

我nginx.conf如下:

env GEM_HOME=/usr/local/rvm/gems/[email protected]rails311/gems; 
worker_processes 1; 

events { 
    worker_connections 1024; 
} 

http { 
    include mime.types; 
    default_type application/octet-stream; 
    sendfile on; 
    keepalive_timeout  60 60; 
    send_timeout   120; 

    recursive_error_pages on; 

    error_log /var/log/nginx/error.log; 
    access_log /var/log/nginx/access.log; 

    gzip on; 
    gzip_http_version 1.1; 
    gzip_comp_level 4; 
    gzip_proxied any; 
    gzip_vary on; 
    gzip_min_length 1100; 
    gzip_buffers 32 16k; 

    #server_tokens off; 
    tcp_nopush on; 
    tcp_nodelay on; 
    keepalive_requests 0; 

    passenger_default_user eveadmin; 
    passenger_default_group staff; 
    passenger_root /usr/local/rvm/gems/[email protected]/gems/passenger-3.0.12; 
    passenger_ruby /usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby; 


    server { 
    listen 8444; 
    #server_name intranet.local; 
    root /Users/eveadmin/rails/intranet/public; 
    passenger_enabled on; 
    rails_env development; 
    } 
} 

error i get

+0

實際上是否安裝了bundler? Ruby如何安裝? –

+0

一切正常,當我手動啓動nginx時,問題是nginx在機器啓動時無法正確啓動。所以是的,bundler被安裝。使用自制軟件/ rvm安裝紅寶石。 – tmaximini

+0

這聽起來像是一個環境問題。你的nginx.conf是怎麼樣的? –

回答

0

我的2美分:嘗試將GEM_HOME環境變量在你的nginx的配置。

+0

不幸的是這並沒有幫助 – tmaximini

0

嘗試在您的nginx.conf中設置passenger_default_user和passenger_default_group。

默認值是nobody,這可能導致了您的問題。

有關更多詳細信息,請參閱Phusion Passenger users guide

+0

謝謝,但它並沒有幫助,我更新了我的nginx conf在原帖 – tmaximini

+0

其實我認爲nginx。conf是好的,因爲如果我手動啓動它的作品。我認爲這個問題是由於/Library/LaunchDaemons/org.nginx.ngnx.plist – tmaximini

0

您是否在安裝rubygems或bundler時使用了sudo?如果是這樣,請嘗試在本地重新安裝它們。

+0

他們安裝在本地... – tmaximini

0

我也遇到過這個問題以及捆綁。在某些環境下,如果我運行bundle w/sudo,我會得到你看到的錯誤,如果我運行它沒有sudo,那麼它工作正常。

我相信這可能是因爲你的$PATH$GEM_HOME變量沒有設置b/c你的用戶的shell環境(可能是bash)沒有加載。也許你應該改變你的命令是這樣的:

/bin/bash -l -c '/usr/local/Cellar/nginx/1.0.11/sbin/nginx' 

如果不工作,你有沒有試過採取用戶名摳出你的啓動守護進程,看看會發生什麼?

+0

謝謝,我會盡力明天... – tmaximini

+0

嗯現在nginx不會啓動了,當我啓動服務器... – tmaximini

+0

你可以嘗試添加一個守護進程,該守護進程執行/ bin/bash -l -c'echo $ PATH >> somelogfile.log'並檢查日誌文件的內容 –

相關問題