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

OpenBSD relayd | httpd

Introducing OpenBSD's new httpd

The rc system startup script


Tal vez pueda interesarte


Compartí este artículo