hourglass

Serveur dédié : optimiser toutes les images JPG et PNG avec OptiPNG et JpegOptim

Je classe volontairement cet article dans la série Serveur dédié, étant donné que nous allons utiliser la ligne de commande exclusivement. Si vous souhaitez faire la même chose sur votre machine personnelle, il vous suffit d’utiliser Trimage (qui en plus possède une GUI).

hourglass

Si vous possédez un site, blog ou une galerie d’images, il peut être très intéressant d’optimiser toutes vos images d’un seul coup et ce, de manière lossless : chargement plus rapide des pages et moindre consommation de bande passante.

Sous Linux, il existe plusieurs programmes pour le faire. Personnellement, j’ai choisi OptiPNG (pour optimiser les PNG) et JpegOptim (pour optimiser les JPG).

L’installation et la compression de vos répertoires d’images prend à peine quelques minutes.

Installation d’OptiPNG et JpegOptim

On installe nos deux paquets :

apt-get install jpegoptim optipngCode language: JavaScript (javascript)

et on RTFM :

man jpegoptim

et

man optipng

Optimisation des JPG

On navigue dans notre répertoire images et on fait une estimation des gains. Avant de commencer, vérifiez que vous avez la dernière version de jpegoptim et installez manuellement la dernière version des dépôts Sid.

Commençons par les JPG :

jpegoptim -n -t *.jpgCode language: CSS (css)

-n permet de simuler l’optimisation.
-t permet de calculer l’espace gagné

Résultat :

Average compression (2730 files): 0.95% (452k)Code language: CSS (css)

Cela peut sembler peu mais je compresse toutes mes images avant de les mettre sur le web. Visiblement, quelques unes sont passées au travers du filet !

Lire la suite

Serveur dédié : création d'une seedbox avec Transmission photo

Serveur dédié : création d’une seedbox avec Transmission

transmission-icon

Aujourd’hui, on apprend comment monter une seedbox sur un serveur dédié avec Transmission.

Une seedbox est un serveur privé dédié au téléchargement et à l’émission de fichiers, utilisant le protocole BitTorrent, connecté à des réseaux à très haut débit symétrique, souvent à 100 MBits/s et plus.

Les fichiers sont envoyés à la Seedbox par les autres utilisateurs du réseau BitTorrent, et de là ils peuvent être récupérés depuis un ordinateur personnel, à la vitesse maximale de sa connexion (ADSL, fibre optique, 3G…) et ceci par les protocoles FTP, HTTP, SFTP, rsync, SSH.

Etape 1 : installation de Transmission

Sur le serveur, dans le terminal, on installe Transmission :

apt-get install transmission-daemonCode language: JavaScript (javascript)

Le serveur se lance dès l’installation, on l’arrête :

/etc/init.d/transmission-daemon stop

Etape 2 : configurer Transmission

On édite sa configuration :

nano /etc/transmission-daemon/settings.json

Eléments à modifier selon votre configuration :

  • “download-dir”: “/home/files”,
  • “incomplete-dir”: “/home/files/tmp”,
  • “rpc-password”: “votre-mot-de-passe”,
  • “rpc-username”: “votre-login”,
  • “rpc-whitelist”: “254.254.254.254”,

Le mot de passe est hashé au redémarrage du serveur, vous pouvez le rentrer en clair.

Le serveur tourne par défaut sur le port 51413 et le webadmin sur le port 9091. Pensez à whitelister votre adresse IP.

Lire la suite

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

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

Bash Il arrive que parfois une table SQL soit complètement plantée, ce qui peut bloquer l’accès à la base de données et donc l’accès au site.

Pour éviter cela, j’ai écrit un petit script bash qui me permet de stopper le serveur MySQL, procéder à la réparation de toutes les tables de toutes les bases de données puis relancer le serveur MySQL, Apache et Varnish.

#!/bin/sh
# MySQL Auto-Repair
# Written by Matt - skyminds.net

# stop the MySQL server
/etc/init.d/mysql stop

