Apache. El servidor web

Introducció

El servidor HTTP Apache és un servidor de programari lliure per sistemes tipus Unix, Microsoft Windows i altres plataformes. Apache és desenvolupat i mantingut per una comunitat de desenvolupadors sota els auspicis de la Apache Software Foundation.

Històricament, Apache va ser desenvolupat l'any 1995 a partir del codi de aleshores popular NCSA HTTPd , fet que motiva l'origen del nom: Apache de l'angles “a patchy server” (un servidor parxejat). Tot i això, la versió oficial de l'Apache Software Foundation és que el nom d'Apache ve donat com a tribut als indis Apaches, coneguts per les seves habilitats en la guerra i per la seva robusteza i durabilitat.

Actualment el servidor apache és el servidor web més utilitzat, amb una quota de mercat del 70% segons dades de netcraft. La última versio estable (2.0) ha estat creada de nou desde l'inici i no conté codi original de l'antic NCSA HTTPd.

Apache 2

Xarxantoni.net utilitza [http://www.apache.org | Apache2] com a sevidor web.

Configuració bàsica

El directori de configuracions és:

/etc/apache2/

Apache funciona com un dimoni. Per activar el servei ho trobarem:

Usage: /etc/init.d/apache2 start|stop|restart|reload|force-reload

El port de l'Apache en xarxantoni.net és:

80/tcp   open  http

Directori inicial de l'Apache:

/var/www/

Usuari i grups: www-data i webmaster

Subdominis

Per saber com crear subdominis amb l'Apache, al estil de http://webteam.domini.com consulta aquest Howto que et comenta tots els passos.

Redireccions

.htaccess

L'htaccess es un fitxer ocult (.htaccess) de configuracio per usuaris de l'Apache molt potent. Aquest fitxer es pot posar en qualsevol directori per especificar comportaments especifics en la configuracio de l'Apache. Tambe s'ha de dir que nomes podran usar aquests tipus de fitxers els usuaris que a traves del fitxers de configuracio principal de l'Apache heredin permisos per fer-ho.

Que es pot fer des d'un .htaccess:

  • Especificar els nostres propis documents d'error
  • Afegir comportaments especifics segons tipus MIME
  • Definir variables d'entorn
  • Redirigir URLs
  • Re-escriure URLs
  • Restringir accessos

Instalació amb apt-get

A Debian o distribucions basades en Debian (com p.e. Ubuntu) podem instalar Apache utilitzant apt:

$ apt-get install apache2 apache2-doc

també es pot instalar la versió anterior…

$apt-get install apache

Fitxers de configuració 2

A la versio 2.0 la carpeta /etc/apache2 conté els fitxers de configuració del servidor. Els principals fitxers i carpetes de configuració son:

apache2.conf. Aquest és el fitxer principal de configuració. Equival al fitxer httpd.conf de la versio 1.0. En l'anterior versió d'apache gairabé tota la configuració es duïa a terme aqui. Amb la nova versió, la configuració s'ha repartit entre diversos fitxers per tal de facilitar la gestió del servidor. Aquest fitxers es compon de directivas que configuran diversos aspectes del servidor. La versió 2.0 encara té un fitxer httpd.conf buit per raons de compatibilitat.

mods-enabled | mods-available. La carpeta mods-enabled conté els moduls activats al servidor. La carpeta mods-available conté els moduls disponibles. Un modul s'activa creant un link a un modul de la carpeta mods-available dins la carpeta mods-enabled.

sites-enabled | sites-available. De forma anàloga a la gestió de mòduls, la gestió de Hosts Virtuals es realitza mitjantçant l'ús d'aquestes dues carpetes.

Respecte a la versió anterior els fitxers de configuració s'ha reestructurat per tal d'afavorir l'ordre i el manteniment del servidor. Altres fitxers com els .htacces configuren altres aspectes del servidor http com el control d'accés.

L'script de control del servidor que ens permet executar/parar/recarregar el servidor és /etc/init.d/apache2 start|stop|reload|restart. apache2.conf Aquest és el fixer principal de configuració. Altre fitxers de configuració son de fet directives include que apunten a aquest fitxers.

Directives principals

* ServerRoot
* User i Group
* ErrorLog
* Error pages
* Server Pool directives

Moduls. Carpetes mods-enabled | mods-available

A la carpeta mods-available podem trobar tots els moduls disponibles per defecte a apache. Actualment per tal d'activar un modul només es necesari seguir els següents pasos:

1) Crear un soft link als fitxers del mòdul que es troben a la carpeta mods-available a la carpeta mods-enabled. Per exemple per activar él modul de PHP:

  $ ln -s /etc/apache2/mods-enabled/php4.load /etc/apache2/mods-available/php4.load
  $ ln -s /etc/apache2/mods-enabled/php4.conf /etc/apache2/mods-available/php4.conf

