{"id":33,"date":"2026-10-13T14:51:14","date_gmt":"2026-10-13T14:51:14","guid":{"rendered":"https:\/\/rf-diy.com\/?p=33"},"modified":"2026-10-13T14:52:40","modified_gmt":"2026-10-13T14:52:40","slug":"creer-deux-applications-web-sur-raspberry","status":"publish","type":"post","link":"https:\/\/rf-diy.com\/index.php\/2026\/10\/13\/creer-deux-applications-web-sur-raspberry\/","title":{"rendered":"Cr\u00e9er deux applications Web sur Raspberry"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Bienvenue, cher OM<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour ce tutoriel, oublions le jargon informatique abstrait et faisons un parall\u00e8le avec ce que vous ma\u00eetrisez : <strong>la radio<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imaginez votre <strong>Raspberry Pi<\/strong> comme une station fixe compl\u00e8te install\u00e9e dans votre shack.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>L&rsquo;adresse IP<\/strong> de votre Raspberry Pi sur votre r\u00e9seau local, c&rsquo;est la fr\u00e9quence principale de votre station.<\/li>\n\n\n\n<li><strong>Les ports (ici <code>7777<\/code> et <code>8888<\/code>)<\/strong>, ce sont des <strong>canaux, des sous-porteuses ou des VFO (oscillateurs variables)<\/strong> distincts. Sur une m\u00eame fr\u00e9quence, vous pouvez ainsi faire transiter deux flux d&rsquo;informations totalement s\u00e9par\u00e9s sans qu&rsquo;ils se brouillent.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nous allons configurer tout cela directement avec un <strong>clavier et un \u00e9cran branch\u00e9s sur le Pi<\/strong>, en mode console (sans interface graphique lourde), et <strong>sans installer de serveur complexe comme Nginx<\/strong>. Nous utiliserons un outil int\u00e9gr\u00e9 \u00e0 Python, l\u00e9ger et imm\u00e9diat.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00c9tape 1 : Le \u00ab\u00a0Power-On\u00a0\u00bb et la prise en main de la console<\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Allumez votre Raspberry Pi (avec l&rsquo;\u00e9cran et le clavier connect\u00e9s).<\/li>\n\n\n\n<li>L&rsquo;\u00e9cran affiche une suite de lignes de texte au d\u00e9marrage, puis se stabilise sur une invite de connexion (un \u00e9cran noir avec un texte du type <code>login:<\/code>).<\/li>\n\n\n\n<li>Entrez votre nom d&rsquo;utilisateur (par d\u00e9faut souvent <code>pi<\/code>) puis validez avec la touche <strong>Entr\u00e9e<\/strong>.<\/li>\n\n\n\n<li>Entrez votre mot de passe et validez.\n<ul class=\"wp-block-list\">\n<li><em>Attention :<\/em> Lorsque vous tapez votre mot de passe, <strong>aucun caract\u00e8re (ni \u00e9toile, ni point) ne s&rsquo;affiche \u00e0 l&rsquo;\u00e9cran<\/strong>. C&rsquo;est un comportement normal de s\u00e9curit\u00e9 sous Linux (exactement comme un manipulateur Morse o\u00f9 le son seul confirme la frappe). Tapez-le \u00e0 l&rsquo;aveugle et faites <strong>Entr\u00e9e<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Vous voil\u00e0 face au <strong>prompt<\/strong> (le curseur de commande, par exemple <code>pi@raspberrypi:~ $<\/code>). C&rsquo;est votre micro\/console de commande.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00c9tape 2 : Pr\u00e9parer le \u00ab\u00a0banc de montage\u00a0\u00bb (Cr\u00e9er les dossiers)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">De la m\u00eame mani\u00e8re que vous s\u00e9parez vos fiches de trafic ou vos composants sur votre \u00e9tabli, nous allons cr\u00e9er deux dossiers distincts sur le disque dur du Pi pour ranger nos deux applications.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tapez la commande suivante sur votre clavier, puis appuyez sur <strong>Entr\u00e9e<\/strong> :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p ~\/app_f7777 ~\/app_f8888\n* **Ce que fait cette commande en clair :** \n  * `mkdir` (pour *Make Directory*) signifie \u00ab Cr\u00e9er un dossier \u00bb.\n  * Le `-p` indique de cr\u00e9er les deux dossiers d'un coup.\n  * Le symbole `~` repr\u00e9sente votre dossier personnel (votre \u00ab home \u00bb). Vous cr\u00e9ez ainsi un dossier nomm\u00e9 `app_f7777` (pour le canal 7777) et un autre `app_f8888` (pour le canal 8888).\n\n---\n\n## \u00c9tape 3 : Cr\u00e9er les fa\u00e7ades des applications (Les fichiers de test)\n\nChaque application a besoin d'un minimum de contenu pour s'afficher. Nous allons cr\u00e9er une simple page web de test (`index.html`) dans chaque dossier. L'une sera rep\u00e9r\u00e9e par une couleur bleue, l'autre par une couleur verte.\n\nTapez ces lignes une par une (suivies de la touche **Entr\u00e9e**) :\n\n1. Pour la premi\u00e8re application (canal 7777) :\n   ```bash\n   echo \"&lt;h1 style='color: blue;'&gt;Application 1 - Canal 7777 en ligne&lt;\/h1&gt;\" &gt; ~\/app_f7777\/index.html\n<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Pour la seconde application (canal 8888) :<br>Bash<code>echo \"&lt;h1 style='color: green;'>Application 2 - Canal 8888 en ligne&lt;\/h1>\" > ~\/app_f8888\/index.html<\/code><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>L&rsquo;explication :<\/strong> La commande <code>echo<\/code> envoie un petit texte textuel et le symbole <code>><\/code> l&rsquo;injecte \u00e0 l&rsquo;int\u00e9rieur d&rsquo;un fichier nomm\u00e9 <code>index.html<\/code> plac\u00e9 dans le bon dossier. C&rsquo;est votre \u00ab\u00a0panneau indicateur\u00a0\u00bb visuel.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u00c9tape 4 : Syntoniser les canaux (Lancer les serveurs sur les ports d\u00e9di\u00e9s)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Habituellement, les informaticiens installent un gros logiciel de routage comme Nginx. Mais Python est fourni avec un module magique qui permet de transformer n&rsquo;importe quel dossier en serveur web instantan\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour que les deux applications fonctionnent en m\u00eame temps et en arri\u00e8re-plan (sans bloquer votre \u00e9cran), nous allons lancer deux processus ind\u00e9pendants :<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Lancer l&rsquo;application 1 sur le port 7777 :<\/strong><br>Bash<code>cd ~\/app_f7777 &amp;&amp; nohup python3 -m http.server 7777 > app1.log 2>&amp;1 &amp;<\/code><\/li>\n\n\n\n<li><strong>Lancer l&rsquo;application 2 sur le port 8888 :<\/strong><br>Bash<code>cd ~\/app_f8888 &amp;&amp; nohup python3 -m http.server 8888 > app2.log 2>&amp;1 &amp;<\/code><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Le d\u00e9tail de la man\u0153uvre (fa\u00e7on radio) :<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>cd ~\/app_fxxx<\/code> : On se place dans le dossier correspondant (comme si on s\u00e9lectionnait la bonne m\u00e9moire de canal).<\/li>\n\n\n\n<li><code>python3 -m http.server [port]<\/code> : On demande \u00e0 Python d&rsquo;allumer l&rsquo;\u00e9metteur web sur le port choisi (<code>7777<\/code> ou <code>8888<\/code>).<\/li>\n\n\n\n<li><code>nohup ... &amp;<\/code> : On demande au syst\u00e8me de garder le service actif en arri\u00e8re-plan en continu, m\u00eame si vous tapez d&rsquo;autres commandes.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u00c9tape 5 : V\u00e9rification de la liaison (Le test de r\u00e9ception)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pour v\u00e9rifier que vos deux services \u00e9coutent correctement sur leurs ports respectifs :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Directement sur l&rsquo;\u00e9cran de votre Pi<\/strong> (si un navigateur internet l\u00e9ger y est install\u00e9) ou depuis <strong>un autre ordinateur, une tablette ou un smartphone connect\u00e9 sur le m\u00eame r\u00e9seau Wi-Fi\/Ethernet<\/strong> que votre box, ouvrez un navigateur web.<\/li>\n\n\n\n<li>Saisissez l&rsquo;adresse de votre Raspberry Pi suivie du port de votre choix :\n<ul class=\"wp-block-list\">\n<li>Pour \u00e9couter l&rsquo;application 1 : <code>http:\/\/&lt;ADRESSE_IP_DU_PI>:7777<\/code><\/li>\n\n\n\n<li>Pour \u00e9couter l&rsquo;application 2 : <code>http:\/\/&lt;ADRESSE_IP_DU_PI>:8888<\/code><em>(Si vous testez depuis le Pi lui-m\u00eame, vous pouvez remplacer l&rsquo;adresse IP par <code>http:\/\/localhost:7777<\/code> et <code>http:\/\/localhost:8888<\/code>).<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Vous devriez voir s&rsquo;afficher \u00e0 l&rsquo;\u00e9cran le texte color\u00e9 de chaque application. Votre liaison double-canal est op\u00e9rationnelle, sans Nginx et enti\u00e8rement g\u00e9r\u00e9e en mode console !<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Annexe : Pr\u00e9sentation des commandes Linux utilis\u00e9es<\/h2>\n\n\n<p>Pour vous aider \u00e0 apprivoiser la console Linux sans jargon superflu, voici le journal de bord des commandes manipul\u00e9es dans ce tutoriel, accompagn\u00e9es de leur syntaxe exacte et d&rsquo;une analogie radio pour bien saisir leur r\u00f4le.<\/p>\n<figure class=\"wp-block-table\">\n<table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Commande principale<\/th>\n<th>Syntaxe g\u00e9n\u00e9rale<\/th>\n<th>R\u00f4le technique (Ce qu&rsquo;elle fait)<\/th>\n<th>\u00c9quivalent Radio \/ Analogie<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong><code>mkdir<\/code><\/strong><\/td>\n<td><code>mkdir -p [dossier]<\/code><\/td>\n<td><strong>Make Directory<\/strong> : Cr\u00e9e un ou plusieurs nouveaux dossiers sur le disque dur.<\/td>\n<td>Pr\u00e9parer de nouveaux casiers de rangement dans l&rsquo;atelier pour trier ses composants.<\/td>\n<\/tr>\n<tr>\n<td><strong><code>cd<\/code><\/strong><\/td>\n<td><code>cd [chemin]<\/code><\/td>\n<td><strong>Change Directory<\/strong> : Permet de se d\u00e9placer d&rsquo;un dossier \u00e0 un autre dans l&rsquo;arborescence.<\/td>\n<td>Tourner le bouton du s\u00e9lecteur de bande pour se placer sur une fr\u00e9quence sp\u00e9cifique.<\/td>\n<\/tr>\n<tr>\n<td><strong><code>echo<\/code><\/strong><\/td>\n<td><code>echo \"texte\" &gt; [fichier]<\/code><\/td>\n<td>Affiche du texte ou, combin\u00e9 avec le signe <code>&gt;<\/code>, l&rsquo;injecte directement \u00e0 l&rsquo;int\u00e9rieur d&rsquo;un fichier.<\/td>\n<td>Graver un m\u00e9mo ou \u00e9crire une \u00e9tiquette explicative \u00e0 coller sur un appareil.<\/td>\n<\/tr>\n<tr>\n<td><strong><code>python3<\/code><\/strong><\/td>\n<td><code>python3 -m http.server [port]<\/code><\/td>\n<td>Lance un serveur web minimaliste int\u00e9gr\u00e9 \u00e0 Python qui diffuse le contenu du dossier courant sur le port indiqu\u00e9.<\/td>\n<td>Allumer un petit \u00e9metteur QRP portable sur une fr\u00e9quence d\u00e9di\u00e9e pour \u00e9mettre un signal.<\/td>\n<\/tr>\n<tr>\n<td><strong><code>nohup<\/code><\/strong><\/td>\n<td><code>nohup [commande] &amp;<\/code><\/td>\n<td><strong>No Hang-Up<\/strong> : Permet de lancer un processus en arri\u00e8re-plan (<em>background<\/em>) pour qu&rsquo;il continue de tourner en continu.<\/td>\n<td>Activer une balise automatique (<em>beacon<\/em>) qui \u00e9met en boucle toute seule sans qu&rsquo;on ait besoin de garder le doigt sur le manipulateur.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>","protected":false},"excerpt":{"rendered":"<p>Bienvenue, cher OM Pour ce tutoriel, oublions le jargon informatique abstrait et faisons un parall\u00e8le avec ce que vous ma\u00eetrisez : la radio. Imaginez votre Raspberry Pi comme une station fixe compl\u00e8te install\u00e9e dans votre shack. Nous allons configurer tout cela directement avec un clavier et un \u00e9cran branch\u00e9s sur le Pi, en mode console [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-33","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/rf-diy.com\/index.php\/wp-json\/wp\/v2\/posts\/33","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rf-diy.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rf-diy.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rf-diy.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/rf-diy.com\/index.php\/wp-json\/wp\/v2\/comments?post=33"}],"version-history":[{"count":1,"href":"https:\/\/rf-diy.com\/index.php\/wp-json\/wp\/v2\/posts\/33\/revisions"}],"predecessor-version":[{"id":34,"href":"https:\/\/rf-diy.com\/index.php\/wp-json\/wp\/v2\/posts\/33\/revisions\/34"}],"wp:attachment":[{"href":"https:\/\/rf-diy.com\/index.php\/wp-json\/wp\/v2\/media?parent=33"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rf-diy.com\/index.php\/wp-json\/wp\/v2\/categories?post=33"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rf-diy.com\/index.php\/wp-json\/wp\/v2\/tags?post=33"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}