# check for errors
myisamchk /var/lib/mysql/*/*.MYI

# ask permission to repair
read -p "Repair tables ? (y/n)" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
	# repair everything
	myisamchk -r /var/lib/mysql/*/*.MYI

	# restart servers
	/etc/init.d/mysql restart
	/etc/init.d/apache2 restart
	/etc/init.d/varnish restart
else
	/etc/init.d/mysql restart
fi

C’est le genre de petit fichier bash à garder au frais sur le serveur, facile à lancer en SSH depuis n’importe quel terminal en cas de besoin.

Linux : vider un fichier de son contenu avec la commande truncate photo

Linux : vider un fichier avec truncate

truncate

De temps en temps, il peut être utile de pouvoir effacer le contenu d’un fichier qui prend de l’embonpoint, comme un fichier de log par exemple.

Dans ce cas, vous pouvez lancer la commande truncate sous linux dans un terminal :

truncate -s 0 /home/skyminds/error.log

L’argument -s 0 signifie que l’on réduit sa taille (size) à zéro. Simple et efficace !

fireofx-aurora

Ubuntu : installer la dernière version de Firefox

Sur ma machine principale, j’utilise principalement Firefox parce que j’y ai mes habitudes : passwords, bookmarks, extensions. Or, je tourne sous 10.10 parce que j’aime bien Gnome et que je ne veux pas passer à Unity. Bref, je suis resté en 10.10 et en 10.10, on a le droit qu’à Firefox 12 !

fireofx aurora

Voici donc comment mettre Firefox à jour sur une “vieille” Ubuntu.

Etape 1 : vérification du fichier /etc/apt/sources.list

On commence par vérifier que le fichier /etc/apt/sources.list ne contient pas d’entrées obsolètes ni de sources externes pour l’installation de firefox (genre mozilla-daily-builds etc) :

sudo nano /etc/apt/sources.list

Etape 2 : ajout du dépôt firefox-aurora

Nous allons y ajouter le dépôt firefox-aurora :

deb http://ppa.launchpad.net/ubuntu-mozilla-daily/firefox-aurora/ubuntu/ lucid main 
deb-src http://ppa.launchpad.net/ubuntu-mozilla-daily/firefox-aurora/ubuntu/ lucid main 

Lire la suite

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

Bash : supprimer tous les fichiers et sous-répertoires d’un répertoire

Bash

L’autre jour, je voulais faire un peu de ménage dans les logs mod_security du serveur dont le répertoire commençait à prendre de l’ampleur.

Je me suis donc demandé comment supprimer tous les fichiers et sous-répertoires d’un répertoire.

Je pensais m’en sortir avec un simple rm /dossier mais en fait la commande est un peu plus complexe. Il faut chercher tout ce qui appartient à ce répertoire avec find puis supprimer ce qui se trouve à sa racine.

Voici un exemple :

# supprime tous les fichiers et sous-dossiers du répertoire /home/logs/
find /home/logs/ -mindepth 1 -deleteCode language: PHP (php)

Si vous voulez juste voir la liste des fichiers et répertoires qui vont être supprimés, lancez la commande sans l’argument -delete :

# affiche la liste de tous les fichiers et sous-dossiers du répertoire
find /home/logs/ -mindepth 1Code language: PHP (php)

Si vous souhaitez supprimer non seulement les fichiers et sous-répertoires mais aussi le répertoire mentionné, omettez l’argument -mindepth 1

# supprime tous les fichiers et sous-dossiers ET le répertoire /home/logs/
find /home/logs/ -deleteCode language: PHP (php)

Lire la suite

Transférer des fichiers d'un serveur à un autre avec rsync sous Linux photo 1

Rsync : résoudre l’erreur “is your shell clean?”

Lors de l’utilisation de la commande rsync, il est possible d’obtenir le message d’erreur suivant :

TERM environment variable not set.
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(173) [sender=3.0.7]Code language: CSS (css)
rsync logo

Il s’agit la plupart du temps du fichier /~.bashrc qui n’est pas propre puisqu’il renvoie des informations au terminal.

