Installation d’un serveur mail SMTP Postfix avec PostgreSQL sous CentOS

Nous allons installer un serveur SMTP en utilisant Postfix, ce qui permettra l’envoi de mail depuis ce serveur. Ce petit guide pour permettra de pouvoir envoyer et recevoir des emails sur votre propre serveur. Par la suite, il sera très intéressant d’installer un serveur IMAP (article à venir) pour pouvoir consulter les mails reçus.
Nous allons stocker les domaines, comptes utilisateurs et aliases dans une base de données gérée par PostgreSQL, pour pouvoir créer de nouveaux compte extrêmement facilement.

Installation de Postfix

Avant tout, nous allons installer postfix depuis les paquets de CentOS mais en utilisant le dépôt CentOS Plus qui nous permet d’avoir un postfix compilé avec le support de MySQL et PostgreSQL, ce qui nous intéresse ici.

Éditez donc le fichier /etc/yum.repos.d/CentOS-Base.repo. Pour activer le dépôt CentOS Plus, changez la ligne suivante dans la partie précédentée par [centosplus]:

[centosplus]
...
enabled=1
...

Ajoutez dans [base] et [updates] la ligne suivante:

exclude=postfix-*

Cette ligne permet de forcer yum à utiliser le dépôt CentOS Plus pour les paquets postfix.

Ensuite, il nous reste simplement à installer Postfix grâce à yum:

# yum install postfix

Par mesure de précaution, on désactive sendmail, s’il est activé.

# chkconfig sendmail off
# service sendmail stop

On choisi de démarrer postfix en même temps que le système:

chkconfig postfix on

On créé ensuite le répertoire qui contiendra les mails:

# mkdir /home/mail/{data,queue,spool}
# chown -R postfix:postfix /home/mail

Continue reading

Monitoring nginx avec Zabbix

En complément de l’article sur le monitoring de PostgreSQL avec Zabbix, voici un nouvel article pour monitorer un serveur Nginx grâce à l’agent Zabbix.

Pour cela, nous avons besoin d’avoir ZTC (Zabbix Template Collection) d’installé: voyez le premier chapitre de l’article précédent sur ZTC.

Configuration d’Nginx

Pour pouvoir récupérer des statistiques sur le serveur Nginx, vous devez l’avoir compilé avec le module HTTPStubStatus, c’est-à-dire avec l’option --with-http_stub_status_module.

Ensuite, il y a uniquement à configurer l’accès aux statuts depuis l’hôte local de Nginx. Si vous n’avez pas créé d’hôte local pour Nginx, il vous suffit d’en créer un.
Ensuite, ajoutez ces quelques lignes de configuration suivantes dans votre server local:

    location /server-status {
        stub_status on;
        access_log off;
    }

Elle permettent de dire qu’à l’adresse http://localhost/server-status, Nginx doit confier la réponse HTTP au module HTTPStubStatus, qui fournira des statistiques sur le serveur qui seront récupérées par l’agent.

N’oubliez pas de recharger la configuration du serveur HTTP:

# /etc/init.d/nginx reload

Vous pouvez vérifier la configuration depuis votre serveur grâce à wget:

$ wget http://localhost/server-status

Si le code réponse est bien 200, la configuration est correct.

Configuration de l’agent Zabbix

Avec la même configuration de l’agent Zabbix décrit dans l’article sur PostgreSQL, nous allons activer le template pour Nginx:

# cd /etc/zabbix-agent.d/enabled
# ln -s ../available/pgsql.conf pgsql.conf

Maintenant, nous allons modifier la configuration de l’agent ZTC pour Nginx, à savoir le fichier /etc/ztc/nginx.conf. Remplacez les lignes suivantes:

host=localhost
port=80

L’agent ZTC est maintenant configuré, nous allons le tester:

$ /opt/ztc/bin/nginx.py requests

Vous devriez avoir comme retour un nombre supérieur à zéro. Si c’est le cas, tout fonctionne !

Importation dans le serveur Zabbix

