Xunta de Galicia


Powered by MediaWiki

Servidor web Apache

Parte da “responsabilidade” do crecemento da Internet durante a segunda metade da década dos 90 foi debida á existencia de ferramentas Open Source maduras, estábeis e capaces de facer fronte ás necesidades de crecemento que se crearon en moitos “websites”. Apache converteuse durante os seus primeiros 5 anos de vida no principal software servidor de páxina web da rede. Pero en realidade o servidor chámase “httpd”, e Apache é o nome da fundación que lle dá cobertura legal e financeira.

Licenza

A licenza do servidor httpd é a Apache License, version 2.0.

Reseña sobre a comunidade de desenvolvemento

Forma parte da Fundación Apache. A súa historia comeza en 1995, cando Rob McCool, no National Center for Supercomputing Applications (NCSA), da Universidade de Illinois fai o servidor HTTPd orixinal. A partir del, un grupo de desenvolvedores coordinados en Internet comezan a aplicarlle parches, e crean o Grupo Apache, para continuar o traballo. Despois dun ano xa era o servidor máis empregado na Internet. No 1999 créase a Fundación Apache, para darlle sustentabilidade legal e económica ao proxecto HTTPd.

O traballo organízase a partir dun grupo central de desenvolvedores, formado nun primeiro momento polos fundadores do proxecto, pero que está en continuo crecemento e cambio. O núcleo deste grupo é coñecido como Comité de Xestión do Proxecto. O mesmo pasa con outros proxectos da Fundación Apache. O Comité ten capacidade para decidir sobre cambios, dirección do proxecto e quen pode intervir nel. Neste sentido, o proxecto é unha meritocracia: canto máis traballo achegas, máis poderás facer. O grupo orixinario puxo as regras de xogo, pero poden ser cambiadas polo voto dos membros activos do Comité.

Hai un grupo de persoas que teñen acceso aos servidores e aos repositorios do código fonte. Todo o mundo ten acceso de lectura aos repositorios, pero para introducir cambios no código é preciso facer unha proposta na lista de correo, e unha votación a favor. Fan falta tres votos positivos, e ningún voto negativo (“veto”) para poder aplicar un cambio durante o ciclo de liberación. Para a documentación só é preciso o voto positivo da maioría.

O principal método de comunicación é a lista de correo. Ten un tráfico de aproximadamente 40 correos diarios, e mantén un ton de conversa, por norma. Discútense novas funcionalidades, o traballo de arranxar erros, problemas de usuarios ou novidades no eido dos servidores web, datas de liberación, etc. O desenvolvemento en si faise nas máquinas locais dos desenvolvedores, e os cambios propostos achéganse en forma de “parches” que son aplicados ou non ao código fonte segundo o resultado das votacións. Calquera participante da lista pode opinar e votar a favor dun cambio en particular, pero só se contabilizan os votos dos membros activos que son coñecidos por seren expertos na parte do servidor da que se esta a falar. Os vetos teñen que vir acompañados de xustificacións técnicas convincentes abondo. A entrada de novos membros no Comité de Xestión do Proxecto HTTP é por proposta dun membro, e tendo por suxeito a un desenvolvedor que sexa coñecido por ter actividade frecuente. Nos mais dos casos, os novos membros xa levan tempo achegando traballo ao proxecto, o normal é que máis de seis meses.

Instalación do Apache

O paquete que temos que instalar chámase “apache2”. Se facemos algunha procura na base de datos de paquetes instalábeis podemos atopar algúns relacionados cunha versión anterior de apache (da serie 1.*), que se conserva por compatibilidade con determinadas aplicacións. Cando falemos máis adiante de facer instalacións de apache, sempre nos habemos referir á versión da serie 2.* dispoñíbel. Con el hanse instalar varios máis para cumprir as súas dependencias. Podemos empregar apt-get install ou Synaptic.

Configuración básica

Os ficheiros de configuración do servidor web atópanse en /etc/apache2/. Igual que o resto dos servizos que residen nunha máquina GNU/Linux, o contido destes ficheirosvos é texto, e só texto, polo que poden ser editados con calquera editor que non introduza cambios non desexados. Dentro do ficheiro, as diferentes etiquetas van separadas do seu valor por espazos en branco. Os comentarios fanse con “#”. O ficheiro principal da configuración de httpd é /etc/apache2/apache2.conf

A configuración por defecto da instalación de Apache en Ubuntu inclúe todo o necesario para comezar a usar “servidores virtuais”, é dicir, que o noso servidor web sexa quen de responder a diferentes dominios, sempre que todos eles apunten ao seu enderezo IP. Tamén facilita a activación e desactivación de determinados módulos dispoñíbeis.

O resto de subcartafoles dentro de etc/apache2/ conteñen:

sites-available ficheiros de configuración dos diferentes servidores virtuais dispoñíbeis

sites-enabled ligazóns aos ficheiros de configuración dos servidores virtuais activos

mods-available ficheiros de configuración dos módulos dispoñíbeis

mods-enabled ligazóns aos ficheiros de configuración dos módulos activos

conf.d fragmentos de configuración empregados por aplicacións web

As ligazóns son un tipo de ficheiros que non teñen entidade propia, só apuntan a outros ficheiros situados noutro lugar. Por exemplo, se sacamos un listado de directorio de /etc/apache2/sites-enabled/ veremos:

# ls -lh /etc/apache2/sites-enabled/
total 0
lrwxrwxrwx 1 root root 36 2008-08-31 11:20 000-default -> /etc/apache2/sites-available/default
drwxr-xr-x 2 root root 80 2008-08-31 11:20 .
drwxr-xr-x 7 root root 400 2008-08-31 17:14 .. 


