2013-06-22 13 views
12

Ich weiß nicht, was mit der Datei unicorn.rb nicht stimmt. meine unicorn.rb config istEinhorn kann nicht gestartet werden, Master konnte nicht gestartet werden. Überprüfen Sie das stderr-Protokoll auf Details

APP_PATH = "/var/www/demo" 
working_directory APP_PATH 

stderr_path APP_PATH + "/log/unicorn.stderr.log" 
stdout_path APP_PATH + "/log/unicorn.stderr.log" 

pid APP_PATH + "/tmp/pid/unicorn.pid" 

läuft nginx erfolgreich.

+1

was sagt der stderr unter /var/www/demo/log/unicorn.stderr.log? Übrigens, Sie protokollieren stdout und stderr in derselben Datei. –

+0

Keine solche Datei oder Verzeichnis - /path/to/.unicorn.sock (Errno :: ENOENT) –

Antwort

6

Der Socket ist die "Datei", die nginx und Einhorn als Kanal für die gesamte Kommunikation zwischen ihnen verwenden. Wo hast du es definiert? In unserem Einhorn configs, haben wir in der Regel eine Zeile wie diese:

listen APP_PATH + "/tmp/pid/.unicorn.sock 

Dann in Ihrem nginx.conf, müssen Sie nginx über diese Buchse sagen, zum Beispiel:

upstream unicorn { 
    server unix:/var/www/demo/tmp/pid/.unicorn.sock fail_timeout=0; 
} 

location/{ 
    root /var/www/demo/current/public ; 
    try_files $uri @unicorns; 
} 

location @unicorns { 
    proxy_pass http://unicorn; 
} 

In dieser Konfigurationsdatei Der erste Abschnitt definiert, wie nginx ein Einhorn erreichen kann. Der zweite leitet Anfragen tatsächlich an einen abstrakten Ort "@unicorns", der wiederum im letzten Abschnitt definiert ist. Auf diese Weise können Sie die @unicorns-Kurzschrift wiederverwenden, wenn Sie ein komplexeres nginx-Routing haben.