informatique:nix:apache_php

Quelques infos pratiques pour customiser un peu Apache.

Réécriture d'URL

RewriteEngine on
RewriteCond %{HTTP_HOST} ^bazar.ndlp.info$ [NC]
RewriteRule ^(.*)$ http://unix.ndlp.info/$1 [R=301,L]

Virtual Host

La configuration des VirtualHosts se trouve, généralement, à la fin du fichier de conf apache (httpd.conf ou apache2.conf). Ci-dessous un extrait du fichier avec un Virtual Host configuré :

<VirtualHost *>
    ServerAdmin www.ndlp.info
    DocumentRoot /var/www/www.ndlp.info
    ServerName www.ndlp.info
ErrorDocument 404 http://www.ndlp.info
ErrorLog   /var/log/apache2/www.ndlp.info/error_log
CustomLog /var/log/apache2/www.ndlp.info/access_log combined
php_admin_value engine off
</VirtualHost>

Ne pas oublier de décommenter la ligne suivante avant la définition des Virtual Hosts :

NameVirtualHost *

.htaccess et cie

On peut créer un fichier de mots de passe avec :

htpasswd -c /etc/apache2/.htpasswd vegeta

Ensuite on rajoute une entrée dans le fichier de conf apache :

<Directory /var/www/www.ndlp.info/fm>
  AuthName "Authentification requise"
  AuthType Basic
  AuthUserFile /etc/apache2/.htpasswd
  require user vegeta
</Directory>

On peut mettre un fichier .htaccess dans le répertoire où ne veut pas autoriser de CGI/Perl. Ce fichier doit donc contenir :

Options -ExecCGI

Sinon on peut utiliser les AddHandler (dans un Virtual Host ou non) dans le fichier de conf d'Apache :

AddType text/html .cgi .pl

Pour un Virtual Host donné on peut rajouter cette directive :

php_admin_value engine off

Ou bien encore utiliser les AddHandler toujours dans le fichier de conf d'Apache :

AddType text/html .php .php5 .phtml .php3

PHP

Dans le fichier /etc/php[4,5]/apache2/php.ini modifier :

upload_max_filesize = 512M
post_max_size = 512M
max_execution_time = 1200

Ne pas oublier de lancer un reload/restart d'Apache.

Dans un Virtual Host donné on peut définir des paramètres spécifiques. Exemples :

php_admin_flag safe_mode on
php_admin_value open_basedir "/var/www/:var/www/tmp"
php_admin_flag register_globals on

Limiter la bande passante

Avec Apache 2 on peut utiliser mod-cband pour limiter la bande passante et le nombre de connexions. On peut aussi mettre en place des quotas. Sous Debian on installe le module simplement :

apt-get install libapache2-mod-cband
/etc/init.d/apache2 force-reload

Ensuite on applique la conf de manière globale ou pour un Virtual Host spécifique :

<VirtualHost *>
    ServerAdmin csbeta.ndlp.info
    DocumentRoot /var/www/csbeta.ndlp.info
    ServerName csbeta.ndlp.info
ErrorDocument 404 http://csbeta.ndlp.info
ErrorLog   /var/log/apache2/csbeta.ndlp.info/error_log
CustomLog /var/log/apache2/csbeta.ndlp.info/access_log combined
php_admin_flag safe_mode on
php_admin_value open_basedir "/var/www/csbeta.ndlp.info:/var/www/tmp"
ErrorDocument 503 /limits.html
CBandSpeed 51200 10 15
CBandRemoteSpeed 1024kb/s 3 1
CBandScoreboard /var/www/scoreboard
<Location /cband-status>
  SetHandler cband-status
</Location>
</VirtualHost>
  • ErrorDocument 503 /limits.html : par défaut le module sort une erreur 503 en cas de dépassement, on peut customiser la page d'erreur. On peut aussi utiliser les directives CBandDefaultExceededURL, CBandDefaultExceededCode, CBandExceededURL, etc.
  • CBandSpeed 16000 10 15 : on limite la bande passante maximale à 16 Mbits, 10 connexions max par seconde et 15 connexions simultanées.
  • CBandRemoteSpeed 1024kb/s 3 1 : chaque client est limité à 1024ko/s, 3 connexions max par seconde et 2 connexions simultanées.
  • CBandScoreboard /var/www/scoreboard : permet de stocker les infos (quotas, etc).

On peut aussi rajouter ces directives au fichier de conf apache httpd.conf ou apache2.conf :

CBandScoreFlushPeriod 1
CBandRandomPulse On
  • CBandScoreFlushPeriod : inscrit à X nombre de requêtes le total de la consommation dans le tableau.
  • CBandRandomPulse : améliore la compréhension de la limitation de téléchargement ce qui entraîne une économie du CPU.

Un petit restart d'Apache et c'est parti ;-)

  • informatique/nix/apache_php.txt
  • Dernière modification : 2013/01/15 19:03
  • de 127.0.0.1