Installer Apache avec PHP, MySql, Ruby et Passenger

apache php mysql ruby passenger

L’objectif est de créer sur la même machine, un serveur web multi-fonctions qui exécutera indifféremment des applications HTML, PHP et Ruby / Rails, avec la possibilité de se connecter à une base données Mysql.

Ce serveur pourra faire tourner simultanément des applications PHP comme WordPress et des applications Rails comme Redmine.

Pour cela nous allons installer Apache sur Debian avec tous les logiciels nécessaires :

  • MySQL
  • Apache
  • ImageMagick
  • PHP
  • phpMyAdmin
  • Ruby, RubyGem, Ruby on Rails
  • Bundler
  • Passenger

Installer Mysql

aptitude install mysql-server mysql-common libmysqlclient-dev mysql-client

Pendant l’installation il faudra saisir le mot de passe admin de mysql.

Vérifier la bonne installation de version avec mysql -V. Attention, c’est un « V » majuscule.

Installer Apache sur Debian

Par défaut Apache s’installe avec MPM-Worker mais PHP demande l’utilisation de MPM-Prefork.
Pour éviter les paramétrages complexes d’Apache avec FastCGI pour faire tourner PHP sur MPM-Worker, nous allons installer Apache directement avec MPM-Prefork.

aptitude install apache2 apache2-mpm-prefork apache2-prefork-dev libapr1-dev libaprutil1-dev libfcgi-dev libssl-dev zlib1g-dev libcurl4-openssl-dev

Vérifier la bonne installation de version avec apache2 -v.
Et pour vérifier que ca fonctionne : http://ip_du_serveur.
It works !

Prenez quelques instants pour configurer votre serveur Apache et pour configurer un certificat SSL.

Installer ImageMagick

ImageMagick permet à PHP et Ruby, entre autre, de manipuler les images.

aptitude install imagemagick libmagickwand-dev

Installer PHP

On installe PHP avec le mod-php5 pour Apache ainsi que le connecteur MySql.

aptitude install php5 libapache2-mod-php5 php5-mysql

Pour vérifier que PHP fonctionne, on créé un fichier PHP de test (un phpinfo qui donne la configuration de PHP) dans le documentroot d’Apache.

touch /var/www/phpinfo.php
echo "<?php phpinfo(); ?>" >> /var/www/phpinfo.php

Et pour voir le résultat : http://ip_du_serveur/phpinfo.php.

On installe ensuite les modules les plus courants pour PHP. Cela évitera d’avoir à les installer au fur et à mesure que les applications les réclament.

aptitude install php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Là il se peut que Aptitude détecte un conflit et propose de supprimer libgd2-noxpm. On répond « oui », c’est a priori sans conséquences.

Vous pouvez vous arrêter quelques instants pour configurer PHP 5.

Optionnel : installer également le cache PHP APC pour accélérer le rendu des pages.

aptitude install php-apc

Installer phpMyAdmin

aptitude install phpmyadmin

L’installeur demande pour quel serveur web il doit s’installer, Apache ou Lighthttpd. On coche Apache. Il demande ensuite où seront stockées les configurations de phpMyadmin. Dans des fichiers ou dans une base de données, le plus simple est de prendre le mode fichier.
Donc on répond « non » à la question « Installer dbconfig-common ».

PhpMyadmin n’est visible ni dans le documentroot d’Apache, ni dans les dossiers « site-aviable » et « site-enabled ». Il est déclaré dans un vhost dans le dossier /etc/apache2/conf.d.
PhpMyadmin est disponible à l’adresse http://ip_du_serveur/phpmyadmin

Installer Ruby

On ajoute maintenant tout l’environnement Ruby à notre serveur.
Ruby est nécessaire pour pouvoir installer Redmine.

aptitude install ruby1.9.3 ruby-dev libruby rubygems libmysql-ruby

Vérifier la bonne installation de version avec ruby -v et gem -v.

Installer Bundler

Bundler est un Gem qui permet de gérer les dépendances d’un projet, dont celles des applications Rails comme Redmine.

gem install bundler

Installer Passenger

Passenger permet à Apache de piloter et exécuter un programme Ruby/Rails.
Passenger est installé via Gem et non pas par Aptitude.

gem install passenger

Une fois Passenger installé, on installe le module pour Apache (qui va être recompilé). A noter qu’il faut un minimum de puissance et de swap. L’installeur émet une alerte s’il n’y a pas au moins 1Go de swap disponible.

passenger-install-apache2-module

A la fin de la compilation, l’installeur demande d’éditer 2 fichiers et donne également un exemple de configuration de vhost Apache pour une application Ruby.

