Installation d'Apache, PHP et MySQL sous Ubuntu photo

Installation d’Apache, PHP et MySQL sous Ubuntu

lamp

Qui dit changement de système d’exploitation dit réinstallation au propre des programmes !

Voici comment installer Apache, PHP et MySQL sous Ubuntu, c’est à dire un véritable système LAMP.

L’installation et la configuration prennent environ 10 minutes, c’est très simple, beaucoup moins alambiqué que sous Windows.

Ce tutoriel est un peu mon carnet de bord, c’est comme cela que j’ai configuré ma machine, étapes par étapes.

Lire la suite

Optimisation du thème WordPress : 30 requêtes SQL gagnées photo

Optimisation du thème WordPress : 30 requêtes SQL gagnées

speedy_gonzales

Je viens d’effectuer une jolie petite optimisation qui devrait bien alléger le serveur sur lequel nous tournons. Vous vous souvenez de l’article WordPress : réduire le nombre de requêtes SQL des thèmes, écrit il y a quelques mois ?

Et bien il se trouve que j’avais tout optimisé tous les fichiers de mon thème – sauf le menu du site qui se trouve dans le fichier header.php !

Ce dernier contenait quasiment une trentaine de requêtes SQL destinées à obtenir les permalinks des pages statiques…

Je m’étais dit à l’époque que si je changeais le permalink d’une page, cela se reflèterait immédiatement dans le menu. Quand j’y pense aujourd’hui, c’est vraiment ridicule.

Lire la suite

WordPress : utilisation d’un système de cache

Optimisation : le cache

Si votre blog génère beaucoup de trafic, il y a fort à parier que votre consommation des ressources serveurs ira en augmentant : plus vous écrivez d’articles et plus vous avez de pages, plus vous avez de visiteurs sur le site.

Le problème, c’est que les multiples appels à la base de données pour extraire le contenu des articles peut entraîner des ralentissements, voire des erreurs lors de l’affichage de vos pages en périodes de pointe.

La solution consiste à utiliser un système de cache de fichiers. Pour SkyMinds, j’ai testé tout ce que j’ai pu trouver pour tenter d’endiguer le trafic qui ralentissait le serveur. Voici les conclusions auxquelles je suis arrivé, au bout de multiples expérimentations.

Pensez à faire une sauvegarde de votre fichier .htaccess avant de commencer.

Lire la suite

WordPress et encodage UTF-8 photo

WordPress et encodage UTF-8

wordpress_icon_blue

J’ai mis à jour WordPress hier, entre deux corrections de copies. D’habitude lorsque je fais une grosse mise à jour, je la fait d’abord sur mon installation locale, sur ma machine.

Cela me permet de déceler les problèmes éventuels et de ne pas planter la base du site.

Cette fois-ci, non seulement je l’ai faite en locale mais je l’ai en plus faite sur un sous-domaine, histoire d’être vraiment sûr de mon coup. Mais cette fois-ci j’ai eu droit à une grosse étape supplémentaire, nécessaire pour la pérennité du site…

Lire la suite

WordPress : réduire le nombre de requêtes SQL des thèmes

WordPress : optimiser le theme

Après avoir vu comment réduire les accès des plugins, voici comment réduire le nombre d’accès à la base de données en modifiant vos fichiers de thèmes.

Des URLs statiques

Il est possible de supprimer jusqu’à une bonne vingtaine d’appels à la base de données rien qu’en éditant les fichiers de votre thème. Les fichiers les plus gourmands sont header.php, sidebar.php et footer.php. Vous pouvez remplacer :

  • bloginfo('charset') par l’encodage de vos pages : UTF-8.
  • bloginfo('stylesheet_url') par l’URI statique de votre feuille de style.
  • bloginfo('rss2_url') par l’URI statique de votre flux RSS.
  • bloginfo('pingback_url') par l’URI statique de votre serveur XML-RPC.
  • bloginfo('url') par l’URI statique de votre blog (sans le slash final).

Lire la suite

WordPress : réduire le nombre de requêtes SQL des plugins

Plugins

Suite aux deux précédents avertissements de mon hébergeur, j’ai pris quelques mesures pour tenter d’endiguer les requêtes superflues au niveau du serveur et d’optimiser mon installation WordPress en général. Aujourd’hui, on essaie de réduire le nombre de requêtes SQL de nos plugins.

Etape 1 : réduire le nombre de plugins

Une installation par défaut de WordPress est assez light au niveau des ressources SQL. Le problème, c’est que l’on a bien souvent tendance à ajouter des plugins à son installation de base qui finissent par ralentir l’ensemble du site. Peut-être même possédez-vous des plugins qui sont devenus obsolètes ou redondants s’ils ont été inclus dans le code source de WordPress. Faîtes un peu le ménage et supprimez les plugins dont vous ne vous servez pas.

Lire la suite

Corruption des tables MySQL sous SAM Broadcaster

Ce week-end, en lançant comme souvent Thunderstruck Radio, SAM Broadcaster ne voulait plus jouer aucune chanson : la file d’attente (Queue list) était vierge, sans aucune possibilité de la remplir. ‘Nous voilà bien’ me dis-je alors intérieurement. En basculant sur les différents bureaux de SAM, le gestionnaire d’évènements (event log) m’a appris pourquoi plus rien ne fonctionnait comme avant :

Corruption de la table MySQL

La ligne qui nous intéresse est celle-ci :

Can’t open file : ‘queuelist.MYI’. (errno : 145)

Lire la suite

Scripts PHP-MySQL photo

PHP and MySQL scripts

Mail-it Now! Upload2Server

[no_toc]

