Hay un servidor web que es muy conservador en el uso de recursos y la huella de memoria. Ese servidor se conoce como lighttpd (pronunciado 'lighty'). Configurar una instancia de lighttpd puede ser un poco complicado, por lo que este tutorial sirve como una guía clara sobre cómo configurar correctamente un servidor lighttpd en Linux.
Comprender el archivo de configuración para cada instancia del servidor web es clave para ejecutar lighttpd con éxito. Este tutorial también cubrirá la adición de compatibilidad con PHP para sus servidores web.
Opciones de configuración de Lighttpd
Después de instalar lighttpd, comenzaremos creando un archivo que define la configuración del servidor web. Llamemos a esto 'example.conf' en el directorio de inicio. Simplemente copiaremos el archivo de configuración predeterminado que se encuentra en /etc/lighttpd. Este es un archivo '.conf' estándar, por lo que se aplican las reglas de sintaxis normales, es decir, por ejemplo, cualquier carácter después de '#' se trata como comentarios.
$ cp /etc/lighttpd/lighttpd.conf ~/webservers/example.conf $ vim ~/webservers/example.conf # Or whatever editor you wish
Módulos de servidor
El campo 'server.modules' contiene una serie de módulos que utiliza el servidor. Agreguemos dos más a la lista ahora:'mod_fastcgi' y 'mod_setenv'. Mod_fastcgi nos permitirá añadir soporte para PHP. Mod_setenv nos permitirá pasar un encabezado que permitirá que el servidor realice solicitudes a otros dominios, lo que es útil para cargar bibliotecas externas.
NOTA:si desea incluir también 'mod_status' en la lista, coloque 'mod_setenv' antes.
Configuración del servidor
Inspeccionemos la siguiente sección:
server.document-root = "/var/www/html" server.upload-dirs = ( "/var/cache/lighttpd/uploads" ) server.errorlog = "/var/log/lighttpd/error.log" server.pid-file = "/var/run/lighttpd.pid" server.username = "www-data" server.groupname = "www-data" server.port = 80
Estos campos realmente se explican por sí mismos. Estos son los valores predeterminados que se encuentran en el archivo de configuración en /etc/lighttpd . Dado que este es un archivo nuevo, copiado del archivo de configuración predeterminado, podemos cambiar lo que queramos. La raíz del documento especifica el nivel de directorio superior visible para el servidor web. El campo 'upload-dirs' contiene una serie de directorios para almacenar cargas. Nombre de usuario y nombre de grupo correspondiente a los que se encuentran en su sistema. Por defecto, el usuario 'www-data' es el propietario de los archivos creados por esta instancia de lighttpd. Deberá asegurarse de que 'www-data' pueda escribir en el registro de errores (se tratará un poco más adelante).
En esta configuración, cambiemos el directorio raíz del documento a ‘/var/www/mysite/html’ .A continuación, cambie el registro de errores a un nombre diferente:'/var/log/lighttpd/mysite/error.log'. Luego, cambie el puerto a 8080, si lo desea.
Compatibilidad con FastCGI y 'setenv'
Dado que agregamos estos dos módulos:tendremos que colocar configuraciones en el archivo debajo de la configuración del servidor (si los ejecutables para 'php' y 'php-cgi' se encuentran en otro lugar, especifíquelos en su lugar):
fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/tmp/php.socket" )))cgi.assign = ( ".php" => "/usr/bin/php" )
Lo que hemos hecho es decirle a lighttpd que si se solicitó un script PHP desde el servidor, debe iniciar el intérprete de PHP en la computadora para procesarlo. El módulo FastCGI es lo que usamos para ejecutar scripts PHP.
Si necesita permitir el uso compartido de recursos de origen cruzado (CORS), agregue esta línea a continuación. setenv.add-response-header =( “Access-Control-Allow-Origin” => “*”) Para especificar solo un dominio, reemplace “*” con el dominio que desee.
Aquí está el contenido del archivo de configuración:
Cómo instalar PHP
Si desea compatibilidad con PHP, deberá instalar PHP, específicamente los paquetes 'php' y 'php-cgi'. Para el soporte de MySQL, también se debe instalar 'php-mysql'. Ya hemos configurado el servidor web en el archivo de configuración para permitir que se ejecute el código PHP.
Algunos pasos adicionales
Archivo de registro
Debido a que la ubicación del archivo de registro que especificamos en la configuración está en una carpeta que aún no existe, lighttpd arrojará un error cuando se ejecute. Primero, necesitaremos crear la carpeta:
$ sudo mkdir /var/log/lighttpd/mysite
Luego, cree el archivo de registro, luego cambie la propiedad del usuario y del grupo del archivo al usuario "www-data" como se especifica en el archivo de configuración.
$ sudo touch /var/log/lighttpd/mysite/error.log $ sudo chown www-data /var/log/lighttpd/mysite/error.log $ sudo chgrp www-data /var/log/lighttpd/mysite/error.log
Luego intentamos ejecutar el servidor usando nuestro archivo de configuración:
$ sudo lighttpd -f mysite.conf
Copiar el archivo de índice
No olvide copiar el archivo de índice que se encuentra en el directorio /var/www/html a su directorio raíz:
$ sudo cp /var/www/html/index.lighttpd.html /var/www/html/mysite/index.html
Ejecución del servidor
Con suerte, lighttpd se iniciará en segundo plano sin errores de impresión en la pantalla. Sin embargo, encontré un problema con uno de los comandos "include_shell" en la configuración:
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
Si también encuentra este problema, una opción es deshabilitarlo (pegando un '#' al comienzo de la línea).
#include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
Si desea o necesita solucionarlo, la otra opción es abrir el script Perl especificado en el comando include_shell y cambiar una de las cadenas.
Encuentra esta línea:
my $enabled = “conf-enabled/*.conf”;
El problema es que este es un directorio al que hace referencia este script, pero está incompleto. Lo que hice fue agregar donde decía que estaba ubicado el directorio a la variable $enabled.
my $enabled = “/etc/lighttpd/conf-enabled/*.conf”;
Aplicación de cambios
Después de cambiar el archivo de configuración para un servidor en particular, debe eliminar esa instancia de lighttpd y reiniciarla. El PID de ese servidor se puede encontrar fácilmente usando el comando 'ps'.
Si solo tiene una instancia de lighttpd ejecutándose, simplemente ejecute el comando 'killall'.
$ sudo killall lighttpd
Ver en su navegador
Para verificar que su servidor esté funcionando correctamente, abra su navegador web (sea el que sea) y escriba en la barra de direcciones "localhost:8080" o "127.0.0.1:8080". Si aparece una página con el título "Página de marcador de posición", su servidor se está ejecutando y entrega páginas HTML correctamente.
Resolución de problemas
Si encuentra problemas cuando inicia el servidor, o incluso después de eso, es posible que deba solucionarlos. Aquí hay algunos ejemplos y cómo superar los problemas encontrados aquí.
Los archivos se descargan en lugar de manejarse correctamente
Si intentó abrir su página index.html en su navegador web y tomó la iniciativa de descargar el archivo en lugar de renderizarlo, es posible que sus tipos MIME no estén configurados correctamente.
Asegúrese de que se esté ejecutando el script Perl para configurarlos.
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
Este comando configura su servidor web para manejar diferentes tipos de archivos de manera adecuada.
Las secuencias de comandos PHP no se ejecutan
Asegúrese de tener PHP instalado y de que el archivo de configuración tenga las configuraciones establecidas en este tutorial.
Errores HTTP 500
Estos errores requieren más investigación. Un culpable podría ser un error en el código PHP. Cualquiera que sea la causa, lea el archivo de registro para averiguar qué sucedió.
Conclusión
Debe tener un servidor web correctamente configurado que se ejecute correctamente con lighttpd. Si necesita más de un lighttpd instancia en ejecución, asegúrese de que el puerto especificado en cada archivo de configuración sea diferente entre sí, de lo contrario, lighttpd arrojará un error.
Un pequeño consejo sobre la calidad de vida
Puede administrar los archivos sin ejecutar los editores como usuario root otorgándose la propiedad total del directorio a usted mismo:
$ sudo chown -R your_username /var/www/html/mysite $ sudo chgrp -R your_username /var/www/html/mysite