php-experts.org - développement php et internet » linux https://www.php-experts.org Ressources sur le développement internet, PHP/MySQL, Ajax, marketing online, référencement... Sat, 19 Jun 2010 14:23:03 +0000 http://wordpress.org/?v=2.9.2 en hourly 1 A la découverte d’Ubuntu: la première heure https://www.php-experts.org/developpement-web/admin-serveur/a-la-decouverte-dubuntu-la-premiere-heure-343 https://www.php-experts.org/developpement-web/admin-serveur/a-la-decouverte-dubuntu-la-premiere-heure-343#comments Sat, 25 Jul 2009 03:49:17 +0000 Didier https://www.php-experts.org/?p=343 Disclaimer

Je demande à mon lectorat de m’excuser pour ce post, qui ne concerne pas directement le développement, mais qui est un retour d’expérience de ma récente installation d’Ubuntu sur mon poste client principal. Je vulgarise volontairement beaucoup de choses, et j’essaye de m’éloigner -une fois n’est pas coutume- de ma vision habituelle de professionnel pour ne parler que des aspects “client”. Je travaille habituellement sous Windows. Je ne cherche pas à dire lequel système est le meilleur, je ne bomberai pas le torse en disant fièrement que je suis sous Ubuntu. Je livre seulement mes premières impressions après la bascule.

D’abord, pourquoi Ubuntu ?

Hébergeant depuis très longtemps l’ensemble de mes sites sous Linux Debian, j’ai appris il y a peu qu’il existait une Ubuntu en version serveur. Me demandant si la migration de ma Debian habituelle à Ubuntu Server pouvait m’apporter quelque chose, j’ai posé la question sur les forums officiels français Ubuntu. Et là, bon accueil, réponse rapide et en bon français, ça commençait bien. Et loin du prosélytisme Apple (si, si.), on m’a clairement dit que si je m’en sortais bien sous Debian, je ne gagnerais pas grand-chose, Ubuntu étant surtout pensée pour être utilisée en poste client (s’en est suivi une bonne vieille polémique, mais le ton est resté cordial et le thread est bourré d’infos intéressantes et d’avis personnels).
Pour quelqu’un qui est sous Windows depuis “toujours”, avec un long passage par RedHat à l’époque de la 7.2, quand les disques durs étaient en os et les souris en silex, et un bref et douloureux essai de quelques mois sous FreeBSD (où j’ai à peu près autant été dépaysé que si j’avais passé un week-end vers Alpha du Centaure), entendre parler d’un Linux “Client-Friendly” en 2009, ça m’a fait craquer et j’ai eu envie d’essayer. Surtout quelques jours après avoir installé Windows Seven par curiosité – et avec dans l’idée de publier mes impressions (ec que je n’ai pas fait puisque le retour d’expérience de Windows Seven sera fait en deux mots : “comme Vista”).

Détection du hardware

Lacie USB: détecté!

Lacie USB: détecté!

Je n’utilise pas un PC dernier cri, mais j’ai été agréablement surpris par la fiabilité de la détection du hardware sous Ubuntu. Aucun périphérique n’a posé de problème, de la carte réseau à la souris (molette y compris!). Même chose pour le disque dur externe en USB, qui est miraculeusement apparu lorsque je l’ai branché. Même les touches de raccourci présentes sur mon clavier (contrôle du volume) fonctionnent, ce qui n’était pas le cas sous Windows 7 RC1.
Ca m’a agréablement changé de l’époque, pas si lointaine que ça, où on devait éditer à la main, en console, le fichier de configuration du serveur X avant de pouvoir démarrer celui-ci, et où il fallait monter ses périphériques de stockage (en précisant à la main le type de système de fichier…).

Connexion à Internet

Là, pas grand-chose à dire. En Ethernet, je suis déjà connecté. Mon réseau Wifi domestique est aussi détecté et prêt à l’emploi. Pour la petite histoire, sous Debian, j’avais lutté plusieurs jours (ok, j’ai deux mains gauches, mais quand même…) avant de faire reconnaître ma carte Wifi, qui est semble-t-il un peu exotique (une vieille Hercules).

