tutoriel | installer et configurer varnish avec apache

Article publiée le 23 Octobre 2013

Ayant beaucoup travaillé dans sur des environnements Web (LAMP) je me suis vite aperçu que soulager le plus possible les serveurs Web était ma principal préoccupation.

J’entends de plus en plus parler d’un projet du nom de Varnish qui est un reverse Proxy HTTP. Grâce à ça vous pourrez faire de la mise en cache pour soulager vos serveurs Web.

Voici un petit schéma explicatif:

Ce qui m’a le plus attiré dans cette outil est sa simplicité d’installation et son efficacité.

Les gens qui suivent mon blog ou me connaissent savent que je suis partisan des solution les plus simples à mettre en place.

Ci-dessous un tuto sur l’installation et la configuration de Varnish.

Votre environnement Lamp est déjà installé et configuré. Si vous avez besoin d’un tutoriel sur l’installation d’un tel environnement rendez vous ici:

http://journaldunadminlinux.fr/tutoriel-installation-dun-environnement-lamp-apache-php-mysql/

 

Installation sur une Debian/Ubuntu Server:

– Installez Varnish

apt-get install varnish

– Modifiez le port d’écoute de votre service apache

vi /etc/apache2/ports.conf (Et remplacez la ligne NameVirtualHost *:80  et Listen 80 par NameVirtualHost *:8080 et  Listen 8080)

– Editez le fichier /etc/varnish/default.vcl et checker:

backend default {
.host = « 127.0.0.1 »;
.port = « 8080 »;
}

– Editez le fichier de configuration /etc/default/varnish puis modifiez les lignes suivantes:

 

DAEMON_OPTS= »-a :6081 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -u varnish -g varnish \
             -S /etc/varnish/secret \
             -s file,/var/lib/varnish/varnish_storage.bin,1G »

par

DAEMON_OPTS= »-a :80 \
             -T localhost:8000 \
             -f /etc/varnish/default.vcl \
             -u varnish -g varnish \
             -S /etc/varnish/secret \
             -s file,/var/lib/varnish/varnish_storage.bin,1G »

(Situé au niveau du commentaire « Alternative 2 »)

puis modifiez VARNISH_LISTEN_PORT=6081 par VARNISH_LISTEN_PORT=80 et VARNISH_ADMIN_LISTEN_PORT=6082 par VARNISH_ADMIN_LISTEN_PORT=8000

 

Installation sur une Centos/RedHat:

 

– Installez Varnish

yum install varnish

– Modifiez le port d’écoute de votre service apache

vi /etc/httpd/conf/httpd.conf (Et remplacez la ligne Listen 80 par Listen 8080)

– Éditez le fichier /etc/varnish/default.vcl et checker:

backend default {
.host = « 127.0.0.1 »;
.port = « 8080 »;
}

– Éditez le fichier de configuration /etc/sysconfig/varnish puis modifiez les lignes suivantes:

DAEMON_OPTS= »-a :6081 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -u varnish -g varnish \
             -S /etc/varnish/secret \
             -s file,/var/lib/varnish/varnish_storage.bin,1G »

par

DAEMON_OPTS= »-a :80 \
             -T localhost:8000 \
             -f /etc/varnish/default.vcl \
             -u varnish -g varnish \
             -S /etc/varnish/secret \
             -s file,/var/lib/varnish/varnish_storage.bin,1G »

(Situé au niveau du commentaire « Alternative 2 »)

puis modifiez VARNISH_LISTEN_PORT=6081 par VARNISH_LISTEN_PORT=80 et VARNISH_ADMIN_LISTEN_PORT=6082 par VARNISH_ADMIN_LISTEN_PORT=8000

 

 Enjoy 😉




Créer une interface virtuelle sous Debian et CentOS

Article publiée le 22 Octobre 2013

Ce petit article vous explique la marche à suivre pour créer des interfaces virtuelles sous Linux.

L’intérêt de cette procédure réside dans le fait que vous pouvez ajouter plusieurs IP sur une même interface.

 

Sous RedHat/Centos:

– Rendez vous dans le répertoire /etc/sysconfig/network-scripts

cd /etc/sysconfig/network-scripts

– Créez un nouveau fichier de configuration d’interface

touch eth0:1

Le « 0 » avant le « : » correspond au numéro de l’interface physique sur laquelle votre interface virtuel va passer
– Editez votre fichier de configuration et rajoutez les lignes suivantes

GATEWAY=<adresse de votre passerelle>
TYPE=Ethernet
DEVICE=<nom de votre interface réseau>
BOOTPROTO=none
NETMASK=<votre masque de sous réseau>
IPADDR=<votre adresse IP>
USERCTL=no
IPV6INIT=no
ONPARENT=yes

 

Exemple:

– Activer votre interface réseau:

