{"id":1556,"date":"2017-01-24T10:13:50","date_gmt":"2017-01-24T09:13:50","guid":{"rendered":"https:\/\/blog.alwaysdata.com\/?p=1556"},"modified":"2018-02-01T16:25:12","modified_gmt":"2018-02-01T15:25:12","slug":"python-3-6-ruby-2-4-et-les-autres","status":"publish","type":"post","link":"https:\/\/blog.alwaysdata.com\/fr\/2017\/01\/24\/python-3-6-ruby-2-4-et-les-autres\/","title":{"rendered":"Python 3.6, Ruby 2.4 et les autres"},"content":{"rendered":"<p>On vous a&nbsp;g\u00e2t\u00e9s avec de <a href=\"https:\/\/blog.alwaysdata.com\/fr\/2016\/10\/27\/a-la-decouverte-de-notre-nouveau-reverse-proxy-alproxy-5\/\">nombreuses<\/a> <a href=\"https:\/\/blog.alwaysdata.com\/fr\/2016\/11\/28\/https-support-natif-de-lets-encrypt\/\">nouveaut\u00e9s<\/a> ces <a href=\"https:\/\/blog.alwaysdata.com\/fr\/2017\/01\/11\/dix-fois-plus-despace-sur-notre-offre-gratuite\/\">derni\u00e8res<\/a> <a href=\"https:\/\/blog.alwaysdata.com\/fr\/2017\/01\/19\/parrainez-des-filleuls-et-gagnez-des-commissions\/\">semaines<\/a>, mais je&nbsp;soup\u00e7onne que l\u2019annonce du jour risque de remporter tous les suffrages\u2026 Depuis quelques jours, les nouveaux comptes mutualis\u00e9s, VPS et serveurs d\u00e9di\u00e9s tournent sur notre toute nouvelle infrastructure <em>logicielle<\/em>. Qu\u2019apporte-t-elle&nbsp;? Ouvrons&nbsp;le capot.<\/p>\n<h2>Des versions (beaucoup) plus r\u00e9centes<\/h2>\n<p>Notre nouvelle infrastructure tourne sous la derni\u00e8re version de <a href=\"https:\/\/www.debian.org\/\">Debian<\/a> (Jessie), ce qui apporte&nbsp;une&nbsp;mise \u00e0&nbsp;jour&nbsp;de l\u2019ensemble des logiciels et biblioth\u00e8ques disponibles, de <a href=\"https:\/\/git-scm.com\/\">git<\/a> ou <a href=\"http:\/\/www.vim.org\/\">Vim<\/a> \u00e0&nbsp;<a href=\"https:\/\/httpd.apache.org\/\">Apache<\/a> ou <a href=\"https:\/\/java.com\/\">Java<\/a>. Des logiciels et langages ont&nbsp;\u00e9galement&nbsp;\u00e9t\u00e9 ajout\u00e9s, comme <a href=\"https:\/\/golang.org\/\">Go<\/a> ou <a href=\"https:\/\/www.r-project.org\/\">R<\/a>.<\/p>\n<p>Mais le c\u0153ur du changement se situe du c\u00f4t\u00e9 de Python et Ruby&nbsp;: nous avons fait \u00e9voluer notre gestion des paquets&nbsp;pour ne plus d\u00e9pendre des versions propos\u00e9es par&nbsp;Debian, ce qui nous permet d\u2019offrir&nbsp;:<\/p>\n<ul>\n<li>pour <a href=\"https:\/\/www.python.org\/\">Python<\/a>, de la version 3.6 \u00e0&nbsp;3.3 et 2.7 \u00e0&nbsp;2.4&nbsp;;<\/li>\n<li>pour <a href=\"https:\/\/www.ruby-lang.org\/\">Ruby<\/a>, de la version 2.4 \u00e0&nbsp;1.8.7&nbsp;;<\/li>\n<li>pour <a href=\"http:\/\/php.net\/\">PHP<\/a>, rien ne change&nbsp;: nous proposions&nbsp;d\u00e9j\u00e0 la derni\u00e8re version (7.1), et nous gardons en prime toutes les versions depuis la 5.2, et m\u00eame la 4.4 pour les (l\u00e9gers) retardataires.<\/li>\n<\/ul>\n<h2>Une installation de paquets simplifi\u00e9e<\/h2>\n<p>Que ce soit pour Python ou Ruby, l\u2019installation de paquets (via <a href=\"https:\/\/pip.pypa.io\/\">pip<\/a>&nbsp;ou <a href=\"https:\/\/rubygems.org\/\">gem<\/a>) demandait quelques efforts, minimes&nbsp;mais parfois d\u00e9routants pour les plus d\u00e9butants. Il fallait ici sp\u00e9cifier une option, l\u00e0 d\u00e9finir une variable d\u2019environnement, ou encore cr\u00e9er un fichier (<em>.bash_profile<\/em>) pour que les nouvelles commandes puissent \u00eatre ex\u00e9cut\u00e9es directement.<\/p>\n<p>D\u00e9sormais,&nbsp;<strong>pip install&nbsp;<\/strong>et&nbsp;<strong>gem install<\/strong>&nbsp;fonctionnent directement, sans le moindre param\u00e9trage. Encore mieux&nbsp;: vous n\u2019aurez m\u00eame pas besoin d\u2019ajouter un quelconque chemin pour que vos applications trouvent les biblioth\u00e8ques&nbsp;: c\u2019est automatique.<\/p>\n<p>Nous avons aussi pens\u00e9 \u00e0&nbsp;PHP et ses extensions <a href=\"https:\/\/pecl.php.net\/\">PECL<\/a>&nbsp;: indiquez&nbsp;\u00e0&nbsp;la commande&nbsp;<strong>ad_install_pecl<\/strong> (un script maison) le nom de l\u2019extension PECL que vous souhaitez installer, elle s\u2019occupera de la t\u00e9l\u00e9charger\/configurer\/compiler&nbsp;: il ne vous restera plus qu\u2019\u00e0 charger le fichier <em>.so<\/em> depuis la section <em>Environnement&nbsp;&gt; PHP<\/em> de l\u2019administration alwaysdata.<\/p>\n<h2>Un environnement vierge<\/h2>\n<p>Encore une fois, cela s\u2019applique principalement \u00e0&nbsp;Python et Ruby&nbsp;: jusqu\u2019\u00e0 pr\u00e9sent, certaines biblioth\u00e8ques \u00e9taient install\u00e9es globalement sur nos syst\u00e8mes, notamment&nbsp;<a href=\"https:\/\/www.djangoproject.com\/\">Django<\/a> et <a href=\"http:\/\/rubyonrails.org\/\">Ruby on Rails<\/a>. Cela posait un certain nombre de probl\u00e8mes \u00e0&nbsp;l\u2019usage, aussi nous avons d\u00e9cid\u00e9 de les retirer. Vous d\u00e9marrerez donc avec un environnement vierge,&nbsp;mais on a&nbsp;vu \u00e0&nbsp;la section pr\u00e9c\u00e9dente qu\u2019installer des biblioth\u00e8ques \u00e9tait d\u00e9sormais trivial.<\/p>\n<h2>Les sites Python et Ruby propuls\u00e9s par&nbsp;uWSGI<\/h2>\n<p>Les sites de type <em>WSGI<\/em> (Python) ou <em>Ruby Rack<\/em> et <em>Ruby on Rails<\/em> \u00e9taient g\u00e9r\u00e9s par Apache (via <a href=\"https:\/\/modwsgi.readthedocs.io\/\">mod_wsgi<\/a> ou <a href=\"https:\/\/www.phusionpassenger.com\/\">Passenger<\/a>). Ils sont d\u00e9sormais g\u00e9r\u00e9s par <a href=\"https:\/\/github.com\/unbit\/uwsgi\">uWSGI<\/a>, un serveur d\u2019applications pr\u00e9sentant plusieurs&nbsp;avantages. Ce changement est largement transparent pour nos clients, mais de nouvelles options (toutes facultatives) font leur apparition dans le formulaire de configuration d\u2019un&nbsp;site&nbsp;:<\/p>\n<ul>\n<li>forcer une version de Python ou Ruby particuli\u00e8re&nbsp;;<\/li>\n<li>les variables d\u2019environnement \u00e0&nbsp;d\u00e9finir&nbsp;;<\/li>\n<li>le r\u00e9pertoire de travail&nbsp;;<\/li>\n<li>pour Python, le <em>virtualenv<\/em> \u00e0&nbsp;utiliser&nbsp;;<\/li>\n<li>pour Ruby, utiliser le <em>Gemfile<\/em> de l\u2019application.<\/li>\n<\/ul>\n<h2>Bient\u00f4t, de nouveaux langages<\/h2>\n<p>Cette nouvelle infrastructure ouvre la voie au support de nouveaux langages, en particulier pour faire tourner des applications web. <a href=\"https:\/\/nodejs.org\/\">Node.js<\/a> sera certainement le premier, mais d\u2019autres devraient suivre assez&nbsp;vite.<\/p>\n<h2>Comment en b\u00e9n\u00e9ficier&nbsp;?<\/h2>\n<p>D\u00e8s maintenant, en ouvrant un nouveau compte mutualis\u00e9, VPS ou serveur d\u00e9di\u00e9. Pour les anciens clients, il va falloir patienter encore un peu&nbsp;: nous pr\u00e9parons la phase de migration qui d\u00e9marrera dans les prochaines semaines, en m\u00eame temps d\u2019ailleurs que la migration vers notre <a href=\"https:\/\/blog.alwaysdata.com\/fr\/2014\/02\/17\/alwaysdata-prend-son-independance\/\">propre infrastructure mat\u00e9rielle<\/a>&nbsp;(pour les mutualis\u00e9s les plus anciens). Chaque client sera pr\u00e9venu par email au pr\u00e9alable et aura \u00e0&nbsp;sa disposition&nbsp;:<\/p>\n<ul>\n<li>une page de documentation listant les changements majeurs susceptibles de provoquer&nbsp;des incompatibilit\u00e9s&nbsp;;<\/li>\n<li>des outils permettant de simuler&nbsp;partiellement&nbsp;son compte sous la nouvelle infrastructure.<\/li>\n<\/ul>\n<p>Les plus t\u00e9m\u00e9raires peuvent toutefois demander par ticket&nbsp;une migration d\u00e8s maintenant, mais \u00e0&nbsp;leurs risques et p\u00e9rils, et sans possibilit\u00e9 de revenir en arri\u00e8re. Inutile de dire que si vous avez quoi que ce soit en production, passez votre chemin et attendez la migration officielle. Si vous cherchez des sensations fortes, sautez plut\u00f4t en parachute.<\/p>\n<h2>Et apr\u00e8s&nbsp;?<\/h2>\n<p>Nous avons con\u00e7u cette nouvelle infrastructure pour qu\u2019elle soit&nbsp;beaucoup plus souple que la pr\u00e9c\u00e9dente, et ne plus nous retrouver dans une situation avec des logiciels vieillissants. Bien que nous ne puissions pas toujours proposer les toutes derni\u00e8res versions&nbsp;d\u00e8s leur sortie, pour de nombreuses raisons (manque de recul sur la stabilit\u00e9, bugs bloquants, d\u00e9pendances indisponibles), cette nouvelle flexibilit\u00e9 nous permettra par exemple de r\u00e9duire l\u2019attente pour Python 3.7 et Ruby 2.5 \u00e0&nbsp;quelques jours seulement&nbsp;!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>On vous a&nbsp;g\u00e2t\u00e9s avec de nombreuses nouveaut\u00e9s ces derni\u00e8res semaines, mais je&nbsp;soup\u00e7onne que l\u2019annonce du jour risque de remporter tous les suffrages\u2026 Depuis quelques jours, \u2026 <a class=\"read-more\" href=\"https:\/\/blog.alwaysdata.com\/fr\/2017\/01\/24\/python-3-6-ruby-2-4-et-les-autres\/\">Keep reading<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"wp_typography_post_enhancements_disabled":false,"footnotes":""},"categories":[230],"tags":[157,142,189,190],"class_list":["post-1556","post","type-post","status-publish","format-standard","hentry","category-uncategorized-fr","tag-architecture-fr","tag-langages-fr","tag-python-fr","tag-ruby-fr"],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts\/1556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/comments?post=1556"}],"version-history":[{"count":0,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts\/1556\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/media?parent=1556"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/categories?post=1556"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/tags?post=1556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}