OpenBSD incluye dos servidores web: (1) una versión auditada de Apache 1.3.29 y (2) una versión auditada de nginx. En este capítulo detallamos la configuración y uso de cada uno.
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,
aunque no lo recomendamos puede lograrlo iniciando 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
O mejor ejecutando sh /etc/rc.local
, pero si
ha preparado este archivo para reiniciar servicios faltantes, por
ejemplo agregando al comienzo:
. /etc/rc.conf
y después de la inicialización de otros servicios:
pgrep httpd > /dev/null if [ "$?" != "0" -a X"$httpd_flags" != X"NO" ]; then httpd $httpd_flags fi
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/
Empleado dominios virtuales (del inglés Virtual Hosting) es posible manejar con un mismo servidor diversas direcciones DNS. Para activarlo:
En /var/www/conf/httpd.conf
no
emplee un alias para el directorio
/
Si ejecuta Apache con chroot copie
/usr/lib/apache/modules/mod_vhost_alias.so
en /var/www/usr/lib/apache/modules/
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>
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 (e.g http://www.pasosdeJesus.org/index.php?pag=autoridad_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 3650 -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
Instale el paquete
php-5.4.24
.
Después cree un enlace para activarlo en servidor web:
ln -s /var/www/conf/modules.sample/php-5.2.conf \ /var/www/conf/modules/php.conf
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(); ?>
Para activar el soporte para PostgreSQL (ver Sección 2, “Motor de bases de datos PostgreSQL”en PHP
instale el paquete php-pgsql-5.4.24
y
ejecute:
ln -fs /etc/php-5.2.sample/pgsql.ini \ /etc/php-5.2/pgsql.ini
Puede comprobar que esta extensión funciona revisando
la salida de la función phpinfo()
.
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 2, “Motor de bases de datos PostgreSQL”
El Apache incluido 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.
Hay información completa sobre SSI en el manual de Apache http://httpd.apache.org/docs/howto/ssi.html
OpenBSD y adJ incluyen nginx también entre
los componentes básicos. Su archivo de configuración
es /etc/nginx/nginx.conf
.
Por defecto correra en una jaula en
/var/www
, puede iniciarlo
manualmente con:
/etc/rc.d/nginx start
y detenerlo con
/etc/rc.d/nginx stop
Para que inicie automáticamente en cada arranque
basta agregar en
/etc/rc.conf.local
:
nginx_flags=""
y que añada nginx
en
pkg_scripts
.
No hay un módulo para PHP pero puede ejecutarse como Fast-CGI.
Esto puede lograrse por ejemplo con el paquete
php-fpm-5.4.24
. Este paquete incluye un
servicio que se configura en /etc/php-fpm.conf
y que por defecto servirá en el puerto 9000. Inicielo con
sudo sh /etc/rc.d/php-fpm start
o de manera permanente en cada arranque agregue php-fpm
en pkg_scripts
en /etc/rc.conf.local
.
En el archivo de configuración de nginx agregue en la sección
server
donde servirá Apache:
En index
agregue
index.php
Adicione:
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }