MySQL : convertir les tables MyISAM au format InnoDB photo

MySQL : convertir les tables MyISAM au format InnoDB

MySQL : MyISAM et InnoDB

A ses débuts, MySQL utilisait le moteur de stockage MyISAM.

C’est la raison pour laquelle on retrouve beaucoup d’exemples de création de tables sur Internet avec l’instruction engine=MyISAM (ce qui, au passage, peut faire planter pas mal de créations de bases/tables).

Aujourd’hui, le moteur de stockage par défaut de MySQL est InnoDB.

MyISAM n’est plus activement développé, à l’inverse d’InnoDB. Il est donc recommandé de convertir les tables MyISAM au format InnoDB, afin de bénéficier des dernières optimisations de performance du nouveau moteur.

innodb-myisam-mysql

Le moteur InnoDB

InnoDB est un moteur de stockage inclus d’origine dans toutes les distributions fournies par MySQL AB. Son principal avantage par rapport aux autres moteurs de stockage de MySQL est qu’il permet des transactions ACID (Atomiques, Cohérentes, Isolées et Durables), ainsi que la gestion des clés étrangères (avec vérification de la cohérence).

Toutes les bases de données sont stockées au même endroit. Par défaut dans le fichier ibdata1 qui, sous les systèmes de type unix, se trouve généralement dans /var/lib/mysql. Il est également possible d’utiliser plusieurs fichiers ou même d’utiliser directement une ou plusieurs partitions sur le disque en mode RAW.

Ce moteur de base de données utilise aussi deux fichiers de logs, d’habitude ib_logfile0 et ib_logfile1. Les fichiers de définitions de table .frm sont également dans un dossier au nom de la base comme pour MyISAM.

Depuis sa version 5.5, MySQL utilise InnoDB comme moteur par défaut.

Comment connaitre le format actuel de vos tables ?

Pour faire un petit état des lieux du format actuel des tables de votre base de données, il suffit de vous identifier sur le serveur SQL et de lancer cette requête :

SHOW TABLE STATUS FROM `database`;Code language: JavaScript (javascript)

Il vous suffit de remplacer database par le nom de votre base de données et de regarder la valeur de la colonne Engine.

Convertir les tables MyISAM au format InnoDB

Pour convertir des tables MyISAM au format InnoDB, il suffit de lancer une requête SQL va grandement nous simplifier la vie:

SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=InnoDB;')
FROM information_schema.tables
WHERE 1=1
    AND engine = 'MyISAM'
    AND table_schema NOT IN ('information_schema', 'mysql', 'performance_schema');Code language: JavaScript (javascript)

Le résultat de cette requête est une liste bien formatée de requêtes à lancer pour que toutes nos tables soient converties au format InnoDB.

Voici le résultat de cette requête sur le serveur :

+-----------------------------------------------------------+
| CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=InnoDB;')   |
+-----------------------------------------------------------+
| ALTER TABLE blog.blog_wc_comments_subscription ENGINE=InnoDB;
| ALTER TABLE blog.blog_wc_phrases ENGINE=InnoDB;
| ALTER TABLE blog.blog_wc_users_voted ENGINE=InnoDB;
+-----------------------------------------------------------+Code language: JavaScript (javascript)

Toutes les tables des bases de données qui sont au format MyISAM au format InnoDB sont listées, à l’exception des tables utilisées dans la gestion de MySQL (‘information_schema’, ‘mysql’, ‘performance_schema’) qui doivent rester en MyISAM.

Etape de Conversion

Il vous suffit ensuite de lancer cette liste de requêtes ALTER TABLE sous MySQL, Adminer ou PHPMyAdmin pour convertir vos tables. Lancez la liste de commandes que vous venez de trouver :

ALTER TABLE blog.blog_wc_comments_subscription ENGINE=InnoDB;
ALTER TABLE blog.blog_wc_phrases ENGINE=InnoDB;
ALTER TABLE blog.blog_wc_users_voted ENGINE=InnoDB;

Et voilà, vos tables MyISAM sont maintenant devenues des tables InnoDB.

Lire la suite

Postfix : résoudre l'erreur SASL

Postfix : résoudre l’erreur “Untrusted TLS connection established to Gmail”

postfix-logo

En vérifiant les logs de mon serveur mail, je me suis aperçu que, malgré mon certificat, la connexion du serveur à un serveur sortant n’était pas entièrement chiffrée.

Voici comment remédier à ce problème.

Postfix : “untrusted connection SMTP”