Socialiser sous Ubuntu : la messagerie instantanée

Par défaut est installé Pidgin, un client basé sur libpurple et écrit en Gtk+. Il est compatible avec la plupart des réseaux modernes : MSN, Yahoo!, XMPP (donc Google Talk), ICQ, IRC, plus tout un tas d’autres, dont je n’ai jamais entendu parler, comme Lotus Sametime, Zephyr, MySpaceIm, Gadu-Gadu et QQ.
Il est possible de se connecter sur plusieurs réseaux (et avec plusieurs comptes) simultanément. Pidgin semble pouvoir accepter des plugins et des smileys personnalisés (bah si, moi ça m’a réjoui de voir ça).

Client IRC : Xchat. Pas fan de l’interface (trop hatibué à mIRC dans ma folle jeunesse). Détail sympa: quand on installe Xchat via apt-get, le raccourci se met tout seul dans Applications/Internet/Xchat

En console

Avec un processeur 64bits, l’installation graphique du plugin Flash pour Firefox a échoué (mauvaise architecture). Il a donc fallu passer en console pour essayer de l’installer à la main. Après un petit essai infructueux, mon shell me répond “Essayez avec sudo apt-get install flashplugin-installer“. Et ça a marché.
Dans le même esprit, si je tape “mysql” alors que je n’ai pas de client installé, on me répond que cet exécutable est dans le paquet “mysql-client”. Je sens que les apt-cache search à la recherche de paquets dont j’ai oublié le nom vont se faire assez rares.

Audio / Vidéo

Notification RythmBox (lecteur audio)

Notification RythmBox (lecteur audio)

Fait amusant, le support du mp3 n’est pas installé par défaut (licence oblige…). Quand j’ai lancé RythmBox, le player audio Gnome préinstallé, on m’a proposé d’installer le “greffon” (plugin) nécessaire. Même chose pour le AAC (Il m’a semblé voir que les plugins en question s’appelaient “bad” et “ugly”).
RythmBox ressemble à s’y méprendre à iTunes, mis à part qu’il intègre quelques fonctions sympa en rapport avec le net, dont le support de Webradios et de Last.fm. Petit plus appréciable: on peut préciser avec quels morceaux on souhaite continuer la lecture (Queue). Une fois la file d’attente vidée, la lecture aléatoire reprend son cours.
Côté vidéo, le lecteur fourni, Totem (qui utilise GStreamer) lit les fichiers courants, DivX aussi bien que MKV (y compris en HD). J’ai testé avec un fichier contenant plusieurs pistes : les changements de langue, de sous-titres, de chapitre: tout à fonctionné comme prévu. Rien à redire, donc.

LE gros point noir: merci Apple

Evidemment, il fallait que quelque chose cloche. Mais ce n’est pas de la faute d’Ubuntu. Mon gros point noir est causé par Apple, puisque je ne peux pas synchroniser mon iPhone non-jailbreaké avec mon système Ubuntu. Qui plus est, le Jailbreak était considéré comme légal tant qu’il était réalisé à des fins d’interopérabilité (ce qui est le cas ici) mais cela à changé depuis le firmware 3. C’est maintenant interdit. Sans commentaires.

Conclusion

Très agréablement surpris par ma première heure sous Ubuntu, j’envisage déjà une migration définitive vu que je n’ai à déplorer aucune perte de fonctionnalité (à part pour l’iPhone, encore un grand merci à Apple). Le système répond bien, même avec de nombreuses applications lancées en simultané (on perd vite l’habitude du VRAI multithread…). Il va falloir que je me penche sérieusement sur la compatibilité entre quelques programmes et leurs penchants opensource (je pense notamment à OpenOffice et Microsoft Office) et si tout se passe bien, c’est fini!