ifup  <nom de votre interface>

 

Si vous obtenez ce message « RTNETLINK answers: File exists »:  Redémarrez le service network

service network restart

(C’est ce que j’ai fais quand j’ai obtenus cette erreur)

 

Sous Debian/Ubuntu Server

– Editez le fichier /etc/network/interface

– Rajoutez votre nouvelle interface virtuelle:

 

auto eth0:1
iface eth0:1 inet static
address <adresse ip>
netmask <masque de sous réseau>
gateway <votre passerelle>

Le « 0 » avant le « : » correspond au numéro de l’interface physique sur laquelle votre interface virtuel va passer

– Montez votre interface

ifup <nom de votre interface>

 




Réduire la taille du Swap

Article publiée le 21 Octobre 2013

 

Il peut arriver qu’un jour vous vous soyez enflammer sur la taille du swap lors de la mise en place d’une de vos machine 😉

Ci dessous une petite astuce pour réduire la taille de celle ci (toutes ces opérations doivent-être effectuées en tant que root):

 

– Tous d’abord checkez la taille de votre swap:

free -m

– Ensuite afficher la liste de vos lv pour avoir le nom de votre lv swap:

lvdisplay

– Désactiver votre swap (en vous assurant que votre machine ne soit pas en train de swaper):

swapoff -a

– Réduisez la taille du lv de votre swap:

lvreduce -L <la nouvelle taille de votre swap> <le chemin de votre LV>

Exemple:

– Récréez votre swap

mkswap <chemin du LV de votre Swap>

 

– Et enfin réactivez votre Swap

swapon -a

– Checkez la nouvelle taille de votre swap

free -m

 

 

 




Afficher la liste des processus qui utilisent le SWAP

Article publiée le 9 Octobre 2013

Il y a quelque jour j’ai eu un gros problème de SWAP sur une de mes machines Linux. Mon collègue a trouvé un script très utile qui permet d’afficher tous les processus utilisant le SWAP:

 

 