Pour finir, importez le modèle Nginx de ZTC (vous trouverez tous les modèles dans le dépôt ZTC), que vous pouvez télécharger ici:

Maintenant, configurez le(s) hôte(s) que vous avez configuré(s) comme ayant le modèle Template_app_nginx. Vous aurez ainsi les statistiques Nginx!

Monitoring PostgreSQL avec Zabbix

Avant tout, il faut installer ZTC (Zabbix Template Collection), qui contient un grand nombre de templates (côté agent) Zabbix qui récupèrent des données sur différentes applications, comme Apache, Nginx, MySQL, PostgreSQL, Slony, …

Note: si vous n’avez pas installé Zabbix, vous pouvez lire le guide sur comment installer Zabbix 1.8 avec PostgreSQL sur CentOS 5.

Installation de ZTC

Vous pouvez télécharger les sources ou des paquets (pour le moment uniquement RPM) dans le gestionnaire de dépôt de ZTC. Nous allons ici installer la dernière version en date, la 10.11:

$ wget https://bitbucket.org/rvs/ztc/downloads/ztc-10.11-1.noarch.rpm
# rpm -Uvh ztc-10.11-1.noarch.rpm

Voilà, ZTC est installé et a créé des fichiers de configuration pour les différentes applications dans le dossier /etc/zabbix-agent.d. Par défaut, tous les fichiers sont dans ce dossier. Ce que je vous propose, c’est de ne pas tous les activer sur l’agent, car cela risquerait de le charger inutilement. C’est pourquoi, on nous créer deux dossiers: enabled et available qui contiendrons les fichiers de configuration, un peu comme les configurations de modules Apache.

# mkdir /etc/zabbix-agent.d/{available,enabled}
# mv /etc/zabbix-agent.d/*.conf /etc/zabbix-agent.d/available

Nous allons également configurer l’agent Zabbix pour charger les fichiers de configuration activés: dans le fichier /etc/zabbix/zabbix_agentd.conf, ajoutez cette ligne:

Include=/etc/zabbix-agent.d/enabled/

Continue reading

Installer Zabbix 1.8.x avec PostgreSQL sur CentOS 5

Zabbix est une application de monitoring. Elle permet de surveiller votre parc de serveurs, d’applications et de sites Web. Elle se compose d’un serveur ainsi que d’agents (facultatifs, mais qui permettent de récupérer plus d’informations locales que SNMP) sur chacune des machines à monitorer.

Nous allons voir comment installer le serveur Zabbix ainsi que son front-end Web écrit en PHP, sous CentOS 5.

Installation du serveur Zabbix

Installation des dépendances

Avant tout, nous allons installer les dépendances de Zabbix, à savoir les librairies zlib, curl, openssl, net-snmp et openIPMI, pour pouvoir utiliser au maximum les fonctionnalités de Zabbix. Nous allons également installer un système de gestion de base de données, pour stocker toutes les données: PostgreSQL.

# yum install zlib-devel glibc-devel curl-devel gcc automake libidn-devel openssl-devel net-snmp-devel rpm-devel OpenIPMI-devel postgresql84-devel

Nous allons maintenant initialiser la nouvelle base de données PostgreSQL:

# /etc/init.d/postgresql initdb

Important: si vous avez déjà une base de données PostgreSQL sur votre serveur, n’initialisez pas la base! Vous pouvez également voir comment installer PostgreSQL 8.x sous Debian.

Installation du serveur

Maintenant, nous allons télécharger les sources de Zabbix pour l’installer. Vous trouverez les archives des sources sur la page de téléchargement du site Web de Zabbix.

$ wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/1.8.4/zabbix-1.8.4.tar.gz/download -O zabbix.tar.gz
$ tar -xzf zabbix.tar.gz
$ cd zabbix-*

Maintenant, nous allons commencer le processus de compilation en utilisant le programme ./configure avec nos options:

$ ./configure --enable-server --with-pgsql --with-net-snmp --with-libcurl --with-openipmi --enable-agent --enable-ipv6

Si toutes les dépendances sont satisfaites, vous devriez avoir ce message:

