Voyons comment installer le nécessaire pour transformer votre FreeBSD en un
environnement de développement complet pour PHP. Pour cela nous utiliserons
au maximum les caractéristiques de ce système et notamment le catalogue de
logiciels portés.
Ce tutoriel se veut littéralement libre puisqu'aucune version du serveur
Apache, de la base de données MySQL ou encore de PHP ne vous est imposée.
La description de leur installation concerne le plus large éventail de
versions possibles pour s'adapter aux besoins de chacun.
Nous avons tout intérêt à utiliser et user de cet aspect du système
FreeBSD pour tous les avantages qu'il offre notamment au niveau des
mises à jour et des options supplémentaires qui sont offertes. Vous
devez cependant savoir à leur sujet que :
Bien que les dépendances entre les différents programmes soient
gérées par le système de logiciels portés, ce tutoriel se veut
progressif. Les différentes installations et configuration sont
effectuées pas à pas. On pourrait très bien commencer par
phpMyAdmin qui installerait également MySQL et PHP mais je suis
certain que cela ne vous fera, au final, pas gagner de temps ;
Les logiciels portés ne vous permettent pas d'installer plusieurs
versions d'un même programme, quel qu'il soit, sur un même
système car ils peuvent induire des conflits mutuels. Si vous
aviez toutefois le besoin d'en utiliser plusieurs simultanément,
vous n'aurez d'autres choix que d'installer les autres versions
manuellement, vous faisant ainsi perdre tous leurs bénéfices
notamment pour les mises à jour.
Il est vivement recommandé de posséder des logiciels portés à jour !
L'échéance de PHP 4
Sachez que PHP 4 n'évoluera plus, passé l'année 2007. Seules des
mises à jour de sécurité seront disponibles jusque début août 2008.
Il faut s'attendre à ce que le catalogue des ports évolue en ce sens
à l'avenir.
1. Installation d'Apache
Nous débuterons par l'installation du serveur Apache. Vous êtes ici
libres quant au choix de la version que vous envisagez d'utiliser puisque
l'installation de chacune d'entre elle sera détaillée ici-même.
1.1. Apache 1.3
L'installation à partir des ports se fait simplement à l'aide des
commandes suivantes :
Dans le même ordre d'idée, le port correspondant au serveur Apache 2.0
vous permet de voir l'ensemble des modules disponibles et de savoir
lesquels sont compilés par défaut et sous quelle forme (statique ou
dynamique) :
cd /usr/ports/www/apache20
make show-modules show-categories
Après avoir pris connaissance des différentes options de compilation
disponibles pour ce port, nous pouvons procéder à l'installation où ici
nous désactivons les modules liés au protocole WebDAV :
cd /usr/ports/www/apache20
make install WITHOUT_DAV_MODULES=yes
Enfin, nous allons faire en sorte que Apache s'exécute automatiquement
au démarrage de la machine. Pour cela, éditez le fichier /etc/rc.conf
pour y ajouter :
Vous pouvez procéder à une installation interactive d'Apache 2.2 qui
vous proposera par défaut un large choix de modules qui seront tous
compilés sous la forme de modules dynamiques :
Si vous choisissez cette approche les commandes sont les suivantes :
cd /usr/ports/www/apache22
make config
make install
Mais cette branche du serveur Apache est fortement similaire
à sa version précédente (2.0). En effet, le système de logiciels
portés propose aussi une cible pour obtenir une liste exhaustive des
options de compilation de ce programme :
On retrouve également la même commande concernant les modules (ceux
qui sont activés par défaut et sous quelle forme ils sont liés) :
cd /usr/ports/www/apache22
make show-modules show-categories
Après avoir consulté les différentes options disponibles, nous
pouvons lancer l'installation. La commande ci-dessous permet de
se limiter aux principaux modules et de les intégrer sous forme
statique à l'exception des modules ssl, rewrite et userdir :
cd /usr/ports/www/apache22
make install \
WITHOUT_APACHE_OPTIONS=yes \
WITH_MODULES="authz_hostactionsaliascgicharset_litedeflatedirenvexpiresheaderslog_configlogiomimemime_magicnegotiationsetenvifunique_idvhost_aliasfiltersslrewriteuserdir" \
WITH_STATIC_MODULES="authz_hostactionsaliascgicharset_litedeflatedirenvexpiresheaderslog_configlogiomimemime_magicnegotiationsetenvifunique_idvhost_aliasfilter"
Enfin, pour démarrer Apache en même temps que la machine nous
ajoutons dans le fichier /etc/rc.conf, les lignes suivantes :
Afin d'autoriser les connexions web entrantes (protocoles HTTP et
HTTPS) et seulement celles-ci, nous avons besoin d'ajouter quelques
règles dans la configuration de notre firewall. En voici un exemple
avec Packet Filter :
Nous poursuivons par l'installation du SGBD MySQL. Plusieurs versions
sont disponibles par les ports. Choisissez donc la version qui vous
convient en prenant en considération les éléments suivants :
Versions disponibles dans les ports :
3.23 : ancienne version de production
4.0 : ancienne version de production
4.1 : ancienne version de production
5.0 : version de production actuelle (recommandée)
5.1 : version en développement amenée à être la prochaine version de production
2.1. Installation
Suivant la version choisie :
MySQL 3.23 :
cd /usr/ports/databases/mysql323-server
make install WITH_OPENSSL=yes WITH_CHARSET=latin1 WITH_XCHARSET=all
MySQL 4.0 :
cd /usr/ports/databases/mysql40-server
make install WITH_OPENSSL=yes WITH_CHARSET=latin1 WITH_XCHARSET=all
MySQL 4.1 :
cd /usr/ports/databases/mysql41-server
make install \
WITH_OPENSSL=yes \
WITH_CHARSET=latin1 \
WITH_XCHARSET=all \
WITH_COLLATION=latin1_swedish_ci
MySQL 5.0 :
cd /usr/ports/databases/mysql50-server
make install \
WITH_OPENSSL=yes \
WITH_CHARSET=latin1 \
WITH_XCHARSET=all \
WITH_COLLATION=latin1_swedish_ci
MySQL 5.1 :
cd /usr/ports/databases/mysql51-server
make install \
WITH_OPENSSL=yes \
WITH_CHARSET=latin1 \
WITH_XCHARSET=all \
WITH_COLLATION=latin1_swedish_ci
Quelque soit la version choisie, le démarrage automatique se fait de
la même manière. Pour cela éditez /etc/rc.conf pour y ajouter
la ligne suivante :
#MySQL3.23|4.0|4.1|5.0|5.1
mysql_enable="YES"
Si vous souhaitez lancer de suite MySQL sans avoir à redémarrer, vous
pouvez le faire à l'aide de la commande suivante :
L'administrateur MySQL nommé root (aucun lien avec le système) ne
dispose pas par défaut de mot de passe. Il convient donc de fixer
ce dernier rapidement.
Pour ce faire, connectez-vous à MySQL à l'aide de la commande :
Dernière grande étape : l'installation de PHP en tant que module
dynamique du serveur HTTP Apache. Celle-ci se divise en deux temps, tout
d'abord l'installation du core puis des extensions, sous formes
dynamiques donc.
3.1. PHP 4
L'installation de PHP se réalise à l'aide des commandes suivantes :
cd /usr/ports/lang/php4-extensions
make config
make install
Les extensions minimales recommandées sont : bz2, mbstring, mysql et/ou
mysqli, openssl, pcre (expressions régulières compatibles PERL :
fonctions preg_*), session, zlib. Mais vous pourrez sans problème en
rajouter ou retirer par la suite.
Le fichier principal de configuration de php est par défaut attendu
dans le répertoire /usr/local/etc/. Vous pouvez le créer à
présent à partir des configurations modèles qui ont été installées :
cd /usr/ports/lang/php5-extensions
make config
make install
Les extensions de base recommandées sont : bz2, mbstring, mysql,
openssl, pcre (expressions régulières compatibles PERL : fonctions
preg_*), session, zlib. Vous pourrez utiliser les ports pour ajouter
ou supprimer des extensions à tout moment par la suite.
Le fichier php.ini chargé par défaut par PHP est
/usr/local/etc/php.ini. Or il vous revient de créer ce
dernier. Pour ce faire basez-vous sur les exemples que vous pouvez
modifier au passage :
Il vous est possible de connaître l'ensemble des extensions PHP
figurant parmi les logiciels portés en y effectuant une recherche
à l'aide des commandes suivantes :
cd /usr/ports
#PHP4make search name=php4-\|pecl- |less#PHP5make search name=php5-\|pecl- |less
Certaines extensions de type PECL requièrent une version 5 de PHP et
d'autres ont été, depuis, intégrées à PHP (c'est le cas par exemple
des extensions json ou zip).
Il ne vous reste ensuite qu'à compiler/installer celles que vous avez
choisi de la même manière que nous l'avons fait précédemment pour
Apache, MySQL ou encore PHP. Exemple avec l'extension PECL appelée
bcompiler :
Note concernant la valeur de la directive ServerName : si vous
y indiquez un nom, assurez-vous que celui-ci puisse être résolu par le
système en une adresse car sans cela Apache refusera de démarrer. La
résolution de noms, avec une configuration par défaut, est réalisée par
consultation du fichier /etc/hosts puis des serveurs DNS
(indiqués par le fichier /etc/resolv.conf).
4.1. Relative à PHP
Nous avons besoin de lier l'extension php au module PHP pour
que le serveur Apache interprète les scripts. Pour plus de confort
nous indiquons, qu'un fichier du nom de index.php doit être
considéré comme une page par défaut de répertoire.
Modifications à apporter suivant la version :
Apache 1.3 : ajoutez à
/usr/local/etc/apache/httpd.conf, en fin de fichier
par exemple :
Generating RSA private key, 1024 bit long modulus
......................++++++
...........++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:lapassphrasequ'ilfaudraconserver
Nous générons une demande de certificat :
openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:lapassphrasedonnéeprécédemment
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (eg, YOUR name) []:lenomexactdevotreserveurweb
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:unmotdepassesolide(vousn'aveznulbesoindelemémoriser)
An optional company name []:
Si vous ne désirez pas que le serveur Apache vous demande la
passphrase à chacun de ses démarrages, vous pouvez supprimer
son cryptage par la passphrase en procédant ainsi :
On conserve une copie du certificat original chiffré :
Apache 2.2 n'est initialement pas prévu pour pouvoir stopper la
prise en charge du protocole HTTPS comme c'est le cas d'Apache 1.3
et 2.0 en omettant le paramètre -DSSL. Vous pouvez rectifier le tir
si besoin en modifiant les deux parties suivantes :
Le chargement du module SSL si explicitement demandé via la
ligne de commande de lancement du serveur Apache :
Le moment est venu de tester notre installation et pour nous épargner
un redémarrage de la machine nous allons démarrer Apache manuellement.
Suivant la version utilisée :
Apache 1.3 :
/usr/local/etc/rc.d/apache.sh start
Apache 2.0 :
/usr/local/etc/rc.d/apache2.sh start
Apache 2.2 :
/usr/local/etc/rc.d/apache22 start
5.2. Vérifier la bonne interprétation des scripts PHP
Avant d'aller plus loin nous devons nous assurer que nos scripts sont
bien interprétés par PHP et pour cela nous allons procéder à un test
fort simple.
En fonction de la version employée de Apache :
Apache 1.3 et 2.0 : créer le fichier /usr/local/www/data-dist/index.php avec pour contenu :
Vous devriez alors voir apparaître à l'adresse http://votre_machine/index.php
un tableau similaire à celui ci-dessous :
phpinfo
6. phpMyAdmin
phpMyAdmin est une interface, écrite en PHP, qui va vous permettre
d'administrer facilement votre base de données ou encore d'élaborer et
tester vos différentes requêtes. Ceci en fait donc un outil incontournable.
6.1. Installation de phpMyAdmin
phpMyAdmin figure parmi les logiciels portés, nous profiterons donc
de cette opportunité pour son installation :
cd /usr/ports/databases/phpmyadmin
make config
make install
Une liste d'options telle que celle ci-dessous devrait alors vous
être proposée :
Il s'agit des extensions PHP requises par phpMyAdmin pour ses
fonctionnalités avancées et vous en avez probablement déjà installé
une partie plus tôt. Par conséquent, vous pouvez ne rien sélectionner
et celles qui sont déjà présentes seront tout simplement ignorées.
L'extension MySQLi requiert une version 5 de PHP ainsi qu'une version
4.1 ou supérieure de MySQL.
6.2. Configuration d'Apache
Modifiez la configuration d'Apache afin de déclarer un nouvel alias,
pour pouvoir utiliser phpMyAdmin, parmi les autres qui y figurent déjà.
L'utilisation d'un alias est nécessaire puisque les scripts constituant
phpMyAdmin sont situés à l'extérieur de la racine.
Apache 1.3 et 2.0 : pour Apache 1.3 ajoutez les lignes
ci-dessous à /usr/local/etc/apache/httpd.conf ; dans
le cas d'Apache 2.0 faites de même avec son fichier de
configuration, à savoir /usr/local/etc/apache2/httpd.conf,
ou créez le fichier /usr/local/etc/apache2/Includes/phpmyadmin.conf
avec pour contenu :
Vous avez besoin de redémarrer Apache pour prendre en considération ces
changements afin de pouvoir utiliser phpMyAdmin. Voici la procédure :
Apache 1.3 :
/usr/local/etc/rc.d/apache.sh restart
Apache 2.0 :
/usr/local/etc/rc.d/apache2.sh restart
Apache 2.2 :
/usr/local/etc/rc.d/apache22 restart
Au lieu de redémarrer Apache, vous pouvez lui dire de relire ses
fichiers de configuration en lui envoyant un signal HUP (valeur
numérique 1) - à l'aide de la commande (p)kill.
6.3. Configuration de phpMyAdmin
Nous aurons besoin de créer un sous-répertoire config dans
lequel phpMyAdmin s'attend à y écrire le fichier de configuration
que nous nous apprêtons à générer :
Nous sommes maintenant en mesure de pouvoir configurer phpMyAdmin. Pour cela,
Dirigez-vous à l'adresse http(s)://<votre_machine>/pma/scripts/setup.php
avec un navigateur. Toute la procédure de configuration est illustrée par la
vidéo suivante :
Une fois l'installation terminée, nous déplaçons le fichier de
configuration de phpMyAdmin et supprimons le répertoire temporaire
config :
Dans le cas d'une configuration multi-utilisateurs, nous devons créer
notre utilisateur MySQL de contrôle pour phpMyAdmin que nous avons
renseigné précédemment lors de sa configuration. Remplacez
mot_de_passe ci-dessous par celui que vous avez fourni tantôt.
Vous avez à votre disposition un environnement de travail complet et prêt
à l'emploi pour développer en PHP. Vous pouvez enrichir ce dernier
d'autres langages scripts interprétés comme Perl, Python, Ruby, etc
ou des SGBDR alternatifs tels que PostGreSQL.
La configuration avancée de ces différents éléments et leur sécurité
n'étant pas abordées ici, je vous renvoie donc sur les différentes
sections de Developpez. Pour en savoir plus sur ces sujets, consultez :