sudo apt-get install lamp-server^ (avec le ^)
CONFIGURATION DU SERVEUR APACHE 2:
1. INSTALLER LA BIBILOTHEQUE LE SERVEUR ET SES OUTILS
sudo apt-get install libapr1 apache2 apache2.2-common apache2-utils
2. INSTALLER LE MPM (Moteur du Serveur)
apache2-mpm-prefork : Modèle traditionnel pour Apache2 version sans thread, intercepte les requêtes à la manière Apache 1.3, utile pour éviter la mise en thread pour la compatibilité avec les bibliothèques non-thread-safe. C'est le meilleur mpm pour isoler les requêtes.
apache2-mpm-worker : Modèle à processus haute vitesse pour Apache2 version avec thread, il est considérablement plus rapide que la version traditionnelle et c'est le MPM recommandé.
sudo apt-get install apache2-mpm-prefork
sudo apt-get install apache2-mpm-worker
3. INSTALLER LES MODULES NECESSAIRES AUX DIFFERENTES APPLICATIONS
LA BASE:
Sécurité
sudo apt-get install libapache2-mod-chroot
PAM
sudo apt-get install libapache2-mod-auth-pam
sudo apt-get install libapache2-mod-auth-sys-group
LANGUAGES DE SCRIPTS:
Installer PHP5
sudo apt-get install libapache2-mod-php5
Lors de l'installation de LAMP, si vous rencontrez des problèmes avec l'interprétation de vos pages portant l'extension .php5, vérifiez d'abord si ce module est activé par apache grâce à la commande :
sudo a2enmod php5
Si la console vous renvoie ceci : Module php5 already enabled
Alors cela signifie que le module est activé. Dans ce cas, ouvrez le fichier httpd.conf :
sudo nano /etc/apache2/httpd.conf
Si il est vide, collez le contenu ci-dessous dans ce fichier:
<IfModule mod_mime.c>
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php5
AddLanguage ca .ca
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
AddLanguage es .es
AddLanguage et .et
AddLanguage fr .fr
AddLanguage he .he
AddLanguage hr .hr
AddLanguage it .it
AddLanguage ja .ja
AddLanguage ko .ko
AddLanguage ltz .ltz
AddLanguage nl .nl
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-BR .pt-br
AddLanguage ru .ru
AddLanguage sv .sv
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw
</IfModule>
Redémarrez apache avec:
sudo /etc/init.d/apache2 restart
Installer PERL
sudo apt-get install libapache2-mod-perl2
Installer PYTHON
sudo apt-get install libapache2-mod-python
BASE DE DONNEES:
Installer MySQL
sudo apt-get install libapache2-mod-auth-mysql
Installer POSTGRESQL
sudo apt-get install libapache2-mod-auth-pgsql
4. INSTALLATION APACHE 2
Apache2, les bases et le mod chroot:
sudo apt-get install apache2 apache2-utils apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group
Si vous voulez utiliser PHP5:
sudo apt-get install php5-common php5 php5-gd libapache2-mod-php5
Pour permettre l'interface entre php et MySQL, installer le module php5-mysql:
sudo apt-get install php5-mysql
Si vous voulez utiliser MYSQL:
sudo apt-get install mysql-server libapache2-mod-auth-mysql
Si vous voulez utiliser POSTGRESQL:
sudo apt-get install postgresql libapache2-mod-auth-pgsql
5. UTILISATION
sudo service apache2 start (ou) stop (ou) restart
Erreur au démarrage
Au démarrage d'Apache, il est possible que celui-ci ne soit pas capable de déterminer un nom de domaine. Ce message sera affiché dans le terminal :
Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Pour corriger l'erreur, on doit éditer le fichier /etc/apache2/httpd.conf
sudo nano /etc/apache2/httpd.conf
>> Ajouter cette ligne:
ServerName localhost
>>Enregistrez et Quittez
>>redémarrez le service
sudo /etc/init.d/apache2 restart
6. CONFIGURATION
Tous les fichiers de configuration de Apache2 sont dans le dossier /etc/apache2.
/etc/apache2
Rendez-vous dans le répertoire /etc/apache2/, et regardez les fichiers le composant :
apache2.conf conf.d envvars httpd.conf mods-available mods-enabled ports.conf sites-available sites-enabledLa plupart de ces fichiers sont plus ou moins spécifiques à Debian/Ubuntu et nous permettent de séparer la configuration en plusieurs parties.
•httpd.conf est le fichier utilisé par apache1, il est conservé vide dans Apache2 pour assurer la rétrocompatibilité. Il ne nous servira pas ;
•envvars est utilisé pour définir des variables d'environnement propres à Apache ;
•ports.conf contient la directive listen qui spécifie les adresses et les ports d'écoutes ;
•apache2.conf est le fichier principal de configuration c'est à partir de lui que tous les autres fichiers sont chargés ;
•conf.d est un répertoire qui contient plusieurs petits fichiers qui seront analysés par apache. Le seul fichier pour le moment est charset, qui spécifie l'encodage à utiliser par défaut ;
•mods-available contient la liste des modules d'apache installés ;
•mods-enabled celle des modules utilisés ;
•sites-available contient la liste des vhosts installés ;
•sites-enabled celle des vhosts utilisés.
Configuration des interfaces
La spécification des interfaces sur lesquelles Apache2 écoutera les requêtes se fait dans ports.conf avec la directive Listen.
Vous devez spécifier au moins le port. Apache écoutera alors sur toutes les interfaces.
Pour restreindre l'utilisation à une ou plusieurs interfaces il suffit de les spécifier, suivies du port. Il faut une directive Listen par interface.
- Si le serveur est connecté avec une ip internet et que l'on souhaite écouter sur cette interface on ajoute la directive Listen Ip.Internet .
- Si le serveur est connecté avec une ip local et que l'on souhaite écouter sur cette interface on ajoute la directive Listen Ip.Local .
- Si l'on souhaite écouter sur un certain port on rajoute :Le_Port . Il est aussi possible de ne spécifier que le port Listen Le_Port.
Éditez le fichier /etc/apache2/ports.conf.(remplacer les X.X.X.X par l'ip de l 'interface d'écoute )
sudo nano /etc/apache2/ports.conf
Code : Tout sélectionner
#interface (local ou internet) connectée sur port standard
Listen X.X.X.X:80
# toutes les interfaces connectées sur port ssl
Listen 443
Attention Il faut que les interfaces aient été démarrées avant Apache
7. FICHIER DE CONFIGURATION
Éditez le fichier /etc/apache2/apache2.conf afin qu'il ressemble a ceci.
Les explications des différentes lignes sont données dans le fichier de configuration.
Les directives <IfModule !nom.c> testent la présence du module afin de s'adapter aux configurations.
Les autres lignes commençant par # sont des commentaires
sudo nano /etc/apache2/apache2.conf
Code : Tout sélectionner
# Répertoire Racine du serveur
ServerRoot "/etc/apache2"
# Fichier de vérrouillage (lock) du serveur
# IL DOIT SE TROUVER SUR LE DISQUE LOCAL
#<IfModule !mpm_winnt.c>
#<IfModule !mpm_netware.c>
LockFile /var/lock/apache2/accept.lock
#</IfModule>
#</IfModule>
# Fichier du PID: endroit où, à son démarrage, apache doit stocker
# son numéro d'identification de processus
PidFile /var/run/apache2.pid
# Delai d'attente dépassé : nombre de secondes avant de recevoir et d'envoyer
# un message de "Délai d'attente dépassé" (timeout)
Timeout 300
# Connexion persistante: Alloue ou non les requêtes persistantes
# (plus d'une requête par connexion ).
# Mettre à "Off" pour désactiver.
KeepAlive On
# Nombre Maximum de requêtes allouées durant une connexion persistante.
# 0 = non limité
# Il est recommandé de garder ce nombre assez haut pour des performances maximales
MaxKeepAliveRequests 100
# Nombre de secondes d'attente pour la prochaine requête
# d'un même client sur une même connexion avant un timeout
KeepAliveTimeout 15
# Configuration du mpm chargé
<IfModule mpm_prefork_module>
# Nombre de processus serveurs fils à créer au démarrage.
StartServers 5
# Nombre minimum de processus en attente d'intercepter des requêtes
MinSpareServers 5
# Nombre maximum de processus en attente
MaxSpareServers 15
# Nombre maximum processus fils créés
# pour intercepter les requêtes simultanément
MaxClients 150
# Limite le nombre de requête qu'un processus fils intercepte
# durant son temps de vie. Si 0 alors le processus n'expirera jamais.
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MaxClients 150
# Nombre minimum de processus en attente d'intercepter les piques de requêtes
MinSpareThreads 25
# Nombre maximum de processus en attente
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
# Utilisateur et Group sous lesquels les processus du serveur seront lancés
User www-data
Group www-data
# Fichier de restriction des accès
# non conseillé, préferer les directives internes au fichier de configuration
# voir [[http://httpd.apache.org/docs/2.2/howto/htaccess.html]]
AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
# Restriction de la racine du serveur
<Directory />
Order Deny,Allow
Deny from all
Options None
AllowOverride None
</Directory>
# Fichier contenant la liste des conversions des extensions de fichiers vers le type de contenu.
# par défaut ce fichier est relié au contenu enregistré à l'IANA. http://www.iana.org/assignments/media-types/index.html.
TypesConfig /etc/mime.types
# définit le type par défaut des fichiers dont le type ne peut être déterminé
# par le serveur.
# Il convient de le mettre à "none" afin de ne pas fournir d'informations erronées.
DefaultType none
# Active la résolution DNS pour les noms d'hôtes
HostnameLookups Off
# chemin du fichier de log des erreurs du serveur.
ErrorLog /var/log/apache2/error.log
# niveau de log du serveur
# emerg Messages Urgents - Le système est inutilisable.
# alert Messages d'actions qui doivent être effectuées immédiatement.
# crit Messages critiques.
# error Messages d'erreurs.
# warn Messages d'avertissement.
# notice Messages normales mais significatives.
# info Messages d'informations.
# debug Messages de débogage
LogLevel warn
# format des lignes contenues dans les logs
# %a Adresse ip distante.
# %A Adresse ip local.
# %B Taille de la réponse en octets, excluant l'entête HTTP.
# %b Taille de la réponse en octets, excluant l'entête HTTP au format CLF.
# %{Foobar}C Contenu du cookie "Foobar" de la requête envoyée au serveur.
# %D Le temps mis à servir la requête .
# %{FOOBAR}e Contenue de la variable d'environnement "FOOBAR".
# %f Nom du fichier.
# %h Hôte distant.
# %H Le protocole demandé.
# %{Foobar}i Le contenu de "Foobar": Ligne(s) d'en-tête de la requête envoyée au serveur.
# %l nom du fichier de log distant (de identd, si il est fournit).
# cela retournera un tiret tant que //mod_ident// n'est pas présent
# et //IdentityCheck// n'est pas mis à ON.
# %m Méthode de la requête.
# %{Foobar}n Contenu de la note "Foobar" provenant d'un autre module.
# %{Foobar}o Le contenu de "Foobar": Ligne(s) d'entête dans la réponse.
# %p Port canonique du serveur qui sert la réponse.
# %P Id du processus fils qui a servi la requête.
# %{format}P Id du processus ou du thread fils qui a servi la requête.
# Les formats valides sont pid, tid, et hextid.
# hextid nécessite APR 1.2.0 ou supérieur.
# %q Chaînes de la requête (Commençant avec un ? si une chaine de requête existe, sinon une chaîne vide)
# %r Première ligne de la requête.
# %s Statut. Pour les requête redirigées en interne, ceci est la requête originale --- %>s pour la dernière.
# %t Heure à laquelle la requête a été reçue (format standard anglais mois jour année )
# %{format}t L'heure, au format précisé, qui doit être dans les formats de strftime(3). (potentiellement localisé).
# %T Le temps mis pour répondre à la requête.
# %u Utilisateur distant (de l'authentification; peut être faux si le code de retour de statut (%s) est 401)
# %U Url demandée, n'inclue aucune chaîne de requête.
# %v Nom canonique de ServerName du serveur qui répond à la requête.
# %V Nom du serveur en fonction du paramètre UseCanonicalName.
# %X Statut de la connexion une fois la réponse envoyée.
# X = connexion annulée avant la réponse complète.
# + = la connexion peut être maintenue après l'envoi de la réponse.
# - = la connexion sera fermée après l'envoi de la réponse.
# %I Octets reçus, incluant l'entête et la requête, ne peut être nul. Vous devez activer //mod_logio// pour l'utiliser.
# %O Octets envoyés, incluant l'entête, ne peut être nul. Vous devez activer //mod_logio// pour l'utiliser.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
# entête envoyée au client à propos du serveur
# Prod Server: Apache
# Major Server: Apache/2
# Minor Server: Apache/2.0
# Min Server: Apache/2.0.41
# OS Server: Apache/2.0.41 (Unix)
# Full (ou non spécifié) Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2
ServerTokens Prod
# Pied de page renvoyé par le serveur
# utile afin de déterminer quelle est le serveur
# qui dans une chaîne (proxy) qui génère une erreur
ServerSignature Off
# Inclusion des fichiers, contenus dans le dossier des mods, qui sont activés
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
# Inclusion de l'ancien fichier de configuration de apache
# à des fins de compatibilités ascendantes.
Include /etc/apache2/httpd.conf
# Inclusion du fichier de configuration des adresses et ports
# sur lesquels le serveur sera à l'écoute
Include /etc/apache2/ports.conf
# Inclusion d'autres fichiers de configuration
Include /etc/apache2/conf.d/
# inclusion des configurations des sites actifs
Include /etc/apache2/sites-enabled/
# Directive des alias
<IfModule alias_module>
# alias des icones d'apache
# nom de l'alias , répertoire vers lequel pointe l'alias
Alias /icons "/usr/share/apache2/icons/"
<Directory "/usr/share/apache2/icons">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# alias pour awstats
Alias /awstats-icon "/usr/share/awstats/icon"
ScriptAlias /awstats "/usr/lib/cgi-bin/"
<Directory "/usr/share/awstats/icon">
Options None
#Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</IfModule>
# Types images d'icône
<IfModule mod_autoindex.c>
IndexOptions FancyIndexing VersionSort HTMLTable NameWidth=*
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
DefaultIcon /icons/unknown.gif
ReadmeName README.html
HeaderName HEADER.html
IndexIgnore .??* *~ *# RCS CVS *,v *,t
</IfModule>
# Type langages
<IfModule mod_mime.c>
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddLanguage ca .ca
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
AddLanguage es .es
AddLanguage et .et
AddLanguage fr .fr
AddLanguage he .he
AddLanguage hr .hr
AddLanguage it .it
AddLanguage ja .ja
AddLanguage ko .ko
AddLanguage ltz .ltz
AddLanguage nl .nl
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-BR .pt-br
AddLanguage ru .ru
AddLanguage sv .sv
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw
</IfModule>
# Langue prioritaire pour les pages de réponses (choisir l'ordre des langues des pages)
<IfModule mod_negotiation.c>
LanguagePriority fr ca cs da de el eo es et en he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
ForceLanguagePriority Prefer Fallback
</IfModule>
# Type d'encodage de caractères
<IfModule mod_mime.c>
AddCharset us-ascii .ascii .us-ascii
AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .cyr .iso-ru
AddCharset ISO-8859-6 .iso8859-6 .arb .arabic
AddCharset ISO-8859-7 .iso8859-7 .grk .greek
AddCharset ISO-8859-8 .iso8859-8 .heb .hebrew
AddCharset ISO-8859-9 .iso8859-9 .latin5 .trk
AddCharset ISO-8859-10 .iso8859-10 .latin6
AddCharset ISO-8859-13 .iso8859-13
AddCharset ISO-8859-14 .iso8859-14 .latin8
AddCharset ISO-8859-15 .iso8859-15 .latin9
AddCharset ISO-8859-16 .iso8859-16 .latin10
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5 .Big5 .big5 .b5
AddCharset cn-Big5 .cn-big5
# For russian, more than one charset is used (depends on client, mostly):
AddCharset WINDOWS-1251 .cp-1251 .win-1251
AddCharset CP866 .cp866
AddCharset KOI8 .koi8
AddCharset KOI8-E .koi8-e
AddCharset KOI8-r .koi8-r .koi8-ru
AddCharset KOI8-U .koi8-u
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-7 .utf7
AddCharset UTF-8 .utf8
AddCharset UTF-16 .utf16
AddCharset UTF-16BE .utf16be
AddCharset UTF-16LE .utf16le
AddCharset UTF-32 .utf32
AddCharset UTF-32BE .utf32be
AddCharset UTF-32LE .utf32le
AddCharset euc-cn .euc-cn
AddCharset euc-gb .euc-gb
AddCharset euc-jp .euc-jp
AddCharset euc-kr .euc-kr
#Not sure how euc-tw got in - IANA doesn't list it???
AddCharset EUC-TW .euc-tw
AddCharset gb2312 .gb2312 .gb
AddCharset iso-10646-ucs-2 .ucs-2 .iso-10646-ucs-2
AddCharset iso-10646-ucs-4 .ucs-4 .iso-10646-ucs-4
AddCharset shift_jis .shift_jis .sjis
AddHandler type-map var
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
<IfModule mod_setenvif.c>
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
</IfModule>
# module d'information sur le statut du serveur
<IfModule mod_status.c>
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
</IfModule>
# module des informations du serveur
<IfModule mod_info.c>
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
</IfModule>
Sites-Avaiable: Si vous voulez utiliser plusieurs hôtes virtuel voire virtualhosts_avec_apache2
Éditez le fichier /etc/apache2/sites-available/default (le seul vhost existant pour le moment).
sudo nano /etc/apache2/sites-available/default
Code : Tout sélectionner
# NameVirtualHost définit les IPs à utiliser par apache,
# * signifie qu'on utilise n'importe quel IP pour acceder au serveur
# 127.0.0.1 (boucle locale), 192.168.x.x (ip reseau local), ou une IP externe.
# Cette directive est en dehors du Vhost, on pourrait donc la déplacer dans apache2.conf.
# Dans tous les cas si elle est définie à * , elle ne doit pas être reprise dans les autres vhosts.
NameVirtualHost *:80
# Le vhost proprement dit : il est compris dans un bloc <VirtualHost>,
# Ces blocs définissent la "portée" de la validité des directives qui y sont définies.
# Le * derrière VirtualHost définit ici que le vhost est valable pour toutes les IPs sur lesquelles apache écoute.
<VirtualHost *:80>
# ServerName définie le nom utilisé pour le vhost. Mettez le nom de l'hote du domaine
ServerName www.domain.tld
# ServerAlias définie les autres sous domaines pour lesquels le serveur répondra.
ServerAlias domain.tld *.domain.tld
# ServerAdmin vous permet de spécifier un email à utiliser en cas de problème, sur une page d'erreur 404 par exemple.
ServerAdmin administrateur.web@domain.tld
# DocumentRoot définit le dossier racine dans lequel seront stockés les fichiers du site.
DocumentRoot /var/www/htdocs
# Directory définit les options par défaut du répertoire
<Directory /var/www/htdocs>
# Active les options:
# FollowSymLinks permet de suivre les liens symboliques.
# Indexes autorise le listage de fichiers d'un répertoire qui ne contient pas d'index.
Options Indexes FollowSymLinks MultiViews
# AllowOverride permet de surcharger certaines options en utilisant des fichiers .htaccess dans le répertoire du site.
AllowOverride None
# Droits par defaut
Order allow,deny
allow from all
# permet de rediriger les requêtes vers un fichier d'index precis
RedirectMatch ^/$ /index.php
</Directory>
ErrorLog /var/log/apache2/error.domain.tld.log
CustomLog /var/log/apache2/access.domain.tld.log combined
</VirtualHost>
>>Supprimer l'ancien lien symbolique de la configuration
d'origine
sudo a2dissite default
Il faut maintenant activer le vhost. Pour cela il faut créer un lien symbolique du fichier de sites-available/ vers sites-enabled/.
En utilisant:
sudo a2ensite nomduvhost
>>Éditez le fichier /etc/hosts et modifier la ligne avec nomduvhost le ServerName que vous avez choisi:
sudo nano /etc/hosts
Code : Tout sélectionner
127.0.0.1 localhost nomduvhost
8. ACTIVER LES SCRIPTS CGI
>>Ales lignes suivantes à votre "apache2.conf" :
sudo /etc/apache2/apache2.conf
Code : Tout sélectionner
ScriptAlias /cgi-bin/ /var/www/votre_site/cgi-bin/
<Directory /var/www/votre_site/cgi-bin/>
Options ExecCGI
AddHandler cgi-script cgi pl py
</Directory>
9. SECURITE DES PAGES
Afin de modifier les pages nous allons créer un utilisateur webadmin le seul à pouvoir en créer, en supprimer et en modifier.
En faisant de webadmin le propriétaire et de www-data le groupe, tous les autres utilisateurs du système ne pourront accèder aux fichiers grâce aux droits appliqués ensuite.
Nous interdirons à apache2 de modifier les pages en autorisant seulement la lecture au groupe www-data (l'utilisateur sous lequel tourne apache et qui est aussi son groupe), et en donnant tous les droits au propriétaire.
Création de l'utilisateur webadmin:
sudo adduser webadmin
Modification des propriétaires de tous les fichiers et dossiers du répertoire:
sudo chown -Rf webadmin:www-data /var/www/htdocs
RÉPERTOIRES lecture et exécution pour le group www-data et écriture pour le propriétaire 750 :
sudo find /var/www/htdocs -type d -exec chmod 750 {} \;
FICHIERS lecture pour www-data et creation pour le propriétaire 640 :
sudo find /var/www/htdocs -type f -exec chmod 640 {} \;
alternativement, pour modifier les droits (mais pas les propriétaires), il est possible d'utiliser les deux commandes suivantes:
sudo chmod -R 644 /var/www/htdocs
l'interet est de ne pas lancer une multitude de commandes pour changer les droits (find lance la commande à chaque fois qu'il trouve un fichier correspondant) qui a pour effet de mettre le propriétaire comme étant le seul avec droit de lecture et
sudo chmod a+X /var/www/htdocs
>>Redémarrez Apache2
sudo /etc/init.d/apache2 restart
Il est aussi possible de redémarrer apache2 sans "tuer" les requêtes en cours :
apache2ctl graceful
10. ACTIVEZ LES FICHIERS .htaccess
>>Les .htaccess permettent de créer des zones administrateur protégées très facilement ou aussi d'activer des configurations de façon localisées.
éditez le fichier /etc/apache2/sites-enabled/000-default
sudo nano /etc/apache2/sites-enabled/000-default
Code : Tout sélectionner
<Directory /var/www/le_rep_ou_vous_voulez_activer_le_.htaccess>
AllowOverride all
</Directory>
sudo /etc/init.d/apache2 restart
11. LES MODULES
Activer L'url rewriting
sudo a2enmod rewrite
Mod_bw - Limiter la bande passante
>>Ajouter quelques lignes dans les Vhost de vos domaines :
cd /etc/apache2/sites-enabled/
sudo nano votredomaine.tls.conf
Juste avant </VirtualHost>, ajouter :
•Limiter tous les utilisateurs à 1OKb/s :
Code : Tout sélectionner
BandwidthModule On
ForceBandWidthModule On
Bandwidth all 10240
Code : Tout sélectionner
BandwidthModule On
ForceBandWidthModule On
LargeFileLimit * 8000 50000
Code : Tout sélectionner
BandwidthModule On
ForceBandWidthModule On
LargeFileLimit .avi 1 20000
LargeFileLimit .mpg 1 20000
sudo /etc/init.d/apache2 restart
Mod_deflate - Compression gzip
Le mod_deflate sur apache2 permet de gagner en rapidité et en bande passante grâce à la compression des données qui transitent entre le serveur et les clients. La compression utilisée est gzip. L'installation ci-dessous permet de compresser les fichiers texte (css,…).
Activation des modules deflate et headers:
sudo a2enmod headers
sudo a2enmod deflate
Configuration de deflate:
>>Créez ou modifiez le fichier /etc/apache2/conf.d/mod_deflate.conf et ajoutez:
sudo nano /etc/apache2/conf.d/mod_deflate.conf
Code : Tout sélectionner
<Location />
# Insert filter
SetOutputFilter DEFLATE
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</Location>
sudo /etc/init.d/apache2 restart
mod_userdir gerer les dossiers utilisateur
Activer le module userdir
sudo a2enmod userdir
Editez le fichier suivant qui contient sa configuration /etc/apache2/mods-available/userdir.conf
sudo nano /ect/apache2/mods-available/userdir.conf
Code : Tout sélectionner
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
</IfModule>
>>Redémarrer apache 2
sudo /etc/init.d/apache2 restart
Créez un dossier nommé public_html dans votre home et essayer, ca devrait marcher

mod_proxy ou comment rediriger certains domaines vers certaines machines
Mon probleme etait le suivant :
routeur :
•renvoi du port 80 sur la machine 192.168.0.10
machine 192.168.0.10 :
•virtualhosts renvoyant vers plusieurs dossiers
•toto.mondomaine.com va vers /home/toto/www
•titi.mondomaine.com va vers /home/titi/www
•etc…
•et 000-default va vers /var/www
machine 192.168.0.11 :
•virtualhosts renvoyant vers plusieurs dossiers
•tata.mondomaine.com va vers /home/tata/www
•tutu.mondomaine.com va vers /home/tutu/www
•etc…
•et 000-default va vers /var/www
Sauf que si on met http://tata.mondomaine.com" onclick="window.open(this.href);return false; dans son navigateur on se retrouve avec le site par defaut de 192.168.0.10….
Donc, il faut appeller mod_proxy a la rescousse.
sur 192.168.0.10 : activer le module proxy avec :
a2enmod proxy
créer un virtualhost /etc/apache2/sites-available/tata.mondomaine.com qui contient:
Code : Tout sélectionner
<VirtualHost 192.168.0.10:80>
ProxyRequests Off
ProxyPreservehost on
ServerName tata.mondomaine.com
ProxyPass / http://192.168.0.11/
ProxyPassReverse / http://192.168.0.11/
<Proxy>
Order Allow,Deny
Allow from all
</Proxy>
</VirtualHost>
sudo a2ensite mondomaine.com
Redémarrer apache
Et c'est tout

Si ca veut pas, activer aussi les modules proxy_http et proxy_connect
bien sûr on peut rajouter dans /etc/hosts:
192.168.0.11 mondomaine.com
12. OPTIMISER VOTRE SERVEUR APACHE 2
Accélérateurs PHP
Permet de mettre en cache le code PHP déjà compilé. Ceci évitera de recompiler les fichiers PHP à chaque fois, ce qui augmente de façon considérable les performances de votre serveur et donc de vos sites.
Voici un comparatif de ce qui existe actuellement :
http://dotclear.placeoweb.com/post/PHP- ... ator-cache
XCache
Plus moderne et a été réécrit de zéro récemment. Il assure un meilleur support des versions récentes de PHP, au contraire des anciens eaccelerator and co. Cliquez sur le lien suivant:
http://doc.ubuntu-fr.org/xcache
eAccelerator
http://doc.ubuntu-fr.org/eaccelerator
>>Editez le fichier /var/www/config.php
sudo nano /var/www/config.php
Code : Tout sélectionner
<?php
// phpBB 3.0.x auto-generated configuration file
// Do not change anything in this file!
$dbms = 'mysql';
$dbhost = 'localhost';
$dbport = '3306';
$dbname = 'forum';
$dbuser = 'root';
$dbpasswd = 'password;
$table_prefix = 'phpbb_';
$acm_type = 'file';
$load_extensions = '';
@define('PHPBB_INSTALLED', true);
// @define('DEBUG', true);
// @define('DEBUG_EXTRA', true);
?>
CONFIGURATION DE MySQL:
CONFIGURATION DE PHP:
1. INSTALLATION
PHP étant principalement utilisé comme langage de script serveur, seule son installation dans ce cadre là est présentée ici.
Installation minimale
Pour installer la version 5 de PHP (dernière version stable), il suffit d'installer le paquet suivant:
sudo apt-get install php5
CREER UN/DES REPERTOIE(S) DE TRAVAIL:
Protection de /var/www
Dans un premier temps nous allons donc rendre le dossier /var/www inaccessible. Pour cela, on édite en super utilisateur le fichier : /etc/apache2/sites-available/default et dans la section <Directory /var/www> on va modifier les accès :
Changez :
Code : Tout sélectionner
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Code : Tout sélectionner
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 # local
Allow from 192.168.1.0/24 # reseau
</Directory>
1. AJOUT DE LIENS SYMBOLIQUES
A présent les espaces sont valides, mais non visible depuis la racine de votre serveur (c.f.: http://localhost" onclick="window.open(this.href);return false;). Il serait donc judicieux et pratique d'y avoir accès directement, plutôt que de devoir taper manuellement 'http://localhost/public' ou 'http://localhost/private'.
Il suffit tout simplement de créer un lien symbolique dans /var/www
sudo ln -s /media/www-dev/public /var/www/public
sudo ln -s /media/www-dev/private /var/www/private
>>Il vous faudra également effacer le fichier index.html pour que cela prenne effet :
sudo rm /var/www/index.html
2. FINALISATION
sudo /etc/init.d/apache2 force-reload
by M0rph/chatonhub