API ne répond pas

Bonjour à tous,

Je suis confronté en ce moment à des problèmes avec mon Yunohost. Ils sont peut-être liés.

  • L’un des problèmes que je n’arrive pas à me connecter l’interface d’administration : Je rentre le mot de passe, je valide. J’ai le message “connecté” mais je reste sur l’écran de loggin. Si je rafraîchi PacMan se met indéfiniment à faire des aller-retours. Si je reviens plus tard, parfois j’arrive à nouveau à me reconnecter.

  • L’autre problème et que j’ai souvent le message d’erreur “l’API ne répond pas”. Par exemple, lors de l’installation d’une application.

La commande yunohost-api --verbose me dit :

root@serveur:/home/user# yunohost-api --verbose
546 ERROR moulinette.interface.api run - unable to start the server instance on localhost:6787
Traceback (most recent call last):
File “/usr/lib/python2.7/dist-packages/moulinette/interfaces/api.py”, line 762, in run
server.serve_forever()
File “/usr/lib/python2.7/dist-packages/gevent/baseserver.py”, line 282, in serve_forever
self.start()
File “/usr/lib/python2.7/dist-packages/gevent/baseserver.py”, line 234, in start
self.init_socket()
File “/usr/lib/python2.7/dist-packages/gevent/pywsgi.py”, line 639, in init_socket
StreamServer.init_socket(self)
File “/usr/lib/python2.7/dist-packages/gevent/server.py”, line 78, in init_socket
self.socket = self.get_listener(self.address, self.backlog, self.family)
File “/usr/lib/python2.7/dist-packages/gevent/server.py”, line 89, in get_listener
return _tcp_listener(address, backlog=backlog, reuse_addr=self.reuse_addr, family=family)
File “/usr/lib/python2.7/dist-packages/gevent/server.py”, line 153, in _tcp_listener
sock.bind(address)
File “”, line 1, in bind
error: [Errno 98] Address already in use: (‘localhost’, 6787)

La commande netstat -tlnp | grep 6787 me retourne :

tcp 0 0 127.0.0.1:6787 0.0.0.0:* LISTEN 480/python

Et je vous avoue que là… je sèche. Où plutôt, je n’ai pas envie de faire bêtise. Dois-je changer le port de Python, ou bien de la moulinette ? Comment fais-je l’un ou l’autre ?

Merci pour votre aide,

Configuration de mon YunoHost
Matériel : Serveur dédié Dedibox : Architecture: x86_64
Accès Internet : dans un datcenter
YunoHost version :
yunohost : 2.7.9 (stable)
yunohost-admin : 2.7.7 (stable)
moulinette : 2.7.7 (stable)
ssowat : 2.7.7 (stable)

root@serveur:/home/user# yunohost app map
serveur.net/OS-JS: OS-JS
serveur.net/adminer/: Adminer
serveur.net/agendav/: Agenda
serveur.net/agora: Agora
serveur.net/baikal/: Baikal
serveur.net/bozon: BoZoN
serveur.net/chtickynotes/: ChtickyNotes
serveur.net/horde: Horde
serveur.net/mail/: Mail
serveur.net/munin/: Munin
serveur.net/nextcloud: Nextcloud
serveur.net/ssh/: Shell In A Box

Salut,

je pense que ce que tu observes en lançant yunohost-api est attendu : il y a probablement deja une instance de yunohost-api qui tourne, qui utilise le même port. Tu dois pouvoir le vérifier avec service yunohost-api status.

Par rapport au problème initial, je ne suis pas sur de ce qui peut être la raison… Est-ce que tu obtiens beaucoup de ligne lorsque tu fais un ps -ef | grep yunohost par exemple ?

Sinon, peut-être que relancer l’api via service yunohost-api restart peut aider, mais j’en doute un peu :s

Tu peux, si jamais tu ne trouve pas d’où vient le problème, redémarrer le serveur. Si ça ne fonctionne toujours pas, tu peux faire la méthode brute mais qui fonctionnera :

netstat -tlnp | grep 6787
kill $n°processus

À la place de $n°processus, mets le numéro présent dans le résultat de la commande netstat sur la droite près de “*/python”.

et après tu relance l’api de Yunohost en faisant :

service yunohost-api start

Mais bon, c’est qu’en cas d’urgence. Le risque c’est que le problème se retrouve au redémarrage à chaque fois.
Je me demande si tu n’as pas un autre application python qui utilise ce port. Regarde ce qui ne fonctionne plus parmi tes programmes et apps quand tu tues le processus (kill $processus). Ça aidera peut-être à cerner le problème.

frju365

PS: bien-sûr après ce que te conseille @Aleks.

Bonjour à vous 2, merci de vous préoccupez de mon problème,

Alors,

service yunohost-api status me renvoie (je ne sais pas si cela est attendu, ou pas, mais j’ai l’impression que c’est normal) :

● yunohost-api.service - YunoHost API Server
Loaded: loaded (/lib/systemd/system/yunohost-api.service; enabled)
Active: active (running) since Mon 2018-02-19 08:27:01 CET; 5min ago
Main PID: 27358 (yunohost-api)
CGroup: /system.slice/yunohost-api.service
└─27358 /usr/bin/python /usr/bin/yunohost-api

Feb 19 08:27:01 serveur.net systemd[1]: Started YunoHost API Server.

ps -ef | grep yunohost Me renvoie :

avahi 478 1 0 Feb15 ? 00:00:09 avahi-daemon: running [yunohost.local]
root 27358 1 0 08:27 ? 00:00:00 /usr/bin/python /usr/bin/yunohost-api
root 27921 27920 0 08:34 ? 00:00:00 /bin/sh -c yunohost dyndns update >> /dev/null
root 27922 27921 4 08:34 ? 00:00:02 /usr/bin/python /usr/bin/yunohost dyndns update
munin 27951 27939 1 08:35 ? 00:00:00 /usr/share/munin/munin-update [Munin::Master::UpdateWorker<serveur.net;yunohost.serveur.net>] – fetch(mysql_table_locks)
root 28039 26831 0 08:35 pts/0 00:00:00 grep yunohost

Evidemment, j’ai déjà tenté les relances de

service yunohost-api restart et même de tout le serveur

J’avais déjà effectivement cherché le process qui tourne sur le 6787 et l’ai killé, sauf que c’est toujours “python” qui ressort, et se relance directement après la commande. Après mon kill, tout semble tourner correctement.

Edit :

La commande ps -ef | grep python me renvoie :

root@serveur:/home/user# ps -ef | grep python
root 482 1 0 08:52 ? 00:00:00 /usr/bin/python /usr/bin/yunohost-api
glances 647 1 0 08:52 ? 00:00:01 /usr/bin/python3 /usr/bin/glances -s -B 127.0.0.1
root 874 1 0 08:53 ? 00:00:14 /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock -p /var/run/fail2ban/fail2ban.pid
root 1446 1 0 08:53 ? 00:00:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
root 6982 6981 2 09:38 ? 00:00:02 /usr/bin/python /usr/bin/yunohost dyndns update
root 7082 7026 0 09:39 pts/1 00:00:00 grep python