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.
Xarxantoni.net utilitza [http://www.apache.org | Apache2] com a sevidor web.
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
Per saber com crear subdominis amb l'Apache, al estil de http://webteam.domini.com consulta aquest Howto que et comenta tots els passos.
Consulta aquest Howto que et comenta tots els passos.
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:
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
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.
* ServerRoot * User i Group * ErrorLog * Error pages * Server Pool directives
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
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
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í.
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.
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:
$ 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>
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