2) Fer un reload del servidor

$ /etc/init.d/apache2 reload

Per conveni els fitxers .conf contenen les directives IfModule amb la configuració del modul i els fitxers .load contenen lkes directives LoadModule encarregades d'activar el mòdul.

Hosts Virtuals. Carpetes sites-enabled | sites-available Els Virtual Hosts tal i com varem comentar en l'apartat del servidor DNS proporcionen la capacitat de executar més d'un lloc web en una sola màquina. Els hosts virtuals poden ser “IP-based”, el que significa que tenim una ip diferent per cada lloc web o “name-based”, que implica que tenim més d'un nom de domini en una mateixa IP. Directives principals

* DocumentRoot
* NameVirtualHost
* ServerAlias
* ServerName
* ServerPath
* <VirtualHost>

Per tal de comprobar la configuració dels hosts virtuals la següent comanda pot resultar útil:

$ /usr/local/apache2/bin/httpd -S

No registrar en els logs les imatges

Al fitxer general d'apache

SetEnvIf Request_URI \.gif image-request
SetEnvIf Request_URI \.jpg image-request
SetEnvIf Request_URI \.png image-request
SetEnvIf Request_URI \.GIF image-request
SetEnvIf Request_URI \.JPG image-request
SetEnvIf Request_URI \.PNG image-request

Al virtualhost

#CustomLog /var/log/apache2/access.log combined
CustomLog /home/agrau/apache2/access.log combined env=!image-request

.htaccess files

Aquests fitxers permeten configurar per directoris. Si un directori té un fitxer .htaccess les directives que trobem en aquest fitxers sobrescriuen la configuració general.

Normalment els fitxers .htaccess s'utilitzen per tal que els usuaris que no tenen accés als fitxers de configuració principals puguin variar la seva configuració (per exemple accedint via FTP). La directiva AllowOverride permet configurar quan els usuaris tenen privilegis per sobrescriure la configuració.

La directiva AccesFileName permet canviar el nom del fitxer .htaccess. Més informació sobre els fitxers .htaccess aquí.

Directoris web per usuari

Amb apache és increiblement simple administrar les págines web dels usuaris d'un sistema Unix. Utilitzant el mòdul mod_userdir i mitjantçant l'ús de la directiva UserDir tenim diverses maneras d'administrar les carpetes d'usuari que contenen els continguts web.

Com ho fa Skole Linux per defecte?

L'accés via url a aquest fitxers és típicament http://www.webserver.org/~unixuserid. La configuració per defecte es pot canviar amb la directiva o utilitzant el mòdul mod_proxy . Control d'accés

Els mòduls encarregats del control d'accés són mod_auth i mod_access. Existeixen múltiples alternatives per controlar l'accés al servidor web. La més comuna és mitjantçant el típic sistema usuari/password. Altre opcions són per exemple configurar l'accés via ldap i SSL (mod_auth_ldap) o utilitzant la infraestuctura de clau pública PKI.

Documentació Apache

El paquet apache-docs instala la documentació d'apache disponible a la web. La documentació oficial és la “biblia” de configuració i treball amb apache.

Pel que fa a la distribució Ubuntu, per configurar el modul Rewrite farem:

Rescriptura de URL's (rewrite)

$ sudo a2enmod rewrite
$ sudo gedit /etc/apache2/sites-available/default
A la línia <Directory /var/www/>, canviarem AllowOverride None per AllowOverride All
$ sudo /etc/init.d/apache2 reload

Finalment, crearem un fitxer .htaccess a on volem que resscrigui les url's, similar a:

DirectoryIndex index.php
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php

Pel CakePhp, el .htaccess que incorpora per defecte és:

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

Detectar Apache2 conf broken

Your apache2 configuration is broken, please fix it and restart apache2 manually.
# apache2ctl configtest
apache2: Syntax error on line 185 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/wsgi.load: Cannot load /usr/lib/apache2/modules/mod_wsgi.so into server: libpython2.6.so.1.0: cannot open shared object file: No such file or directory

WORKAROUND:

# aptitude install libpython2.6 …

# apache2ctl configtest

Syntax OK

Links

  • Apache a la wikipedia. castellà - angles.
  • Apache Software Foundation
  • Página oficial Apache
  • Documentació versio 2.0. També disponible en español.
  • Estadísticas de uso de servidores web de Netcraft
 
servers/apache.txt · Darrera modificació: 2011/11/22 17:50 per resteve
 
Copyright: Zikzakmedia Llicència Creative Commons By-NC-SA
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki