OpenBSD incluye su propia implementación de servidor Web llamado httpd, basado originalmente en relayd, y que (como todo proyecto relacionado a OpenBSD) apunta a la seguridad y en este caso en particular a la escalabilidad.
httpd es un servidor Web seguro y minimalista (apunta a evitar la "featuritis" que sufren los servidores Web más importantes, notablemente Apache), que sirve archivos estáticos y soporta FastCGI y TLS. Incorpora algunas características básicas como listado de directorios, logging y autenticación basic. Para conocer la historia completa de httpd y cómo comenzó su desarrollo es recomendable el paper Introducing OpenBSD's new httpd.
El objetivo de este artículo es montar el clásico servidor Web con soporte para PHP sobre un sistema OpenBSD. Y ya que httpd es el servidor Web por defecto en OpenBSD, se explica la instalación y configuración del mismo, en lugar de instalar Apache o Nginx desde los paquetes o ports.
Partiendo de un servidor OpenBSD recién instalado, el primer paso consiste en instalar PHP. Es posible instalar desde paquete o instalar desde los ports. En este caso se instala desde paquete con pkg_add
:
# pkg_add php quirks-2.197 signed on 2016-02-26T22:06:23Z Ambiguous: choose package for php a 0: <None> 1: php-5.4.45p2 2: php-5.4.45p2-ap2 3: php-5.5.32 4: php-5.5.32-ap2 5: php-5.6.18 6: php-5.6.18-ap2 Your choice: 5
En general es recomendable instalar software desde paquetes en OpenBSD.
Notar que es necesario elegir qué versión de PHP se desea instalar. Estas son las cosas que uno quisiera tener en sistemas GNU/Linux: poder elegir qué versión de un framework o lenguaje se desea utilizar. Algo que sólo poseen los sistemas *BSD.
Una vez instalado, iniciar el servidor FastCGI:
# /etc/rc.d/php56_fpm start php56_fpm(ok)
Al igual que en sistemas GNU/Linux, el servidor PHP FastCGI acepta solicitudes a través de un socket Unix:
# netstat -a | grep php 0xffff800000c96500 stream 0 0 0xffffff001d705e38 0x0 0x0 0x0 /var/www/run/php-fpm.sock
httpd está incluido en OpenBSD, por lo que sólo es necesario habilitar el servicio editando el archivo /etc/rc.conf.local
(es necesario crearlo si no existe):
# vi /etc/rc.conf.local
Agregar la variable httpd_flags
para habilitar el servicio (e iniciarlo automáticamente durante el inicio del sistema):
httpd_flags=
En cambio, como el servidor PHP FastCGI fue instalado desde paquete, es necesario habilitarlo ejecutando:
# rcctl enable php56_fpm
Este comando agrega la entrada pkg_scripts=php56_fpm
en el archivo /etc/rc.conf.local
(o agrega php56_fpm
al final de la variable pkg_scripts
si esta ya existe).
httpd incluye una configuración de ejemplo, la cual es posible copiar y modificar:
# cp /etc/examples/httpd.conf /etc/
Una configuración extremadamente mínima y a modo de prueba para montar un servidor Web con soporte para PHP sería:
ext_addr="*" server "www.linuxito.com" { listen on $ext_addr port 80 location "*.php" { fastcgi socket "/run/php-fpm.sock" } directory { no auto index, index "index.php" } root "/htdocs/" } types { include "/usr/share/misc/mime.types" }
Para verificar el funcionamiento del servidor, crear un directorio con sendos archivos index.html
e index.php
:
# mkdir /var/www/htdocs/wiki # echo "Hola mundo" > /var/www/htdocs/wiki/index.html # echo '<?php echo "Hola mundo en PHP";' > /var/www/htdocs/wiki/index.php
Por último, iniciar el servidor Web:
# /etc/rc.d/httpd start httpd(ok)
Es posible verificar que funcione el servidor Web y el servidor FastCGI accediendo a ambos recursos desde un navegador:


Referencias
man httpd man httpd.conf man rc.conf man rc.conf.local man rcctl
Introducing OpenBSD's new httpd