Merci aux utilisateurs des forums Ubuntu-fr.org pour leur accueil sympathique :)

]]>
https://www.php-experts.org/developpement-web/admin-serveur/a-la-decouverte-dubuntu-la-premiere-heure-343/feed 4
La commande screen sous Linux https://www.php-experts.org/developpement-web/admin-serveur/la-commande-screen-sous-linux-104 https://www.php-experts.org/developpement-web/admin-serveur/la-commande-screen-sous-linux-104#comments Thu, 12 Feb 2009 01:33:52 +0000 Didier https://www.php-experts.org/?p=104 Si comme moi, vous bossez régulièrement en ligne de commande sous Linux (en SSH sur un serveur dédié, par exemple), il doit vous arriver de devoir jongler entre deux applications, deux répertoires, deux scripts… Bref, si vous passez beaucoup de temps à switcher entre deux tâches, screen est fait pour vous.

Le principe de Screen

Screen est un utilitaire en ligne de commande qui permet de créer plusieurs shells virtuels qui tournent en parallèle. En l’utilisant, vous aurez donc accès à plusieurs “sessions”, comme si vous aviez lancé plusieurs clients SSH.

Enorme avantage, screen ne s’arrête pas quand votre connexion au serveur est coupée. En rouvrant votre session Unix normale, vous pourrez faire screen -r (Recover) pour retrouver toutes vos fenêtres exactement dans l’état où vous les avez laissées (les actions en cours ont continué, les scripts ne sont pas interrompus, etc).

Après une rapide installation (le package apt se nomme “screen”), l’utilitaire est directement utilisable. Tapez “screen”, rien ne se passe. Et pourtant tout est ok, on y est. Bienvenue dans le monde de screen. Faites ce que vous avez à faire, éditez par exemple le fichier /etc/hosts de votre machine. Tapez ensuite control+A, puis C (pour Create). Une nouvelle fenêtre virtuelle est créée. Vous vous retrouvez devant une invite de commande, sur un shell vierge. Et c’est là que les réjouissances commencent. Faites un ls, par exemple. Ensuite, un Control+A puis N (Next) vous permet de passer à la fenêtre suivante gérée par Screen.
Toutes les commandes Screen sont composées de la combinaison Control+A puis une lettre (ou un chiffre).

Voici le menu :

  • Ctrl-a c Créer une nouvelle fenêtre (Create)
  • Ctrl-a k Fermer la fenêtre en cours (Kill)
  • Ctrl-a w Liste les fenêtres disponibles (Windows) – La fenêtre courante est repérée par une étoile.
  • Ctrl-a 0-9 Aller à la fenêtre N (Les chiffres sont dans la liste des fenêtres obtenue en faisant W)
  • Ctrl-a n Aller à la fenêtre suivante (Next)
  • Ctrl-a Ctrl-a Switche en mode “2 fenêtres” (ramène à la fenêtre précédemment affichée)
  • Ctrl-a [ Copier
  • Ctrl-a ] Coller
  • Ctrl-a ? Liste des commandes (Aide/Help)
  • Ctrl-a Ctrl-\ Quitter “screen”
  • Ctrl-a d Détacher le process, en laissant la fenêtre ouverte

Le mode Copie de Screen

Screen peut aussi vous permettre de copier/coller efficacement du texte entre deux fenêtres. Pour cela, ouvrez le mode copie en faisant Ctrl-A [ .
Une fois dans le mode copie, vous pouvez déplacer le curseur à l'aide des touches H,J,K et L. La barre d'espace commence/arrête la sélection du texte. Ctrl-A ] servira alors à coller le texte copié dans le “presse-papiers”.

]]>
https://www.php-experts.org/developpement-web/admin-serveur/la-commande-screen-sous-linux-104/feed 3
Apache, VirtualHost et ServerAlias https://www.php-experts.org/developpement-web/admin-serveur/apache-virtualhost-et-serveralias-26 https://www.php-experts.org/developpement-web/admin-serveur/apache-virtualhost-et-serveralias-26#comments Mon, 20 Oct 2008 21:26:17 +0000 Didier https://www.php-experts.org/?p=26 Lorsqu’on adapte la configuration d’un serveur Apache pour gérer un nouveau domaine, il faut théoriquement créer autant de VirtualHosts que ce qu’on aura de sous-domaines. Et si chaque utilisateur enregistré devait avoir son propre sous-domaine (comme sur une plate-forme de blogs, par exemple) ?

