Opaze

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 24 avril 2009

Apache : création d'un vhost

Dans un premier temps il faut éditer le fichier de configuration d'apache pour lui demander de prendre en compte la configuration des vhosts.

cd /private/etc/apache2
sudo vi httpd.conf

Rechercher les lignes suivantes : (/Virtual Hosts)

# Virtual Hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf

Décommenter la seconde ligne enregistrer et quitter.

Ensuite, on passe à la création du vhost en lui même :

sudo vi extra/httpd-vhosts.conf

Commenter tout le bloc du premier <VirtualHost *:80>.

#<VirtualHost *:80>
#    ServerAdmin webmaster@dummy-host.example.com
#    DocumentRoot "/www/docs/dummy-host.example.com"
#    ServerName dummy-host.example.com
#    ServerAlias www.dummy-host.example.com
#    ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
#    CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log common"
#</VirtualHost>

Et modifier le suivant en fonction et votre site :

<VirtualHost *:80>
    ServerAdmin webmaster@monsite.org
    DocumentRoot "/Users/Cyb/Dev/Web/monsite"
    ServerName monsite
    ErrorLog "/private/var/log/apache2/monsite-error_log"
    CustomLog "/private/var/log/apache2/monsite-access_log common"
</VirtualHost>

Enregistrer et quitter.

Maintenant on ajoute un "faux DNS" pour notre site :

sudo vi /etc/hosts

Et on ajoute la ligne :

127.0.0.1       monsite

Enregistrer et quitter.

Voilà ! Il ne reste plus qu'à redémarrer Apache et de lancer un navigateur avec l'URL http://monsite/

samedi 16 août 2008

Erreurs et maintenance d'Apache

Je viens de constater que mon Apache ne démarrait plus. Voici donc une bonne occasion pour expliquer où se trouve certains fichiers.

Si vous n'avez plus accès à vos pages Web, essayez de le relancer à la main :

macyb:~ Cyb$ sudo apachectl -k start
Password:
(2)No such file or directory: httpd: could not open error log file /private/var/log/apache2/error_log.
Unable to open logs

Si vous obtenez cette erreur, la résolution est très simple : il faut créer un dossier apache2 pour les logs :

sudo mkdir /private/var/log/apache2

Relancez.

macyb:~ Cyb$ sudo apachectl -k restart

Vous venez de voir ou se trouvent les fichiers de log d'Apache. On va donc y jeter un œil :

macyb:~ Cyb$ tail -f /private/var/log/apache2/error_log