Cela peut être dû à une commande qui donne des informations sur la date ou le système ou toute autre commande qui se lance à la connexion.

Rsync ne s’attend pas à cela et bloque.

Lire la suite

Transférer des fichiers d'un serveur à un autre avec rsync photo

Transférer des fichiers d’un serveur à un autre avec rsync sous Linux

Il arrive très souvent que l’on ait besoin de transférer des fichiers rapidement, d’un serveur à un autre par exemple.

Bien sûr, on peut utiliser le FTP mais il y a beaucoup plus rapide et efficace : je vous présente rsync.[no_toc]

Synchronisation distante

rsync logo

rsync (remote synchronization ou “synchronisation distante” en français) est un logiciel libre de synchronisation de fichiers (disponible sous toutes les plateformes).

La synchronisation est unidirectionnelle, c’est-à-dire qu’elle copie les fichiers de la source en direction de la destination.

rsync est donc utilisé pour réaliser des sauvegardes incrémentales ou pour diffuser le contenu d’un répertoire de référence.

Je vous donne ici les deux commandes que j’utilise quotidiennement lors de ma gestion des serveurs.

Copier tous les fichiers d’un répertoire du serveur A dans le répertoire équivalent du serveur B

Premièrement, connectez-vous via SSH à votre serveur A. Voici la commande :