Rien de plus simple, en fait… La directive ServerAlias permet d’utiliser des wildcards, pour désigner “tous les sous-domaines”. L’étoile (*) fonctionne alors comme une parenthèse capturante dans une expression régulière. La directive VirtualDocumentRoot, elle, accepte des paramètres en %N (où N est un nombre entier), avec N correspondant à la place de l’étoile dans la chaîne. %1 est la première chaîne qui a matché une étoile.

Pas clair ? Ok, un exemple :

  1. <VirtualHost *>
  2.         ServerName domain.tld
  3.         ServerAlias *.domain.tld
  4.         VirtualDocumentRoot /var/www/domain.tld/%1/
  5. </VirtualHost>

Pas plus compliqué… Le * va capturer le sous-domaine et le passer au VirtualDocumentRoot. Donc pour test.domain.tld, on tombera dans /var/www/domain.tld/test/.

Dans le <VirtualHost>, après un VirtualDocumentRoot, on peut utiliser des directives comme d’habitude. (Je n’ai pas essayé d’y reprendre le %1, pour modifier les options de configuration de l’ensemble des dossiers “virtuels”… quelqu’un sait si ça marche ?)

]]>
https://www.php-experts.org/developpement-web/admin-serveur/apache-virtualhost-et-serveralias-26/feed 2
Changer d’hébergement : la migration de sites web https://www.php-experts.org/developpement-web/changer-hebergement-migration-site-web-25 https://www.php-experts.org/developpement-web/changer-hebergement-migration-site-web-25#comments Fri, 03 Oct 2008 17:40:43 +0000 Didier https://www.php-experts.org/?p=25 Vous avez un petit serveur sur lequel vous hébergez vos sites. Ces derniers ont grandi, grandi, et il est temps de prendre un serveur plus puissant, et donc de déplacer vos scripts et vos bases de données. C’est vrai, aucune compétence poussée des shells Unix n’est obligatoire ; vous pouvez très bien tout faire avec un client FTP et phpMyAdmin (par exemple). Mais cela suppose de tout copier de la machine A (le “petit” serveur) vers votre poste de travail, puis, de là, de tout envoyer, depuis votre poste, vers la machine B. En faisant tout depuis une ligne de commande, on supprime un intermédiaire. Laissons les machines s’arranger entre elles…

(Note: je travaille habituellement sous Linux Debian. Pour d’autres systèmes/distributions, il faudra sûrement adapter les options des utilitaires utilisés. La marche à suivre restera valable)

(Note en réaction au commentaire de Laurentj :
Ce billet s’adresse à des développeurs web hébergés sur des serveurs en ayant un accès SSH, et ayant conscience des problématiques de gestion d’un serveur.
L’administration système, à fortiori sur une machine connectée 24/7, est un métier à part entière, qui requiert évidemment des compétences poussées ; ne pas savoir ce que l’on fait peut être lourd de conséquences.
Les commandes présentées ici sont très simples et ce post est plus destiné à servir de “pense-bête” que de véritable tutoriel.)

Il va falloir copier les scripts et les bases de données. En supposant que vous utilisez MySQL, voici la procédure à suivre.

Pour copier les scripts, on va compresser le DocumentRoot de chaque site dans une archive tarball (.tar.gz ou .tgz). On prendra le soin d’inclure à l’archive le dump de la base de données utilisée par le site. On n’aura ainsi qu’un seul fichier à envoyer et “installer” sur le serveur B. Ainsi, on est sûrs de ne rien oublier, et la compression diminue évidemment le temps qui sera nécessaire pour le transfert.

Vu qu’on ne travaille JAMAIS sur un site qui est -pour quelques minutes encore- en production (merci de noter ça en rouge dans vos petits cahiers), on commence par créer une copie de ce dossier dans ~/backup. Le ~ signifie “répertoire /home de l’utilisateur courant”. Pour ce faire :

  1. cp -R [document_root]/ ~/backup

Où -R signifie récursif: copier aussi les sous-répertoires.

Passons ensuite dans le répertoire de backup :

  1. cd ~/backup

