Installer Webistrano avec nginx et PostgreSQL sous Gentoo

Webistrano est une application Web développée en Ruby On Rails permettant le déploiement automatisé de vos applications, qu’elles soient Web ou non. Ainsi, via le front-end Web, vous n’aurez qu’à appuyer sur un bouton pour que Webistrano récupère vos sources depuis un dépôt (svn, git, …) et depuis un répertoire et le déploie sur votre ferme de serveurs, en lançant par exemple les différents tests que vous aurez effectués. Si une erreur apparaît, Webistrano annule tous les changements et laisse l’application fonctionnelle comme elle l’était.

Pour installer Webistrano, vous avez besoin de Ruby On Rails, d’un serveur Web et d’une base de données. Je vais utiliser nginx comme serveur Web et PostgreSQL comme base de données. Je ne vais pas vous expliquer comment installer nginx et PostgreSQL, il y a déjà de très bons articles qui vous l’expliquent.

Installation du Ruby On Rails

Pour installer Ruby On Rails sur Gentoo, rien de plus simple, installer rudy puis le gem rails :

Configuration de la base de données

Nous allons créer une nouvelle base de données pour Webistrano, ainsi qu’un nouvel utilisateur:

Téléchargement et configuration du Webistrano

On va télécharger le tarball de la dernière version de Webistrano depuis le dépôt GitHub et décompressez le à l’endroit que vous souhaitez. Ici, le chemin de Webistrano sera /home/www/webistrano/.

Ensuite, nous allons configurer Webistrano en éditant les fichiers de configuration mais avant il faut les créer à partir des modèles fournis:

Continue reading Installer Webistrano avec nginx et PostgreSQL sous Gentoo

facebooktwittergoogle_plusredditpinterestlinkedinmail

Un rapport par défaut dans Trac

Dans Trac, lorsque l’on clique sur “Voir les tickets”, on arrive sur la liste des différents rapports disponibles.

Pour des questions pratiques, je préférais arriver directement sur la page du rapport des tickets actifs. On peut donc modifier les liens du menu horizontal pour y arriver! Modifiez donc le fichier trac.ini comme ceci:

Ainsi, ce sera le rapport d’ID 1 qui sera ouvert.

facebooktwittergoogle_plusredditpinterestlinkedinmail

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]:

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

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:

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

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

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

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

facebooktwittergoogle_plusredditpinterestlinkedinmail

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:

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:

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

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:

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

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

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!

facebooktwittergoogle_plusredditpinterestlinkedinmail

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:

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.

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:

Continue reading Monitoring PostgreSQL avec Zabbix

facebooktwittergoogle_plusredditpinterestlinkedinmail

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.

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

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.

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

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:

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

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

Continue reading Installer Zabbix 1.8.x avec PostgreSQL sur CentOS 5

facebooktwittergoogle_plusredditpinterestlinkedinmail

Erreur PHP – require_once(): Unable to allocate memory for pool

Depuis peu, PHP me sort des erreurs assez bizarres, à savoir des “Unable to allocate memory for pool“. Ceci se passe notamment sur les fonctions require_once et include_once. Après quelques temps de recherche, il s’avère que c’est en fait APC qui créé cette erreur lorsqu’il n’a plus assez de place dans sa mémoire.

C’est pourquoi, pour éviter ce bug – voir ici le rapport de bug sur php.net – vous devez augmenter la mémoire allouée à APC avant d’attendre une mise à jour corrigeant ce problème.
Dans le fichier /etc/php.d/apc.ini (sous CentOS) éditez donc la ligne contenant la directive apc.shm_size en y ajoutant plusieurs mégas. Pour information, voici la configuration du serveur hébergeant D-Sites.com:

facebooktwittergoogle_plusredditpinterestlinkedinmail

Mettre à jour gcc sur CentOS 5

La version de gcc (ainsi que g++, dont le nom du packet est gcc-c++) présente de base dans CentOS 5 est la version 4.1.2. Si vous avez besoin d’une version plus récente de gcc et/ou de g++ vous devez simplement utiliser le packet gcc44, qui contient – comme son nom l’indique – la version 4.4 de gcc. Pour ce faire, vous devez lancer les commandes suivantes:

