Se passer de MAMP sous Mac (stack MAMP native)

Les Macs ont tout ce qu’il faut pour se passer de MAMP. Apache et PHP sont déjà préinstallés sur le système, il n’y a plus qu’à mettre MySQL.

Installer MySQL

Deux options s’offrent à nous :

  • Installer MySQL en téléchargeant l’archive depuis le site officiel
  • Installer en utilisant Macports ou Brew

Pour la première solution, rendez-vous sur cette page. J’opterai ici pour la seconde car ça nous permet plus de flexibilité.

J’utiliserai ici Macports et j’installerai MariaDB, un fork de MySQL réputé pour être plus performant.

sudo port search mariadb
    …

mariadb @5.5.49 (databases)
    Multithreaded SQL database server

mariadb-10.0 @10.0.25 (databases)
    Multithreaded SQL database server

mariadb-10.0-server @10.0.25 (databases)
    Run mariadb-10.0 as server

mariadb-10.1 @10.1.14_1 (databases)
    Multithreaded SQL database server

mariadb-10.1-server @10.1.14 (databases)
    (Beta version) Run mariadb-10.1 as server

Lors de la rédaction de cet article, les versions 10.1.x sont encore en développement. Je fais donc le choix de la sécurité. Vous pouvez avoir plus d’info directement sur la page MySQL de Macport.

Je précise que les versions 5.x ne sont pas d’anciennes versions mais bien des versions stables. Pour plus d’infos sur les différentes versions de Maria, go sur la page des téléchargements de leur site.

sudo port install mariadb-10.0

Voilà, c’est installé, c’est ici que les petites manips commencent. On veut n’avoir à taper que mysqld pour démarrer la base et mysql pour lancer l’interpréteur.

# créé le lien symbolique pour mysql
sudo port select mysql

Macport dispose d’une commande qui permet normalement de lancer mysqld au boot. À tester (vous la trouverez sur la page MySQL de Macport donnée plus haut). Pour ma part, ma machine n’est pas un serveur, je ne veux donc pas que MySQL tourne constamment !

# j'ai du créer le répertoire var pour le serveur
sudo mkdir /opt/local/var/db/mariadb-10.0

# ensuite on exécute le script d'install de la db principale
sudo -u _mysql mysql_install_db

# puis réglage des permissions
sudo chown -R _mysql:_mysql /opt/local/var/db/mariadb-10.0/
sudo chown -R _mysql:_mysql /opt/local/var/run/mariadb-10.0/
sudo chown -R _mysql:_mysql /opt/local/var/log/mariadb-10.0/

On va ensuite créer la commande permettant de démarrer mysqld. Pour lancer le serveur, il faut appeler mysqld_safe (avec sudo). Comme c’est pratique d’avoir des commandes simple, on pourra facilement mettre tout ça en tant qu’alias dans notre .bash_profile.

# pour démarrer
sudo mysqld_safe [--datadir='/opt/local/var/db/mariadb-10.0']

# pour stopper la base
mysqladmin -u root -p shutdown

Même si on est en local, on va prendre la peine de mettre un mot de passe à root, même merdique :

# on démarre notre base
sudo mysqlstart

# le mot de passe par défaut est vide, il suffit donc de valider
# lorsque le mdp est demandé
/opt/local/lib/mysql56/bin/mysqladmin -u root -p password

Dernier point, afin que php puisse se connecter à MySQL il faut qu’il trouve le socket. On va donc créer un lien du socket de MariaDB vers le path standard où php ira chercher (j’ai mis un moment avant de trouver le problème pour celui là !).

# on localise le socket
/opt/local/lib/mariadb-10.0/bin/mysqladmin variables | grep socket
…
| socket                                                 | /opt/local/var/run/mariadb-10.0/mysqld.sock

# on créé le répertoire qui contiendra le socket
sudo mkdir /var/mysql

# on fait juste un petit lien symbolique
sudo ln -s /opt/local/var/run/mariadb-10.0/mysqld.sock /var/mysql/mysql.sock

Voilà, on est bon !

Apache

Ça va aller beaucoup plus vite car Apache est déjà installé. Il suffit de se rendre dans le fichier de config /etc/apache2/httpd.conf et de l’éditer avec votre outil de prédilection.

Commencez par activer php et rewrite au besoin. Pour cela, faites une recherche et dé-commentez rewrite_module et php5_module (ou php7_module), ils sont côte à côte.

Par défaut, DocumentRoot pointe vers /Library/WebServer/Documents. Nous n’allons pas nous encombrer à modifier cela et nous allons plutôt activer les vhost. Cela nous permettra plus de souplesse en nous permettent notamment de configurer plusieurs sites en parallèle (via par exemple des noms virtuels en jouant avec /etc/hosts). On fait donc une petite recherche pour trouver la ligne Include /private/etc/apache2/extra/httpd-vhosts.conf et on la dé-commente.

Ensuite, il n’y a plus qu’à aller dans /etc/apache2/extra/httpd-vhosts.conf pour ajuster la conf à nos besoins. Si vous ne savez pas comment paramétrer un vhost, c’est par là que ça se passe.

On est tout bon, il n’y a plus qu’à démarrer Apache avec un petit coup de apachectl start et on l’arrêtera avec apachectl stop. En route vers localhost et roule ma poule !

Il n'y a pas encore de commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *