{"id":2310,"date":"2023-01-08T18:55:33","date_gmt":"2023-01-08T17:55:33","guid":{"rendered":"https:\/\/www.webodesign.net\/?p=2310"},"modified":"2023-01-10T12:01:28","modified_gmt":"2023-01-10T11:01:28","slug":"les-journaux","status":"publish","type":"post","link":"https:\/\/www.webodesign.net\/?p=2310","title":{"rendered":"4. Les journaux"},"content":{"rendered":"\n<div class=\"wp-block-uagb-container uagb-block-3fac045d alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-columns is-layout-flex wp-container-8\">\n<div class=\"wp-block-column is-layout-flow\">\n<div class=\"wp-block-group is-layout-flow\">\n<div class=\"wp-block-group is-layout-flow\" style=\"border-style:none;border-width:0px;border-radius:0px\">\t\t\t\t<div class=\"wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-22a93fb6     \"\n\t\t\t\t\tdata-scroll= \"1\"\n\t\t\t\t\tdata-offset= \"30\"\n\t\t\t\t\tstyle=\"\"\n\t\t\t\t>\n\t\t\t\t<div class=\"uagb-toc__wrap\">\n\t\t\t\t\t\t<div class=\"uagb-toc__title\">\n\t\t\t\t\t\t\tSommaire\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"uagb-toc__list-wrap\">\n\t\t\t\t\t\t<ol class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#4-les-journaux\" class=\"uagb-toc-link__trigger\">4. Les journaux<\/a><ul class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#41-pr\u00e9sentation\" class=\"uagb-toc-link__trigger\">4.1. Pr\u00e9sentation<\/a><ul class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#411-apache\" class=\"uagb-toc-link__trigger\">4.1.1. Apache<\/a><ul class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#4111-journal-de-requ\u00eates\" class=\"uagb-toc-link__trigger\">4.1.1.1. Journal de requ\u00eates<\/a><li class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#4112-journal-derreur\" class=\"uagb-toc-link__trigger\">4.1.1.2. Journal d&#039;erreur<\/a><\/li><\/ul><li class=\"uagb-toc__list\"><a href=\"#412-nginx\" class=\"uagb-toc-link__trigger\">4.1.2. Nginx<\/a><ul class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#4121-journal-de-requ\u00eates\" class=\"uagb-toc-link__trigger\">4.1.2.1. Journal de requ\u00eates<\/a><li class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#4122-journal-derreur\" class=\"uagb-toc-link__trigger\">4.1.2.2. Journal d&#039;erreur<\/a><\/li><\/ul><\/li><\/ul><li class=\"uagb-toc__list\"><a href=\"#42-nginx\" class=\"uagb-toc-link__trigger\">4.2. Nginx<\/a><\/ul><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\n\n<h1 class=\"has-text-color wp-block-heading\" id=\"1-i-pr%C3%A9sentation\" style=\"color:#fffdf8;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;font-size:1px\">4. Les journaux<\/h1>\n\n\n\n<div class=\"wp-block-group has-border-color has-vivid-cyan-blue-border-color has-background is-layout-flow\" style=\"border-style:dotted;border-width:2px;border-radius:8px;background-color:#fffdf8;padding-right:7px;padding-bottom:15px;padding-left:7px\">\n<p>L\u2019\u00e9tat et la configuration du serveur web sont des \u00e9l\u00e9ments importants, mais ne sont cependant pas suffisants lors de l\u2019administration au quotidien d\u2019un serveur web. Il est aussi n\u00e9cessaire de conserver une trace de l\u2019historique de l\u2019activit\u00e9 du serveur, ainsi que de tous les probl\u00e8mes rencontr\u00e9s.<\/p>\n\n\n\n<p>Il existe deux types de journaux importants&nbsp;:<\/p>\n\n\n\n<ul>\n<li>les journaux de requ\u00eates, qui contiennent les informations concernant les requ\u00eates trait\u00e9es, ainsi que les logiciels clients&nbsp;: le journal d\u2019acc\u00e8s contient ainsi une ligne pour chaque requ\u00eate trait\u00e9e par le serveur&nbsp;;<\/li>\n\n\n\n<li>le journal d\u2019erreurs, qui trace les anomalies observ\u00e9es pendant le fonctionnement.<\/li>\n<\/ul>\n\n\n\n<p>Lorsque le comportement de votre serveur web n\u2019est pas celui souhait\u00e9, qu\u2019il refuse de d\u00e9marrer ou qu\u2019il plante inopin\u00e9ment, jetez toujours un \u0153il aux journaux, on y trouvera g\u00e9n\u00e9ralement des \u00e9l\u00e9ments expliquant le probl\u00e8me.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-border-color has-vivid-cyan-blue-border-color has-background is-layout-flow\" style=\"border-style:dotted;border-width:2px;border-radius:8px;background-color:#fffdf8;padding-right:7px;padding-bottom:15px;padding-left:7px\">\n<h2 class=\"has-text-color wp-block-heading\" id=\"1-i-pr%C3%A9sentation\" style=\"color:#fffdf8;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;font-size:1px\">4.1. Pr\u00e9sentation<\/h2>\n\n\n\n<div class=\"qubely-block-accordion  qubely-block-d34844\" data-item-toggle=\"true\">\n<div class=\"wp-block-qubely-accordion-item qubely-block-bef43a\"><div class=\"qubely-accordion-item qubely-type-fill qubely-accordion-active\"><div class=\"qubely-accordion-panel qubely-icon-position-right\"><span class=\"qubely-accordion-panel-handler\" role=\"button\"><span class=\"qubely-accordion-panel-handler-label\">4.1. Pr\u00e9sentation<\/span><span class=\"qubely-accordion-icon fa fa-plus\"><\/span><\/span><\/div><div class=\"qubely-accordion-body\" style=\"display:block\"><div itemprop=\"text\">\n<div class=\"wp-block-uagb-advanced-heading uagb-block-f617c0c5\"><h3 class=\"uagb-heading-text\">4.1.1. Apache<\/h3><\/div>\n\n\n\n<h4 class=\"has-vivid-purple-color has-text-color has-medium-font-size wp-block-heading\" id=\"principe-du-web\" style=\"text-transform:none\"><strong>4.1.1.1. Journal de requ\u00eates<\/strong><\/h4>\n\n\n\n<p>La journalisation des requ\u00eates est assur\u00e9e par le module <code>mod_log_config<\/code>.<\/p>\n\n\n\n<p>La directive fournie par ce module permettant d\u2019activer l\u2019\u00e9criture du journal est <code>TransferLog<\/code> suivie par un nom de fichier. Cette directive ne permet pas de choisir un format de journal ou la journalisation conditionnelle. Ce manque de flexibilit\u00e9 fait qu\u2019on lui pr\u00e9f\u00e8re g\u00e9n\u00e9ralement l\u2019utilisation combin\u00e9e de <code>LogFormat<\/code> et de <code>CustomLog<\/code>.<\/p>\n\n\n\n<p>Le format par d\u00e9faut des journaux est le CLF (Common Log Format), d\u00e9fini de la mani\u00e8re suivante&nbsp;: <em>h\u00f4te_distant identd utilisateur [date] \u201cURL demand\u00e9e\u201d \u00e9tat taille_en_octets<\/em><\/p>\n\n\n\n<p>D\u00e9tails concernant diff\u00e9rents champs&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><em>h\u00f4te_distant<\/em><\/td><td>Adresse IP du client qui a \u00e9mis la requ\u00eate<\/td><\/tr><tr><td><em>identd<\/em><\/td><td>Nom d\u2019utilisateur dans le cas de l\u2019utilisation du protocole <em>identd<\/em> \u2013 inactif habituellement, un tiret est inscrit dans ce cas<\/td><\/tr><tr><td><em>utilisateur<\/em><\/td><td>Nom de l\u2019utilisateur dans le cas d\u2019une identification HTTP \u2013 un tiret sinon<\/td><\/tr><tr><td><em>\u00e9tat<\/em><\/td><td>code d\u2019\u00e9tat HTTP \u00e0 3 chiffres<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>La directive <code>LogFormat<\/code><\/strong> permet de d\u00e9finir le format de chaque ligne inscrite dans un journal. La directive se d\u00e9compose en deux parties\u00a0: une cha\u00eene d\u00e9crivant le format, et un nom (optionnel) servant \u00e0 la d\u00e9signer (voir la documentation pour la syntaxe de description du format).<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;shell&quot;,&quot;mime&quot;:&quot;text\/x-sh&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;languageLabel&quot;:&quot;no&quot;,&quot;language&quot;:&quot;Shell&quot;,&quot;modeName&quot;:&quot;shell&quot;}\">LogFormat &quot;%h %l %u %t \\&quot;%r\\&quot; %&gt;s %b&quot; common<\/pre><\/div>\n\n\n\n<p><strong>La directive <code>CustomLog<\/code><\/strong> indique le nom et l\u2019emplacement d\u2019un fichier journal, en permettant de sp\u00e9cifier \u00e9ventuellement un nom de format d\u00e9fini auparavant. Si aucun nom de format n\u2019est indiqu\u00e9, le format utilis\u00e9 est le dernier format sans nom d\u00e9fini, ou, \u00e0 d\u00e9faut, le CLF.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;shell&quot;,&quot;mime&quot;:&quot;text\/x-sh&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;languageLabel&quot;:&quot;no&quot;,&quot;language&quot;:&quot;Shell&quot;,&quot;modeName&quot;:&quot;shell&quot;}\">CustomLog \/var\/log\/apache2\/logs\/access.log common<\/pre><\/div>\n\n\n\n<p>On peut aussi d\u00e9finir un format de log directement avec <code>CustomLog<\/code> (mais ce n\u2019est pas une pratique courante, on utilise g\u00e9n\u00e9ralement un nom de format pr\u00e9c\u00e9demment d\u00e9fini avec <code>LogFormat<\/code>)&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;shell&quot;,&quot;mime&quot;:&quot;text\/x-sh&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;languageLabel&quot;:&quot;no&quot;,&quot;language&quot;:&quot;Shell&quot;,&quot;modeName&quot;:&quot;shell&quot;}\">CustomLog \/var\/log\/apache2\/logs\/access.log &quot;%h %l %u %t \\&quot;%r\\&quot; %&gt;s %b&quot;<\/pre><\/div>\n\n\n\n<p><strong>\u00c9criture conditionnelle dans un journal<\/strong> Un format conditionnel existe, permettant de consigner une requ\u00eate en fonction de la pr\u00e9sence ou de l\u2019absence d\u2019une variable d\u2019environnement. Ici on souhaite par exemple consigner les \u00e9v\u00e8nements concernant les documents flash dans un journal diff\u00e9rent (n\u00e9cessite le module <code>mod_setenvif<\/code>)\u00a0:<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;shell&quot;,&quot;mime&quot;:&quot;text\/x-sh&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;languageLabel&quot;:&quot;no&quot;,&quot;language&quot;:&quot;Shell&quot;,&quot;modeName&quot;:&quot;shell&quot;}\">SetEnvIf Request_URI \\.swf$ flash\nCustomLog \/var\/log\/apache2\/flash.log common env=flash\nCustomLog \/var\/log\/apache2\/access.log common env=!flash<\/pre><\/div>\n\n\n\n<p>Pour aller plus loin&nbsp;:<\/p>\n\n\n\n<ul>\n<li><em>Journaux pour les h\u00f4tes virtuels<\/em>&nbsp;: il est possible de d\u00e9finir un journal pour chaque h\u00f4te en red\u00e9finissant la directive <code>CustomLog<\/code> dans le conteneur de l\u2019h\u00f4te virtuel. Cette solution am\u00e8ne une multiplication des fichiers de journaux (ce qui peut \u00eatre pratique&nbsp;: un site = un log, ou ennuyeux, selon ses go\u00fbts personnels). La sp\u00e9cification de format <code>%v<\/code> permet d\u2019indiquer le serveur (c\u2019est-\u00e0-dire l\u2019h\u00f4te virtuel) qui traite la requ\u00eate, indispensable si l\u2019on souhaite n\u2019utiliser qu\u2019un seul fichier de log.<\/li>\n\n\n\n<li><em>Suivi des sessions utilisateur<\/em>\u00a0: l\u2019adresse IP est de moins en moins suffisante pour identifier un\u00b7e utilisateur\u00b7ice (pare-feux, proxys, NAT\u2026). Le module <code>mod_usertrack<\/code> attribue un identifiant unique aux utilisateurs au moyen d\u2019un cookie. Il faut utiliser la directive <code>CookieTracking<\/code> positionn\u00e9e \u00e0 <code>on<\/code> pour suivre les utilisateur\u00b7ices. On pourra alors, dans le format du log de requ\u00eate, ajouter <code>%{Apache}n<\/code>, ce qui permettra de pouvoir suivre un\u00b7e utilisateur\u00b7ice dans les fichiers journaux.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"has-vivid-purple-color has-text-color has-medium-font-size wp-block-heading\" id=\"principe-du-web\" style=\"text-transform:none\"><strong>4.1.1.2. Journal d<\/strong>&lsquo;<strong>erreur<\/strong><\/h4>\n\n\n\n<p>Le journal d\u2019erreur a un fonctionnement beaucoup plus simple ques les journaux de requ\u00eates. La directive <code>ErrorLog<\/code> permet de sp\u00e9cifier le fichier \u00e0 utiliser, ou via le mot cl\u00e9 <code>syslog<\/code> d\u2019utiliser le d\u00e9mon <code>syslogd<\/code> du syst\u00e8me. Une directive appel\u00e9e <code>LogLevel<\/code> permet de faire varier la quantit\u00e9 d\u2019informations consign\u00e9es. Le niveau <code>error<\/code> est recommand\u00e9. D\u2019autres utilisations peuvent nous amener \u00e0 utiliser, du plus s\u00e9lectif au plus verbeux\u00a0: <em>emerg, alert, crit, error, warn, notice, info, debug<\/em>.<\/p>\n\n\n\n<p>De m\u00eame que <code>LogFormat<\/code> permet de sp\u00e9cifier le format des logs, il est possible de sp\u00e9cifier celui des logs d\u2019erreur avec <code>ErrorLogFormat<\/code>.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-3be4dda0\"><h3 class=\"uagb-heading-text\">4.1.2. Nginx<\/h3><\/div>\n\n\n\n<h4 class=\"has-vivid-purple-color has-text-color has-medium-font-size wp-block-heading\" id=\"principe-du-web\" style=\"text-transform:none\"><strong>4.1.2.1. Journal de requ\u00eates<\/strong><\/h4>\n\n\n\n<p>La directive <code>log_format<\/code> permettra, comme pour Apache, de sp\u00e9cifier un format de log particulier. Elle sera suivie du nom du format de log et de son formatage.<\/p>\n\n\n\n<p>La configuration inclue toujours le format pr\u00e9-d\u00e9fini <code>combined<\/code> qui contient les informations de l\u2019exemple ci-dessous.<\/p>\n\n\n\n<p>On d\u00e9finit un format de log ainsi&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;shell&quot;,&quot;mime&quot;:&quot;text\/x-sh&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;languageLabel&quot;:&quot;no&quot;,&quot;language&quot;:&quot;Shell&quot;,&quot;modeName&quot;:&quot;shell&quot;}\">log_format nom_format '$remote_addr - $remote_user [$time_local] '\n                    '&quot;$request&quot; $status $body_bytes_sent '\n                    '&quot;$http_referer&quot; &quot;$http_user_agent&quot;';<\/pre><\/div>\n\n\n\n<p>Les variables utilis\u00e9es dans le formatage pourront \u00eatre les variables communes de Nginx et les variables n\u2019existant qu\u2019au moment de l\u2019\u00e9criture d\u2019un log (voir la doc de <code>log_format<\/code>).<\/p>\n\n\n\n<p>On utilisera ensuite <code>access_log<\/code> pour utiliser ce format\u00a0:<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;shell&quot;,&quot;mime&quot;:&quot;text\/x-sh&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;languageLabel&quot;:&quot;no&quot;,&quot;language&quot;:&quot;Shell&quot;,&quot;modeName&quot;:&quot;shell&quot;}\">access_log \/var\/log\/nginx\/access_log nom_format;<\/pre><\/div>\n\n\n\n<p>Le premier argument peut correspondre au nom d\u2019un fichier de log, de l\u2019adresse d\u2019un serveur <code>syslog<\/code> (avec la syntaxe <code>syslog:server=address[,parameter=value]<\/code>) ou juste <code>off<\/code> pour d\u00e9sactiver le logging des requ\u00eates.<\/p>\n\n\n\n<p>\u00c0 noter qu\u2019il n\u2019est pas n\u00e9cessaire d\u2019indiquer le nom du format si on se contente du format <code>combined<\/code>.<\/p>\n\n\n\n<p><strong>\u00c9criture conditionnelle dans un journal<\/strong><\/p>\n\n\n\n<p>On utilisera une <code>map<\/code> pour cela\u00a0:<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;shell&quot;,&quot;mime&quot;:&quot;text\/x-sh&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;Shell&quot;,&quot;modeName&quot;:&quot;shell&quot;}\">map $status $loggable {\n    ~^[23]  0;\n    default 1;\n}\n\u2026\naccess_log \/path\/to\/access.log combined if=$loggable;<\/pre><\/div>\n\n\n\n<p>Avec cette <code>map<\/code>, les requ\u00eates avec un statut de r\u00e9ponse 2xx ou 3xx ne seront pas logu\u00e9es.<\/p>\n\n\n\n<p>Appart\u00e9\u00a0: une <code>map<\/code> Nginx permet de d\u00e9finir une variable dont la valeur d\u00e9pend de la valeur d\u2019une ou plusieurs variables. Voyez \u00e7a comme une instruction <code>switch<\/code> en programmation. Le premier argument d\u2019une map est la ou les variables dont d\u00e9pend la variable d\u00e9finie par la map (si l\u2019on souhaite utiliser plusieurs variables, on les combinera par exemple comme ceci\u00a0: <code>&quot;$status:$request&quot;<\/code>), et le deuxi\u00e8me argument est le nom de la variable \u00e0 d\u00e9finir.<\/p>\n\n\n\n<p>Une <code>map<\/code> ne peut s\u2019\u00e9crire que dans le contexte <code>http<\/code>, contrairement \u00e0 <code>access_log<\/code> que peut s\u2019utiliser dans <code>http<\/code>, <code>server<\/code>, <code>location<\/code>, <code>if<\/code> in <code>location<\/code> et <code>limit_except<\/code>.<\/p>\n\n\n\n<h4 class=\"has-vivid-purple-color has-text-color has-medium-font-size wp-block-heading\" id=\"principe-du-web\" style=\"text-transform:none\"><strong>4.1.2.2. Journal d<\/strong>&lsquo;<strong>erreur<\/strong><\/h4>\n\n\n\n<p>On utilisera la directive <code>error_log<\/code>. Le niveau de log sera pass\u00e9 en argument apr\u00e8s la destination du log (fichier, serveur <code>syslog<\/code> ou un tampon m\u00e9moire)\u00a0: <em>debug, info, notice, warn, error, crit, alert, emerg<\/em>. Le niveau de log par d\u00e9faut est <code>error<\/code>.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;shell&quot;,&quot;mime&quot;:&quot;text\/x-sh&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;languageLabel&quot;:&quot;no&quot;,&quot;language&quot;:&quot;Shell&quot;,&quot;modeName&quot;:&quot;shell&quot;}\">error_log logs\/error.log;<\/pre><\/div>\n<\/div><\/div><\/div><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-border-color has-vivid-cyan-blue-border-color has-background uag-hide-desktop uag-hide-tab uag-hide-mob is-layout-flow\" style=\"border-style:dotted;border-width:2px;border-radius:8px;background-color:#fffdf8;padding-right:7px;padding-bottom:15px;padding-left:7px\">\n<h2 class=\"has-text-color wp-block-heading\" id=\"1-i-pr%C3%A9sentation\" style=\"color:#fffdf8;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;font-size:1px\">4.2. Nginx<\/h2>\n\n\n\n<div class=\"qubely-block-accordion  qubely-block-d34844\" data-item-toggle=\"true\">\n<div class=\"wp-block-qubely-accordion-item qubely-block-fec5c8\"><div class=\"qubely-accordion-item qubely-type-fill qubely-accordion-active\"><div class=\"qubely-accordion-panel qubely-icon-position-right\"><span class=\"qubely-accordion-panel-handler\" role=\"button\"><span class=\"qubely-accordion-panel-handler-label\">4.2. Autre<\/span><span class=\"qubely-accordion-icon fa fa-plus\"><\/span><\/span><\/div><div class=\"qubely-accordion-body\" style=\"display:block\"><div itemprop=\"text\">\n<p>Create stylish call-to-action buttons with Qubely Buttons. Play around with typography, design, border and more. Add animations and personalize it to engage visitors instantly.<\/p>\n<\/div><\/div><\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column uag-hide-tab uag-hide-mob is-layout-flow\" style=\"flex-basis:170px\">\n\n<div class=\"cleanlogin-container\">\t\t\n\n\t<form class=\"cleanlogin-form\" method=\"post\" action=\"https:\/\/www.webodesign.net\/?page_id=2385\" onsubmit=\"submit.disabled = true; return true;\">\n\t\t\t\n\t\t<fieldset>\n\n\t\t\t\t\t\t<div class=\"cleanlogin-field\">\n                <label for=\"log\">Identifiant<\/label>\n\t\t\t\t<input class=\"cleanlogin-field-username\" type=\"text\" name=\"log\" placeholder=\"Identifiant\" aria-label=\"Identifiant\">\n\t\t\t<\/div>\n\t\t\t\n\t\t\t<div class=\"cleanlogin-field\">\n                <label for=\"pwd\">Mot de passe<\/label>\n\t\t\t\t<input class=\"cleanlogin-field-password\" type=\"password\" id=\"pwd\" name=\"pwd\" placeholder=\"Mot de passe\" aria-label=\"Mot de passe\">\n                <i class=\"bi bi-eye-slash\" id=\"togglePassword\"><\/i>\n\t\t\t<\/div>\n\n\t\t\t\t\t\n\t\t\t<input type=\"hidden\" name=\"clean_login_wpnonce\" value=\"e994c14fba\">\n            \n\t\t\t\t\t<\/fieldset>\n\t\t\n\t\t<fieldset>\n\t\t\t<input class=\"cleanlogin-field\" type=\"submit\" value=\"Se connecter\" name=\"submit\">\n\t\t\t<input type=\"hidden\" name=\"action\" value=\"login\">\n\t\t\t\n\t\t\t<div class=\"cleanlogin-field cleanlogin-field-remember\">\n\t\t\t\t<input type=\"checkbox\" id=\"rememberme\" name=\"rememberme\" value=\"forever\">\n\t\t\t\t<label for=\"rememberme\">Se souvenir de moi\u00a0?<\/label>\n\t\t\t<\/div>\n\t\t<\/fieldset>\n\n\t\t\n\t\t<div class=\"cleanlogin-form-bottom\">\n\t\t\t\n            \n\t\t\t\t\t\t\t\t\t\n\t\t<\/div>\n\t\t\n\t<\/form>\n\n<\/div>\n\n<script>\nconst togglePassword = document.querySelector('#togglePassword');\nconst password = document.querySelector('#pwd');\n\ntogglePassword.addEventListener('click', function (e) {\n    const type = password.getAttribute('type') === 'password' ? 'text' : 'password';\n    password.setAttribute('type', type);\n    this.classList.toggle('bi-eye');\n});\n<\/script>\n<\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Les logs sont des messages produits par les programmes pour donner des informations sur leur \u00e9tat de fonctionnement et\/ou les erreurs qui surviennent lors de l&rsquo;ex\u00e9cution.<br \/>\nLes diff\u00e9rents programmes ou services du syst\u00e8me d&rsquo;exploitation peuvent \u00e9crire des logs qui seront consultables de diff\u00e9rentes mani\u00e8res. La plupart se trouvent dans un dossier nomm\u00e9 \/var\/log, mais certains sont g\u00e9r\u00e9s par Systemd.<br \/>\nSystemd s&rsquo;accompagne d&rsquo;un service, journald, qui g\u00e8re les logs de tout les services de la machine. En fait, lorsque l&rsquo;on utilise la commande systemctl status SERVICE on peut observer une partie des logs les plus r\u00e9cents du service, g\u00e9r\u00e9s par journald.<\/p>\n","protected":false},"author":3,"featured_media":2311,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"qubely_global_settings":"","qubely_interactions":"","_uag_custom_page_level_css":""},"categories":[16],"tags":[],"qubely_featured_image_url":{"full":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04.jpg",940,490,false],"landscape":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04.jpg",940,490,false],"portraits":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04-540x320.jpg",540,320,true],"thumbnail":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04-150x150.jpg",150,150,true],"medium":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04-300x156.jpg",300,156,true],"medium_large":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04-768x400.jpg",768,400,true],"large":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04.jpg",940,490,false],"1536x1536":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04.jpg",940,490,false],"2048x2048":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04.jpg",940,490,false],"qubely_landscape":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04.jpg",940,490,false],"qubely_portrait":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04-540x320.jpg",540,320,true],"qubely_thumbnail":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04-140x100.jpg",140,100,true]},"qubely_author":{"display_name":"R\u00e9mi","author_link":"https:\/\/www.webodesign.net\/?author=3"},"qubely_comment":0,"qubely_category":"<a href=\"https:\/\/www.webodesign.net\/?cat=16\" rel=\"category\">Tutoriels Linux-Debian<\/a>","qubely_excerpt":"Les logs sont des messages produits par les programmes pour donner des informations sur leur \u00e9tat de fonctionnement et\/ou les erreurs qui surviennent lors de l'ex\u00e9cution. Les diff\u00e9rents programmes ou services du syst\u00e8me d'exploitation peuvent \u00e9crire des logs qui seront consultables de diff\u00e9rentes mani\u00e8res. La plupart se trouvent dans un dossier nomm\u00e9 \/var\/log, mais certains\u2026","uagb_featured_image_src":{"full":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04.jpg",940,490,false],"thumbnail":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04-150x150.jpg",150,150,true],"medium":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04-300x156.jpg",300,156,true],"medium_large":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04-768x400.jpg",768,400,true],"large":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04.jpg",940,490,false],"1536x1536":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04.jpg",940,490,false],"2048x2048":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04.jpg",940,490,false],"qubely_landscape":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04.jpg",940,490,false],"qubely_portrait":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04-540x320.jpg",540,320,true],"qubely_thumbnail":["https:\/\/www.webodesign.net\/wp-content\/uploads\/2023\/01\/apache-ngnix-servers-04-140x100.jpg",140,100,true]},"uagb_author_info":{"display_name":"R\u00e9mi","author_link":"https:\/\/www.webodesign.net\/?author=3"},"uagb_comment_info":0,"uagb_excerpt":"Les logs sont des messages produits par les programmes pour donner des informations sur leur \u00e9tat de fonctionnement et\/ou les erreurs qui surviennent lors de l'ex\u00e9cution. Les diff\u00e9rents programmes ou services du syst\u00e8me d'exploitation peuvent \u00e9crire des logs qui seront consultables de diff\u00e9rentes mani\u00e8res. La plupart se trouvent dans un dossier nomm\u00e9 \/var\/log, mais certains\u2026","_links":{"self":[{"href":"https:\/\/www.webodesign.net\/index.php?rest_route=\/wp\/v2\/posts\/2310"}],"collection":[{"href":"https:\/\/www.webodesign.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webodesign.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webodesign.net\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webodesign.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2310"}],"version-history":[{"count":5,"href":"https:\/\/www.webodesign.net\/index.php?rest_route=\/wp\/v2\/posts\/2310\/revisions"}],"predecessor-version":[{"id":2341,"href":"https:\/\/www.webodesign.net\/index.php?rest_route=\/wp\/v2\/posts\/2310\/revisions\/2341"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webodesign.net\/index.php?rest_route=\/wp\/v2\/media\/2311"}],"wp:attachment":[{"href":"https:\/\/www.webodesign.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2310"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webodesign.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2310"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webodesign.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}