Concrètement, voici la transcription du log d’une connexion SMTP dite “untrusted connection SMTP” :

postfix/cleanup: message-id=<9@mail.example.com>
opendkim: DKIM-Signature field added (s=mail, d=example.com)
postfix/qmgr: from=<user@example.com>, size=483, nrcpt=1 (queue active)
postfix/smtp: Untrusted TLS connection established to gmail-smtp-in.l.google.com[2a00:1450:4013:c01::1a]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
postfix/smtp: to=<user@gmail.com>, relay=gmail-smtp-in.l.google.com[2a00:1450:4013:c01::1a]:25, delay=1.5, delays=0.12/0.06/0.55/0.73, dsn=2.0.0, status=sent (250 2.0.0 OK 1430771763 z16si1523612wjr.190 - gsmtp)
postfix/qmgr: removed</user@gmail.com></user@example.com>Code language: HTTP (http)

Comme on peut le constater, notre connexion TLS n’est pas chiffrée de bout en bout :

Untrusted TLS connection established to gmail-smtp-in.l.google.com[2a00:1450:4013:c01::1a]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)Code language: JavaScript (javascript)

Solution : ajouter la directive smtp_tls_CAfile

J’ai pour habitude de mettre les mêmes valeurs pour les directives smtp_* et smtpd_* mais dans ce cas précis, il faut modifier la valeur de la directive smtp_tls_CAfile.

On édite le fichier de configuration de Postfix :

nano /etc/postfix/main.cf

On modifie smtp_tls_CAfile pour pointer vers le fichier /etc/ssl/certs/ca-certificates.crt:

###
# Trusted TLS connection to gmail-smtp
# by Matt 
# https://www.skyminds.net
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
###Code language: PHP (php)

et on redémarre Postfix :

service postfix restart

Trusted TLS connection established

Après un envoi de test, voici ce que nous donnent les logs:

postfix/cleanup: message-id=<a@mail.example.com>
opendkim: DKIM-Signature field added (s=mail, d=example.com)
postfix/qmgr: from=<user@example.com>, size=483, nrcpt=1 (queue active)
postfix/smtp: Trusted TLS connection established to gmail-smtp-in.l.google.com[74.125.136.27]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
postfix/smtp: to=<user@gmail.com>, relay=gmail-smtp-in.l.google.com[74.125.136.27]:25, delay=1.1, delays=0.12/0.07/0.31/0.58, dsn=2.0.0, status=sent (250 2.0.0 OK 1430772064 jt5si24487408wjc.48 - gsmtp)
postfix/qmgr: removed</user@gmail.com></user@example.com></a@mail.example.com>Code language: HTML, XML (xml)

Et voilà, connexion vers les serveurs SMTP chiffrée et validée comme trusted!

debian-8-jessie

Serveur dédié : la mise à jour vers Debian 8 Jessie

Hier soir, j’ai mis à jour le serveur : nous passons de Debian 7.8 (wheezy) à 8.0 (jessie).

Tout s’est plutôt bien passé, il y a eu environ 10 minutes de downtime, le temps que je comprenne ce qui avait changé, notamment dans la configuration Apache et celle de Postfix.

Voici un petit compte-rendu de la mise à jour.

Mise à jour des dépôts

On édite notre fichier source APT :

nano /etc/apt/sources.listCode language: PHP (php)

et on remplace toutes les occurences de wheezy par jessie.

Chez moi, cela donne :

# DEBIAN
deb http://mirror.ovh.net/debian/ stable main contrib non-free
deb-src http://mirror.ovh.net/debian/ stable main contrib non-free

deb http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free

# mod security
deb http://ftp.debian.org/debian/ jessie-backports mainCode language: PHP (php)

Préparation à la mise à jour de Debian

J’ai commencé par vérifier qu’aucun paquet n’était à moitié installé :

dpkg --audit

ou en attente :

dpkg --get-selections | grep 'holdCode language: JavaScript (javascript)

Rien? Tout va bien, on continue et on simule une installation avec :

apt-get -o APT::Get::Trivial-Only=true dist-upgradeCode language: PHP (php)

Le résultat est une longue liste de paquets, suivie du message suivant:

439 upgraded, 192 newly installed, 5 to remove and 1 not upgraded.
Need to get 275 MB of archives.
After this operation, 259 MB of additional disk space will be used.
E: Trivial Only specified but this is not a trivial operation.Code language: JavaScript (javascript)

Nos sauvegardes sont faites, on se lance.

Mise à jour Debian

