Impossible de lier au port 80, mais en cours d'exécution sur le shell actuel fonctionne sans aucun problème
J'obtiens l'erreur suivante lors de l'exécution du "cap production unicorn:start
"
F, [2013-07-12T04:36:18.134045 #28998] FATAL -- : error adding listener addr=0.0.0.0:80
/home/ec2-user/apps/foo_prod/shared/bundle/ruby/2.0.0/gems/unicorn-4.6.3/lib/unicorn/socket_helper.rb:147:in `initialize': Permission denied - bind(2) (Errno::EACCES)
Exécutant la commande suivante manuellement, fonctionne sans aucun problème. Quel pourrait être le problème ici?
rvmsudo unicorn_rails -c config/unicorn/production.rb -D --env production
source d'informationauteur Rpj | 2013-07-16
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'accès à la racine de se lier à la baisse des ports comme le port
80
. Commandervmsudo
s'exécute dans le contexte de la racine et par conséquent, il fonctionne.Cap tâche s'exécute dans un contexte utilisateur normal (probablement déployer) en fonction de votre configuration. Vous devez ajouter sudo aptitude à cap déployer utilisateur et assurez-vous que votre pac tâche utilise
sudo
pour commencerunicorn
.Réponse par @Iuri G. vous donne raison et la solution possible.
J'ai une autre suggestion, sauf si vous avez très convaincante de la raison pour exécuter la Licorne avec le port 80, un changement pour un port plus (>1024), à l'instar de 3000. Cela permettra de résoudre votre problème.
Si c'est une application qui est exposé au public, il est trop facile d'accabler les Licorne et de rendre votre application indisponible pour les utilisateurs finaux. Dans ce cas, ne mettez Licorne derrière un proxy (comme Nginx). Le proxy sur le port 80 et la Licorne sur un port plus.
Dans mon environnement de développement, à l'aide de RubyMine, je suis tombé sur cette récemment.
J'ai utilisé SSH pour rediriger le port 80 pour le 8080.
Je suppose que vous êtes sous Ubuntu comme serveur de production. Sur votre serveur, vous devez modifier votre
sudoers
fichier:Premier type
select-editor
et sélectionnez nano (ou un autre éditeur vous vous sentez à l'aise avec)Puis à la fin du fichier, avant la
include
ligne, ajoutez cette ligne:Vous avez besoin de remplacer
deployer
par le nom d'utilisateur que vous utilisez avec capistrano, et de remplacer/path/to/your/unicorn_rails
avec son chemin d'accès correct. Cela permettra à votre deployer utilisateur de "sudo unicorn_rails" sans se demander un mot de passe.Enfin modifier votre
unicorn:start
capistrano tâche, et ajouterrvmsudo
à l'avance de votre ligne de commande de démarrage de la licorne:Si cela ne fonctionne pas, vous pouvez essayer ceci à la place