#!/bin/bash
# Get current swap usage for all running processes
# Usage: ./getswap.sh | sort -n -k 5
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
PROGPATH=`cat /proc/$PID/cmdline`
for SWAP in `grep Swap $DIR/smaps 2&gt;/dev/null| awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME - $PROGPATH)"
let OVERALL=$OVERALL+$SUM
SUM=0

done
echo "Overall swap used: $OVERALL"

 

 

Si vous voulez connaitre les processus qui SWAP le plus:

./getswap.sh | sort -n -k 5

 

Exemple de résultat du scripts.:

Enjoy 🙂

Ce script ne fonctionne que pour les distributions RedHat/Centos/Fedora. Une petite modif sera certainement nécessaire si vous êtes utilisateurs d’une autre distrib 😉

 




Activer ou désactiver SELinux

Article publiée le 4 Octobre 2013

 

SELinux est un module permettant une gestion très fine de la sécurité de votre système d’exploitation.

Il est installé et activé par défaut sur les distributions de la famille de RedHat.

Ce module peut très vite vous causer des problèmes.

Je conseille à tous de le désactiver dés que vous installer un nouveau serveur RedHat/Centos/etc…

Pour cela éditez le fichier /etc/selinux/config

vi /etc/selinux/config

Puis modifier le champs « SELINUX=enforcing » par « SELINUX=disabled »




Tutoriel | Installation d’un environnement LAMP (Apache, PHP, Mysql)

Article publiée le 4 Octobre 2013

Mise à jour le 5 Octobre 2013

 

En parcourant une fois de plus les forums je me suis aperçus que beaucoup d’admins débutants avaient des difficultés pour installer un environnement LAMP (Apache, PHP, Mysql).

Ci-dessous un tutoriel complet sur l’installation d’un environnement LAMP avec quelques astuces en plus!

Ce tutoriel est adapté aussi bien pour les utilisateurs de Centos/RedHat que pour les utilisateurs de Debian/Ubuntu Server

 

1) Installation Apache

Sous Debian:

apt-get install apache2

Sous Redhat/Centos:

yum install httpd

service httpd start

Attention sous RedHat/Centos, n’oubliez pas de désactiver le firewall ou de le paramétrer en conséquence. (service iptables stop && chkconfig iptables off)

Vérifiez que les services apaches fonctionnement correctement en vous connectant via votre navigateur ) à l’ip ou le dns de votre machine.

Cette page devrait être affichée (pour les utilisateurs de Debian):

Pour les utilisateurs de Centos/RedHat:

 

2) Installation de PHP

Sous Debian

apt-get install php5 php5-mysql

Sous Centos/RedHat:

yum install php*

Redémarrez votre service apache:

/etc/init.d/apache2 restart (Sous Debian)

service httpd restart (Sous RedHat)

Sous debian j’ai déjà remarqué que le module php d’apache pouvait ne pas s’activer automatiquement ce qui fait que vos pages PHP ne seront pas interprétées!

Pour résoudre ce problème: a2enmod php && /etc/init.d/apache2 restart

 

3) Installation de Mysql

Sous Debian:

apt-get install mysql-server

Une interface peut apparaître afin de vous demander d’entrer le mot de passe root de Mysql

Sous Redhat/Centos

yum install mysql-server

Démarrer le service Mysql: service mysqld start

 

Petite parenthèse:

Certain voudrons certainement changer l’emplacement du  tablespace (la ou sont stocké vos datas), pour cela:

– Créez le répertoire qui contiendra les tablespace de Mysql : mkdir <votre repertoire>

– Changez les droits de ce répertoire chown mysql:mysql <repertoire>

– Modifiez le fichier my.cnf en modifiant « datadir=/var/lib/mysql » par votre nouveau répertoire.

(Ce fichier se situe dans le répertoire /etc/ sous Centos/RedHat et dans /etc/mysql sous Debian).

 

Pour initialiser le mot de passe root de Mysql (ce que je recommande fortement pour des raisons évidentes de sécurité)

On vérifie:

 3) PHPMyadmin

Si vous n’êtes pas très bon en base de donnée ou que vous avez tout simplement un client allergique à la ligne de commande je vous suggère d’installer PHPMyAdmin.

Pour ceux qui ne connaissent pas PHPMyadmin est une interface Web d’administration de Mysql.

Pour l’installer sous debian:

apt-get install phpmyadmin

Ce message devrait apparaître

Avec la barre d’espace sélectionnez apache2 puis sélectionnez OK

Sélectionnez « oui » et valider avec la touche entrer

Entrez le mot de passe root de mysql puis validez.

 

Sous RedHat/Centos ou installation manuelle:

Téléchargez phpmyadmin depuis le site: http://www.phpmyadmin.net/home_page/index.php

– Dezippez l’archive: unzip -e <archive>

– Créez un répertoire dans le répertoire web par défaut d’apache (/var/www ou /var/www/html suivant les distributions)

mkdir <répertoire web d’apache>/phpmyadmin

– Copiez tout le contenu dans ce répertoire

 

Se connecter à PHPMyAdmin

Une fois l’installation terminée connectez vous via votre navigateur à l’url: <IP ou DNS de votre serveur>/phpmyadmin

Connectez vous en indiquant les identifiant root de Mysql

 

Petite  aperçu de phpmyadmin:

 

 

4) Quelque petits tuyaux!

Cette partie de ce tutoriel donne des réponses en vrac à des question récurrentes que je retrouve sur la plupart des forums:

Comment modifier le port d’écoute d’apache?

Sous RedHat Centos: modifiez le fichier /etc/httpd/conf/httpd.conf puis cherchez « Listen 80 » et modifiez la valeur 80 par le port de votre choix.

Sous Debian/Ubuntu: modifiez le fichier /etc/apache2/ports.conf puis cherchez « Listen 80 » et modifiez la valeur 80 par le port de votre choix.

 

Exemple de virtualhost:

 

<VirtualHost 1.1.1.3:80>
ServerName monsite.com
ServerAdmin monmail@monmail.com

DocumentRoot /monsite
DirectoryIndex index.php index.html index.htm

ErrorLog /var/log/apache2/monsitelog
CustomLog /var/log/apache2/monsite.log combined

<Directory /home/monsite/monsite/>
Options -Indexes
AllowOverride All
Order allow,deny

# Restriction par sous réseau pour plus de securité!

Allow from 192.168.0.0/24

</Directory>

php_value error_log /home/site/log/php/monsite.log
php_value warning_log /home/site/log/monsite.log
php_value log_errors On
php_value register_globals Off

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* – [F]
</VirtualHost>

 

 

Exemple de virtualhost avec SSL:
<VirtualHost 1.1.2..2:443>
ServerName monsite.com
ServerAdmin monmail@monmail.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem

DocumentRoot /home/monsite/site

DirectoryIndex index.php index.html

LogLevel info

ErrorLog /var/log/apache2/error.log

CustomLog /var/log/apache2/access.log combined

 

<Directory /home/monsite/site/>

ErrorDocument 404 /index.php?currentPage=pageUnfound
Options FollowSymLinks Indexes MultiViews

AllowOverride All

Order allow,deny

allow from all

</Directory>

 

php_value error_log /home/monsite/log/php/error.php.log

php_value warning_log /home/monsite/log/php/warning.php.log

php_value log_errors On

php_value register_globals Off

ServerSignature On

Options FollowSymLinks
</VirtualHost>

 

 

Si vous avez d’autres questions n’hésitez pas à me les envoyer via mon mail dans la rubrique « me contacter » ou  en commentant cette article.