Activer macports apache2 via les préférences système

Portrait de titouille

Je me suis un peu amusé ces derniers temps avec Snow Leopard. J'ai tenté un hackintosh et je l'ai installé sur mon serveur de salon, histoire de voir si ça tournait vraiment. Premièrement, ça tourne, c'est plutôt cool.

Je voulais essayer d'en faire un serveur web, et j'ai installé apache2 et tout le tremblement via macports.

sudo port install php5 apache2 php5_soap mysql5-server

(le mysql5-server c'est pour installer mysql5 serveur et client et avoir les librairies nécessaires dans php5)

Après avoir tout installé, j'ai tout d'abord rajouté quelques alias dans le fichier .profile situé dans mon répertoire personnel :

sudo nano /Users/titouille/.profile
 
# contenu du fichier .profile après ajout des aliases :
 
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export MANPATH=/opt/local/share/man:$MANPATH
export EDITOR=/usr/bin/nano
 
alias apache2-start='sudo /opt/local/apache2/bin/apachectl start'
alias apache2-stop='sudo /opt/local/apache2/bin/apachectl stop'
alias apache2-restart='sudo /opt/local/apache2/bin/apachectl restart'
alias apache2-reload='sudo /opt/local/apache2/bin/apachectl reload'
 
alias mysql5-start='sudo launchctl load -F /Library/LaunchDaemons/org.macports.mysql5.plist'
alias mysql5-stop='sudo launchctl unload /Library/LaunchDaemons/org.macports.mysql5.plist'

j'ai ensuite redémarré la console pour que les modifs soient prises en compte et j'ai rapidement reconfiguré mysql pour qu'il aille chercher les données dans un emplacement différent de /opt/local/var/db/mysql5 :

# ajout de mysql au démarrage du système :
sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
 
# arrêt du serveur mysql
mysql5-stop
 
# copie des données mysql en gardant les attributs de fichiers (-p)
sudo cp -Rp /opt/local/var/db/mysql5 /Volumes/dev/web
 
# création d'un fichier de configuration mysql
sudo cp /opt/local/share/mysql5/mysql/my-medium.cnf /opt/local/etc/mysql5/my.cnf
 
# edition du fichier de configuration 
sudo nano /opt/local/etc/mysql5/my.cnf
 
# rajout d'une ligne "datadir" dans la section [mysqld]
[mysqld]
port            = 3306
socket          = /opt/local/var/run/mysql5/mysqld.sock
datadir         = /Volumes/dev/web/mysql5
 
# redémarrage du serveur mysql
mysql5-start
 
# test pour savoir si mysql est bien redémarré
mysqladmin5 -u root -p ping

J'ai enfin testé via mysqladministrator la création d'une nouvelle base de données, et elle est bien apparue dans le nouveau répertoire data de mysql5 (sous /Volumes/dev/web/mysql5)

Maintenant, la suite : Mon problème, c'est que même en ajoutant

sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist

Apache ne voulait décidément pas démarrer au démarrage de l'ordinateur.
Après pas mal de recherches, je suis tombé sur un premier thread qui me semblait intéressant : pouvoir activer apache2 macports via les préférences système (partage -> partage web). Normalement, c'est la version apache pré-installée avec mac osx qui se démarre à partir du panneau de préférence, mais le thread semblait prometteur. J'ai suivi la section "Fake Out System Preferences" mais à ma grande déception, ça n'a pas fonctionné.

Par la suite, toujours en faisant des recherches sur ce problème de démarrage, je suis tombé sur une autre page web qui semblait expliquer comment installer apache2 / php5 et une petite partie m'a semblé intéressante :

# Edit org.apache.httpd startup plist
cd /System/Library/LaunchDaemons
sudo nano org.apache.httpd.plist
 
# Change the line:
<string>/usr/sbin/httpd</string>
to ..
<string>/usr/local/sbin/httpd</string>

Alors j'ai voulu tenter le coup. Au final, voici ce que j'ai fait après avoir installé apache2 et php52 avec macports :

# déplacement dans le répertoire sbin
cd /usr/sbin
# renommage de apachectl (par défaut) en apachectl1-1.3
sudo mv apachectl apachectl1-1.3
# lien symbolique de apachectl (macports) dans sbin
sudo ln -s /opt/local/apache2/bin/apachectl apachectl
#edition du fichier httpd.conf pour y rajouter une ligne
sudo nano /opt/local/apache2/conf/httpd.conf
 
# ligne à rajouter dans httpd.conf, juste après la directive DocumentRoot :
# PidFile "/private/var/run/httpd.pid"
 
# edition du fichier org.apache.httpd.plist
sudo nano /System/Library/LaunchDaemons/org.apache.httpd.plist
 
# modification dans ce fichier de la ligne contenant
# <string>/usr/sbin/httpd</string>
# en
# <string>/opt/local/apache2/bin/httpd</string>

J'ai d'abord tenté de démarrer le serveur web via les préférences système. En naviguant sur http://localhost, j'avais bien une page correcte.
J'ai redémarré l'ordinateur. Le serveur web était toujours démarré, et la page affichée dans le navigateur était toujours ok.

Petit + : pour utiliser SVN sur un serveur mac, utiliser macports pour installer les éléments nécessaires :

sudo port install subversion +mod_dav_svn +tools

Ce qui permet ensuite de pouvoir configurer un virtualHost sur le port 443 et d'utiliser "DAV svn". A partir de cette installation, j'ai accès aux modules mod_dav_svn et mod_authz_svn qui me permettent de mettre en place un svn et d'authentifier les utilisateurs à partir d'un fichier d'accès.

A suivre pour d'éventuels problèmes, mais à priori c'est fonctionnel Smile