On rafraichit les dépôts et on lance l’installation:

apt-get update && apt-get upgradeCode language: JavaScript (javascript)

On obtient un laïus avec ce qui change. J’aperçois plusieurs pages sur Apache, on y reviendra. Cela dure à peu près une dizaine de minutes, bien que je n’ai pas vraiment minuté.

Une fois l’installation terminée, on résout les dépendances et les paquets manquants avec :

apt-get dist-upgradeCode language: JavaScript (javascript)

Je lance le site pour voir : paf, erreur 403.

Lire la suite

HPLIP : résoudre l'erreur

HPLIP : résoudre l’erreur “no system tray detected on this system”

Lors du démarrage de ma machine, sous Ubuntu, il n’est pas rare que j’obtienne le message d’erreur “no system tray detected on this system”. Le message exact se présente sous cette forme :

hplip-no-system-tray

Voici comment remédier à ce problème en quelques secondes.

HPLIP et la barre des tâches

HPLIP est le petit gestionnaire d’imprimante HP qui se loge dans la barre des tâches et permet d’avoir un accès rapide aux options de l’imprimante.

Si le chargement du système n’est pas assez rapide et qu’HPLIP se lance avant que la barre des tâches n’ait été créé, le message s’affiche.

Ajout d’un délai pour charger HPLIP

Ma solution est toute simple : il suffit de retarder le chargement d’HPLIP. Pour cela, direction Applications > Outils système > Préférences > Applications au démarrage.

Sélectionnez ensuite HP System Tray Service puis cliquez sur le bouton modifier.

Remplacez la commande d’origine (hp-systray -x) par:

sh -c "sleep 45; exec hp-systray"Code language: JavaScript (javascript)

Voici ce que cela donne en image:

hplip-delayed

Et voilà, problème réglé.

PHP : résoudre l'erreur

Serveur dédié : mise à jour vers PHP 5.6

php-logo

Je viens de mettre à jour la version de PHP sur le serveur, histoire de tourner sur une version plus récente et bénéficiant des dernières nouveautés.

En moins de 3 minutes, je suis passé de PHP 5.4.39 à PHP 5.6.7 sur ma Debian, tout en douceur.

Voici la marche à suivre.

Ajout des dépôts Dotdeb

Si vous ne l’avez déjà fait, ajoutez les dépôts Dotdeb de Guillaume Plessis:

nano /etc/apt/sources.listCode language: PHP (php)

et ajoutez-y:

# Dotdeb default
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all
# PHP 5.6 on Debian 7 (without Zend thread safety)
deb http://packages.dotdeb.org wheezy-php56 all
deb-src http://packages.dotdeb.org wheezy-php56 allCode language: PHP (php)

Mise à jour de PHP

On met à jour nos dépôts :

apt-get updateCode language: JavaScript (javascript)

et on met à jour notre version de PHP-FPM avec:

apt-get install php5-fpm php5-ssh2 php-pear php5 php5-devCode language: JavaScript (javascript)

Résultat :

The following packages will be REMOVED:
  libssh2-php
The following NEW packages will be installed:
  libvpx1 php5-ssh2
The following packages will be upgraded:
  php5-cli php5-common php5-curl php5-fpm php5-gd php5-mcrypt php5-mysqlnd php-pear php5 php5-devCode language: PHP (php)

Cela met à jour les paquets PHP qui dépendent de la nouvelle version.

Bientôt PHP7!

Au passage, l’installation demande quoi faire avec les fichiers de configuration : j’ai choisi de garder les miens, pour ne pas avoir à tout reconfigurer.

Je pense que je partirai sur une configuration de base lorsque l’on passera à PHP7, qui devrait enfin faire décoller les performances et dont la sortie est prévue le 15 novembre 2015.

Il ne reste plus qu’à redémarrer Apache et PHP :

service apache2 restart && service php5-fpm restart

Et voilà! Une mise à jour toute en douceur et sans accrocs.

Raspberry Pi: copier une image disque sur une carte SD photo

Raspberry Pi: copier une image disque sur une carte SD

rpi-sd

Dans le cadre de nos petits projets de domotique, Jac s’est dernièrement intéressé à Calaos, à installer sur un Raspberry Pi.

Calaos permet de créer une box domotique en utilisant un simple Raspberry Pi, ce qui peut-être une alternative économique aux box que l’on peut trouver dans le commerce.

Dans ce tutoriel, nous allons voir comment copier une image disque sur une carte SD, en prenant Calaos comme exemple mais le principe est le même pour n’importe quelle image ou distribution.