Ensuite, pour permettre la rétrocompatibilité, il vous suffit de créer les liens symboliques suivants:

Ainsi, la version 4.4 de gcc est présente sur votre CentOS 5:

facebooktwittergoogle_plusredditpinterestlinkedinmail

PostgreSQL: Deux opérateurs pour les varchar arrays

PostgreSQL contient un module non activé par défaut nommé "intarray". Celui-ci permet d’ajouter des opérateurs et des fonctions entre tableaux d’entiers ou entre tableaux et entiers. les deux principales fonctionnalités sont, pour moi, les deux opérateurs + et - entre les tableaux d’entiers, int[].

Ayant pris l’habitude de les utiliser pour une application, j’ai eu besoin de ces mêmes opérateurs + et - pour des tableaux de chaines de caractères, varchar[]. C’est pourquoi, j’ai créé deux fonctions en Pl/pgSQL liées à ces deux opérateurs, afin de pouvoir faire la même chose qu’avec intarray. Concrètement, après la création de ces fonctions et de ces opérateurs, vous pouvez faire:

Continue reading PostgreSQL: Deux opérateurs pour les varchar arrays

facebooktwittergoogle_plusredditpinterestlinkedinmail

HipHop pour PHP, qu’est-ce que c’est ?

Le nouveau projet Open Source pour PHP du moment, c’est bien HipHop, développé pour PHP, qui consiste à transformer le code PHP en C++ puis de le compiler en utilisant g++. Présenté dans l’article précédent Facebook & PHP II: HipHop et HPHPi, voici de nouvelles informations, issues de la conférence de cette nuit.

Facebook qui utilise déjà HipHop sur 90% de ses serveurs a constaté:

  • Sur les serveurs Web: 50% de consommation CPU en moins pour un même trafic, par rapport à PHP 5.2 avec APC
  • Sur les serveurs API: 30% de consommation CPU en moins pour deux fois plus de trafic

HipHop transforme le code en C++ et le compile avec g++ mais l’utilisateur n’a pas besoin de compiler à la main son code PHP avec un outils, tout reste comme avant, avec l’édition de fichiers PHP à la volée.

Néanmoins, les fonctionnalités qui ne seront pas disponibles:

  • La fonction eval
  • La fonction create_function, qui est du même acabit que eval
  • La fonction preg_replace, avec le paramètre e, qui permet l’application de eval sur le résultat
  • De manière plus générale, l’ordre des objets ne peu pas être respecté, du fait d’une exécution non-linéaire du code. Ainsi, la fonction function_exists retourne la valeur vraie dans ce code:

En plus de HipHop, l’équipe de Facebook a développé HPHPi, c’est un interpréteur PHP, il semblerait que ça soit grâce à lui qu’il ne sera pas nécessaire de compiler le code PHP. Il fait aussi des analyses du code pour y détecter des éventuelles erreurs dues à l’utilisation de HipHop et non de PHP.

HipHop embarque son propre serveur Web et n’est pas le moment pas compatible/prêt à fonctionner avec Apache ou un autre serveur. C’est pourquoi HipHop c’est un seul processus, contrairement à PHP mais qui utilise le principe de multi-thread, plus rapide que le multi-processus car créer un processus, c’est assez long par rapport aux threads. Comme HipHop utilise sont propre Web serveur allégé, il est plus rapide et permet de mieux gérer les ressources partagées entre les threads, il permet aussi de ne pas avoir de downtime, c’est-à-dire de temps d’inaccessibilité lors d’un redémarrage de HipHop.

HipHop est pour le moment basé sur PHP 5.2, et l’équipe de chez Facebook compte bien avancer encore plus sur ce projet et voici leur Roadmap, ou liste de choses à faire:

  • Apport des fonctionnalités de PHP 5.3
  • Utilisation possible avec Apache
  • …et plus généralement la réduction de l’écart entre HipHop et PHP

Le code source qui était sensé être mis en ligne cette nuit sera maintenant mis en ligne “soon” !

facebooktwittergoogle_plusredditpinterestlinkedinmail