O ficheiro “000-default” vemos que “apunta” ao ficheiro /etc/apache2/sites-available/default. Para a xestión destas ligazóns existen uns comandos que permiten activar e desactivar módulos e sites: a2enmod, a2dismod, a2ensite, a2dissite. Respectivamente activa, desactiva módulos, e activa e desactiva sites.

Na instalación predeterminada o contido dos diversos sites aloxados no sistema, as páxinas web, ten que estar en /var/www/, pero todo depende do contido da variábel de configuración DocumentRoot.

Imos facer un pequeno repaso dalgunhas das variábeis de configuración que podemos atopar no ficheiro /etc/apache2/sites-available/default:

  • ServerAdmin, o enderezo de correo da persoa administradora do sistema. Aparece no pé de páxina das paxinas de erro do servidor.
  • ServerName, o nome do servidor, o seu FQND (“Fully Qualified Domain Name”, “Nome de Dominio Plenamente Cualificado”), isto é: o nome de dominio ao que vai respostar o servidor.
  • DocumentRoot, o cartafol dentro do servidor no que se han atopar os ficheiros html (ou php, ou calquera outro) que o servidor vai amosar aos e ás visitantes.
  • DirectoryIndex, o ficheiro ou ficheiros que o servidor vai buscar se o url que o visitante solicita remata en /. Atópase en /etc/apache2/mods-enabled/dir.conf.
  • ErrorLog, o ficheiro no que se vai deixar rexistro de erros na actividade do sistema. Normalmente é recomendábel ter un separador para cada servidor virtual.
  • CustomLog, o ficheiro do que queda constancia dos pedimentos que recibe o servidor, as visitas de clientes.

Algunhas directivas de configuración atópanse pechadas en bloques, por exemplo:

<Directory /var/www/novo>
...
</Directory>


Neste caso, son opcións que só afectan aos ficheiros situados nese directorio. As definicións de servidores virtuais tamén vai pechada nun bloque de código:

<VirtualHost *>
...
</VirtualHost>


De quixérmos crear un novo servidor virtual poderíamos comezar por facer unha copia do default:

cp /etc/apache2/sites-available/default /etc/apache2/sites-available/nososite


Despois teriamos que editalo para, en primeiro lugar, eliminar a primeira liña (“NameVirtualHost”), que só pode aparecer unha vez. Despois poderiamos cambiar o resto dos valores, para acomodalos ao que precisásemos. Tamén poderiamos eliminar o referido ao directorio /usr/share/doc, e cambiar o ficheiro de rexistro de log, a /var/log/apache2/errorNoso.log, e o de CustomLog, a /var/log/apache2/accessNoso.log, por exemplo. E deberiamos darlle un nome de servidor. O ficheiro básico podería quedar algo semellante ao seguinte:

<VirtualHost *> 
ServerAdmin webmaster@localhost
ServerName nososite.capacitacion.com
DocumentRoot /var/www/nososite
<Directory /var/www/nososite> 
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory> 
ErrorLog /var/log/apache2/errorNoso.log
LogLevel warn
CustomLog /var/log/apache2/accessNoso.log combined
</VirtualHost> 


Unha vez reiniciado Apache, e sempre que tiveramos unha liña no rexistro do servidor DNS que xunte “nososite” co enderezo IP no que responde o servidor web, o contido de /var/www/nososite/ debera ser visíbel para calquera visitante da web.

Apache1.png
Ilustración 1: Páxina web indicando a instalación correcta do Apache

Scripting: cgi, php, e python

Os contidos servidos polo httpd poden ser texto, imaxes ou calquera outro, pero ata o de agora só estamos a considerar contidos estáticos, ficheiros situados no directorio de referencia do servidor virtual. Tamén é posíbel que Apache ofreza contidos que varíen en función dun amplo abano de posibilidades, ou sexa páxinas web dinámicas. Para facer iso, o servidor web ten que empregar algún módulo que sexa capaz de entender unha linguaxe de guións (“scripting”) coma php, perl, python, ou outras.

O resultado de interpretar eses scripts pode ser de moitos tipos, dende entradas e saídas en bases de datos, ata comunicacións con outros servidores, pasando por páxinas web HTML producidas dinamicamente. Calquera script que empreguemos terá que provocar unha saída en texto plano, e con etiquetas HTML que o navegador da persoa visitante sexa quen de procesar e maquetar.

Se queremos que Apache sexa quen de procesar linguaxes de guións, é preciso instalarlle determinados módulos, que veñen empaquetados como paquetes da distribución. Así, por exemplo, o que habilita a Apache a traballar con PHP chámase “libapache2-mod-php5”. Podémolo instalar cos métodos habituais. Feita a instalación e reiniciado o servizo, xa podemos meter os nosos ficheiros PHP dentro da xerarquía de directorios do servidor web. Estes pasos previos son habituais na instalación de calquera aplicativo web das que habemos ver na última sección.

Para completar o conxunto de aplicativos que constitúen a plataforma web baseada en software libre por excelencia coñecida como LAMP (“Linux, Apache, MySQL, PHP”) só nos resta por ver unha das pezas: a base de datos. No seguinte capítulo vamos abordar unha introdución ás dúas solucións de referencia no ecosistema FLOSS: MySQL e PostgreSQL.

Licenza desta guía

Esta guía forma parte da documentación de apoio para a capacitación TIC en SwL e foi elaborada pola empresa TEGNIX para o Centro de Referencia e Servizos de Software Libre de Galiza – Mancomún. Distribúese baixo as condicións dunha Licenza Creative Commons: Recoñecemento-CompartirIgual 3.0