Créer un serveur Apache-PHP-Mysql transportable sur mac23 juillet 2007 - Roberto

Un serveur transportable ? pour quoi faire ?

J’ai la chance d’avoir plusieurs mac, à la maison, au bureau et un portable (voir ici). Depuis que je suis sur le développement de teepsy, je cherchais une solution pour avoir un serveur facile à installer sur les différents ordinateurs, et qui me permette de continuer le développement de mes scripts, sans avoir à migrer ces derniers d’une machine à l’autre.

Je cherchais une solution à la WAMP sous Windows, qui intègre tout ce qui est nécessaire pour un développeur PHP lambda : un serveur (Apache), PHP et MySQL. Sous mac, la solution simple s’appelle MAMP.

Certains puristes me diront que Apache et PHP sont déjà installés d’office dans le Mac OS X. Certes, mais cette solution me gêne en deux points : 1) MySQL ne vient pas avec, et franchement c’est pas très aisé à installer. 2) Si, comme moi, une configuration non standard est requise (extensions, version de PHP différente, …), il faut se taper l’installation sur toutes les machines sur lesquelles j’envisage de développer.

Amoureux de l’adage Apple qui dit : Glissez-Déposer = Installé, je me suis mis dans la tête d’avoir une solution prête à l’emploi, qui embarquerait tous les composants précités, mais aussi les scripts de mes applications.

Utiliser MAMP

mamp

MAMP est, pour cela, très intéressant, car il suffit de glisser le répertoire MAMP dans le répertoire Applications, et le tour est joué. A la fin de la journée, vous recopiez le répertoire sur votre clé USB, et le serveur entier tient dans la clé. Il suffit de le recopiez, à nouveau, dans le portable ou à la maison, pour retrouver son environnement de travail.

Mais, puriste que je suis, et surtout feignant avéré, toutes ces copies me fatiguent. Pourquoi ne pas travailler directement sur la clé USB ? Si on ne s’intéresse pas aux performances de vitesse d’exécution (qui peuvent être optimisées plus tard dans le développement), cette solution a l’avantage de pouvoir travailler sur les scripts et les tester sans installer quoi que ce soit sur la machine “hôte”.

Le problème, c’est que le réperoire “MAMP” doit impérativement être installé dans le répertoire “Applications”. Il n’y a aucune option dans les préférences qui permette de l’installer ailleurs.

Contourner les limitations de MAMP : l’installer sur une image disque

Alors on va feinter. Je vais vous indiquer, pas à pas, comment installer le serveur sur une image disque, et comment faire croire à MAMP que ses fichiers sont dans le répertoire “Applications”.

Nous allons créer une image disque vierge (avec l’utilitaire de disque), qui va accueillir les fichiers MAMP et nos scripts. Cette image est nommée ici “MAMP-traveller” et vous la sauvez sur votre clé USB. Une fois créer, montez-là.

Ensuite, nous allons télécharger MAMP sur le site officiel.

Ne faites pas attention au répertoire “MAMP PRO”, seul “MAMP” nous intéresse ici (et est gratuit). Au lieu de glisser le dossier “MAMP” dans le dossier “Applications”, nous allons le glisser dans le disque “MAMP-traveller”. Nous renommons ensuite ce répertoire : “MAMP-files”.

Changer l’emplacement de MAMP : créer des alias

Ensuite, nous allons créer un alias “MAMP” dans le répertoire “Application”. Si on utilise le bouton droit sur le répertoire “MAMP-files”, et que nous choisissons “Créer un alias”, nous allons obtenir un alias à placer dans le dossier “Applications”. Normalement, MAMP ne devrait y voir que du feu. Mais ce n’est pas le cas. L’alias créé n’est pas “transparent” et ne joue pas son rôle de raccourci.

Nous allons donc créer des alias avec la commande UNIX “ln”, dans le terminal. Ouvrez ce terminal, et tapez la ligne suivante :
ln -s /Volumes/MAMP-traveller/MAMP-files/ /Applications/MAMP

Ceci va créer un alias “MAMP” dans le dossier “Applications” qui va pointer sur le répertoire “MAMP-files” dans l’image “MAMP-traveller”.

Maintenant, vous pouvez lancer l’application MAMP qui se trouve dans l’image “MAMP-traveller” (MAMP-files/MAMP).

Là, tout marche à merveille.

Derniers détails

Un petit truc pour plus tard, créez deux nouveaux alias ainsi :
ln -s /Volumes/MAMP-traveller/MAMP-files/ /Volumes/MAMP-traveller/MAMP
et
/Applications/ /Volumes/MAMP-traveller/Applications

Ces deux alias sont créés à la racine de l’image “MAMP-traveller”. Ils seront très utiles lors de l’utilisation de notre installation sur un autre ordinateur.

Changer votre configuration, placez vos scripts dans le répertoire MAMP-traveller/MAMP-files/htdocs, et sauvegardez le tout.

Une fois que vous avez fini votre journée, fermez MAMP, démonter “/MAMP-traveller”, et ejectez votre clé USB.

