04 January 2015

Ne pas utiliser MAMP sur un mac !

Suppression de MAMP

Backup des db

/Applications/MAMP/Library/bin/mysqldump --all-databases > mysql_dump.sql -uroot -proot

Désinstallation

Supprimez MAMP en cliquant sur Mamp Pro Uninstaller.app si vous avez MampPro. Supprimez le dossier de l'application MAMP.

Homebrew

Brève explication

Installation

ou faites une mise à jour :

brew upgrade

Assurez-vous que votre brew est prêt :

brew doctor

Si vous n'avez pas Your system is ready to brew., je vous conseille de régler les différents problèmes qui peuvent être listés.

MySql

Installation

Paramétrage

brew install mysql

Executez ceci pour que le service mysql se lance au démarrage :

ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents

Puis lancez cette commande pour lancer le service immédiatement :

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

PHP

Installation (liip version)

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.5

Modifiez le fichier ~/.profile (ou celui que vous préférez) et ajustez votre variable PATH afin d'ajouter le dossier "/usr/local/php5/bin" au PATH:

export PATH=/usr/local/php5/bin:$PATH

Si vous lancez la commande php -v, vous devriez avoir la bonne version.

Paramétrage

On peut accéder à la configuration de notre nouveau php en exécutant cette commande :

open /usr/local/php5/php.d

... et modifier ainsi les fichiers de configuration spécifiques comme :

#50-extension-apcu.ini
extension=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20121212/apcu.so
[APCu]
apc.enabled = on
apc.enable_cli= on

50-extension-xdebug.ini

xdebug.max_nesting_level = 1000

ou celui-ci par exemple :

#99-liip-developer.ini
memory_limit = 512M
max_execution_time = 60

; AppVentus Nantes
date.timezone = Europe/Paris
date.default_latitude  = 47.38
date.default_longitude =  -2.1244

Apache

(Ré)Activation de la version de base

Si vous faisiez tourner Mamp sur le port 80, votre service apache était surement arrêté. Pour le relancer, il suffit de taper cette commande :

sudo apachectl restart

Paramétrage

La configuration d'apache est dans /etc/apache2/httpd.conf

Configuration de base

Changez :

par

Enfin, configurez votre utilisateur comme utilisateur d'apache en ajoutant les lignes suivantes à votre httpd.conf:

User VOTRE_UTILISATEUR
Group staff

Accès aux sites locaux

Version automatique via dnsmasq et mod_alias

Activez le mode alias et rewrite:

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

et désactivez le module php de base :

#LoadModule php5_module libexec/apache2/libphp5.so

Désormais, placez vos sites dans /Users/YOU/Workspace/NOM_DU_CLIENT/NOM_DU_PROJET/

Par exemple le site v4.appventus.dev devra être positionné ici :

/Users/YOU/Workspace/appventus/v4/

Activez le dnsmask pour ne pas avoir à toucher le fichier hosts à chaque nouveau site

brew install dnsmasq
cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
sudo cp -fv /usr/local/opt/dnsmasq/*.plist /Library/LaunchDaemons
sudo chown root /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
echo 'address=/.dev/127.0.0.1' > /usr/local/etc/dnsmasq.conf
sudo mkdir -v /etc/resolver
sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/dev'

Resources utilisées:

http://mallinson.ca/osx-web-development/ http://echo.co/blog/never-touch-your-local-etchosts-file-os-x-again http://httpd.apache.org/docs/2.2/vhosts/mass.html http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html

L'erreur de jugement

En tant que développeur (ou assimilé) utilisant un MAC, on est souvent tenté d'utiliser MAMP car cela semble être une solution clé en main, facile à installer et rapide.

Mais on se rend vite compte qu'il s'agit d'une mauvaise idée car à chaque fois qu'un besoin précis arrive (travailler sur une version plus récente de PHP, installer une extension etc) c'est un vrai calvaire alors que c'est logiquement une chose très simple !

On perd alors du temps sur stackoverflow à tenter de régler un problème qui n'a pas lieu d'être.

comments powered by Disqus