#1 Le 23/05/2009, à 15:59
- freaxmind
Mettre en place un serveur HTTP en une ligne de commande
Voici une petite astuce que j'ai trouvé, peut être déjà connu, permettant de lancer un petit serveur http une ligne de commande. Bien pratique pour échanger des fichiers avec des amis sans se prendre la tête avec un partage !
python -m SimpleHTTPServer
Point intéressant, le répertoire où sera lancer cette commande sera automatiquement chrooté !
Python n'en finira jamais de me surprendre
Hors ligne
#2 Le 24/05/2009, à 09:44
- omnimax
Re : Mettre en place un serveur HTTP en une ligne de commande
sorry pour mon ignorance, mais il ne faut rien de plus pour lancer un serveur? Je veux dire par là, est ce qu'on peut tous créer un serveur avec cette commande? Si oui quelle est l'adresse pour y accéder? Merci pour ta réponse.
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#3 Le 24/05/2009, à 09:54
- freaxmind
Re : Mettre en place un serveur HTTP en une ligne de commande
Si tu as python installé sur ta machine ( ce qui est le cas sur la majorité des systèmes linux ), alors tu peux lancer un serveur avec simplement cette commande ! Il n'en faut pas plus .
Moi aussi cela m'a surpris, mais en faite c'est assez bien fichu.
L'option -m de la commande python permet de lancer un module, ici la classe SimpleHttpServer qui dispose de tout le nécessaire pour monter un petit serveur http.
Pour y accéder, le port est livré dans le terminal ou tu execute la commande. Généralement, il s'agit du port 8000
Le dossier ou la commande sera executé sera vu comme la racine des répertoires de ton serveur, et selon les droits des répertoires tu pourras enregistrer et naviguer à travers eux.
C'est très puissant ! Ce qui est pratique c'est pour mettre a disposition rapidement des documents sous forme html ou pour faire un partage en http.
Hors ligne
#4 Le 24/05/2009, à 09:59
- Qid
Re : Mettre en place un serveur HTTP en une ligne de commande
heu ...
ça me semble totalement iréel que ça puisse marcher ...
surtout si on a un vrais serveur web en paralelle en fait ...
"GNU/Linux c'est que du bon mais M$ Windows ce n'est pas si mal"
Référent technique Ubuntu d'un Groupe d'Utilisateur du Libre
plus d'info sur mon profil
Hors ligne
#5 Le 24/05/2009, à 10:32
- freaxmind
Re : Mettre en place un serveur HTTP en une ligne de commande
Essaye, c'est juste une commande à mettre dans le terminal !
Le serveur sera sur le port 8000, utilisé principalement pour le développement ( j'en utilise pour quelques framework ). Mais cela ne pose pas de problème
Hors ligne
#6 Le 24/05/2009, à 10:45
- Qid
Re : Mettre en place un serveur HTTP en une ligne de commande
hum ... wai j'ai alluciné entre le 80 et le 8000
Edit : wai d'accord ça marche ... c'est assez allucinant comme truc ... je me le garde sous le coude c'est sur que ça peu servir ... mais c'est vraisment accessible de l'exterieur si le port de la box est ouvert ? ducoups ça en devien limite comme serveur non ? c'est pas un peu nonsécurisé ?
Dernière modification par Qid (Le 24/05/2009, à 10:49)
"GNU/Linux c'est que du bon mais M$ Windows ce n'est pas si mal"
Référent technique Ubuntu d'un Groupe d'Utilisateur du Libre
plus d'info sur mon profil
Hors ligne
#7 Le 24/05/2009, à 11:18
- freaxmind
Re : Mettre en place un serveur HTTP en une ligne de commande
Ce n'est accessible depuis ta box QUE si tu rediriges un port de ta box vers le port de ton pc. Il est également possible de faire une règle sous ton firewall pour filtrer uniquement les adresses de ton réseau local. Dans tous les cas, et pour un usage occasionnel, je pense que cela ne pose pas de problème.
Et puis le gros avantage de se serveur, c'est qu'il te chroot directement ton arborescence au niveau du répertoire ou tu lances ta commandes. Si par exemple tu as un dossier 'share' dans ton home, les gens qui utilisent se serveur ne pourront pas remonter au dessus dans l'arborescence.
Une bonne chose à garder sous le coude en effet ! Je pense que dès que j'ai le temps je m'amuserais un peu en sous classant se module ;p
J'obtiens ça, je suppose que c'est pas normal ?
C'est parfaitement normal, cela veut dire que ton serveur c'est lancé en local sur le port 8000. Tu peux taper dans l'url :
localhost:8000 pour t'en rendre compte
Pour le stoper, tu tapes ctrl+c dans le terminal
Dernière modification par freaxmind (Le 24/05/2009, à 11:19)
Hors ligne
#8 Le 24/05/2009, à 18:43
- ppmt
Re : Mettre en place un serveur HTTP en une ligne de commande
Vraiment tres cool....hop dans ma boite a outil
Merci
le dock dont vous avez toujours rêvé Cairo-Dock
irc://irc.freenode.net/#Cairo-Dock-fr
Hors ligne
#9 Le 25/05/2009, à 07:47
- Qid
Re : Mettre en place un serveur HTTP en une ligne de commande
et si tu monte comme ça 2 répertoires il se passe quoi ?
"GNU/Linux c'est que du bon mais M$ Windows ce n'est pas si mal"
Référent technique Ubuntu d'un Groupe d'Utilisateur du Libre
plus d'info sur mon profil
Hors ligne
#10 Le 25/05/2009, à 16:27
- nisnis
Re : Mettre en place un serveur HTTP en une ligne de commande
Excellente cette commande
mais d'un autre PC je n'arrive pas a accéder au répertoire.
Sur ma box j'ai trois PC avec des ip fixes:
192.168.0.10
192.168.0.11
192.168.0.12
Je lance la commande sur le pc 0.10.
Je fait comment pour configurer ma box, au niveau des ports et des redirections ?
"Un Windows meurt...Des Linux apparaissent !.."
Hors ligne
#11 Le 25/05/2009, à 16:33
- Tomzz
Re : Mettre en place un serveur HTTP en une ligne de commande
Merci,
Je viens de tester, je suis bluffé
Hors ligne
#12 Le 25/05/2009, à 16:43
- anonym_user
Re : Mettre en place un serveur HTTP en une ligne de commande
Et si tu veux arrêter le serveur tu fais quoi ?
#13 Le 25/05/2009, à 16:51
- omnimax
Re : Mettre en place un serveur HTTP en une ligne de commande
même question + je pourrai avoir un exemple d 'adresse avec juste un dossier dedans pour voir à quoi le serveur ressemble? quitte à ce que tu le laisse uniquement pour aujourd'hui puis après tu le stoppes?
Dernière modification par greg2007 (Le 25/05/2009, à 16:53)
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#14 Le 25/05/2009, à 17:18
- Respawner
Re : Mettre en place un serveur HTTP en une ligne de commande
Et si tu veux arrêter le serveur tu fais quoi ?
CTRL + C
Hors ligne
#15 Le 25/05/2009, à 17:31
- freaxmind
Re : Mettre en place un serveur HTTP en une ligne de commande
et si tu monte comme ça 2 répertoires il se passe quoi ?
Pas essayer, il devrait te sortir une erreur car le port est déjà binder.
Je fait comment pour configurer ma box, au niveau des ports et des redirections ?
Si tu es en local, tu devrais voir les PC mais il faut que ton navigateur et ton firewall soit configuré pour accéder au port 8000. Tu peux voir du coté des docs pour cela !
Hors ligne
#16 Le 25/05/2009, à 17:37
- omnimax
Re : Mettre en place un serveur HTTP en une ligne de commande
oups ça va je me rends compte de ma bêtise mettre en place un serveur pour pc fixe
et non pas un serveur qui génère une page web .... sorry :lol::lol::lol::lol::lol::lol:
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#17 Le 25/05/2009, à 18:46
- anonym_user
Re : Mettre en place un serveur HTTP en une ligne de commande
imhotep59 a écrit :Et si tu veux arrêter le serveur tu fais quoi ?
CTRL + C
Merci
#18 Le 26/05/2009, à 10:06
- mhhh
Re : Mettre en place un serveur HTTP en une ligne de commande
http://www.system-linux.eu/index.php?post/2009/04/30/Un-serveur-web-en-une-seule-commande-Python
#19 Le 27/05/2009, à 11:16
- lowje
Re : Mettre en place un serveur HTTP en une ligne de commande
En effet, c'est assez magique comme commande oO
Sincèrement merci !
Hors ligne
#20 Le 27/05/2009, à 12:07
- lowje
Re : Mettre en place un serveur HTTP en une ligne de commande
192.168.0.10
192.168.0.11
192.168.0.12Je lance la commande sur le pc 0.10.
Je fait comment pour configurer ma box, au niveau des ports et des redirections ?
===> Essaie "http://192.168.0.10:8000" sur n'importe lequel de tes pc (sur le pc 0.10 ça doit marcher dans tout les cas je pense).
Chez moi ça fonctionne nickel mais j'ai un switch sur la box et plusieurs pc sur le switch. Je ne suis pas expert en réseau mais je crois que ta box ne gère pas la redirections des ports pour les communications locale et donc ça devrait fonctionner.
Maintenant, si je me trompe ie la box gère la redirection des ports des communications locales, il faut dire à la box de balancer tout ce qui est "8000" (tcp ou udp, j'en sais rien ^^) vers 192.168.0.10
Hors ligne
#21 Le 27/05/2009, à 19:28
- nisnis
Re : Mettre en place un serveur HTTP en une ligne de commande
Merci ça marche en local sur les trois ordis \o/ .
Je mettais planté d'IP (boulet inside)
Dernière modification par nisnis (Le 27/05/2009, à 19:29)
"Un Windows meurt...Des Linux apparaissent !.."
Hors ligne
#22 Le 27/05/2009, à 20:02
- nisnis
Re : Mettre en place un serveur HTTP en une ligne de commande
Et pour y avoir accés hors du reseau local il faut faire quoi ? mettre l'ip de la box ?
"Un Windows meurt...Des Linux apparaissent !.."
Hors ligne
#23 Le 27/05/2009, à 22:53
- freaxmind
Re : Mettre en place un serveur HTTP en une ligne de commande
Pour y accéder depuis l'extérieur, c'est comme n'importe quel autre service ( web, smtp ... ).
1 : Il faut que tu connaisses l'adresse de ta box, cela peut être un nom de domaine ou une ip fixe. Sinon, tu dois transmettre à tes contacts ton ip dynamique actuel ( ce qui se fait facilement )
2 : que ta box redirige ce qui arrive sur le port X de ta box vers le port 8000 de ton pc.
3 : configurer le firewall de ton pc et de ta box.
Si tu veux une solution définitive, je te conseille de mettre en place un vrai serveur de distribution de fichier, genre ftp.
L'avantage de cette ligne est multiple, un cas concret :
Vous intervenez devant des étudiants et voulez mettre à dispo un cours. Il vous suffit de mettre en place la ligne et ils peuvent se servir !
Idem en entreprise
Hors ligne
#24 Le 28/05/2009, à 14:32
- nisnis
Re : Mettre en place un serveur HTTP en une ligne de commande
C'est le 2 ou je comprend pas bien
Si tu pouvais m'expliquer ça comme si j'avais dix ans
"Un Windows meurt...Des Linux apparaissent !.."
Hors ligne
#25 Le 28/05/2009, à 16:38
- carpediem
Re : Mettre en place un serveur HTTP en une ligne de commande
salut freaxmind, je viens de tester ton astuce en réseau local et en extérieur et ça marche super bien, juste une petite chose qui me turlupine, pour l'accès hors réseau local j'ai mis mon IP fixe. Y a t'il un risque de donner son IP fixe ou y a t'il un moyen plus sécurisé.
Cordialement Carpediem
Dernière modification par carpediem (Le 28/05/2009, à 16:39)
"Carpe diem quam minimum credula postero"
(Cueille le jour présent, en te fiant le moins possible au lendemain.)
HORACE
Hors ligne