Lorsque vous insérez la clé sur un autre mac, montez l’image “MAMP-traveller”. La seule chose à faire pour installer MAMP, est de glisser l’alias “MAMP” qui se trouve à la racine de “MAMP-traveller” sur l’alias “Applications” qui se trouve juste à côté. Ensuite, lancez MAMP, et ça marche !!

  1. Bonjour,
    cet article est fort utile et pourrait bien servir pour proposer une version portable de Xoops (XOOPS est un portail de gestion de contenu (cms) open source écrit en php et fonctionnant avec mysql).

    Une réflexion est en cours sur le sujet à l’adresse suivante :
    http://labs.xoofoo.org/modules/news/article.php?storyid=28

    A bientôt

    olico

  2. Bonjour Roberto,
    Merci pour ce petit tutorial bien sympa. Je suis totalement débutant sur ces serveurs, j’ai suivi votre procédure et au final c’est le serveur mySql qui ne se lance pas et je ne comprend pas pourquoi.Visiblement Apache fonctionne bien par contre.
    J’aimerai également savoir comment se connecter sur ce genre de serveur à partir d’une autre station en reseau, quel genre d’url faut-il inscrire dans le navigateur pour accèder à une appli partagée comme l’agenda Phenix par exemple.

  3. @ Jean-Marc : L’arrêt de ton serveur Mysql peut être du à plusieurs choses. Pourrais-tu me dire ce que dit le log de Mysql ? (dans le répertoire /Applications/MAMP/logs/)
    Ensuite, pour accéder au serveur depuis un autre ordinateur du réseau, il faut taper l’adresse IP locale du serveur dans le navigateur (exemple http://192.168.1.10) Sur le mac, tu trouveras l’adresse IP dans les Préférences Système, sous réseau, dans l’onglet TCP/IP.

  4. Bonjour,

    super le tuto. J’ai suivi les diverses opérations, malheureusement ça ne marche pas pour moi. Je peux lancer l’appli MAMP depuis /Applications/MAMP (lien symbolique) mais les serveurs (apache et mysql) ne démarrent pas. Je suis sous leopard. Avez-vous une idée des problèmes possibles ?
    merci pour t’aide
    Christian

  5. Bonjour Christian, pour savoir ce qui ne marche pas, il faudrait regarder dans les logs d’Apache et Mysql. Ils sont dans le répertoire /Applications/MAMP/logs/

    Il y a-t-il un message d’erreur lors du lancement des services ?

  6. Le fichier de log de mysql est le suivant :
    080201 17:22:42 mysqld started
    080201 17:22:45 [Warning] You have forced lower_case_table_names to 0 through a command-line option, even though your file system ‘/Applications/MAMP/db/mysql/’ is case insensitive. This means that you can corrupt a MyISAM table by accessing it with different cases. You should consider changing lower_case_table_names to 1 or 2
    080201 17:22:45 [Warning] One can only use the –user switch if running as root

    080201 17:22:47 InnoDB: Started; log sequence number 0 43655
    080201 17:22:47 [ERROR] Can’t start server : Bind on unix socket: Invalid argument
    080201 17:22:47 [ERROR] Do you already have another mysqld server running on socket: /Applications/MAMP/tmp/mysql/mysql.sock ?
    080201 17:22:47 [ERROR] Aborting

    080201 17:22:47 InnoDB: Starting shutdown…
    080201 17:22:50 InnoDB: Shutdown completed; log sequence number 0 43655
    080201 17:22:50 [Note] /Applications/MAMP/Library/libexec/mysqld: Shutdown complete

    080201 17:22:50 mysqld ended

    Il n’y a pas d’autres mysql qui tourne pourtant.

    ——-

    Quand à Apache, ça va ça vient. Des fois le serveur démarre, dès fois il ne démarre pas. là présentement, il ne démarre pas et les logs sont vides….

    J’ai essayé avec plusieurs packages MAMP (celui du site officiel, celui du site Moodle.org où Moodle est intégré en plus, un package que j’avais avant). J’ai essayé aussi sur un autre mac (intel tous les deux). Le résultat est le même.

    Ce n’est pas facile de trouver la solution d’autant plus que la copie des fichiers de MAMP sur le .dmg prend plusieurs heures à chaque fois.

    Merci d’avance pour toute aide.
    Christian

  7. @ Christian : Je suis franchement désolé, mais je n’arrive pas à reproduire votre problème, et les messages que vous m’indiquez m’aident peu. Que dit le Moniteur d’activité ? Il n’y a effectivement pas de serveur mysql en route ?

  8. Bonjour,

    Serait-il possible que l’on discute par e-mail sans que cela apparaisse sur ce site (vous comprendrez pourquoi) ou de vive voix ? Pouvez-vous m’envoyer un e-mail sur mon adresse mail ? je vous répondrais en vous donnant mon numéro de téléphone.
    merci
    Christian

  9. Can someone translate this because I see french for what to do if there is a mysql connection error but je nai comprend pas

  10. Bonjour,

    Merci, c’est une très bonne idée,mais…
    Pourquoi, lorsqu’on installe MAMP normalement, cela bloque certaines fonction internet, des frmulaires, par exemple, pour le webmail univ-lyon1 ? C’est pour cela que je souhaite l’installer sur la clef. Et à quoi ca sert de bloquer les autres installations que dans Aplication

Laissez un commentaire !

Retrouvez l'actualité de netteo et de ses produits, ainsi que nos réflexions en relation avec nos centres d'intérêt : internet, l'ergonomie et les systèmes de gestion de contenu.

Archives