Enfin de l'action !
Nous commencerons par activer le PHP, puis nous installerons MySQL. Mais avant, quelques mises au point siouplaît.
Parlons peu, mais parlons bien
Nous allons suivre une démarche totalement différente de ce qui précède (c'est-à-dire l'installation de MAMP). Il s'agit de deux moyens totalement différents d'avoir son serveur local sur Mac, ils marchent tout aussi bien l'un que l'autre et ne sont pas dépendants. Nous allons à présent procéder à une
installation manuelle du serveur local.
Les points sur les i
Les avantages d'une installation manuelle sont :
- une certaine propreté du point de vue de l'OS : nous allons vraiment exploiter le potentiel d'OS X et non pas le détourner comme avec MAMP ;
- une liberté totale sur les réglages ;
- la possibilité de voir ce qui se passe vraiment sur le serveur.
Précisons que cela peut être intéressant également si vous envisagez de vous investir dans les serveurs par la suite : ce que vous apprendrez ne vous sera pas inutile

.
Bien sûr, l'inconvénient d'une installation manuelle est qu'elle plus longue et surtout, qu'elle peut être plus dangereuse. Toutefois, ne vous inquiétez pas, votre Mac n'explosera pas tant que vous bidouillez uniquement votre serveur (ou envoyez-moi une photo de votre ordinateur cramé

).
Il est évident que ce type d'installation est destiné à des personnes plus expérimentées ou tout simplement intéressées. Vous savez que Mac OS X est réputé pour son interface graphique. Mais on parle souvent moins du système fonctionnel qui se cache derrière tout ça : c'est UNIX, auquel vous pouvez accéder grâce au
Terminal (qui se trouve dans les utilitaires du dossier "
Applications"). Nous allons beaucoup nous en servir tout au long de ce tuto.
Je tiens à vous avertir que les réglages que nous allons effectuer ne correspondent pas à des réglages de serveurs réels ! En effet, ce n'est pas le but de ce tuto, je serai parfois un peu plus négligent avec la sécurité.
La plupart des serveurs Unix se configurent à partir des dossiers
/etc et
/etc/httpd (en tout cas, c'est ce qui se passe sous Mac OS). Les deux fichiers à connaître sont
php.ini et
httpd.conf.
Mais voilà : sur Mac OS, ces dossiers sont invisibles !

Heureusement, le terminal nous permet d'y accéder simplement. Nous allons d'abord configurer le
php.ini.
php.ini
Dans le terminal, nous allons ouvrir ce fichier avec la commande
pico. Par défaut, ce fichier n'existe pas. En revanche, les réglages par défaut du serveur sont stockés dans un fichier nommé
php.ini.default. Nous allons d'abord faire une copie de
php.ini.default nommée
php.ini.
Code : Console | sudo cp /etc/php.ini.default /etc/php.ini |
On vous demande un mot de passe administrateur, entrez-le (ne vous inquiétez pas si des étoiles ne s'affichent pas au fur et à mesure). Ouvrons notre
php.ini fraîchement créé.
Code : Console
Un véritable éditeur de texte apparaît sous vos yeux ébahis (à mon avis, il est bien meilleur que
TextEdit) !
Dans cet éditeur, il faut faire défiler le texte à l'aide des flèches haut et bas, ou bien des raccourcis clavier [Ctrl + V] pour descendre rapidement, ou [Ctrl + Y] pour remonter rapidement.
Nous allons modifier le php.ini en "descendant", et non pas par ordre d'importance. Il se peut que vous n'ayez rien à changer. Dans ce cas, réjouissez-vous !
Étape 1 : enlever les limitations au PHP
Pour nous déplacer encore plus vite, je vous conseille de taper [Ctrl + W], puis d'entrer le texte à rechercher dans le fichier. Le
Terminal vous y mène immédiatement.
Allez donc directement à la ligne "
disable_functions". Vous devriez arriver sur quelque chose de ce genre :
Code : Console | ; This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
disable_functions = |
Cela pourrait brider des fonctions de PHP. Pour s'assurer que tout PHP est activé, rajoutez un point-virgule devant
disable_functions =. Cela transforme cette instruction en commentaire (les commentaires dans les fichiers
.ini commencent par
;).
En descendant, vous devriez tomber sur :
Code : Console | ; This directive allows you to disable certain classes for security reasons.
; It receives a comma-delimited list of class names. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
disable_classes = |
De même, rajoutez un point virgule devant l'instruction
disable_classes qui désactive certaines classes du PHP.
Étape 2 : allouer de la mémoire au PHP
Un peu plus bas, vous trouverez les instructions suivantes :
Code : Console | ;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 30 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
memory_limit = 8M ; Maximum amount of memory a script may consume (8MB) |
max_execution_time = ... définit le temps maximum que prend l'exécution d'un script. Si cette limite est dépassée, le script s'arrête.
max_input_time = ... définit plus ou moins les mêmes choses, nous n'entrerons pas dans les détails.
memory_limit = ... accorde de la mémoire pour exécuter le script. À vous de voir jusqu'à combien vous êtes prêts à sacrifier !
Continuons
Étape 3 : le fameux register_globals
Ce dernier a provoqué bien des crises de nerfs...
Je vous conseille de le désactiver, si ce n'est pas déjà le cas, en remplaçant le
On par
Off. Le
register_globals concerne des problèmes de sécurité ou d'exécution du script, au niveau du contenu des variables non-initialisées. Depuis le PHP 4.2.0, le réglage standard est sur
Off, et c'est quand même mieux comme ça. Pour plus de détails, consultez
php.net.
Étape 4 : MySQL
Descendez jusqu'à
[MySQL].
Observons

!
Vous allez voir plein de
mysql.default_quelquechose :
- _port : définit le port d'accès pour MySQL ;
- _socket : le nom de la socket par défaut ;
- _host : adresse par défaut du serveur MySQL, utilisé pour les connections avec la base de données ;
- _user : le nom de l'utilisateur par défaut de MySQL ;
- _password : le mot de passe par défaut de cet utilisateur.
Si vous ne voulez pas définir quoi que ce soit par défaut, ce qui est possible, rajoutez des points virgules devant chaque instruction pour la rendre inopérante.
Une autre donnée intéressante peut être
mysql.connect_timeout, pour définir le temps maximum d'une requête SQL. Si elle dépasse le temps imparti (en secondes), alors la requête s'arrête. Par défaut, la valeur est à 60 secondes.
Étape 5 : les sessions
Allez jusqu'à
[Session], où vous allez pouvoir faire votre propre popote avec les sessions.
Remarquez que vous pouvez changer le temps par défaut d'expiration d'une session, où les infos sont stockées (
/tmp), comment s'appelle le cookie de session ou la session (
PHPSESSID), ...
À priori, vous n'avez rien à changer ici.
Enregistrer les modifications
Il ne vous reste plus qu'à enregistrer les modifications. En mode
pico toujours, [Ctrl + X].
Le terminal vous demande de valider ou non vos changements. "
y" pour oui, "
n" pour non.
Et voilà

!
Bien régler son PHP
Pour les besoins de votre site, vous pouvez très bien modifier quelques valeurs. Cependant, si par la suite vous souhaitez revenir à des valeurs normales, il vous suffit d'ouvrir le fichier
php.ini.default,
à ne surtout pas modifier ! Puis copiez les valeurs de
php.ini.default vers le
php.ini pour rétablir les réglages d'origine.
En cas de besoin, revenir en arrière peut s'avérer intéressant, voire vital.
httpd.conf
Nous allons enfin mettre en route le PHP ! Youpi ! À vos terminaux !
Code : Console | sudo pico /etc/httpd/httpd.conf |
Vous venez d'ouvrir le fichier qui gère votre serveur...
Étape 1 : activons PHP et mod_rewrite
Descendez. Vous allez tomber sur une suite de bibliothèques dont voici le début :
Code : Console | Example:
# LoadModule foo_module libexec/mod_foo.so
#LoadModule vhost_alias_module libexec/httpd/mod_vhost_alias.so
#LoadModule env_module libexec/httpd/mod_env.so
LoadModule config_log_module libexec/httpd/mod_log_config.so |
Cette fois, comme nous sommes dans un
.conf, les commentaires commencent par
#. Pour activer ou désactiver une bibliothèque, servez-vous du dièse !
Tout en bas de la liste, vous verrez :
Code : Console | #LoadModule perl_module libexec/httpd/libperl.so
#LoadModule php4_module libexec/httpd/libphp4.so
LoadModule hfs_apple_module libexec/httpd/mod_hfs_apple.so
LoadModule rendezvous_apple_module libexec/httpd/mod_rendezvous_apple.so |
La ligne
Code : Console | #LoadModule php4_module libexec/httpd/libphp4.so |
doit devenir
Code : Console | LoadModule php4_module libexec/httpd/libphp4.so |
(enlevez le
#).
Le httpd sur lequel je base mon tuto est relativement ancien. Vous pouvez donc très bien avoir un php5, ou php3, ça dépend.
Toujours en descendant, trouvez la ligne :
Code : Console
et débarrassez-vous du
# !
Si vous souhaitez faire de l'URL Rewriting, faites de même en activant les modules :
Code : Console | LoadModule rewrite_module libexec/httpd/mod_rewrite.so |
puis
Code : Console.
Étape 2 : dossier serveur
Rendez-vous à la ligne
Code : Console | DocumentRoot "/Library/WebServer/Documents" |
et remplacez ce chemin par celui qui vous plaît. Moi, j'ai par exemple choisi "
/Library/Webserver/Server".
Il se peut que votre chemin par défaut
DocumentRoot soit différent, peu importe.
Code : Console | <Directory />
Options FollowSymLinks
AllowOverride None
</Directory> |
Ces lignes correspondent aux options activées dans les dossiers où se trouve votre site. Tout dépend de ce que vous voulez faire (ici, le serveur peut juste suivre des liens symboliques). Dans un premier temps, mettez "
All" pour tout activer (sauf
MultiViews), comme ceci :
Code : Console | <Directory />
Options All
AllowOverride None
</Directory> |
Dans la "vraie vie", il est déconseillé de mettre All. Il faudrait même interdire l'accès au dossier (voir ci-dessous).
Code : Console | <Directory />
Order deny,allow
Deny from all
</Directory> |
Interdire l'accès au dossier du site.
Code : Console | <Directory "/Library/WebServer/Documents"> |
doit aussi être changé par le nouveau chemin que vous avez choisi.
Étape 3 : quelques options
Nous arrivons à une ligne comme ci-dessous :
Code : Console | Options Indexes FollowSymLinks MultiViews |
Laissez-la comme telle, ou remplacez par
All si vous souhaitez être tranquilles :
Code : Console
Puis ajoutez en-dessous de cette ligne :
Code : Console | DirectoryIndex index.php index.php4 index.htm index.html |
Cette ligne vous permet de définir quelles sont les pages
index validées (en précisant leurs extensions). Vous pouvez aussi définir la priorité d'un
index par rapport à un autre.
Par exemple, dans ce cas, si
index.php,
index.htm et
index.html se trouvent dans le même dossier "
sdz", si je charge l'URL "
http://localhost/sdz/", j'obtiendrai la page
index.php, prioritaire par rapport à
index.html et
index.htm. De même, si je supprime
index.php, alors c'est
index.htm qui s'affichera. À vous de voir quel ordre vous convient, mais de préférence évitez de mélanger les
index, ça ne fait pas bon ménage.
Étape 4 : autorisez les .htaccess
Pour autoriser les
.htaccess et autres, remplacez l'instruction
Code : Console | # This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
AllowOverride None |
par
Code : Console | # This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
AllowOverride All |
Pour finir, enregistrez
[Ctrl + X], puis tapez "
y". Voilà ! Vous avez quitté le mode
pico et votre serveur gère désormais le PHP.
En cas de besoin ou de fausse manip (

), n'hésitez pas à récupérer le fichier
httpd.conf.default pour repartir sur de bonnes bases. Ne le supprimez pas !
Des idées pour améliorer
Je viens de vous guider pour activer PHP. Mais ces fichiers, notamment le dernier, permettent un haut niveau de personnalisation. Il vous est par exemple possible d'activer le Perl, de définir une adresse mail du webmaster, ...
Les commentaires sont en général nombreux et clairs pour ceux qui comprennent l'anglais, et au cas où vous vous demanderiez à quoi sert telle ou telle option, une petite recherche suffira à vous documenter. Il ne faut donc pas avoir peur d'expérimenter quelques trucs, ça peut toujours être intéressant.
En réalité, MAMP fonctionne de la même manière, à la différence que ces fichiers ne se situent pas dans /etc.
Relancer le serveur
Il faut, pour qu'Apache prenne en compte nos modifications, redémarrer le serveur.
Code : Console.
Après ce brillant redémarrage, faites une copie des fichiers de votre site et mettez-les dans votre dossier "
Server", ou celui que vous avez choisi. Puis, dans votre navigateur chargez l'URL "
http://localhost/". De trois choses l'une. Soit votre page d'accueil s'affiche et vous sautez au plafond, soit vous ne voyez rien, et une erreur s'affiche ou encore votre Mac prend feu, et vous me lynchez.
Normalement, tout doit fonctionner correctement. N'hésitez pas à recommencer la configuration du
httpd.conf en repartant du
httpd.conf.default au besoin.
Il ne nous reste plus qu'à installer MySQL !