6. Apache

OpenBSD incluye una versión auditada de Apache como parte de los componentes básicos. Para activarla sin soporte para SSL agregue la siguiente línea en /etc/rc.conf.local:

httpd_flags="" 

A partir de OpenBSD 3.3, Apache corre por defecto y para mayor seguridad con chroot en /var/www. Es decir que desde el punto de vista de Apache la raíz del sistema es lo que hay en /var/www. Diversos portes o sus aplicaciones pueden requerir que Apache tenga acceso a otras partes del sistema, puede lograrlo iniciándolo con el flag:

httpd_flags="-u" 

Para detener el servidor una vez esté corriendo puede emplear:

# apachectl stop

Para iniciarlo o reiniciarlo con las opciones que haya configurado en /etc/rc.conf.local:

# . /etc/rc.conf
# httpd $httpd_flags
	

6.1. Directorios para usuarios

El archivo de configuración por defecto (/var/www/conf/httpd.conf) no incluye directorios para usuarios. A partir de OpenBSD 3.4 se recomienda que estos directorios se creen en /var/www/users, los activa estableciendo en el archivo de configuración:

UserDir /users 

o bien

UserDir /var/www/users 

el primer en caso de que corra Apache chroot y el segundo si no. En ambos casos se sugiere la siguiente secuencia para crear un directorio de publicación para el usuario pablo:

# cd /home/pablo
# mkdir /var/www/users/pablo
# ln -s /var/www/users/pablo public_html
# chown pablo:pablo /var/www/users/pablo
	

Así el usuario podrá publicar sus archivos en su subdirectorio public_html (como ocurre clásicamente) y desde un navegador local podrán verse con el URL: http://localhost/~pablo/ o remotamente con http://www.miescuela.edu.co/~pablo/

6.2. Dominios virtuales

Empleado dominios virtuales (del inglés Virtual Hosting) es posible manejar con un mismo servidor diversas direcciones DNS. Para activarlo:

  1. En /var/www/conf/httpd.conf no emplee un alias para el directorio /

  2. Si ejecuta Apache con chroot copie /usr/lib/apache/modules/mod_vhost_alias.so en /var/www/usr/lib/apache/modules/

  3. Agregue en /var/www/conf/httpd.conf una línea del estilo:

    NameVirtualHost 65.167.3.4
    		

    remplazando la IP por la de su servidor

    Agregue un dominio virtual por cada dominio que maneje, por ejemplo:

    <VirtualHost 65.167.63.234>
        ServerAdmin pablo@miescuela.edu.co
        DocumentRoot /var/www/htdocs
        ServerName www.miescuela.edu.co
        ServerAlias miescuela.edu.co
        ErrorLog logs/miescuela.edu.co-error_log
        Options ExecCgi Includes MultiViews Indexes FollowSymlinks 
        SymLinksIfOwnerMatch
        CustomLog logs/miescuela.edu.co-access_log common
    </VirtualHost>
    		

6.3. SSL

Para emplear SSL con Apache pueden seguirse las instrucciones del FAQ de OpenBSD que se retoman a continuación. Debe generar un certificado que pueda ser firmado por una Autoridad Certificadora o por usted mismo.

# openssl genrsa -out /etc/ssl/private/server.key 1024
# openssl req -new -key /etc/ssl/private/server.key \
       -out /etc/ssl/private/server.csr

Tras el segundo paso debe ingresar el código del país (co para Colombia), el departamento en el que está, la organización, la unidad dentro de la organización y el nombre común (e.g la dirección web).

Después puede enviar el archivo /etc/ssl/private/server.csr a una entidad certificadora, la entidad certificadora la devolverá su certificado firmado (digamos sudominio.pem) el cual debe ubicar en /etc/ssl/server.crt. Si prefiere firmar usted mismo su certificado emplee:

openssl x509 -req -days 365 -in /etc/ssl/private/server.csr \
      -signkey /etc/ssl/private/server.key -out /etc/ssl/server.crt

A continuación puede

  • agregar entre las opciones de Apache -DSSL en /etc/rc.conf.local

  • modificar /var/www/conf/httpd.conf para que al usar SSL se redireccione al directorio apropiado (digamos /var/www/users/sivel/), i.e. remplazando algunas líneas de la sección <VirtualHost _default_:443>:

    	DocumentRoot /var/www/users/sivel
    	ServerName miServidor
    	ServerAdmin micorreo@midominio.org
    	ErrorLog logs/error_log
    	TransferLog logs/access_log
    

  • Reiniciar el servidor con las opciones apropiadas, por ejemplo:

    # apachectl stop
    # /usr/sbin/httpd -DSSL
    

Finalmente puede probar abriendo desde un navegador https://jesus.miescuela.edu.co

6.4. PHP

Instale los paquete php5-core-5.0.4p0 y php5-extensions-5.0.4 (si prefiere PHP4 instale los paquetes apropiados y emplee en el resto de estas instrucciones php4 en donde diga php5). Después copie el archivo de ejemplo de php:

# cp /usr/local/share/examples/php5/php.ini-recommended /var/www/conf/php.ini
	  

