MacOS

Créer une application web React

Installer NodeJS

Si vous installez pour la première fois NodeJS voici la comamnde avec Homebrew (je vous recommande de la farie avec Homebrew, pour les upgrade plus tard, c’est plus facile)

brew install node

npm install create-react-app

npx create-react-app monApp

Mise à jour de NodeJS sur MacOS

Si vous avez déjà NodeJs d’installé, vérifiez que vous avez la dernière version, si vous ‘avez pas la dernière version, faites un upgrade

Vérifiez votre version de nodeJS sur votre poste, et regardez quelle est la dernière version de NodeJS, pour ma part j’éatis à 12, la dernière version étant 19 !

> node -v
> brew upgrade node

Upgrader NodeJS non installé avec Homebrew

L’ennui est que je n’avais pas installé nodeJs avec Br–Hombrew, donc il fallait désinstaller à la main ! heureusement j’ai trouvé un script shell de désinstallation

Puis en en voulant faire un symlink

brew link node

J’ai eu une erreur de ce type :

Error: Could not symlink include/node/common.gypi

Il faut changer le mode, c’est un problème de droit

sudo chown -R $(whoami) $(brew --prefix)/*

brew link --overwrite node

Je vous conseille d’utiliser Homebrew pour avoir des install plus clean, et pas seulement pour nodeJS.

Installer create-react-app avec NPM

npm install create-react-app

//création du projet
npm create-react-app myApp 
cd to folder

//lancement du projet
npm start

Vous pouvez utiliser NPX à la place de NPM, la différence c’est que NPX ne télécharge pas le package, à la différence de NPM.

Installer votre environnement de développement web sous Mac

Votre MacBookPro livré, il faut maintenant installer un environnement d’exécution pour vos sites web, et aussi un environnement de développement.

Pour ce qui est de l’environnement d’exécution, reportez vous à ces liens:

Pour ce qui est de l’environnement de développement, nous allons voir dans les lignes qui suivent les opérations à faire

Installation de Xcode ou Xcode Command Line Tool (CLT)

Pourquoi installer Xcode CLT? il est nécessaire pour exécuter certaines commandes en Shell, notamment pour installer Homebrew le gestionnaire de package de MacOS.

Pour vérifier si vous avez déjà mis en place(on en sait jamais) Xcode CLT, vous pouvez tapez les commandes:

$ gcc
# ou
$ xcode-select -p
Si Xcode CLT n'est pas installé, vous aurez une popup vous invitant à l'installer.

Téléchargez Xcode CLT sur le site https://developer.apple.com/download/more/

Choisissez bien le package, il y a beaucoup de fichiers listés, et vous risquez de ne pas télécharger la bonne version, classez dans un premier temps par date et regardez le nom commençant par « Command line tools for Xcode xx », et regardez bien la version de Xcode la plus récente.

cf lien :

# testons voir si c'est bien installé
$ xcode-select -p
/Library/Developer/CommandLineTools
# c'est bon c'est installé

Installation de Homebrew

Maintenant que Xcode est installé, nous pouvons faire la ligne de commande suivante pour installer Homebrew, qui va nous permettre d’installer MySQL et autres applicatifs.

#il est conseillé d'installer Homebrew sous /usr/local/homebrew
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Installation des logiciels

MySQL

#la version par défaut de MySQL est la 8 pour Homebrew
#si on veut la 5.7 voici les étapes
# montrer les infos de la version 5.7
$ brew info mysql@5.7
mysql@5.7: stable 5.7.29 (bottled) [keg-only]

#installation
$ brew install mysql@5.7

We've installed your MySQL database without a root password. To secure it run:
    mysql_secure_installation

MySQL is configured to only allow connections from localhost by default

To connect run:
    mysql -uroot

mysql@5.7 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have mysql@5.7 first in your PATH run:
  echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile

For compilers to find mysql@5.7 you may need to set:
  export LDFLAGS="-L/usr/local/opt/mysql@5.7/lib"
  export CPPFLAGS="-I/usr/local/opt/mysql@5.7/include"


To have launchd start mysql@5.7 now and restart at login:
  brew services start mysql@5.7
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/mysql@5.7/bin/mysql.server start
==> Summary
🍺  /usr/local/Cellar/mysql@5.7/5.7.29: 319 files, 232MB
==> Caveats
==> openssl@1.1
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
  /usr/local/etc/openssl@1.1/certs

and run
  /usr/local/opt/openssl@1.1/bin/c_rehash

openssl@1.1 is keg-only, which means it was not symlinked into /usr/local,
because openssl/libressl is provided by macOS so don't link an incompatible version.

If you need to have openssl@1.1 first in your PATH run:
  echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> ~/.bash_profile

For compilers to find openssl@1.1 you may need to set:
  export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
  export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"

==> mysql@5.7
We've installed your MySQL database without a root password. To secure it run:
    mysql_secure_installation

MySQL is configured to only allow connections from localhost by default

To connect run:
    mysql -uroot

mysql@5.7 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have mysql@5.7 first in your PATH run:
  echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile

For compilers to find mysql@5.7 you may need to set:
  export LDFLAGS="-L/usr/local/opt/mysql@5.7/lib"
  export CPPFLAGS="-I/usr/local/opt/mysql@5.7/include"


To have launchd start mysql@5.7 now and restart at login:
  brew services start mysql@5.7
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/mysql@5.7/bin/mysql.server start

Lisez bien les information ci-dessus pour savoir comment démarrer, arrêter, et faire quelques opérations en ligne de commande.

Mac-OS

Créer son CSR avec le trousseau (Keychain Access) avec Mac

Le CSR (Certificate Signing Request) est un fichier qui est généré sur l’ordinateur du développeur pour lier le développeur à son ordinateur de build. Le développeur d’application mobile doit envoyer ce CSR pour générer un certificat sur le site developer.apple.com . Ce certificat servira à générer un provisioning profile, qui est un fichier qui lie l’application, le développeur(son poste de développement), et le device via le certificat, et le mode de distribution.

Créer un CSR avec Keychain Access

Le processus est entièrement graphique, allez dans Application > Utilitaires > Trousseau d'accès.

Ne mettez que votre email et enregistrez le CSR dans un répertoire du disque.

Ensuite vous allez utiliser ce CSR pour l’uploader sur le site developer.apple.com et créer un certificat.

Lien vers la doc officielle

php

Installer php 7.2 sous Mac OS

Le temps file, et les version antérieures de PHP ne seront plus supportées, par exemple de plus en plus de librairies exigent php 7.0 minimum, certes c’est présent dans les installation récentes, mais vous devez savoir aussi installer les versions de php 7.1, 7.2, 7.3, 7.4 par exemple. Voici un petit tuto sous Mac OS pour installer une version 7.2 de php. Ici PHP est installé en tant que module d’Apache.

Utiliser Homebrew pour installer php 7.2

Homebrew est un gestionnaire de package, un peu comme composer pour le php, mais pour le système Mac.

brew install php@7.2

Cette fonction va créer un répertoire dans usr/local/Cellar/php@7.2. Cellar est l’endroit où sont stockés les package Mac.

Changer la version de php pour la ligne de commande sous Mac OS

Vous n’êtes pas sensé ignorer qu’il existe deux version d’interpréteur sur une installation serveur, l’interpréteur php en ligne de commande, et l’interpréteur web.

echo 'export PATH="/usr/local/opt/php@7.2/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/php@7.2/sbin:$PATH"' >> ~/.bash_profile

Cette commande bash va insérer une ligne dans votre fichier de configuration .bash_profile, pour le faire pointer sur la nouvelle version de php.

Changer la version de php pour le web

Pour ce faire il faut aller modifier le fichier de configuration d’Apache dans le cas où php est en mode module d’Apache (ce n’est pas fcgi). Décommentez tout autre ligne de chargement d’une autre version de php.

LoadModule php7_module  /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so

Vérifiez avec phpinfo() la version . Normalement c’est tout ce dont vous aurez besoin. En module pour apache, il n’est pas possible d’installer plusieurs versions de php en simultané (chose que fait facilement Nginx), mais il est possible sous Apache d’installer plusieurs version en simultané de php si on utilise fastCGI par exemple.

Attention, on n’a pas touché à php.ini, il peut y avoir des différences subtiles ! Pour cet exemple je suis passé de php 7.1.23 à php 7.2.23

Installer la version xdebug correspondante à PHP 7.2

Prochainement j’indiquerai comment mettre en place le module xdebug pour cette version de PHP.

Il faut installer le xDebug correspondant à la version de PHP 7.2, comme xDebug a été enlevé du dépôt Homebrew, il faut utiliser PECL pour l’installer.

pecl install xdebug
#Si ERROR: failed to mkdir /usr/local/Cellar/php@7.2/7.2.23/pecl/20170718
#créer à la main le répertoire, si création impossible , il s'agit surement d'un lien #symbolique,l'effacer et refaire mkdir

Pour savoir où xdebug.so a été installé (pour pouvoir paramétrer xDebug dans le fichier php.ini), comme vous avez utilisé Brew, il se trouve dans le répertoire Cellar :

/usr/local/Cellar/php@7.2/7.2.23/pecl/20170718/xdebug.so
#à la fin de l'installation ce message vous sera affiché.
php

Installer PHP 5.6 sur Mac OS

Comme nous nous dirigeons vers le futur, sur Mac OS Homebrew, PHP 5.6 n’est plus disponible. Or cette version de PHP était très utilisée, et quand vous récupérez des projets ancienc qui tournent sous cette version, ils risquent de ne pas tourner sur PHP 7 par exemple. Dans ce cas vous avez besoin de vous tourner vers la version PHP 5.6.

Seulement Homebrew officiellement ne fournit plus PHP 56. Mais il est quand même possible de l’installer avec une petite manipulation.

brew tap exolnet/homebrew-deprecated

brew install php@5.6

Ajoutez dans le fichier /etc/apache2/httpd.conf la ligne

LoadModule php5_module /usr/local/opt/php@5.6/lib/httpd/modules/libphp5.so

Et décommentez la ligne qui charge le module php7, redémarrez apache avec la commande suivante (vous aurez besoin de rentrer le mot de passe :

sudo apachectl restart

Ensuite pour vérifier la version de php surtout ne faites pas en ligne de commande php -v . ! En effet il existe deux version de PHP potentiellement, une version pour la ligne de commande et une version pour le serveur web.

Changer la version de PHP utilisée en ligne de commande

Là c’est un peu plus délicat. En faisant l’installation de PHP 5.6 via Homebrew, le binaire est installé dans le répertoire : /usr/local/Cellar/php@5.6/5.6.40/bin/

Pour exécuter PHP de ce répertoire et disposer de la version 56, indiquez le chemin complet :

/usr/local/Cellar/php@5.6/5.6.40/bin/php -v

PHP 5.6.40 (cli) (built: Apr 23 2019 11:14:34) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

php

Installer PHP sur MacOs

Récemment j’ai voulu installer MAMP (l’équivalent de WAMP sous Mac mais en moins bien je pense), je n’ai pas réussi à configurer les virtual host, la raison est qu’il existe déjà un Apache sous MacOs puisque c’est un système basé sur Unix.

J’ai donc décidé d’installer à la main de quoi faire un serveur PHP avec une base MySQL.

Installation de PHP et configuration sour MacOS

Il faut aller dans le répertoire de configuration d’Apache /etc/apache2/httpd.conf

décommenter la ligne de chargement du module PHP

LoadModule php7_module libexec/apache2/libphp7.so

testez votre script PHP, si apache affiche le code PHP c’est qu’il ne gère pas encore les script PHP, il lui faut dire comment interpréter les fichier avec l’extension php

<FilesMatch .php>
SetHandler application/x-httpd-php
</FilesMatch>

 Normalement redémarrez Apache avec la commande :

sudo apachectl -k restart

Ensuite il faut indiquer quel est le fichier qui servira d’index, en effet ça ne se fait pas tout seul.

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

Où se trouve le fichier avec le message It Works !?

Lorsque que vous entrez l’adresse http://localhost/ vous avez une page avec le message « It Works ! », le problème est  de localiser ce fichier.

Allez dans le fichier httpd.conf, et localisez la chaine de caractères « DocumentRoot », et assurez vous d’avoir le script :

DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">

Pourquoi mon script PHP ne peut écrire sur son répertoire?

Tout simplement (enfin faut le savoir !) parce que c’est Apache qui exécute le script PHP et que par défaut Apache est un autre utilisateur.

Dans le fichier de configuration httpd.conf, cherchez la chaine « Group » et remplacez la

#User _www
#Group _www
User monuser
Group staff

Apache va maintenant s’exécuter en lieu et place de vous.

Note sur quelques commande Apache

# Reloader le fichier configuration sans redémarrer le serveur après une modification du fichier httpd.conf
$ sudo apachectl graceful

# Redémarrage d'Apache
$ sudo apachectl restart

Activer la réécriture d’url mod_rewrite

Certains logiciel ont besoin de ce module d’Apache pour marcher, WordPress par exemple, ou encore Symfony ou Laravel. Le module peut ne pas être chargé par défaut, dans le fichier php.ini, chercher la ligne contenant mod_rewrite et décommenter la ligne, redémarrer Apache.

Retour en haut