Créer le fichier /etc/apache2/mods-available/passenger.load et ajouter la ligne LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-4.0.14/buildout/apache2/mod_passenger.so

Cela indique à Apache où se trouve le mod_passenger.

touch /etc/apache2/mods-available/passenger.load

echo "LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-4.0.14/buildout/apache2/mod_passenger.so" >> /etc/apache2/mods-available/passenger.load

Créer le fichier /etc/apache2/mods-available/passenger.conf et ajouter les lignes PassengerRoot /var/lib/gems/1.9.1/gems/passenger-4.0.14, PassengerDefaultRuby /usr/bin/ruby1.9.1 et PassengerDefaultUser www-data.
Cette dernière instruction est importante car elle défini l’utilisateur qui va exécuter mod_passenger. Là c’est “www-data”, l’utilisateur Apache par défaut. Il faut que les 2 soient identiques.

touch /etc/apache2/mods-available/passenger.conf

echo "PassengerRoot /var/lib/gems/1.9.1/gems/passenger-4.0.14" >> /etc/apache2/mods-available/passenger.conf

echo "PassengerDefaultRuby /usr/bin/ruby1.9.1" >> /etc/apache2/mods-available/passenger.conf

echo "PassengerDefaultUser www-data" >> /etc/apache2/mods-available/passenger.conf

On active le module :

a2enmod passenger

Il ne reste plus qu’à relancer Apache :

service apache2 restart

La configuration est terminée. Le serveur est fonctionnel.
On peut passer à l’installation Redmine.

9 commentairesLaisser un commentaire

  • Bonjour Pol,

    Merci beaucoup pour ton tuto que j’ai suivis de A à Z.
    J’ai par contre une petite question dans mon /etc/apache2/mods-enabled je retrouve ceci !passenger.load auquel il n’y a aucune fichier ou dossier de ce type.

    As-tu déjà eu ce type de problème ?

    Bien Cordialement,
    Fred

  • Bonsoir Fred,

    La version de ruby et passenger ne correspond peut-être plus à ce que j’ai écrit.

    dans /etc/apache2/mods-available/passenger.load tu dois trouver la ligne : LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-4.0.14/buildout/apache2/mod_passenger.so

    MAis est-ce que il s’agit bien de passenger 4.0.14 ?
    essaye de localiser précisément cette ligne dans ton système et regarde si tout correspond bien.

    A+

  • Salut !!

    Je tenais tout d’abord à vous remercier pour se super tuto !
    J’ai donc suivis le tuto pas à pas.
    Cependant lorsque je tente de redémarrer apache j’obtiens ce message :

    root@debian:/home/barry# service apache2 restart
    apache2: Syntax error on line 244 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/passenger.load: Cannot load /var/lib/gems/1.9.1/gems/passenger-4.0.14/buildout/apache2/mod_passenger.so into server: /var/lib/gems/1.9.1/gems/passenger-4.0.14/buildout/apache2/mod_passenger.so: cannot open shared object file: No such file or directory
    Action ‘configtest’ failed.
    The Apache error log may have more information.
    failed!

    Merci d’avance !!

  • Bonsoir Barry,

    Le problème vient du fichier passenger.load qui n’arrive pas à charger « /var/lib/gems/1.9.1/gems/passenger-4.0.14/buildout/apache2/mod_passenger.so »

    Comme il n’y a pas plus d’infos je pense que vous avez copié/collé mes commandes sans tenir compte de vos version.

    Ce tutoriel sur Apache/passenger date. Et il y a fort à parier que les versions diffèrent aujourd’hui.
    Par exemple le « passenger-4.0.14 » de l’époque est peut-être devenu « passenger-4.0.45 » aujourd’hui.

    Vérifiez vos versions et adaptez vos commandes.

  • bonjour,

    j’ai eu la même erreur et corrigé en fonction de la version comme indiqué ci dessus.

    et tout est OK.
    merci : guide impeccable !

  • Merci beaucoup pour ce tutoriel. J’aurais juste préconnisé d’utiliser RVM (https://rvm.io/) plutôt que d’installer Ruby « en brut » avec le apt-get…

    Ensuite, sur ma version de Passenger (5.1.7), Passenger nous indiques directement la configuration Apache à écrire. Dans mon cas c’était :

    LoadModule passenger_module /home/arousseau/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.7/buildout/apache2/mod_passenger.so

    PassengerRoot /home/arousseau/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.7
    PassengerDefaultRuby /home/arousseau/.rvm/gems/ruby-2.4.1/wrappers/ruby

Vous avez aimé cet article ? Réagissez !

Votre email ne sera pas publié. Les champs requis sont marqués d'une astérisque *