On réalise un dump (sauvegarde) de la base de données (attention, je parle bien ici d’une seule base, et pas du contenu complet du serveur…)

  1. mysqldump -h localhost -u [utilisateur] -p [nom_de_la_base] > [nom_du_fichier].sql

où :

  • [utilisateur] est le nom d’un user SQL qui a les privilèges en lecture sur la base
  • [nom_de_la_base] est la base qu’on souhaite copier
  • [nom_du_fichier] est le nom du fichier dans lequel sera stocké le dump (choisir un fichier qui n’existe pas…)

Il vous sera demandé (grâce à l’option -p) d’entrer le mot de passe associé à ce compte-utilisateur.

Et c’est parti pour la création du tarball :

  1. tar cvzf ../[nom_de_l_archive].tgz .

[nom_de_l_archive] étant le nom du fichier que vous voulez créer.
.. signifie “un répertoire plus haut dans l’arborescence”, donc dans le /home de l’user courant.

On peut vérifier que l’archive est bien formée et comprend bien les fichiers escomptés. Ca ne mange pas de pain et peut éviter de grosses crises d’hystérie quand on s’est raté quelque part. Listons donc le contenu de l’archive (pensez à remonter d’un cran dans l’arbo):

  1. tar -tvf [archive]

On peut ensuite copier par SCP l’archive sur le nouveau serveur (machine B):

  1. scp [nom_du_fichier].tgz [user]@[hostname]:~
  • [nom_du_fichier] étant le nom du dump généré juste au-dessus
  • [user] étant un utilisateur existant sur la machine B
  • [hostname] étant un nom de domaine qui pointe vers B, ou son adresse IP

Le ~ (tilde) veut toujours dire “dans le répertoire /home” de l’utilisateur (mais sur le nouveau serveur, cette fois). Vous pouvez indiquer n’importe quel path pour lequel l’user spécifié à le droit d’écrire (pensez à bien inclure le premier slash)

On aurait pu faire le dump directement depuis le nouveau serveur, à condition qu’on puisse se connecter au serveur MySQL de l’ancien depuis le réseau (bind-adress *) mais le dump prendrait plus de temps. Donc autant le réaliser directement depuis la machine A et l’envoyer avec le reste du site.

On passe ensuite en SSH sur la machine B. La connexion à la machine A ne servira plus ; on la coupe (une larme d’émotion est permise pour les nostalgiques).
On décompresse notre archive magique :

  1. mkdir site
  2. tar vxcf archive.tgz site/
  3. cd site

On se connecte au serveur MySQL et on crée la base de données qui va recevoir le dump :

  1. mysql -u root -p

create database [nom_de_la_base]
On monte la base de données dans le serveur MySQL.

  1. mysql -u root -p [nom_de_la_base] < [dump].sql

Où [dump] est le nom du dump qu’on a transféré et décompressé.

La base est prête ! (Pensez, si besoin, à recréer les utilisateurs MySQL qui auront les accès nécessaires sur cette base)
On crée alors le DocumentRoot du site, et on s’y rend pour y déplacer les fichiers décompressés :

  1. mkdir /var/www/[site]/
  2. cd /var/www/[site]/
  3. mv -R ~/backup/ .

C’est fait. Vous pouvez vérifier que tout fonctionne en modifiant votre fichier hosts sous Windows : Editez le avec Notepad et ajoutez la ligne “[nouvelle_ip] [www.domain.tld]“. Si vous utilisez Internet Explorer, fermez et rouvrez votre navigateur (pour que les modifications soient prises en compte) et allez voir votre site. Tout marche ? Il ne vous reste plus qu’à changer vos DNS… Migration de site accomplie ! :)

Bien sur, en faisant comme cela, vous “perdrez” les données entre le moment où vous faites le dump et celui où les DNS basculent effectivement. Vous pouvez, une fois les DNS basculés, faire une extraction des données de la base “à la mano” (un différentiel qu’on appelle souvent un Delta…) mais c’est une autre histoire…

]]>
https://www.php-experts.org/developpement-web/changer-hebergement-migration-site-web-25/feed 2