Téléchargement de Calaos

Calaos est disponible depuis le site officiel. Il suffit de télécharger le dernier fichier rpi-sdimg en date.

Copie de l’image disque sur une carte SD vierge

Il convient tout d’abord de copier l’image sur la carte SD mais il faut que celle-ci soit vierge et fraichement formatée, histoire d’éviter tout potentiel conflit ultérieur.

Formatage de la carte SD

Pour formater une carte SD, je lance Gparted et je formate la carte (vérifiez d’abord que vous avez bien sélectionné la carte SD) au format FAT32.

Démontage de la carte

Avant de lancer le processus de copie, il faut s’assurer que la carte SD n’est pas montée sur le système, grâce à la commande mount :

mount

Résultat:

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=218592,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=207248k,mode=755)
/dev/disk/by-uuid/32a56ab1-1849-49af-a77e-369a8017c22c on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=1037600k)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sda3 on /home type ext4 (rw,relatime,errors=remount-ro,data=ordered)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)
none on /sys/fs/cgroup type tmpfs (rw,relatime,size=4k,mode=755)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,name=systemd)
cgroup on /dev/cgroup/cpu type cgroup (rw,relatime,cpu,release_agent=/usr/local/sbin/cgroup_clean)
/dev/mmcblk0p1 on /media/matt/982C-483D type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0077,codepage=437,iocharset=utf8,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)Code language: JavaScript (javascript)

La dernière ligne, qui commence par /dev/mmcblk0p1, nous indique que la carte est montée sur notre système. Nous la démontons donc:

umount /dev/mmcblk0p1

Copie de l’image disque

L’image disque ne peut être copiée comme un simple fichier sur la carte SD. C’est comme une image disque que l’on grave : on doit monter un système de fichiers et copier toute une arborescence bien définie.

Heureusement, il existe une commande qui fait tout cela en une seule ligne, la commande dd:

dd if=calaos-image-raspberrypi-v2.0-20150215122010.rootfs.rpi-sdimg of=/dev/mmcblk0Code language: JavaScript (javascript)

Résultat:

540672+0 enregistrements lus
540672+0 enregistrements écrits
276824064 octets (277 MB) copiés, 129,386 s, 2,1 MB/s

Et voilà, l’image de CalaOS est maintenant copiée comme il faut sur notre carte SD.

Serveur dédié : activer l'IP canonique du serveur sous Apache photo

Serveur dédié : activer l’IP canonique du serveur sous Apache

J’ai récemment procédé à quelques tests sur le serveur et me suis rendu compte que l’adresse IP du serveur ne renvoyait pas vers le nom de domaine : la canonisation de l’IP serveur n’était pas activée.

ip-canonicalization-normalization

Mise en forme canonique de l’IP du serveur

La mise en forme canonique (canonicalization en anglais) est le procédé par lequel on convertit des données qui ont plusieurs représentations possibles vers un format standard.

Dans le cas des URL, cela va nous permettre d’associer une page à une seule adresse. Cela aide les moteurs de recherche à indexer uniquement les pages sur lesquelles se trouvent les contenus et évite le doublons d’indexation pénalisants.

Au cours d’un test, j’ai donc obtenu ce message :

[quote class=”center”]Your site’s IP does not redirect to your site’s domain name. This could cause duplicate content problems if a search engine indexes your site under both its IP and domain name.[/quote]

En soi, cela n’est pas gênant mais cela signifie que l’on peut accéder au site à partir de l’adresse IP et qu’il n’y a pas de redirection vers le nom de domaine.

Cela me dérange un peu donc nous allons voir comment l’activer en quelques secondes sous Apache.

Editer le VirtualHost par défaut

Sous Apache, il existe les VirtualHost que vous avez défini pour vos sites mais également un VirtualHost par défaut, activé par défaut.

C’est ce VirtualHost que nous allons éditer:

nano /etc/apache2/sites-available/defaultCode language: JavaScript (javascript)

On y garde simplement ceci :

    ServerAdmin webmaster@localhost
    DocumentRoot /
    
	Options FollowSymLinks
	AllowOverride None
	RewriteEngine On

	# redirect all domains to skyminds.net
	RewriteCond %{HTTP_HOST} !^((.*)\.skyminds\.net)?$
	RewriteRule (.*) https://www.skyminds.net/$1 [R=301,L]

	# Enforce www and canonicalization
	RewriteCond %{HTTP_HOST} !^www\.skyminds\.net [NC]
	RewriteRule (.*) https://www.skyminds.net/$1 [R=301,L]

	# IP to domain
	RewriteCond %{HTTP_HOST} ^xxx\.xxx\.xxx\.xxx
	RewriteRule (.*) https://www.skyminds.net/$1 [R=301,L]Code language: PHP (php)