Advanced form2mail checking the email and message fields, and the validity of the email address. It works with every hosting provider using mail or email functions. It handles multiple file uploads and generates the reply page automatically. Supports Online.net’s email() function.

 Current version: [1.5.3]       License: [Linkware]       Downloads: 185 010 

>> Download

>> Demo                   >> Get the Professional Edition

Mail-it Now! Professional

Improved form2mail script featuring : multiple file uploads, file type restrictions, mail attachments, HTML email, CC and BCC copies, option to keep uploaded files on the server, option to set maximum filesize, auto-cleanup of files option, answer page generated on-the-fly, easy setup and configuration, supports the email() function of Online.net, supports safe-mode servers and PHP > 4.1.2, new TLDs taken into account. Read more.

[purchase_link id=”7403″ text=”Add to Cart” style=”button” color=”blue”]

GraphiCookie Counter

Graphic counter using a cookie to identify your visitors not to count them twice. You can use your own images and define the cookie lifetime. Set of pictures included.

 Current version: [1.3]         License: [Linkware]        Downloads: 121 725 

>> Download

GrafX Hit Counter

PHP hit counter displaying the results from a MySQL database. Simply add the 3 lines of code at the beginning of each page you want to track and the script will store the results in the database so that you know which pages are the most accessed and draw the graphs.

 Current version: [1.2]       License: [Donation-ware]       Downloads: 81 277 

>> Download

last.fm 4 SAM Broadcaster

PHP plugin to update your last.fm profile with the tracks played on your SAM Broadcaster-powered webradio.

 Current version: [0.2]       License: [Donation-ware]       Downloads: 6 650 

>> Download

GrafX Hit Counter v1.2

Je pensais en avoir terminé avec le développement de GrafX Hit Counter – simple compteur de hits graphique qui se sert d’une base MySQL pour enregistrer et afficher les résultats – et voici qu’une question posée par un de mes visiteurs m’y a replongé. La question était : “comment afficher de manière textuelle le nombre de hits d’une page ?”.

Réponse : avec un simple echo de la fonction principale, comme ceci :

// On lance le calcul (savant!)
$cc = ShowCount($page);

// On place cette routine là où doit apparaître le nombre de hits
echo $cc; 

En parcourant le script, je me suis également rendu compte que je pouvais l’améliorer facilement en passant outre le fichier d’installation : pourquoi demander aux webmasters de lancer un script d’installation alors qu’une simple routine peut vérifier si la table SQL est créée et procéder à sa création le cas échéant, de manière automatique ? C’est désormais chose faite !

Vous pouvez télécharger GrafX Hit Counter v1.2 ici.

Développeur freelance pour l’IUFM

Cela devait bien arriver : à force de se faire remarquer, il fallait bien que cela me tombe dessus un jour ou l’autre. Je me suis fait attraper par l’un des administrateurs réseau de l’IUFM pour avoir installer OpenOffice et Firefox sur un poste sans avoir demandé la permission. C’est ça d’avoir des gens qui ne jurent que par les technologies propriétaires comme M$ Office et tout le tralala. Résultat : on est obligés d’utiliser Word et son format .doc tout naze alors que le format .odt d’OpenOffice 2.0 pèse quasiment deux fois moins. Et je ne dirais rien sur l’utilisation de Firefox, ce serait complètement redondant sur ce blog. Oops, red herring. Bref, notre formateur TICE entre dans notre salle de classe pour nous emprunter un rétro-projecteur, avant de demander si quelqu’un s’y connaissait en bases MySQL. Evidemment, je n’ai pas pu résister de lever la main… et paf ! enrollé d’office pour le formulaire TICE de l’IUFM. Ayant jeté un coup d’oeil au code, tout est à refaire : il y a des checkboxes au lieu de radiobuttons, c’est codé avec DreamWeaver 2 et FrontPage… Après un petit lifting en XHTML et CSS, le fichier est passé de 48 ko à 22ko.

Le formulaire est fini, j’ai changé tout le design parce que l’original me donnait des hauts-le-coeur. La partie insertion du script est terminée, les différents tests (validation blanche, connexion au serveur défaillante, soumission multiple…) ont été effectuées. Il ne me reste plus que la dernière partie du script qui affiche ce que contient la base. C’est la partie la plus rébarbative qui mélange PHP et tableaux. Il y a tellement de champs que j’ai une scrollbar horizontale incroyable alors j’ai pensé à séparer les différentes parties avec un menu CSS. Fastidieux mais j’ai réussi à négocier le boulot contre quelques bouteilles de blanc. Ben oui ! ^_^

Backup files and databases easily with cron photo

Backup files and databases easily with cron

This post is an extension to my former tutorial : Backup all your MySQL databases with one line of cron, which can now be considered as obsolete since some people reported having some issues with the gzip file generation.

So here is another attempt at dealing with the security of your files and databases on your domain.

In this tutorial, I assume your web host has Cpanel installed with the cron features that will backup everything for us at regular intervals.

To access the Cron Manager in Cpanel :

  • Go to Cpanel > Cron Jobs
  • Select the Standard or Advanced view – the choice is yours !

Let’s assume you chose the “Standard view” for the sake of simplicity and ease of configuration. First, backup your files.

Lire la suite

Country-Killer v1.0

Je parlais hier de bannir des pays en fonction de leur adresse IP et j’ai écrit un script nommé Country-Killer qui permet d’interdire l’accès à certaines pages d’un site en utilisant la base de données Ip-to-country qui est disponible sous licence GPL.

C’est ce que j’utilise sur certaines pages sensibles de mon site.

Le seul problème c’est que l’on se base sur l’adresse IP qui peut être modifiée à volonté, par exemple si l’on utilise un proxy comme protection.

Maintenant, combien de personnes utilisent un proxy élite ? Sûrement pas ceux qui viennent d’acheter leur PC de noël en grande surface…