Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.

Installation Apache+PHP

Apache

Tout d'abord, faîtes :

cd /usr/ports/www/apache22 && make install WITHOUT_DAV_MODULES=yes clean

Vous avez le temps, vous pouvez prendre une pause là.

Une fois la compilation terminé, il faut automatiser le lancement du daemon HTTP au démarrage du serveur. Pour cela il faut ajouter ajouter deux lignes au fichier /etc/rc.conf:

# echo 'apache22_enable="YES"' >> /etc/rc.conf
# echo 'apache22_flags="-DSSL"' >> /etc/rc.conf # Active le support de SSL

Il faut ensuite éditer le fichier /usr/local/etc/apache22/httpd.conf pour le faire coller à votre configuration. Il existe un bon nombre de documentations sur le sujet (par exemple: http://httpd.apache.org/docs/2.2/).

# vi /usr/local/etc/apache22/httpd.conf

Vous pouvez tester si votre installation a marché correctement en lancant le serveur Web:

 # /usr/local/etc/rc.d/apache22 start 

Puis en ouvrant un navigateur sur l’URL de votre serveur. Vous devrier avoir une page avec écrit “It Works!”

Le répertoire racine de votre site Web se trouve: /usr/local/www/apache22/data. (Sauf si vous l'avez modifié)

Divers

Pour que Apache puisse s'éxécuter dans de bonnes conditions : Il faut que votre repertoire “top” (typiquement /usr/local/www/apache22/data et tout ce qu'il y a en dessous soit chmodé de la sorte :

 chmod -R 754 reptop

. (Attention aux scripts qui ont des besoins spécifiques !)

Et vos fichiers doivent également être “chowné” de la sorte :

chown -R kinji:www (sur tout les fichiers depuis reptop)

(C'est valide pour mon user, adaptez pour le votre et si vous avez plusieurs utilisateurs…vous n'êtes pas idiot !)

Et pour vous garantir un fonctionnement optimal :

pw user mod www -G kinji

Vous rajoutez www à votre groupe correspondant à votre utilisateur. Ce qui permet à Apache de traiter les fichiers que vous déposez manuellement sur le serveur. Autrement il vous faudrait les chmoder à chaque fois.

PHP

En l’état actuel de la configuration, votre serveur ne prendra pas en compte le language PHP. Il faut pour cela installer le module PHP (version 5) pour Apache. Pour cela:

 # cd /usr/ports/lang/php5 && make install clean 

… Ne pas oublier de selectionner “Apache” !!!

 # cd /usr/ports/lang/php5-extensions && make install clean 

… choisir les extensions voulues …

Les extensions que j'ai installés sont :

bcmath,bz2,calendar,ctype,curl,date,dba,dom,exif,filter,ftp,gd,gettext,hash, iconv,json,ldap,libxml,mbstring,mcrypt,mhash,mysql,mysqli,odbc,openssl, pcre,pdo,pdo_sqlite,posix,reflection,session,shmop,simplexml,soap,sockets, spl,sqlite,standard,sysvmsg,tokenizer,wddx,xml,xmlreader,xmlwriter,zip,zlib. Vous pourrez utiliser les ports pour ajouter ou supprimer des extensions à tout moment par la suite.

 
# cp /usr/local/etc/php.ini-recommended /usr/local/etc/php/php.ini

(Un petit conseil de parano : mettez la variable expose = Off, ça évitera à des importuns de savoir si vous tournez avec ou sans php) … initialisation des variables…

Il faut ensuite configurer Apache pour qu’il prenne en compte PHP. Pour cela éditer le fichier /usr/local/etc/apache22/httpd.conf:

# vi /usr/local/etc/apache22/httpd.conf 

Ajouter dans la section <IfModule mime_module>:

AddType application/x-httpd-php .php
AddType  application/x-httpd-php-source  .phps

Ajouter dans la section <IfModule dir_module>:

DirectoryIndex index.html, index.php

Par la suite, je vous conseille d'installer PHPSecInfo, qui peux vous aider à configurer votre php.ini de manière un peu plus sécurisé. Sachez que toutefois que ça n'a RIEN à voir avec un véritable outil d'audit de sécurité. D'ailleurs attention à bien tester

Apache SSL

En ce qui concerne SSL :

Génération d'un certificat : Nous utilisons le répertoire personnel de root pour assurer la sécurité des fichiers qui seront générés.

cd

Création de la clé privée du serveur :

openssl genrsa -des3 -out server.key 1024
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:la passphrase qu'il faudra conserver

Nous générons une demande de certificat :

openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:la passphrase donnée pré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) []:Le nom exact de votre serveur web
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:un mot de passe solide (vous n'avez nul besoin de le mémoriser)
An optional company name []:

On termine en signant le certificat :

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Signature ok
subject=/C=FR/CN=apache20
Getting Private key
Enter pass phrase for server.key:

Installation du certificat et de la clé privée :

Apache 2.2 :

cp ~/server.key /usr/local/etc/apache22/
cp ~/server.crt /usr/local/etc/apache22/
chmod u=r,go= /usr/local/etc/apache22/server.key
chmod u=r,go= /usr/local/etc/apache22/server.crt

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 chiffré
cp /usr/local/etc/apache22/server.key /usr/local/etc/apache22/server.key.orig
# On supprime ce cryptage
openssl rsa -in /usr/local/etc/apache22/server.key -out /usr/local/etc/apache22/server.key

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 :

LoadModule ssl_module libexec/apache22/mod_ssl.so

En :

<IfDefine SSL>
    LoadModule ssl_module libexec/apache22/mod_ssl.so
</IfDefine>

L'analyse du fichier annexe dédié à la configuration de ce module si spécifié :

# Secure (SSL/TLS) connections
#Include etc/apache22/extra/httpd-ssl.conf

En :

# Secure (SSL/TLS) connections
<IfModule mod_ssl>
    Include etc/apache22/extra/httpd-ssl.conf
</IfModule>

N'oubliez pas de rajouter dans httpd.conf

Listen 443

Il ne reste plus qu’a relancer le serveur Apache:

 # /usr/local/etc/rc.d/apache22 restart 

Voili, vous avez un beau système à jour avec une belle version d’Apache…

En cas de soucis....

Charger le module accf_http

Si vous avez une erreur du genre httpready, il vous faut charger le module accf_http avec kldload.

# kldload accf_http

Si le module charge correctement alors vous n'aurez aucune erreurs en sortie. Pour que ce dernier charge au boot, ajoutez cela au fichier /boot/loader.conf.

accf_http_load="YES"

Si par malheur, il vous dit que le module n'existe pas. Ce n'est pas grave, il suffit de le compiler :

cd /usr/src/sys/modules/accf_http && make install clean

Structure des dossiers

Moi je les structure comme ça, je trouve ça plus élégant. Pour ce qui est des vhosts ils sont nommés de cette forme : domain.com-vhost.conf

/var/www/domain.com/www/
/var/www/domain.com/<nom du vhosts>
/var/www/pma
/var/www/phpsysinfo

Ajouter des VirtualHost

VHost HTTP (Classique)

Vous pouvez les ajouter soit à httpd.conf ou bien à un nouveau fichier .conf dans le dossier /usr/local/etc/apache22/Includes. Tout les fichiers .conf dans ce dossier seront prit en compte comme si ils faisaient partis directement du fichier httpd.conf.

#www.yourdomain.com
<VirtualHost *>
ServerName www.yourdomain.com
ServerAdmin root@yourdomain.com
UseCanonicalName Off
VirtualDocumentRoot /var/www/yourdomain/
#logs :
ErrorLog /var/logs/yourdomain.com/sousdomaine/error.log
CustomLog /var/logs/yourdomain.com/sousdomaine/access.log combined
</VirtualHost>

Dans l'exemple précédent, quand un utilisateur ira sur www.yourdomain.com ou sur stuff.yourdomain.com, Apache va voir la directive de virtual host et va lui servir la page issu du dossier /var/www/yourdomain/

Je vous conseille de faire un fichier default.conf qui ressemble à celui-ci : (Attention avec les * et les *:port si vous utilisez aussi des vhosts SSL, il faudra préciser le port 80 pour les vhosts non SSL)

NameVirtualHost *
<VirtualHost *>
        ServerAdmin admin_at_f00.fr
        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

                <Directory /var/www/f00.fr/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                #RedirectMatch ^/$ /apache2-default/
        </Directory>
</VirtualHost>

VHost SSL

NameVirtualHost *:443 !ATTENTION - cette ligne ne doit apparaître qu'une seule fois !
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /usr/local/etc/apache22/apache.crt                              
SSLCertificateKeyFile /usr/local/etc/apache22/server.key
ServerName sousdomaine.yourdomain.com
ServerAdmin admin@domain.ltd
UseCanonicalName Off
VirtualDocumentRoot /var/www/yourdomain/sousdomaine
#logs :
ErrorLog /var/www/logs/yourdomain.com/sousdomaine/error.log
CustomLog /var/www/logs/yourdomain.com/sousdomaine/access.log combined
</VirtualHost>

Personnaliser listing Apache

Attention, le fichier /usr/local/etc/apache22/httpd.conf peut contenir des éléments comme ceux ci déjà présents, pas de doublons !

Un conseil, si il n'y a que cette directive Alias, évitez là et remplacer tout les /icons/ par le répertoire ou se trouve ces derniers. Cela vous permettra de décharger Apache d'un module !

Alias /icons/ "/usr/local/www/apache22/icons/"
<Directory "/usr/local/www/apache22/icons/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
 
HeaderName /icons/HEADER.html
ReadmeName /icons/README.html
 
IndexOptions FancyIndexing SuppressDescription SuppressRules SuppressHTMLPreamble IconsAreLinks FoldersFirst XHTML
 
AddIconByEncoding (CMP,/icons/tgz.png) x-compress x-gzip
 
AddIconByType (IMG,/icons/image.png) image/*
AddIconByType (SND,/icons/audio.png) audio/*
AddIconByType (VID,/icons/video.png) video/*
 
AddIcon /icons/bin.png .bin .exe
AddIcon /icons/binary.png .hqx
AddIcon /icons/tar.png .tar
AddIcon /icons/tgz.png .Z .z .tgz .gz .zip
AddIcon /icons/ps.png .ps .ai .eps
AddIcon /icons/html.png .html .shtml .htm .pdf
AddIcon /icons/txt.png .txt
AddIcon /icons/c.png .c
AddIcon /icons/c.png .pl .py
AddIcon /icons/tex.png .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.png .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.png .tex
AddIcon /icons/core.png core
 
AddIcon /icons/up.png ..
AddIcon /icons/readme.png README
AddIcon /icons/dir.png ^^DIRECTORY^^
 
AddIconByType (TXT,/icons/txt.png) text/*
 
DefaultIcon /icons/unknown.png

Divers httpd.conf

Pour personnaliser votre configuration apache, je vous engage à lire la page Optimisation Apache.

tutorial/freebsd/tutorial_installer_et_configurer_apache_php.txt · Dernière modification: 2009/06/21 19:58 (édition externe)
Piste: post-it_mdadm tutorial_backup_gmail tutorial_tune_son_western_digital_my_book_world_edition tutorial_creer_un_raid_0 post-it_creer_un_raid tutorial_installer_freebsd_en_mode_serveur post-it_samba tutorial_garder_son_serveur_a_jour tutorial_installer_wii_media_center tutorial_installer_et_configurer_apache_php
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0