Il vous suffit de remplacer mon domaine (skyminds.net) avec le votre et de modifier l’adresse IP de votre serveur.

Lire la suite

Bash : réparer les tables MySQL en cas de crash photo

Bash : message “there are stopped jobs” à la fermeture du terminal

Bash

Ce week-end, j’effectue quelques petites modifications sur les fichiers du serveur et, voulant annuler une faute de frappe, j’effectue un Ctrl + Z, par habitude.

Ma fenêtre d’édition du fichier se ferme. Surpris, je la rouvre puis continue mon travail. Au moment de fermer ma session SSH, lors du traditionnel exit, j’obtiens ce message :

logout
There are stopped jobs.

Et là, pas moyen de quitter la session proprement. Cela est dû à ce fameux Ctrl + Z.

Bash et les tâches de fond

Dans Bash, un “stopped job” est une tâche qui a été reléguée temporairement en tâche de fond. Elle n’est pas active mais continue de consommer des ressources comme la mémoire système.

Cette tâche n’étant pas attachée à notre fenêtre de terminal, elle n’envoie rien en sortie et ne reçoit rien en entrée de la part de l’utilisateur.

Reprendre la main sur le shell

Pour savoir quelles sont les tâches de fond en cours sur le système, il suffit de taper la commande jobs:

jobs

Cela liste toutes les tâches reléguées au second plan.

Ensuite, il suffit de taper la commande fg (foreground) pour basculer la tâche de fond vers notre fenêtre active. Si nous voulons basculer vers la première tâche, nous entrons :

fg 1

Il suffit alors de quitter proprement la tâche pour pouvoir ensuite fermer notre session.

vlc-son-coupe

Linux : corriger le son saccadé sous VLC lors de la lecture de fichiers audio

logo-vlc

Aujourd’hui, sur ma machine tournant sous Ubuntu, je me suis aperçu qu’il m’était impossible de lire de la musique avec VLC : le son de mes fichiers était saccadé, coupant l’écoute toutes les deux secondes avant de s’éteindre complètement.

Le module de sortie audio de VLC

Si cela vous arrive, et avant d’appeler le marabout, voici une solution pour remédier ce problème:

  1. Ouvrez VLC > Outils > Préférences
  2. Sélectionnez ensuite Audio > Sortie
  3. Changez maintenant le module de sortie pour Automatique, Pseudo-sortie audio, désactivé.
  4. Validez et enregistrez les réglages de VLC.

En images

Voici une capture d’écran du réglage à modifier :

vlc-son-coupe

N’hésitez pas à essayer plusieurs modules de sortie – chez moi, cela a réglé le problème immédiatement.

Serveur dédié : installer la dernière version d'OpenSSL sous Debian photo

Serveur dédié : installer la dernière version d’OpenSSL sous Debian

Aujourd’hui, on s’intéresse à la mise à jour d’OpenSSL sur un serveur Debian, en utilisant les dépôts sid.

Cela va nous permettre d’installer la dernière mise à jour d’OpenSSL, responsable du chiffrement des connexions de plusieurs services (serveur de fichier, serveur mail, serveur DNS…), pour plus de sécurité sur le serveur.

Ce tutoriel ne prend que quelques minutes et quatre étapes mais il faut bien le suivre jusqu’au bout.

Vérification de la version d’OpenSSL

On commence par vérifier la version d’OpenSSL installée sur notre Debian, pourtant à jour :

openssl version

résultat :

OpenSSL 1.0.1e 11 Feb 2013Code language: CSS (css)

Ouch! Ah oui, ça date un peu! Vérifions les versions disponibles :

apt-cache policy openssl

résultat :

openssl:
  Installed: 1.0.1e-2+deb7u14
  Candidate: 1.0.1e-2+deb7u14
  Version table:
 *** 1.0.1e-2+deb7u14 0
        500 http://security.debian.org/ wheezy/updates/main amd64 Packages
        100 /var/lib/dpkg/status
     1.0.1e-2+deb7u13 0
        500 http://mirror.ovh.net/debian/ wheezy/main amd64 PackagesCode language: JavaScript (javascript)

Nous avons la dernière version stable qui correspond aux dernières mises à jour de notre distribution mais c’est loin d’être la dernière version disponible.