/* Copie tous les fichiers de /home/website/ vers serveur B. */
rsync --ignore-existing --progress /home/movies/*.* matt@serveurB.net:/home/movies/Code language: PHP (php)

Explications:

  • --ignore-existing signifie que si le fichier existe déjà, on ne le remplace pas.
  • --progress montre la vitesse du transfert et les noms des fichiers transférés.
  • matt@serveurB.net est le nom du login SSH (matt) associé à l’adresse du serveur B (IP ou nom de domaine).
  • /home/website/ : répertoire vers lequel copier les fichiers.

En lançant cette commande, je récupère sur le serveur B tous les fichiers qui se trouvent dans le répertoire /home/movies/ du serveur A. Je ne remplace pas les fichiers existants : étant donné que je ne synchronise qu’avec rsync, ce serait inutile.

Lire la suite

WordPress : récupérer la liste emails des membres et commentateurs photo

WordPress : retrouver le bouton “Publier”

Problème : plus de bouton “Publier” sous WordPress

wordpress_icon_blue Juste après la migration des bases MySQL, alors que je pensais que tout était bon, je vais sous WordPress pour raconter mes aventures et… plus de bouton “publier” mais un bouton “Soumettre à relecture” comme pour les guests ! Tout cela alors que je suis loggué comme admin, il y a un truc qui cloche.

Après avoir cherché un peu, il s’avère que j’ai copié directement les fichiers de bases de données mais que MySQL n’a pas les droits dessus. Du coup, toutes les tables sont en lecture seule, comme me l’a indiqué une petite requête simple :

Failed to save field : SQL alter table `wp_posts` modify `ID` bigint(20) unsigned not null default NULL auto_increment failed : Table 'wp_posts' is read only

Solution : attribuer les bases de données à mysql

Vous avez besoin de modifier les droits d’accès et d’écriture des fichiers de bases de données. Il faut soit se connecter à distance en SSH sur votre serveur ou en local sur votre machine et lancer la commande chown.

On se met donc dans le répertoire de travail de MySQL :

cd /var/lib/mysql/

et on attribue à l’utilisateur mysql les droits à nos bases de données :

chown -R mysql:mysql *

Lire la suite

DNS : résoudre l'erreur fatale "la liste des serveurs récupérée ne correspond pas à celle donnée" photo

DNS : résoudre l’erreur fatale “la liste des serveurs récupérée ne correspond pas à celle donnée”

Problème : ns.kimsufi.com ne semble pas être dans la liste des serveurs

Lors de l’appariement de votre nom de domaine au serveur et au cours d’un Zone-Check du domaine, vous pouvez tomber sur l’erreur suivante :

---- fatal ----
cohérence avec la liste des serveurs de noms donnée
f: La liste des serveurs récupérée ne correspond pas à celle donnée :

ns.kimsufi.com/2001:41D0:3:1C7::1

L’erreur étant fatale, il est nécessaire de la corriger pour que le nom de domaine pointe bien vers le bon serveur.

La solution : incrémenter le numéro de série du Start Of Authority (SOA)

La solution est très simple : il suffit d’incrémenter le numéro de série du Start Of Authority (SOA). A titre d’exemple :

; skyminds.net
$TTL    84600
@	IN	SOA	ksXXXXXX.kimsufi.com. root.skyminds.net. (
			2012040301   ; serial number : YYYYMMDDHH
			3600         ; refresh : 1h suffit
			1h           ; update retry
			4W           ; expiry
			84600        ; TTL )
Code language: PHP (php)

C’est la valeur 2012040301 (au format YYYYMMDDHH) qu’il suffit d’incrémenter. Ensuite, il ne vous reste plus qu’à relancer bind9 :

/etc/init.d/bind9 restart

Lire la suite

Migration de serveur : bonjour Kimsufi 750G photo

Migration de serveur : bonjour Kimsufi 750G

J’ai peu posté ces derniers jours et ce pour plusieurs raisons. Premièrement, il fait beau. Donc j’en profite, surtout qu’il fait aussi chaud qu’en mai-juin. Et deuxièmement, je viens de migrer le site sur un serveur plus puissant.

Migration entre deux serveurs

Il y a une grosse différence entre monter un serveur de A à Z, comme j’avais fait précédemment, et migrer données et programmes d’un serveur A à un serveur B.

L’important pour moi était de réutiliser au maximum mes configurations donc j’ai repris mes tutos un à un, tout en copiant les fichiers que j’avais précédemment créés ou édités sur le nouveau serveur.

Résultats ?

Et bien cela fonctionne très bien ! J’ai connu quelques mésaventures mais j’ai pris plein de notes donc il y a là de la matière pour quelques futurs articles. En gros le site a été indisponible pendant 1h samedi mais je pense que cela ne s’est pas trop vu.

Au niveau technique, on peut apprendre pas mal d’informations sur le processeur du serveur en lançant la commande :

less /proc/cpuinfo

L’ancien serveur était un Intel(R) Celeron(R) CPU 220 @ 1.20GHz et 2 Go de RAM.
Le nouveau serveur est un Intel(R) Core(TM)2 Quad CPU Q8300 @ 2.50GHz et 4 Go de RAM.

Lire la suite

vpn-icon

Linux : configurer un VPN avec VPNTunnel

vpn icon

Pour tout un tas de raison, il est temps pour nous de prendre un petit VPN, histoire de d’ajouter une couche de sécurité supplémentaire.

Stéphane nous avait déjà montré comment créer un réseau privé virtuel (VPN) sous Debian Lenny mais je voulais un service externe qui ne sollicitait pas le serveur du site.

J’ai essayé VPNTunnel pour 5 euros pendant un mois et comme le service m’a bien plu, je vous donne le petit tutoriel qui permet de configurer tout cela en moins de 10 minutes, sous Ubuntu.

Installation d’OpenVPN et des fichiers de configuration de VPNTunnel

On installe OpenVPN et ses dépendances :

sudo apt-get install openvpn network-manager-openvpn-gnome resolvconfCode language: JavaScript (javascript)

puis on crée le répertoire /etc/openvpn/keys:

sudo mkdir /etc/openvpn/keys

Sur le site de VPN Tunnel, deux fichiers sont à télécharger : Linux-confs.tar.gz et cert.zip. Dézippez les deux fichiers.

Après avoir tapé :

sudo nautilus

Il vous reste à :

  1. copier tous les fichiers *.conf dans /etc/openvpn/
  2. copier tous les certificats *.cert dans /etc/openvpn/keys

A ce stade, nous sommes presque prêts : il ne nous reste plus qu’à ajouter ces différentes configurations VPN au gestionnaire de connexion de Gnome.

Lire la suite