Enable server: yes
Server details:
With database: PostgreSQL
WEB Monitoring via: cURL
Native Jabber: no
SNMP: net-snmp
IPMI: openipmi
SSH: no

[...]
Enable agent: yes
Agent details:
Linker flags: -rdynamic
Libraries: -lm -lresolv

LDAP support: no
IPv6 support: yes

Ensuite, il nous reste à compiler Zabbix:

# make

À ce moment, vous pouvez installer Zabbix sur votre système comme ceci:

# make install

Note: Vous pouvez également créer un paquet de Zabbix avec cette configuration grâce au programme checkinstall.

Continue reading

Créer un RPM ou un DEB lors de l’installation à partir des sources

Lorsque vous installez un programme sous Unix, vous pouvez parfois l’installer de deux manières:

  • En téléchargeant un fichier binaire pré-compilé (fichiers DEB, RPM, …)
  • En téléchargeant les sources du programme et en le compilant

La plus part du temps, votre distribution possède un gestionnaire de paquets qui télécharge les fichiers binaires depuis des dépôts. Seulement, il arrive parfois que les options de compilation ne soient pas les bonnes et que vous ne puissiez pas les changer sans recompiler le programme. Ou bien, votre programme n’est pas dans les dépôts.

Si vous cherchez comment créer des fichiers DEB ou RPM, voici comment.

Le programme checkinstall

Le programme checkinstall vous permet de créer ces paquets de manière extrêmement simple. Avant tout, il faut l’installer:

Continue reading

Installation de PHP 5.3 avec Nginx en Fast-CGI sous CentOS

Nous allons installer Nginx et PHP 5.3 configurés pour communiquer en Fast-CGI sous CentOS (testé sous CentOS 5.5). L’avantage de Nginx est qu’il est beaucoup plus rapide qu’Apache, et très complet malgré tout. Dans l’ordre, nous allons installer les paquets pour Nginx et PHP, puis nous allons configurer la liaison Fast-CGI entre les deux.

Installation des dépôts EPEL

Avant tout, pour pouvoir avoir les dépôts EPEL et IUS, dans lequel il y a Nginx et PHP 5.3, nous allons installer deux paquets qui ajoutent ces dépôts:

# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
# rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1.0-6.ius.el5.noarch.rpm

Installation de nginx

L’installation de nginx est très rapide grâce à yum, il vous suffit de lancer cette commande:

# yum install nginx

Installation de PHP 5.3

L’installation de PHP 5.3 se fait grâce aux paquets php53*, que nous pouvons également installer grâce à yum.

# yum install php53 php53u-pecl-apc php53u-gd php53u-mbstring php53u-devel php53u-snmp php53u-cli php53u-pdo

Note: vous pouvez installer d’autres paquets pour le support de MySQL – php53u-mysql -, ou de PostgreSQL – php53u-pgsql ou php53u-pgsql84 -. Listez les paquets pour PHP 5.3 grâce à la commande yum list | grep php53.

Continue reading

SVN – et d’autres – à travers un Proxy SOCKS

Un grand nombre de programmes supportent l’utilisation de plein de types de proxys lors de leur utilisation, comme Firefox qui permet d’utiliser des proxys HTTP(S), FTP(S), SOCKS, … Seulement, certains programmes comme Subversion (svn) ne permettent pas de passer par un proxy SOCKS, même en configurant la variable locale http_proxy sous Linux. Par conséquent, il nous faut trouver une solution pour faire passer tous les paquets d’une application dans notre proxy SOCKS, que vous pouvez créer grâce à un tunnel HTTP/SSH par exemple.

ProxyChains

Pour ça, il y a une application très bien faite et facile d’utilisation: ProxyChains. Elle permet de lancer une autre application et de capturer tous les paquets de celle-ci pour les faire passer par un proxy SOCKS. L’application est disponible dans les dépôts de chez Debian, ou RHEL. Sous Debian, vous pouvez l’installer comme ceci:

# apt-get install proxychains

Continue reading

PHP Notice: Sorry, your PCRE extension does not support UTF8 which is needed for the I18N core (CentOS)

