nginx et la licorne mauvais gatewayconnect() sous unix:/tmp/mobile.socket a échoué ET a échoué (111: Connexion refusée)
Je suis en train (d'essayer) de mettre en place une ubuntu server 11.04 sur rackspace pour exécuter un rails 3.2 application avec nginx et la licorne.
J'ai trouvé ce blog génial http://techbot.me/2010/08/deployment-recipes-deploying-monitoring-and-securing-your-rails-application-to-a-clean-ubuntu-10-04-install-using-nginx-and-unicorn/ qui m'a aidé massivement et à part les problèmes d'installation de mysql, je pense que j'ai tout cloué sauf pour un bad gateway erreur
La nginx journal des erreurs montre
2012/02/25 14:38:34 [crit] 29139#0: *1 connect() to unix:/tmp/mobile.socket failed (2: No such file or directory) while connecting to upstream, client: xx.xx.xxx.xx, server: localhost, request: "GET /HTTP/1.1", upstream: "http://unix:/tmp/mobile.socket:/", host: xx.xx.xxx.xx
(J'ai x'd les domaines)
Je suppose que cela pourrait être un utilisateur des autorisations chose, mais le fichier n'existe pas réellement et je ne suis pas sûr de savoir comment il doit être créé. Je suis réticent à le créer manuellement car j'ai l'impression que cela soit à la fixation d'un symptôme plutôt que la fixation de la cause
Il convient également de noter que l'utilisateur que j'ai créé sur le serveur sudo autorisations et les besoins d'utiliser sudo pour lancer nginx, ne sais pas si c'est juste?
Aucune idée de ce que je devrais regarder pour corriger ce sont grandement appréciés.
Pour l'intégralité de mes fichiers de configuration ressembler à ceci
/etc/init.dunicorn
#! /bin/sh
### BEGIN INIT INFO
# Provides: unicorn
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the unicorn web server
# Description: starts unicorn
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/unicorn_rails
DAEMON_OPTS="-c /home/testapp/mobile/current/unicorn.rb -E production -D"
NAME=unicorn_rails
DESC=unicorn_rails
PID=/home/testapp/mobile/shared/pids/unicorn.pid
case "$1" in
start)
echo -n "Starting $DESC: "
$DAEMON $DAEMON_OPTS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
kill -QUIT `cat $PID`
echo "$NAME."
;;
restart)
echo -n "Restarting $DESC: "
kill -QUIT `cat $PID`
sleep 1
$DAEMON $DAEMON_OPTS
echo "$NAME."
;;
et la nginx configuration dans /etc/nginx/sites-available/default
# as we are going to use Unicorn as the application server
# we are not going to use common sockets
# but Unix sockets for faster communication
upstream mobile {
# fail_timeout=0 means we always retry an upstream even if it failed
# to return a good HTTP response (in case the Unicorn master nukes a
# single worker for timing out).
# for UNIX domain socket setups:
server unix:/tmp/mobile.socket fail_timeout=0;
}
server {
# if you're running multiple servers, instead of "default" you should
# put your main domain name here
listen 80 default;
# you could put a list of other domain names this application answers
server_name localhost;
root /home/testapp/mobile/current/public;
access_log /var/log/nginx/mobile_access.log;
rewrite_log on;
location / {
#all requests are sent to the UNIX socket
proxy_pass http://mobile;
proxy_redirect off;
proxy_set_header Host $host:$proxy_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
# if the request is for a static resource, nginx should serve it directly
# and add a far future expires header to it, making the browser
# cache the resource and navigate faster over the website
location ~ ^/(images|javascripts|stylesheets|system)/ {
root /home/testapp/mobile/current/public;
expires max;
break;
}
}
Mise à JOUR
Ma licorne.rb fichier
# See http://unicorn.bogomips.org/Unicorn/Configurator.html for complete
# documentation.
worker_processes 4
# Help ensure your application will always spawn in the symlinked
# "current" directory that Capistrano sets up.
working_directory "/home/testapp/mobile/current"
# listen on both a Unix domain socket and a TCP port,
# we use a shorter backlog for quicker failover when busy
listen "/tmp/mobile.socket", :backlog => 64
# nuke workers after 30 seconds instead of 60 seconds (the default)
timeout 30
# feel free to point this anywhere accessible on the filesystem
user 'testapp', 'testapp'
shared_path = '/home/testapp/mobile/shared'
pid "#{shared_path}/pids/unicorn.pid"
stderr_path "#{shared_path}/log/unicorn.stderr.log"
stdout_path "#{shared_path}/log/unicorn.stdout.log"
Que par suggestion, j'ai créé manuellement le mobile.fichier de socket et maintenant, je reçois l'erreur suivante
[error] 1083#0: *4 connect() to unix:/tmp/mobile.socket failed (111: Connection refused) while connecting to upstream
Est-ce juste une des autorisations de chose sur le mobile.fichier de socket? Si oui, quelles autorisations faut-il prévoir?
Mise à jour 2
nginx et la licorne les deux semblent être en cours d'exécution ok
testapp@airmob:~/mobile/courant$ ps aux | grep nginx
root 6761 0.0 0.1 71152 1224 ? Ss 18:36 0:00 nginx: master process /usr/sbin/nginx
testapp 6762 0.0 0.1 71492 1604 ? S 18:36 0:00 nginx: worker process
testapp 6763 0.0 0.1 71492 1604 ? S 18:36 0:00 nginx: worker process
testapp 6764 0.0 0.1 71492 1604 ? S 18:36 0:00 nginx: worker process
testapp 6765 0.0 0.1 71492 1604 ? S 18:36 0:00 nginx: worker process
testapp 13071 0.0 0.0 8036 600 pts/0 R+ 21:21 0:00 grep --color=auto nginx
OriginalL'auteur jamesc | 2012-02-25
Vous devez vous connecter pour publier un commentaire.
J'ai renommé mobile.socket mobile.chaussette dans les fichiers de config (licorne.rb et nginx par défaut) et tout est bon, pas besoin de créer un socket fichiers, il fonctionne exactement comme prévu.
Cela se produit également si le serveur d'application n'est pas en cours d'exécution (Dans mon cas licorne). Licorne crée la socket et nginx cherche. Si la prise n'est pas là nginx coups de pied jusqu'à une histoire, donc si vous êtes à la lecture de cette recherche d'une solution assurez-vous que votre serveur d'application (licorne) est en cours d'exécution et assurez-vous que tous vos socket noms de match dans les différents fichiers de configuration (licorne.rb et quelle que soit nginx.fichier conf a la prise est mentionné)
OriginalL'auteur jamesc
Vous avez spécifié qu'il doit utiliser la prise située à
/tmp/mobile.socket
alors oui, la solution est tout simplement de créer.Je suppose que vous faites référence à la même prise dans votre
unicorn.rb
.J'ai mis à jour ma question, je suis maintenant une connexion refusé d'erreur
OriginalL'auteur James