{"id":44,"date":"2008-02-25T00:58:59","date_gmt":"2008-02-24T22:58:59","guid":{"rendered":"http:\/\/gcolpart.evolix.net\/blog21\/variables-denvironnement-et-services\/"},"modified":"2009-01-19T00:14:57","modified_gmt":"2009-01-18T22:14:57","slug":"variables-denvironnement-et-services","status":"publish","type":"post","link":"https:\/\/gcolpart.evolix.net\/blog21\/variables-denvironnement-et-services\/","title":{"rendered":"Variables d&#8217;environnement et services"},"content":{"rendered":"<p>Plusieurs services (Apache, Tomcat, etc.) d\u00e9pendent de variables d&#8217;environnement, notamment des variables LC_*\/LANG*. Il faut donc prendre garde \u00e0 la fa\u00e7on dont on (re)lance un service. Par exemple, sous Debian, un <em>apache(2)ctl start<\/em> ne revient pas au m\u00eame qu&#8217;utiliser un &#8220;wrapper&#8221; comme <em>\/etc\/init.d\/apache(2)<\/em>. Mais il ne suffit pas d&#8217;utiliser syst\u00e9matiquement les scripts init.d : toujours sous Debian, <em>\/etc\/init.d\/tomcat5.5<\/em> peut d\u00e9pendre de variables d&#8217;environnement. Concr\u00e8tement, relancer un service depuis un shell avec un environnement particulier peut donc changer son comportement (dates incorrectes, probl\u00e8me de charset, etc.). D&#8217;ailleurs, au passage, sous Debian, il est conseill\u00e9 d&#8217;utiliser syst\u00e9matiquement <em>\/etc\/init.d\/apache2<\/em> (et non <em>apache2ctl<\/em>) pour Apache car celui-ci r\u00e9initialise l&#8217;environnement, et une astuce pour Tomcat est d&#8217;exporter les variables voulues (notamment celles concernant la locale) dans le fichier <em>\/etc\/default\/tomcat5.5<\/em>.<\/p>\n<p>En r\u00e8gle g\u00e9n\u00e9rale, la relance de services sur un serveur en production s&#8217;effectue par sudo et\/ou SSH. Pour \u00e9viter les erreurs d&#8217;inattention, il est donc pr\u00e9f\u00e9rable ne pas conserver les variables LC_*\/LANG*. Avec sudo, il est ainsi recommand\u00e9 d&#8217;utiliser <em>env_reset<\/em> pour des raisons de s\u00e9curit\u00e9, mais <em>env_reset<\/em> conserve ces variables sans qu&#8217;il soit possible a priori de les supprimer avec <em>env_delete<\/em> (voir bug Debian <a href=\"http:\/\/bugs.debian.org\/392321\">#392321<\/a>). Au niveau de SSH, on peut agir plus efficacement, comme \u00e9viter que ces variables soient envoy\u00e9es par le client SSH en retirant la directive <em>SendEnv LANG LC_*<\/em> dans le fichier <em>\/etc\/ssh\/ssh_config<\/em>. On peut \u00e9galement le faire au niveau du serveur en \u00e9vitant la directive <em>AcceptEnv LANG LC_*<\/em> dans le fichier <em>\/etc\/ssh\/sshd_config<\/em>. Bien s\u00fbr, comme toujours toutes ces &#8220;astuces&#8221; ne doivent pas \u00eatre appliqu\u00e9es sans pr\u00e9caution ; le principal est de garder en t\u00eate que certains services peuvent d\u00e9pendre des variables d&#8217;environnement et d&#8217;\u00e9viter de les (re)lancer depuis un environnement modifi\u00e9.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Plusieurs services (Apache, Tomcat, etc.) d\u00e9pendent de variables d&#8217;environnement, notamment des variables LC_*\/LANG*. Il faut donc prendre garde \u00e0 la fa\u00e7on dont on (re)lance un service. Par exemple, sous Debian, un apache(2)ctl start ne revient pas au m\u00eame qu&#8217;utiliser un &#8220;wrapper&#8221; comme \/etc\/init.d\/apache(2). Mais il ne suffit pas d&#8217;utiliser syst\u00e9matiquement les scripts init.d : toujours [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,5,72],"tags":[],"class_list":["post-44","post","type-post","status-publish","format-standard","hentry","category-debian-fr","category-evolix","category-french"],"_links":{"self":[{"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/posts\/44","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/comments?post=44"}],"version-history":[{"count":2,"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/posts\/44\/revisions"}],"predecessor-version":[{"id":151,"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/posts\/44\/revisions\/151"}],"wp:attachment":[{"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/media?parent=44"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/categories?post=44"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gcolpart.evolix.net\/blog21\/wp-json\/wp\/v2\/tags?post=44"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}