Page 1 sur 1

[systemd] serveur http

Publié : jeu. 30 oct. 2014, 10:05
par kaen25
Bonjour à tous.

J'ai monté un petit webserver basic avec casperjs.
Je me suis dit que ca serait pas mal dans faire un service.

J'ai fait mon fichier de service, j'ai lancé le service mais voila le process est bien lancé mais le port n'est pas ouvert.
Si je reprend tel quel le ExecStart dans le shell et que je le lance à la main, là aucun problème il se lance bien et le port est bien ouvert.

Merci d'avance pour vos lumières.

Code : Tout sélectionner

[Unit]
Description=tiny webserver

[Service]
ExecStart=/usr/bin/casperjs /home/kaen/webserver/server.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=tinyweb
User=kaen
Group=users
Environment=PATH=/usr/bin:/home/kaen/webserver

[Install]
WantedBy=multi-user.target


Re: [systemd] serveur http

Publié : jeu. 30 oct. 2014, 10:19
par staskr
Es-tu sûr que lors du lancement, il prend bien le fichier en compte ?

Re: [systemd] serveur http

Publié : jeu. 30 oct. 2014, 10:34
par kaen25
Ca doit marcher:

systemctl status tinywebserver.service

Code : Tout sélectionner

● tinywebserver.service - tiny webserver
   Loaded: loaded (/usr/lib/systemd/system/tinywebserver.service; enabled)
   Active: active (running) since jeu. 2014-10-30 10:55:03 CET; 36min ago
 Main PID: 5309 (casperjs)
   CGroup: /system.slice/tinywebserver.service
           └─5309 /usr/bin/casperjs /home/kaen/webserver/server.js
Mais étrangement le bind du port passe pas et je sais pas pourquoi, j'ai même changé le port histoire de voir si le problème venait pas de là.

Re: [systemd] serveur http

Publié : jeu. 30 oct. 2014, 10:41
par benjarobin
Le port est bien supérieur à 1024 ?
Peux tu donner la sortie de : id
Si tu lances ceci (après avoir arrêté le service) est ce que cela fonctionne :

Code : Tout sélectionner

export PATH=/usr/bin:/home/kaen/webserver
/usr/bin/node /home/kaen/webserver/server.js

Re: [systemd] serveur http

Publié : jeu. 30 oct. 2014, 12:09
par kaen25
port : 4200

id

Code : Tout sélectionner

uid=0(root) gid=0(root) groupes=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),19(log)
Quand je fais le export + la commande
netstat -tanpu | grep 4200

Code : Tout sélectionner

tcp        0      0 127.0.0.1:4200          0.0.0.0:*               LISTEN      5450/casperjs
Le problème vient vraiment quand le script est invoqué par systemd parce qu'en dehors aucun problème.

Re: [systemd] serveur http

Publié : jeu. 30 oct. 2014, 12:50
par Moviuro
Sortie de

Code : Tout sélectionner

# journalctl -b -u tinywebserver.service
après avoir lancé ledit service ?

Re: [systemd] serveur http

Publié : jeu. 30 oct. 2014, 13:00
par benjarobin
Je ne suis pas sur de suivre, depuis le terminal, tu lances en root node.js ?
Tu devais donner la sortie de la commande "id", avec le même utilisateur et depuis la même console que lorsque tu lances /usr/bin/node
Mais en effet la sortie en root de journalctl tel que demandé par Moviuro pourrait aider.

Re: [systemd] serveur http

Publié : jeu. 30 oct. 2014, 13:02
par Moviuro
benjarobin a écrit :Je ne suis pas sur de suivre, tu lances en root node.js ?
Il y a une spécification User= dans son service.

Re: [systemd] serveur http

Publié : jeu. 30 oct. 2014, 13:14
par benjarobin
Je parlais de la sortie de la commande "id". Car il indique que depuis le terminal tout fonctionne, mais il n'a pas précisé avec quel utilisateur.
J'ai édité mon message précédent pour être plus clair.

Re: [systemd] serveur http

Publié : ven. 31 oct. 2014, 13:55
par kaen25
Désolé pour le id
Pour l'utilisateur kaen :

Code : Tout sélectionner

uid=1000(kaen) gid=100(users) groupes=100(users)
Avec la commande : journalctl -b -u tinywebserver.service
J'ai rien de spécial.
J'avais des erreurs d'avant mais rien depuis le dernier lancement (exemple : Executable path is not absolute)

Du coup je comprend pas.
J'ai même lancé la commande dans le shell avec le bon user et ca passe.
Par contre je suis obligé de détacher le process du coup ca poserait pas un problème à systemd ?
Sachant que je mets pas de "&" dans le execStart

Re: [systemd] serveur http

Publié : ven. 31 oct. 2014, 14:27
par benjarobin
Non, ton service systemd à l'air ok. Il ne faut surtout pas mettre de "&".
Peux tu nous indiquer ce qui est nécessaire d'installer pour reproduire/tester ton souci.

Re: [systemd] serveur http

Publié : lun. 03 nov. 2014, 14:18
par kaen25
J'utilise plus node mais casper (plus pratique au final pour mes tests de non régression mais ca me fait la même chose)
Il faut installer casperjs (il se trouve dans le AUR: aur/casperjs 1.0.4-1)

Je vous mets un script basique au passage :

Code : Tout sélectionner

//includes web server modules
var server = require('webserver').create();

//start web server
var service = server.listen('127.0.0.1:4200', function(request, response) {
        response.setHeader("Content-Type",'application/json; charset=utf-8');
	response.setHeader("Access-Control-Allow-Origin", "*");
        response.write('{"hello": "world"}');
	response.close();
}
la commande c'est :
casperjs monserver.js