En clair, Apple a juste supprimé la possibilité de le lancer via une interface graphique, et il est toujours possible de le démarrer via la ligne de commande, via un simple sudo apachectl start
(respectivement stop
pour l'arrêter).
C'est cependant un poil contraignant, car il faut exécuter cette commande à chaque fois que l'on s'authentifie, ou après chaque redémarrage de la machine.
J'ai donc créé le fichier org.apache.httpd.plist
dans le répertoire /System/Library/LaunchDaemons
en tant que super-administrateur, à l'aide de la commande suivante :
# sudo vi /System/Library/LaunchDaemons/org.apache.httpd.plist
J'y ai ensuite ajouté le code XML suivant :
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>Label</key> <string>org.apache.httpd</string> <key>EnvironmentVariables</key> <dict> <key>XPC_SERVICES_UNAVAILABLE</key> <string>1</string> </dict> <key>ProgramArguments</key> <array> <string>/usr/sbin/httpd</string> <string>-D</string> <string>FOREGROUND</string> </array> <key>OnDemand</key> <false/> <key>SHAuthorizationRight</key> <string>system.preferences</string> </dict> </plist>
Il faut ensuite faire appartenir le fichier à root
et au group wheel
, puis lui attribuer les droits ad hocs, à l'aide des commandes suivantes :
# sudo chown root:wheel /System/Library/LaunchDaemons/org.apache.httpd.plist # sudo chmod 644 /System/Library/LaunchDaemons/org.apache.httpd.plist
Ainsi, httpd sera automatiquement démarré dès le démarrage de la machine.
Cependant, si httpd est effecivement lancé, il ne permet pas encore d'accèder au contenu du répertoire Sites
de votre répertoire d'accueil, accessible via l'URL http://localhost/~votreNomUtilisateur
.
Pour cela, il suffit d'exécuter la commande suivante une seule fois :
# sudo echo -e "
\nOptions Indexes MultiViews\nAllowOverride All\nOrder allow,deny\nAllow from all\n " > /etc/apache2/users/$USER.conf # sudo chown root:wheel /etc/apache2/users/$USER.conf # sudo chmod 644 /etc/apache2/users/$USER.conf
Après un avoir forcé httpd à relire ses fichiers de configuration à l'aide de la commande sudo apachectl graceful
, vous devriez pouvoir accèder sans problème au contenu de votre répertoire Sites
à l'aide d'un navigateur sans aucun problème.
15 réactions
1 De mbk28 - 24/08/2012, 09:54
j'ai suivi votre tuto, mais lorsque je veux forcer httpd à relire les fichier, j'ai le message suivant:
This operation requires root.
que faire?
merci
2 De mageekguy - 24/08/2012, 11:03
@mbk28 : il faut exécuter la commande
sudo apachectl graceful
, j'ai corrigé le billet en conséquence.3 De mbk28 - 24/08/2012, 11:22
voici le message que j'ai:
Forbidden
You don't have permission to access /~ibook/ on this server.
4 De mageekguy - 24/08/2012, 11:34
@mbk28 : ibook est ton nom d'utilisateur, ou le nom de ta machine ?
Il faut que tu utilises ton nom d'utilisateur pour que cela fonctionne.
5 De mbk28 - 24/08/2012, 12:36
ibook est le nom de la maison utilisateur
6 De mbk28 - 24/08/2012, 12:55
voici ce que j'ai entré:
mais cela ne fonctionne pas
7 De mageekguy - 24/08/2012, 14:24
@mbk28 : Ok, j'ai compris le problème, il faut bien que tu utilises
$USER
, comme dans le billet, et non$IBOOK
.8 De mbk28 - 24/08/2012, 15:14
ok, mais j'ai déjà essayé et cela ne fonctionne pas, de plus je suis allé dans le dossier users et il est vide.
petite précision peut-être utile, je suis sur rétina
9 De mageekguy - 24/08/2012, 16:13
@mbk28 : Exécute dans un terminal la commande
sudo vim /etc/apache2/users/ibook.conf
et copie/colle dans la fenêtre qui s'ouvrira le code suivant :Ensuite, tape
:wq
et exécute dans un terminal la commandesudo apachectl restart
.Normalement, tu devrais alors pouvoir accéder à ton répertoire via ton navigateur.
10 De mbk28 - 24/08/2012, 17:02
excuse, je suis peut-être un peu lourd, mais après ouverture en bas de page j'ai:
/etc/apache2/users/ibook.conf" New File
et après avoir copié-collé, j'ai en bas de page:
-- INSERT
puis --
(je fais cela car si je colle
INSERT, ce n'est plus pareil)je fais quoi ensuite?
merci
11 De mageekguy - 24/08/2012, 22:04
@mbk28 : tu tapes
Esc
pour passer du mode insertion au mode normal, puis:wq
pour enregistrer ton fichier et quitter vim, et tu exécutes ensuite les commandes suivantes de mon précédent commentaire.12 De mbk28 - 25/08/2012, 17:43
wq ne fonctionne pas
je suis désolé, mais je n'ai pas l'habitude de mettre les main dans le cambouis
13 De zepouet - 21/12/2012, 20:47
Ca apporte pas grand chose mais merci tu m'as sauvé la vie avec tes explications.
Je connaissais certains galères sous Apache et Linux mais avec Apple c'est le pompom. J'adore le /etc/apache2/users/xxx... c'est standard
Thanks a lot
14 De micky - 13/02/2013, 00:57
bonsoir, je voulais savoir si le vhost etait envisageable avec cette config? je me sers de /Library/WebServer/Documents pour mes sites que je mets en ligne et de users/nameUser/Sites pour mes sites perso en local je voulais activer le vhost sur users/nameUser/Sites c'est possible?
15 De mageekguy - 13/02/2013, 09:39
@micky : Aucun problème, il te suffit de définir tes vhosts dans
/etc/apache2/extra/httpd-vhosts.conf
puis de faire unsudo apachectl graceful
.