Cette commande vous permettra de visualiser les erreurs au fil de l'eau. Pour quitter, ctrl+c. L'erreur la plus courante sera sûrement une erreur 404 (File does not exist) pour le favicon. En effet, à chaque requête au serveur, une deuxième est faite pour charger le fichier favicon.ico (la petite image à coté de l'URI).

Si comme moi vous avez un peu la tête en l'air, pour ne pas oublier de sauvegarder vos fichiers, le plus simple est de les mettre dans votre compte utilisateur à la place de /Library/WebServer/.

Pour cela, on va éditer le fichier httpd.conf :

macyb:~ Cyb$ sudo vi /private/etc/apache2/httpd.conf 
Password:

Cherchez la ligne suivante :

DocumentRoot "/Library/WebServer/Documents"

Et remplacez-la par le chemin de votre choix.

DocumentRoot "/Users/Cyb/Dev/Web"

Si vous enregistrez maintenant (echap et :w) et relancez Apache, vous constaterez que Apache ne vous laisse pas accéder à vos fichiers. Normal, il est configuré pour interdire l'accès à tous les fichiers en dehors des sites définis. Nous replongeons donc dans le fichier httpd.conf et juste en dessous du DocumentRoot on trouve une série de lignes dont la première est :

<Directory "/Library/WebServer/Documents">

Pour faire simple, cette section indique à Apache qu'il a le droit d'accéder aux fichiers présents dans ce dossier. Or, le chemin indiqué est celui par défaut et non celui que l'on veut. Il suffit donc de le remplacer par celui que l'on a choisi :

<Directory "/Users/Cyb/Dev/Web">

Enregistrez le fichier et relancez Apache. Voilà vos pages Web !

dimanche 30 mars 2008

MySQL 5 sous Leopard

Installation

MySQL a compilé un paquet pour nous. Téléchargez la version 32 bits (Mac OS X 10.5 (x86)) et installez le pkg fourni (mysql-5.0.51a-osx10.5-x86.pkg). Profitez-en pour installer le "prefPane" (MySQL.prefPane). Il permet de piloter MySQL depuis les Préférences systèmes.

MySQL se trouve à l'emplacement suivant : /usr/local/mysql-5.0.51a-osx10.5-x86/. À noter que l'installeur créé automatiquement un lien symbolique /usr/local/mysql

Normalement on se dit : "C'est sympa d'être sous Mac car tout est plus simple !". Et bien non ! Car si vous avez testé, le prefpane ne fonctionne pas pour lancer et arrêter MySQL mais il permet juste d'activer MySQL au démarrage de la machine. Ça c'est pour la partie visible, il y en a d'autres...

Comment lancer MySQL ?

Plutôt que de se rendre tout le temps dans le répertoire pour le lancer, on va commencer par ajouter le chemin de MySQL dans le PATH. Dans le terminal tapez :

echo 'export PATH=/usr/local/mysql/bin:$PATH' >> ~/.bash_profile

Relancez un terminal. Les commandes de MySQL doivent désormais être accessibles (tapez "mys" puis tab 2 fois).

Oui mais il est toujours pas lancé ! Certes ... on continu :

echo 'alias mysql_start="sudo /usr/local/mysql/support-files/mysql.server start"' >> ~/.bash_profile
echo 'alias mysql_stop="sudo /usr/local/mysql/support-files/mysql.server stop"' >> ~/.bash_profile
echo 'alias mysql_restart="sudo /usr/local/mysql/support-files/mysql.server restart"' >> ~/.bash_profile

Relancez un terminal et tapez :

macyb:~ Cyb$ mysql_start 
Password:
Starting MySQL
 SUCCESS!

MySQL est normalement lancé. On va vérifier quand même ...

macyb:~ Cyb$ ps aux | grep mysqld
Cyb      13259   0.0  0,0   599780    460 s001  R+   12:22     0:00.00 grep mysqld
_mysql   13228   0.0  0,6   635248  13444 s000  S    12:21     0:00.05 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --pid-file=/usr/local/mysql/data/macyb.local.pid
root     13209   0.0  0,0   600252    776 s000  S    12:21     0:00.01 /bin/sh ./bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/macyb.local.pid

Le port 3306 (par défaut) doit être ouvert :

macyb:~ Cyb$ netstat -an | grep 3306
tcp4       0      0  *.3306                 *.*                    LISTEN

Un petit test en console :

macyb:~ Cyb$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.0.51a MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SELECT (2+2);
+-------+
| (2+2) |
+-------+
|     4 | 
+-------+
1 row in set (0.00 sec)

mysql> quit
Bye

Tout roule, on continu.

Modifier PHP pour qu'il trouve MySQL

Copiez le fichier de configuration de PHP par défaut :

sudo cp /etc/php.ini.default /etc/php.ini

Éditez-le (sudo vi /etc/php.ini) et trouvez la ligne suivante :

mysql.default_socket = 

Modifiez-la en :

mysql.default_socket = /tmp/mysql.sock

Si vous utilisez mysqli alors remplacez aussi la ligne suivante :

mysqli.default_socket = /tmp/mysql.sock

Il ne reste plus qu'a tester : dans un terminal...

php -r 'mysql_connect(localhost, root, ""); echo mysql_result(mysql_query("SELECT NOW();"),0)."\n";'

Vous devez voir la date courante (NOW).

Activation du serveur Apache et PHP sous Leopard

Dans la dernière version de Mac OS X (10.5 alias Leopard) est inclut PHP 5. À cette date c'est actuellement la version 5.2.5 qui est installée. Apache est toujours de la partie mais cette fois en version 2.

macyb:~ Cyb$ apachectl -v
Server version: Apache/2.2.8 (Unix)
Server built:   Feb 20 2008 12:01:56

macyb:~ Cyb$ php -v
PHP 5.2.5 (cli) (built: Feb 20 2008 12:30:47) 
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

Cela simplifie déjà une bonne partie de l'installation.

Pour activer Apache il n'y a rien de plus simple. Rendez-vous dans les Préférences système puis dans Partage. Ensuite activez le Partage web. La pastille passe au vert, apache vient d'être lancé. Lancez un navigateur avec http://localhost/ comme URI. Magnifique ! La page par défaut d'apache : on peut continuer.

Dans la configuration d'Apache, le module PHP n'est pas chargé par défaut. Voici comment y remédier :

macyb:~ Cyb$ sudo vi /etc/apache2/httpd.conf 

WARNING: Improper use of the sudo command could lead to data loss
or the deletion of important system files. Please double-check your
typing when using sudo. Type "man sudo" for more information.

To proceed, enter your password, or type Ctrl-C to abort.

Password:

Une fois votre mot de passe entré, cherchez dans le fichier la ligne suivante :

#LoadModule php5_module        libexec/apache2/libphp5.so

Décommentez-la et enregistrez (echap, puis :wq). Rechargez apache.

macyb:~ Cyb$ sudo apachectl restart

Si vous avez été attentifs lors de l'activation d'apache, vous avez remarqué qu'il y a un site global pour la machine et un site pour chaque utilisateur. Le tilde n'étant pas très sexy dans une URI, on va s'intéresser au site de la machine. Son emplacement est dans /Library/WebServer/Documents/ ou directement via le Finder Bibliothèque -> WebServer -> Documents. Supprimez le contenu du dossier. Créez un fichier de test nommé index.php qui contient le phpinfo :

<?php
phpinfo();
?>

Retournez dans votre navigateur et actualisez. Vous devez visualiser à présent le détail de la configuration de PHP.