Mise à jour de nos dépôts avec la version sid (unstable)

Nous allons tous simplement installer la dernière version d’OpenSSL qui se trouve dans les dépôts sid, réputés instables car non-testés de manière exhaustive.

On édite la liste de nos dépôts :

nano  /etc/apt/sources.listCode language: PHP (php)

et on y ajoute les dépôts sid :

deb http://ftp.debian.org/debian sid main
deb-src http://ftp.debian.org/debian sid mainCode language: JavaScript (javascript)

On met à jour nos dépôts:

apt-get updateCode language: JavaScript (javascript)

On vérifie les versions d’OpenSSL disponibles :

apt-cache policy openssl

Résultat :

openssl:
  Installed: 1.0.1e-2+deb7u14
  Candidate: 1.0.1k-1
  Version table:
     1.0.1k-1 0
        500 http://ftp.debian.org/debian/ sid/main amd64 Packages
 *** 1.0.1e-2+deb7u14 0
        500 http://security.debian.org/ wheezy/updates/main amd64 Packages
        100 /var/lib/dpkg/status
     1.0.1e-2+deb7u13 0
        500 http://mirror.ovh.net/debian/ wheezy/main amd64 PackagesCode language: JavaScript (javascript)

Pas mal : nous pouvons passer de la version 1.0.1e à la version 1.0.1k et donc bénéficier de tous les mises à jour récentes d’OpenSSL.

Lire la suite

Serveur dédié : retirer Varnish, devenu inutile avec HTTPS photo

Serveur dédié : retirer Varnish, devenu inutile avec HTTPS

J’ai vraiment aimé jouer avec Varnish.

Le problème, c’est qu’en passant l’intégralité du site en HTTPS, il m’est devenu inutile.

Varnish est incompatible avec HTTPS et ne le sera probablement jamais puisque les connexions chiffrées ne doivent, par définition, jamais être mises en cache.

Par conséquent, j’ai décidé de le retirer temporairement du serveur : cela me fera un service de moins à gérer.

Notez que je ne le désinstalle pas, je m’assure juste qu’on ne fait pas appel à lui. Cela me permettra de le remettre en route si jamais j’héberge un jour un site en HTTP simple.

Ce tutoriel part du principe que vous avez suivi les tutoriels précédents et que votre serveur tourne avec Apache et Varnish comme reverse-proxy.

Configuration d’Apache

On doit éditer plusieurs fichiers :

1. le fichier /etc/apache2/ports.conf :

 nano /etc/apache2/ports.conf 

On remet les valeurs par défaut et on écoute sur le port 80 :

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

# SkyMinds.Net
# Quand Varnish est actif
# NameVirtualHost *:8080
# Listen 8080

# Apache only
NameVirtualHost *:80
Listen 80


    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to 
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.

   NameVirtualHost *:443
   Listen 443



    Listen 443
Code language: PHP (php)

2. les fichiers de chacun de nos VirtualHosts :

nano /etc/apache2/sites-available/www.skyminds.net
nano /etc/apache2/sites-available/static.skyminds.netCode language: JavaScript (javascript)

On écoutait sur le port 8080, on se remet sur le port 80 :

#<virtualhost *:8080="">
<virtualhost *:80="">
Code language: HTML, XML (xml)

Lire la suite

HTML5 : corriger l'erreur

HTML5 : corriger l’erreur “The frameborder attribute on the iframe element is obsolete. Use CSS instead.”

Le problème : l’attribut HTML frameborder

HTML5-logo

Si vous obtenez l’erreur :
“The frameborder attribute on the iframe element is obsolete. Use CSS instead.”

sur le validateur HTML5 du W3C, c’est que le code de votre page HTML5 contient un élément <iframe> avec un attribut frameborder comme dans l’exemple suivant :

<iframe frameborder="0" />Code language: HTML, XML (xml)

Solution CSS: la propriété border

Comme l’attribut frameborder n’est plus présent dans HTML5, il faut utiliser la propriété CSS border en CSS à la place de l’attribut HTML frameborder:

<iframe style="border: 0;" />Code language: HTML, XML (xml)

Solution HTML : l’attribut seamless

Avec HTML5, il est possible de résoudre le problème en ajoutant l’attribut seamless à l’iframe:

<iframe seamless />Code language: HTML, XML (xml)

L’apparence du texte et des éléments de présentation de la page doivent être gérés par CSS et non par le code HTML, c’est plus propre et surtout plus simple à gérer.