ejecute:

# /usr/local/sbin/phpxs -s
	  

y asegúrese de que las siguientes líneas estén en /var/www/conf/httpd.conf:

LoadModule php5_module /usr/lib/apache/modules/libphp5.so

AddType application/x-httpd-php .php

DirectoryIndex index.html index.php
	  

Reinicie Apache y pruebe la instalación de PHP por ejemplo cargando desde un navegador un archivo prueba.php el cual debe tener el siguiente contenido:

<?php
  phpinfo();
?>
	  

6.4.1. Soporte para PostgreSQL en PHP

Para activar el soporte para PostgreSQL (ver Sección 3, “Motor de bases de datos PostgreSQL”en PHP instale el paquete php5-pgsql-5.0.4 y ejecute:

/usr/local/sbin/phpxs -a pgsql 
	    

Puede comprobar que esta extensión funciona revisando la salida de la función phpinfo().

6.4.2. Lecturas recomendadas

Puede aprender sobre PHP en http://www.php.net

La configuración de PHP con PostgreSQL y Apache corriendo con chroot puede verse en http://www.bsdforen.org/foren/showtopic.php?threadid=773 o en la sección sobre PostgreSQL de estas guías (ver Sección 3, “Motor de bases de datos PostgreSQL”

6.5. Tomcat

Tomcat es una implementación de estándares de Sun para soportar servlets (como CGIs escritos en Java) y JSP (para generar contenido dinámico al estilo de PHP pero programando en Java).

Para emplear la versión 4.x de tomcat, instale primero el paquete jdk-linux y después el paquete jakarta-tomcat, sugerimos que después, si no existe, cree un usuario _tomcat en el grupo _tomcat y que sea dueño de los archivos en /var/tomcat:

# chown -R _tomcat:_tomcat /var/tomcat
	  

Después ejecute:

JAVA_HOME=/usr/local/jdk1.3.1-linux/ \
  /usr/local/jakarta-tomcat-4.0.6/bin/startup.sh
	  

Si desea que Tomcat inicie cada vez que arranque el sistema agregue las siguientes líneas a /etc/rc.local:

if [ -x /usr/local/jakarta-tomcat-4.0.6/bin/startup.sh ]; then
  JAVA_HOME=/usr/local/jdk1.3.1-linux/ \
  jakarta-tomcat-4.0.6/bin/startup.sh
  echo -n 'tomcat'
fi
	  

y para que sea apagado cada vez que se apaga el computador, agregue en /etc/rc.shutdown:

if [ -x /usr/local/jakarta-tomcat-4.0.6/bin/shutdown.sh ]; then
  JAVA_HOME=/usr/local/jdk1.3.1-linux/ \
    jakarta-tomcat-4.0.6/bin/shutdown.sh
fi
	  

La configuración por defecto (modificable en /etc/tomcat/server.xml) le permite ver contenidos en el puerto 8080, siendo $CATALINA_HOME /var/tomcat. Si requiere instalar una aplicación en formato .war, agreguela en /var/tomcat/webapps y reinicie Tomcat.

Si una aplicación produce gráficas usando clases awt.*, durante el arranque de Tomcat deberá ejecutar el servidor virtual /usr/X11R6/bin/Xvfb, puede hacerlo modificando el script /usr/local/jakarta-tomcat-4.0.6/bin/catalina.sh. Agregue al comienzo:

export DISPLAY=:1	    
	  

Al comienzo de la sección de la opción start agregue:

/usr/X11R6/bin/Xvfb :1 &
	  

y en la sección stop ejecute:

pkill -9 Xvfb
	  

Las bitácoras quedan en /var/tomcat/logs.

6.5.1. Lecturas recomendadas

Puede aprender sobre Jakarta-Tomcat en http://jakarta.apache.org/tomcat/index.html

La configuración de Xvfb puede verse en http://www.javasource.org/GifServlet/linux.html

6.6. Server Side Include

El Apache incluído en OpenBSD tiene compilado como módulo estático mod_include.c (como puede comprobarse ejecutando /usr/sbin/httpd -l). Por esto para activar SSI basta quitar los comentarios de las siguientes líneas en /var/www/conf/httpd.conf:

AddType text/html .shtml
AddHandler server-parsed .shtml
		

y en el directorio o directorios desde los que se quieren usar páginas con SSI (extensión .shtml), agregar entre las opciones:

Option Includes
		

Si se desea que las páginas con extensión .html sean reconocidas por el servidor, de forma que puedan incluir directivas SSI, deles permiso de ejecución y agregué después del AddHandler antes mencionado:

XBitHack on
		

Tras reiniciar apache puede probar creando una página prueba.shtml por ejemplo con:

<html>
	<head><title></title></head>
	<body>
		<!--#echo var="DATE_LOCAL" -->
	</body>
</html> 
		

Al abrirla debe presentar la fecha y hora del sistema.

6.6.1. Lecturas recomendadas

Hay información completa sobre SSI en el manual de Apache http://httpd.apache.org/docs/howto/ssi.html