Lors d’une installation avec les paquets de PHP – ici sous CentOS – il arrive qu’il y ai des petits problèmes comme celui-là:

PHP Notice: Sorry, your PCRE extension does not support UTF8 which is needed for the I18N core

PHP nous dit que PCRE ne supporte pas l’UTF-8. Nous pouvons vérifier la configuration de PCRE grâce à la commande pcretest:

# pcretest -C
PCRE version 6.6 06-Feb-2006
Compiled with
UTF-8 support
No Unicode properties support
Newline character is LF
Internal link size = 2
POSIX malloc threshold = 10
Default match limit = 10000000
Default recursion depth limit = 10000000
Match recursion uses stack

Ici, on voit que PCRE supporte bien l’UTF-8. Si ce n’est pas le cas pour vous, il vous suffit de recompiler PCRE avec le support de l’UTF-8 comme vu plus bas pour l’Unicode. Seulement, si comme moi, il est bien compilé avec le support de l’UTF-8, il faut chercher plus loin: on voit que l’Unicode n’est pas supporté par PCRE (“No Unicode properties support”), il faut donc l’installer…

Continue reading

Tunnel HTTP sur SSH: Connexion sécurisée et non filtrée

Si vous utilisez une connexion Internet filtrée (qui ne laisse passer que les paquets HTTP par exemple) ou publique sur laquelle vous faites passer des données confidentielles, vous pouvez passer par un tunnel SSH, encapsulé dans un tunnel HTTP. Ainsi, les règles de filtrage ne s’appliquent pas à vos paquets HTTP – la connexion n’est donc plus bridée – et les données sont cryptées via le protocole SSH. Il y a donc une triple-encapsulation de vos paquets:

Paquet X -> SSH -> HTTP -> Serveur relais -> HTTP -> SSH -> Paquet X

Le seul prérequis est que vous devez avec un serveur relais hors de votre réseau sur lequel vous avez un compte SSH, et sur lequel est installé HTTPTunnel. Votre ordinateur client doit également avec HTTPTunnel d’installé.

Installation de HTTPTunnel

Sur Debian ou sous CentOS, le paquet httptunnel est disponible respectivement dans les dépôts stable et EPEL.

Note: installez httptunnel sur votre machine ainsi que la machine relais, comme décrite dans l’introduction.
Note: Sous CentOS, si l’utilitaire yum ne connait pas le paquet httptunnel, ajoutez le dépôt RPMForge avec la commande suivant:

# rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
# apt-get install httptunnel
# yum install httptunnel

Continue reading

Installer HipHop sur CentOS 5

HipHop pour PHP est un programme développé par Facebook permettant de compiler des applications PHP en binaire. Cela permet une augmentation très importante des performances de celle-ci. Pour l’installer sur CentOS 5, il vous suffit d’ajouter quelques dépôts et d’utiliser yum.

Note: HipHop n’est pour l’instant supporté que sur les architectures 64 bits.

Installation des nouveaux dépôts

Pour installer les 3 nouveaux dépôts, il vous suffit de lancer ces 3 commandes:

# rpm -ivh http://epel.osuosl.org/5/x86_64/epel-release-5-4.noarch.rpm
# rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1.0-6.ius.el5.noarch.rpm
# rpm -ivh http://pkg.tag1consulting.com/hphp/x86_64/hphp-release-1.0-2.el5.noarch.rpm

Installation de HipHop

Ensuite, il vous suffit de lancer yum pour installer HipHop via les nouveaux dépôts configurés:

# yum install hiphop-php

yum se chargera de l’installation de toutes les dépendances nécessaires et trouvées dans les dépôts.

Important: par défaut dans CentOS, la version de gcc est la version 4.1.2 alors que la version minimum pour HipHop est la version 4.4. N’oubliez pas de mettre à jour gcc, ainsi que g++.

Une fois l’installation terminée, le compileur hphp se trouve dans le /usr/bin, ainsi que dans le répertoire de HipHop, à savoir /usr/lib64/hphp/.