web-dev-qa-db-fra.com

EventMachine: "` start_tcp_server ': pas d'accepteur (le port est utilisé ou nécessite des privilèges root) "

Lorsque j'essaie d'exécuter le serveur avec EventMachine::run, l'erreur ne cesse de m'indiquer que le port est en cours d'utilisation. Cela a commencé depuis que j'ai exécuté le serveur en arrière-plan avec la commande Nohup.

Je suis à peu près sûr d'avoir tué le processus que j'ai commencé:

  • J'ai trouvé le processus Ruby avec ps et je l'ai tué. Ça ne se voit plus.
  • J'ai aussi couru lsof -i :8081 (8081 est le port sur lequel je l'ai couru) et rien ne s'affiche.
  • Enfin, j'ai changé le port dans le programme Ruby à plusieurs reprises pour masquer les ports et toujours obtenir l'erreur!

J'ai aussi pensé que cela pourrait être le manque de moi en tant qu'utilisateur root, donc essayé en tant que root en vain.

J'ai également redémarré le serveur.

S'il vous plaît laissez-moi savoir s'il y a autre chose que je peux essayer.

Note: ceci est sur debian.

13
Will Sewell

J'ai enfin compris: c'était en fait l'adresse IP à laquelle je me liais qui était incorrecte!

Il s’agit donc d’un message d’erreur très trompeur. Si vous l’obtenez, vérifiez également l’adresse IP.

16
Will Sewell

Cela se produit lorsque vous n’avez pas arrêté votre serveur correctement, par exemple lorsque vous êtes suspendu avec Ctrl + Z ou que vous exécutez le serveur deux fois.

Si arrêté par Ctrl + Z, cela fonctionne pour moi:

Obtenez le processus en cours avec:

$ ps ax | grep Rails
18192 pts/28 Sl+  0:05 /home/admin/.rvm/rubies/Ruby-2.1.2/bin/Ruby bin/Rails c
20496 pts/23 Tl 0:08 /home/admin/.rvm/rubies/Ruby-2.1.2/bin/Ruby bin/Rails s
20919 pts/23 S+ 0:00 grep --color=auto Rails

Et puis tuez le processus dans lequel Rails server est en cours d'exécution:

$ kill 20496

Si ce n'est pas fermé après quelques secondes, vous pouvez essayer de "forcer" la fermeture avec avec -9 (mais cela empêche tout nettoyage de Rails):

$ kill -9 20496

Maintenant, vous pouvez redémarrer le serveur:

$ Rails s
23
Amol Udage

Avait le même problème. 

Ran lsof -i :3000 (3000 est le port sur lequel je l'ai exécuté).

J'ai découvert que le port était utilisé par Ruby. J'ai tué le processus en utilisant kill -9 *pid*

Quand j'ai de nouveau exécuté lsof -i :3000, rien ne s'est présenté.

J'ai ensuite exécuté Rails s et tout fonctionne correctement maintenant.

22
Hanmaslah

Courir sur un port franc résout le problème en:

Rails s -p 3001

ou 

Ruby script/Rails server webrick -e production -p 3001

ou 

Ruby script/Rails server thin -e production -p 3001
0

Dans mon cas, il ne s'agissait que de problèmes de connexion Internet.

0
Ifelere Bolaji

Cela sauvera peut-être du temps à quelqu'un: Dans mon cas, le serveur Rails ne démarrera pas sur un port renvoyant la même erreur. Événement après le redémarrage de ma machine. D'autres serveurs faisant référence à localhost n'a pas fonctionné aussi bien.

Le problème était dans mon fichier /etc/hosts qui est devenu vide. Après avoir restauré son état par défaut, le problème a été résolu.

0
Sofest