Next: , Previous: , Up: Servicios   [Contents][Index]


11.10.20 Servicios Web

El módulo (gnu services web) proporciona el servidor HTTP Apache, el servidor web nginx y también un recubrimiento del daemon de fastcgi.

Servidor HTTP Apache

Variable: httpd-service-type

Tipo de servicio para el servidor Apache HTTP (httpd). El valor para este tipo de servicio es un registro httpd-configuration.

Un ejemplo de configuración simple se proporciona a continuación.

(service httpd-service-type
         (httpd-configuration
           (config
             (httpd-config-file
               (server-name "www.example.com")
               (document-root "/srv/http/www.example.com")))))

Otros servicios también pueden extender el tipo httpd-service-type para añadir su contribución a la configuración.

(simple-service 'www.example.com-server httpd-service-type
                (list
                  (httpd-virtualhost
                    "*:80"
                    (list (string-join '("ServerName www.example.com"
                                         "DocumentRoot /srv/http/www.example.com")
                                       "\n")))))

Los detalles de los tipos de registro httpd-configuration, httpd-module, httpd-config-file y httpd-virtualhost se proporcionan a continuación.

Tipo de datos: httpd-configuration

Este tipo de datos representa la configuración del servicio httpd.

package (predeterminado: httpd)

El paquete httpd usado.

pid-file (predeterminado: "/var/run/httpd")

El archivo pid usado por el servicio de Shepherd.

config (predeterminado: (httpd-config-file))

The configuration file to use with the httpd service. The default value is a httpd-config-file record, but this can also be a different G-expression that generates a file, for example a plain-file. A file outside of the store can also be specified through a string.

Tipo de datos: httpd-module

Este es el tipo de datos que representa un módulo para el servicio httpd.

name

El nombre del módulo.

file

The file for the module. This can be relative to the httpd package being used, the absolute location of a file, or a G-expression for a file within the store, for example (file-append mod-wsgi "/modules/mod_wsgi.so").

Variable: %default-httpd-modules

Una lista de objetos httpd-module predeterminados.

Tipo de datos: httpd-config-file

Este tipo de datos representa un archivo de configuración para el servicio httpd.

modules (predeterminados: %default-httpd-modules)

The modules to load. Additional modules can be added here, or loaded by additional configuration.

Por ejemplo, para manejar las peticiones de archivos PHP, puede usar el módulo mod_proxy_fcgi de Apache junto con php-fpm-service-type:

(service httpd-service-type
         (httpd-configuration
          (config
           (httpd-config-file
            (modules (cons*
                      (httpd-module
                       (name "modulo_proxy")
                       (file "modules/mod_proxy.so"))
                      (httpd-module
                       (name "module_proxy_fcgi")
                       (file "modules/mod_proxy_fcgi.so"))
                      %default-httpd-modules))
            (extra-config (list "\
<FilesMatch \\.php$>
    SetHandler \"proxy:unix:/var/run/php-fpm.sock|fcgi://localhost/\"
</FilesMatch>"))))))
(service php-fpm-service-type
         (php-fpm-configuration
          (socket "/var/run/php-fpm.sock")
          (socket-group "httpd")))
server-root (predeterminado: httpd)

The ServerRoot in the configuration file, defaults to the httpd package. Directives including Include and LoadModule are taken as relative to the server root.

server-name (predeterminado: #f)

El campo ServerName (nombre del servidor) en el archivo de configuración, el cual se usa para especificar el esquema de peticiones, nombre de máquina y puerto que el servidor usa para su propia identificación.

This doesn’t need to be set in the server config, and can be specified in virtual hosts. The default is #f to not specify a ServerName.

document-root (predeterminado: "/srv/http")

La raíz (DocumentRoot) desde la que se proporcionan los archivos.

listen (predeterminado: '("80"))

The list of values for the Listen directives in the config file. The value should be a list of strings, when each string can specify the port number to listen on, and optionally the IP address and protocol to use.

pid-file (predeterminado: "/var/run/httpd")

The PidFile to use. This should match the pid-file set in the httpd-configuration so that the Shepherd service is configured correctly.

error-log (predeterminado: "/var/log/httpd/error_log")

El archivo ErrorLog en el que el servidor registrará los errores.

user (predeterminada: "httpd")

La usuaria como la que el servidor responderá a las peticiones.

group (predeterminado: "httpd")

El grupo como el que el servidor responderá a las peticiones.

extra-config (predeterminadas: (list "TypesConfig etc/httpd/mime.types"))

Una lista de cadenas y expresiones-G que se añadirán al final del archivo de configuración.

Los valores con los que se extiende el servicio se añaden al final de esta lista.

Tipo de datos: httpd-virtualhost

Este tipo de datos representa un bloque de configuración de máquina virtual del servicio httpd.

Se deben añadir a la configuración adicional extra-config del servicio httpd-service.

(simple-service 'servidor-www.example.com httpd-service-type
                (list
                  (httpd-virtualhost
                    "*:80"
                    (list (string-join '("ServerName "www.example.com"
                                         "DocumentRoot /srv/http/www.example.com")
                                       "\n")))))
addresses-and-ports

Las direcciones y puertos de la directiva VirtualHost.

contents

El contenido de la directiva VirtualHost; debe ser una lista de cadenas y expresiones-G.

NGINX

Variable: nginx-service-type

Tipo de servicio para el servidor web NGinx. El valor para este tipo de servicio es un registro <nginx-configuration>.

Un ejemplo de configuración simple se proporciona a continuación.

(service nginx-service-type
         (nginx-configuration
           (server-blocks
             (list (nginx-server-configuration
                     (server-name '("www.example.com"))
                     (root "/srv/http/www.example.com"))))))

Además de añadiendo bloques de servidor a la configuración del servicio de manera directa, este servicio puede extenderse con otros servicios para añadir bloques de servidor, como en este ejemplo:

(simple-service 'mi-servidor-adicional nginx-service-type
                (list (nginx-server-configuration
                        (root "/srv/http/sitio-adicional")
                        (try-files (list "$uri" "$uri/index.html")))))

Durante su inicio, nginx no ha leído todavía su archivo de configuración, por lo que usa un archivo predeterminado para registrar los mensajes de error. Si se produce algún fallo al cargar su archivo de configuración, allí es donde se registran los mensajes de error. Tras la carga del archivo de configuración, el archivo de registro de errores predeterminado cambia al especificado allí. En nuestro caso, los mensajes de error durante el inicio se pueden encontrar en /var/run/nginx/logs/error.log, y tras la configuración en /var/log/nginx/error.log. La segunda ruta puede cambiarse con las opciones de configuración log-directory.

Tipo de datos: nginx-configuration

This data type represents the configuration for NGinx. Some configuration can be done through this and the other provided record types, or alternatively, a config file can be provided.

nginx (predeterminado: nginx)

El paquete nginx usado.

shepherd-requirement (default: '())

This is a list of symbols naming Shepherd services the nginx service will depend on.

This is useful if you would like nginx to be started after a back-end web server or a logging service such as Anonip has been started.

log-directory (predeterminado: "/var/log/nginx")

Directorio en el que NGinx escribirá los archivos de registro.

log-level (default: 'error) (type: symbol)

Logging level, which can be any of the following values: 'debug, 'info, 'notice, 'warn, 'error, 'crit, 'alert, or 'emerg.

run-directory (predeterminado: "/var/run/nginx")

Directorio en el que NGinx crea el archivo de PID, y escribe archivos temporales.

server-blocks (predeterminados: '())

Una lista de bloques de servidor que se crearán en el archivo de configuración generado; los elementos deben ser del tipo <nginx-server-configuration>.

El ejemplo siguiente configura NGinx para proporcionar www.example.com a partir del directorio /srv/http/www.example.com, sin usar HTTPS.

(service nginx-service-type
         (nginx-configuration
           (server-blocks
             (list (nginx-server-configuration
                     (server-name '("www.example.com"))
                     (root "/srv/http/www.example.com"))))))
upstream-blocks (predeterminados: '())

Una lista de bloques upstream creada en el archivo de configuración generado, los elementos deben ser del tipo <nginx-upstream-configuration>.

La configuración de proveedores a través de upstream-blocks puede ser útil al combinarse con location en los registros <nginx-server-configuration>. El siguiente ejemplo crea la configuración de un servidor con una configuración de ruta, que hará de intermediaria en las peticiones a la configuración de proveedores, que delegarán las peticiones en dos servidores.

(service
  nginx-service-type
  (nginx-configuration
    (server-blocks
      (list (nginx-server-configuration
              (server-name '("www.example.com"))
              (root "/srv/http/www.example.com")
              (locations
                (list
                  (nginx-location-configuration
                  (uri "/ruta1")
                  (body '("proxy_pass http://servidor-proxy;"))))))))
    (upstream-blocks
      (list (nginx-upstream-configuration
              (name "servidor-proxy")
              (servers (list "servidor1.example.com"
                             "servidor2.example.com")))))))
file (predeterminado: #f)

Si se proporciona un archivo de configuración con file, se usará este, en vez de generar un archivo de configuración a partir de los parámetros log-directory, run-directory, server-blocks y upstream-blocks proporcionados. Para conseguir un funcionamiento adecuado, estos parámetros deben corresponder con el contenido de file, lo que asegura que los directorios se hayan creado durante la activación del servicio.

Esto puede ser útil si ya dispone de un archivo de configuración, o no es posible hacer lo que necesita con el resto de opciones del registro nginx-configuration.

server-names-hash-bucket-size (predeterminado: #f)

Tamaño del cubo para las tablas hash de los nombres de servidor, cuyo valor predeterminado es #f para que se use el tamaño de la línea de caché de los procesadores.

server-names-hash-bucket-max-size (predeterminado: #f)

Tamaño máximo del cubo para las tablas hash de nombres de servidor.

modules (predeterminados: '())

Lista de módulos dinámicos de nginx cargados. Debe ser una lista de nombres de archivo de módulos cargables, como en este ejemplo:

(modules
 (list
  (file-append nginx-accept-language-module "\
/etc/nginx/modules/ngx_http_accept_language_module.so")
  (file-append nginx-lua-module "\
/etc/nginx/modules/ngx_http_lua_module.so")))
lua-package-path (predeterminada: '())

Lista de paquetes de lua para nginx cargados. Debe ser una lista de nombres de archivo de módulos cargables, como en este ejemplo:

(lua-package-path (list lua-resty-core
                        lua-resty-lrucache
                        lua-resty-signal
                        lua-tablepool
                        lua-resty-shell))
lua-package-cpath (predeterminada: '())

Lista de paquetes C de lua para nginx cargados. Debe ser una lista de nombres de archivo de módulos cargables, como en este ejemplo:

(lua-package-cpath (list lua-resty-signal))
global-directives (predeterminadas: '((events . ())))

Lista asociativa de directivas globales para el nivel superior de la configuración de nginx. Los valores en sí mismos pueden ser listas asociativas.

(global-directives
 `((worker_processes . 16)
   (pcre_jit . on)
   (events . ((worker_connections . 1024)))))
extra-content (predeterminado: "")

Additional content to be appended to the http block. Can either be a value that can be lowered into a string or a list of such values. In the former case, it is inserted directly. In the latter, it is prefixed with indentation and suffixed with a newline. Nested lists are flattened into one line.

(extra-content "include /etc/nginx/custom-config.conf;")
(extra-content `("include /etc/nginx/custom-config.conf;"
                 ("include " ,%custom-config.conf ";")))
Tipo de datos: nginx-server-configuration

Tipo de datos que representa la configuración de un bloque de servidor nginx. Este tipo tiene los siguientes parámetros:

listen (predeterminadas: '("80" "443 ssl"))

Cada directiva listen establece la dirección y el puerto para IP, o la ruta para un socket de dominio de UNIX sobre el que el servidor acepta peticiones. Se puede especificar tanto dirección y puerto como únicamente la dirección o únicamente el puerto. Una dirección puede ser también un nombre de máquina, por ejemplo:

'("127.0.0.1:8000" "127.0.0.1" "8000" "*:8000" "localhost:8000")
server-name (predeterminados: (list 'default))

Una lista de nombres de servidor que este servidor representa. 'default representa el servidor predeterminado para conexiones que no correspondan a otro servidor.

root (predeterminada: "/srv/http")

Raíz del sitio web que nginx proporcionará.

locations (predeterminado: '())

Una lista de registros nginx-location-configuration o nginx-named-location-configuration usados dentro de este bloque de servidor.

index (predeterminado: (list "index.html"))

Archivos de índice buscados cuando los clientes solicitan un directorio. Si no se encuentra ninguno, Nginx enviará la lista de archivos del directorio.

try-files (predeterminado: '())

Una lista de archivos cuya existencia se comprueba en el orden especificado. nginx usará el primer archivo que encuentre para procesar la petición.

ssl-certificate (predeterminado: #f)

Lugar donde se encuentra el certificado para conexiones seguras. Proporcione #f si no dispone de un certificado o no desea usar HTTPS.

ssl-certificate-key (predeterminado: #f)

Lugar donde se encuentra la clave privada para conexiones seguras. Proporcione #f si no dispone de una clave o no desea usar HTTPS.

server-tokens? (predeterminado: #f)

Determina si el servidor debe añadir su configuración a las respuestas.

raw-content (predeterminado: '())

A list of strings or file-like objects to be appended to the server block. Each item is prefixed with indentation and suffixed with a new line. Nested lists are flattened.

Tipo de datos: nginx-upstream-configuration

Tipo de datos que representa la configuración de un bloque upstream de nginx. Este tipo tiene los siguientes parámetros:

name

Nombre para este grupo de servidores.

servers

Especifica las direcciones de los servidores en el grupo. Las direcciones se pueden proporcionar mediante direcciones IP (por ejemplo ‘127.0.0.1’), nombres de dominio (por ejemplo ‘maquina1.example.com’) o rutas de socket de UNIX mediante el prefijo ‘unix:’. El puerto predeterminado para las direcciones IP o nombres de dominio es el 80, y se puede proporcionar un puerto de manera explícita.

extra-content

A string or list of strings to add to the upstream block.

Tipo de datos: nginx-location-configuration

Tipo de datos que representa la configuración de un bloque location de nginx. Este tipo tiene los siguientes parámetros:

uri

URI a la que corresponde este bloque de location.

body

Body of the location block, specified as a list of strings or file-like objects. Each item is prefixed with indentation and suffixed with a new line. Nested lists are flattened.

For example, to pass requests to a upstream server group defined using an nginx-upstream-configuration block, the following directive would be specified in the body ‘(list "proxy_pass http://upstream-name;")’.

Tipo de datos: nginx-named-location-configuration

Tipo de datos que representa la configuración de un bloque de localización con nombre de nginx. Los bloques de localizaciones con nombre se usan para la redirección de peticiones, y no se usan para el procesamiento regular de peticiones. Este tipo tiene los siguientes parámetros:

name

Nombre que identifica este bloque de dirección location.

body

See cuerpo de nginx-location-configuration, como el cuerpo de los bloques de localizaciones con nombre puede usarse de manera similar al cuerpo de nginx-location-configuration. Una restricción es que el cuerpo de una localización con nombre no puede contener bloques de localizaciones.

Caché Varnish

Varnish es un servidor de caché rápida que se coloca entre aplicaciones web y usuarios finales. Redirige peticiones a los clientes y almacena en caché las URL a las que se accede de manera que múltiples peticiones al mismo recurso únicamente creen una petición al motor.

Variable: varnish-service-type

Tipo de servicio para el daemon Varnish.

Tipo de datos: varnish-configuration

Tipo de datos que representa la configuración del servicio varnish. Este tipo tiene los siguientes parámetros:

package (predeterminado: varnish)

El paquete Varnish usado.

name (predeterminado: "default")

Un nombre para esta instancia de Varnish. Varnish creará un directorio en /var/varnish con este nombre y mantendrá allí los archivos temporales. Si el nombre comienza con una barra, se interpreta como un nombre absoluto de directorio.

Proporcione el parámetro -n a otros programas de Varnish para que se conecten a la instancia de dicho nombre, por ejemplo varnishncsa -n default.

backend (predeterminado: "localhost:8080")

Motor usado. Esta opción no tiene efecto si se usa vcl.

vcl (predeterminado: #f)

El programa VCL (lenguaje de configuración de Varnish) ejecutado. Si se proporciona #f, Varnish llevará a cabo las redirecciones al motor (backend) usando la configuración predeterminada. En otro caso debe ser un objeto “tipo-archivo” con sintaxis válida para VCL.

Por ejemplo, para proporcionar un espejo de www.gnu.org con VCL podría escribir algo parecido a esto:

(define %espejo-gnu
  (plain-file "gnu.vcl"
              "vcl 4.1;
backend gnu { .host = \"www.gnu.org\"; }"))

(operating-system
  ;; …
  (services (cons (service varnish-service-type
                           (varnish-configuration
                            (listen '(":80"))
                            (vcl %espejo-gnu)))
                  %base-services)))

La configuración de una instancia de Varnish ya en ejecución se puede inspeccionar y cambiar mediante el uso de la orden varnishadm.

Consulte la guía de usuaria de Varnish y el libro de Varnish para obtener la documentación completa de Varnish y su lenguaje de configuración.

listen (predeterminada: '("localhost:80"))

Lista de direcciones en las que Varnish escucha.

storage (predeterminado: '("malloc,128m"))

Lista de motores de almacenamiento que estarán disponibles en VCL.

parameters (predeterminados: '())

Lista de parámetros de tiempo de ejecución con la forma '(("parámetro" . "valor")).

extra-options (predeterminadas: '())

Parámetros adicionales a proporcional al proceso varnishd.

Whoogle Search

Whoogle Search is a self-hosted, ad-free, privacy-respecting meta search engine that collects and displays Google search results. By default, you can configure it by adding this line to the services field of your operating system declaration:

(service whoogle-service-type)

As a result, Whoogle Search runs as local Web server, which you can access by opening ‘http://localhost:5000’ in your browser. The configuration reference is given below.

Variable: whoogle-service-type

Service type for Whoogle Search. Its value must be a whoogle-configuration record—see below.

Data Type: whoogle-configuration

Data type representing Whoogle Search service configuration.

package (default: whoogle-search)

The Whoogle Search package to use.

host (predeterminada: "127.0.0.1")

The host address to run Whoogle on.

port (default: 5000)

The port where Whoogle will be exposed.

environment-variables (default: '())

A list of strings with the environment variables to configure Whoogle. You can consult its environment variables template for the list of available options.

Patchwork

Patchwork es un sistema de seguimiento de parches. Puede recolectar parches enviados a listas de correo y mostrarlos en una interfaz web.

Variable: patchwork-service-type

Tipo de servicio para Patchwork.

El siguiente ejemplo muestra un servicio mínimo para Patchwork, para el dominio patchwork.example.com.

(service patchwork-service-type
         (patchwork-configuration
          (domain "patchwork.example.com")
          (settings-module
           (patchwork-settings-module
            (allowed-hosts (list domain))
            (default-from-email "patchwork@patchwork.example.com")))
          (getmail-retriever-config
           (getmail-retriever-configuration
            (type "SimpleIMAPSSLRetriever")
            (server "imap.example.com")
            (port 993)
            (username "patchwork")
            (password-command
             (list (file-append coreutils "/bin/cat")
                   "/etc/getmail-patchwork-imap-password"))
            (extra-parameters
            '((mailboxes . ("Parches"))))))))

Existen tres registros para la configuración del servicio de Patchwork. El registro <patchwork-configuration> está relacionado con la configuración de Patchwork dentro del servicio HTTPD.

El campo settings-module dentro del registro <patchwork-configuration> puede rellenarse con un registro <patchwork-settings-module>, que describe un módulo de configuración generado dentro del almacén de Guix.

En el campo database-configuration dentro del registro <patchwork-settings-module>, debe usarse <patchwork-database-configuration>.

Tipo de datos: patchwork-configuration

Tipo de datos que representa la configuración del servicio Patchwok. Este tipo tiene los siguientes parámetros:

patchwork (predeterminado: patchwork)

El paquete Patchwork usado.

domain

Dominio usado por Patchwork, se usa en el servicio HTTPD como “virtual host”.

settings-module

The settings module to use for Patchwork. As a Django application, Patchwork is configured with a Python module containing the settings. This can either be an instance of the <patchwork-settings-module> record, any other record that represents the settings in the store, or a directory outside of the store.

static-path (predeterminada: "/static/")

Ruta bajo la cual el servicio HTTPD proporciona archivos estáticos.

getmail-retriever-config

The getmail-retriever-configuration record value to use with Patchwork. Getmail will be configured with this value, the messages will be delivered to Patchwork.

Tipo de datos: patchwork-settings-module

Tipo de datos que representa un módulo de configuración de Patchwork. Algunas de estas opciones están directamente relacionadas con Patchwork, pero otras son relativas a Django, el entorno web usado Patchwork, o la biblioteca Django Rest Framework. Este tipo tiene los siguientes parámetros:

database-configuration (predeterminada: (patchwork-database-configuration))

La configuración de la conexión a la base de datos usada para Patchwork. Véase el tipo de registro <patchwork-database-configuration> para más información.

secret-key-file (predeterminado: "/etc/patchwork/django-secret-key")

Patchwork, como una aplicación web Django, usa una clave secreta para firmar criptográficamente valores. Este archivo debe contener un valor único e impredecible.

Si este archivo no existe, el servicio de Shepherd patchwork-setup lo creará y rellenará con un valor aleatorio.

Esta configuración está relacionada con Django.

allowed-hosts

A list of valid hosts for this Patchwork service. This should at least include the domain specified in the <patchwork-configuration> record.

Esta es una opción de configuración de Django.

default-from-email

La dirección de correo desde de la que Patchwork debe enviar el correo de manera predeterminada.

Esta es una opción de configuración de Patchwork.

static-url (predeterminada: #f)

The URL to use when serving static assets. It can be part of a URL, or a full URL, but must end in a /.

Si se usa el valor predeterminado, se usará el valor de static-path del registro <patchwork-configuration>.

Esta es una opción de configuración de Django.

admins (predeterminadas: '())

Direcciones de correo electrónico a las que enviar los detalles de los errores que ocurran. Cada valor debe ser una lista que contenga dos elementos, el nombre y la dirección de correo electrónico en dicho orden.

Esta es una opción de configuración de Django.

debug? (predeterminado: #f)

Determina si se ejecuta Patchwork en modo de depuración. Si se proporciona #t, se mostrarán mensajes de error detallados.

Esta es una opción de configuración de Django.

enable-rest-api? (predeterminado: #t)

Determina si se activa el API REST de Patchwork.

Esta es una opción de configuración de Patchwork.

enable-xmlrpc? (predeterminado: #t)

Determina si se activa el API XML RPC.

Esta es una opción de configuración de Patchwork.

force-https-links? (predeterminado: #t)

Determina si se usan enlaces HTTPS en las páginas de Patchwork.

Esta es una opción de configuración de Patchwork.

extra-settings (predeterminado: "")

Código adicional que colocar al final del módulo de configuración de Patchwork.

Tipo de datos: patchwork-database-configuration

Tipo de datos que representa la configuración de base de datos de Patchwork.

engine (predeterminado: "django.db.backends.postgresql_psycopg2")

Motor de base de datos usado.

name (predeterminado: "patchwork")

Nombre de la base de datos usada.

user (predeterminada: "httpd")

Usuaria usada para la conexión a la base de datos.

password (predeterminada: "")

Contraseña usada para la conexión a la base de datos.

host (predeterminada: "")

Máquina usada para la conexión a la base de datos.

port (predeterminado: "")

Puerto en el que se conecta a la base de datos.

Mumi

Mumi is a Web interface to the Debbugs bug tracker, by default for the GNU instance. Mumi is a Web server, but it also fetches and indexes mail retrieved from Debbugs.

Variable: mumi-service-type

El tipo de servicio para Mumi.

Tipo de datos: mumi-configuration

Tipo de datos que representa la configuración del servicio Mumi. Este tipo tiene los siguientes campos:

mumi (predeterminado: mumi)

El paquete Mumi usado.

mailer? (predeterminado: #true)

Determina si se activa o desactiva el componente de correo mailer.

mumi-configuration-sender

La dirección de correo usada como remitente para los comentarios.

mumi-configuration-smtp

Una URI para las opciones de configuración de SMTP de Mailutils. Puede ser algo parecido a sendmail:///ruta/de/bin/msmtp o cualquier otra URI implementada por Mailutils. See SMTP Mailboxes in GNU Mailutils.

FastCGI

FastCGI es una interfaz entre la presentación (front-end) y el motor (back-end) de un servicio web. Es en cierto modo una característica antigua; los nuevos servicios web generalmente únicamente se comunican con HTTP entre ambas partes. No obstante, existe cierto número de servicios de motor como PHP o el acceso HTTP optimizado para repositorios Git que usan FastCGI, por lo que debemos incluirlo en Guix.

Para usar FastCGI debe configurar el servidor web de entrada41 (por ejemplo, ngnix) para delegar un subconjunto de sus peticiones al motor fastcgi, que escucha en un puerto TCP local o en un socket de UNIX. Existe un programa de intermediación llamado fcgiwrap que se posiciona entre el proceso del motor y el servidor web. El servidor indica el programa del motor usado, proporcionando dicha información al proceso fcgiwrap.

Variable: fcgiwrap-service-type

El tipo de servicio para la pasarela FastCGI fcgiwrap.

Tipo de datos: fcgiwrap-configuration

Tipo de datos que representa la configuración del servicio fcgiwrap. Este tipo tiene los siguientes parámetros:

package (predeterminado: fcgiwrap)

El paquete fcgiwrap usado.

socket (predeterminado: tcp:127.0.0.1:9000)

El socket donde el proceso fcgiwrap deba escuchar, como una cadena. Los valores adecuados para socket socket incluyen unix:/ruta/al/socket/unix, tcp:dirección.ip.con.puntos:puerto and tcp6:[dirección_ipv6]:puerto.

user (predeterminado: fcgiwrap)
group (predeterminado: fcgiwrap)

Los nombres de usuaria y grupo, como cadenas, con los que se ejecutará el proceso fcgiwrap. El servicio fastcgi se asegura, en caso de solicitar específicamente el uso de nombres de usuaria o grupo fcgiwrap, que la usuaria y/o grupo correspondientes se encuentren presentes en el sistema.

Es posible configurar un servicio web proporcionado por FastCGI para que el servidor de fachada proporcione la información de identificación HTTP al motor, y para permitir que fcgiwrap se ejecute en el proceso del motor como la usuaria local correspondiente. Para activar esta funcionalidad en el motor, ejecute fcgiwrap mediante la usuaria y grupo root. Tenga en cuenta de que esta funcionalidad debe configurarse del mismo modo en el servidor de fachada.

PHP-FPM

PHP-FPM (FastCGI Process Manager) es una implementación alternativa de FastCGI en PHP con algunas características adicionales útiles para sitios de cualquier tamaño.

Estas características incluyen:

... y muchas más.

Variable: php-fpm-service-type

Un tipo de servicio para php-fpm.

Tipo de datos: php-fpm-configuration

Tipo de datos para la configuración del servicio php-fpm.

php (predeterminado: php)

El paquete php usado.

socket (predeterminado: (string-append "/var/run/php" (version-major (package-version php)) "-fpm.sock"))

La dirección desde la que FastCGI acepta peticiones. Las sintaxis válidas son:

"dir.ecc.ión.ip:puerto"

Escucha con un socket TCP en la dirección especificada en un puerto específico.

"puerto"

Escucha en un socket TCP en todas las direcciones sobre un puerto específico.

"/ruta/a/socket/unix"

Escucha en un socket Unix.

user (predeterminada: php-fpm)

Usuaria que poseerá los procesos de trabajo de php.

group (predeterminado: php-fpm)

Grupo de los procesos de trabajo.

socket-user (predeterminado: php-fpm)

Usuaria que puede comunicarse con el socket de php-fpm.

socket-group (predeterminado: nginx)

Grupo que puede comunicarse con el socket de php-fpm.

pid-file (predeterminado: (string-append "/var/run/php" (version-major (package-version php)) "-fpm.pid"))

El identificador de proceso del proceso de php-fpm se escribe en este archivo cuando se ha iniciado el servicio.

log-file (predeterminado: (string-append "/var/log/php" (version-major (package-version php)) "-fpm.log"))

Registro del proceso maestro de php-fpm.

process-manager (predeterminado: (php-fpm-dynamic-process-manager-configuration))

Configuración detallada para el gestor de procesos php-fpm. Debe ser uno de los siguientes tipos:

<php-fpm-dynamic-process-manager-configuration>
<php-fpm-static-process-manager-configuration>
<php-fpm-on-demand-process-manager-configuration>
display-errors (predeterminado #f)

Determina si los errores y avisos de php deben enviarse a los clientes para que se muestren en sus navegadores. Esto es útil para la programación local con php, pero un riesgo para la seguridad de sitios públicos, ya que los mensajes de error pueden revelar contraseñas y datos personales.

timezone (predeterminado: #f)

Especifica el parámetro php_admin_value[date.timezone].

workers-logfile (predeterminado (string-append "/var/log/php" (version-major (package-version php)) "-fpm.www.log"))

Este archivo registrará las salidas por stderr de los procesos de trabajo de php. Puede proporcionarse #f para desactivar el registro.

file (predeterminado #f)

Sustituye opcionalmente la configuración al completo. Puede usar la función mixed-text-file o una ruta absoluta de un archivo para hacerlo.

php-ini-file (predeterminado: #f)

Sustituye opcionalmente la configuración predeterminada de php. Puede ser cualquier objeto “tipo-archivo” (see file-like objects). Puede usar la función mixed-text-file o una ruta absoluta de un archivo para hacerlo.

Para el desarrollo local es útil proporcionar valores mayores para los plazos y límites de memoria de los procesos php lanzados. Esto puede obtenerse con el siguiente fragmento de la configuración de sistema operativo:

(define %php-ini-local
  (plain-file "php.ini"
              "memory_limit = 2G
max_execution_time = 1800"))

(operating-system
  ;; …
  (services (cons (service php-fpm-service-type
                           (php-fpm-configuration
                            (php-ini-file %php-ini-local)))
                  %base-services)))

Consulte las directivas principales de php.ini para obtener una documentación extensa de las directivas aceptables en el archivo php.ini.

Tipo de datos: php-fpm-dynamic-process-manager-configuration

Data Type for the dynamic php-fpm process manager. With the dynamic process manager, spare worker processes are kept around based on its configured limits.

max-children (predeterminados: 5)

Número máximo de procesos de trabajo.

start-servers (predeterminados: 2)

Cuantos procesos de trabajo deben ejecutarse al inicio.

min-spare-servers (predeterminado: 1)

Cuantos procesos de trabajo deben mantenerse disponibles como mínimo.

max-spare-servers (predeterminados: 3)

Cuantos procesos de trabajo deben mantenerse disponibles como máximo.

Tipo de datos: php-fpm-static-process-manager-configuration

Tipo de datos para el gestor de procesos static de php-fpm. Con el gestor de procesos static, se crea un número fijo de procesos de trabajo.

max-children (predeterminados: 5)

Número máximo de procesos de trabajo.

Tipo de datos: php-fpm-on-demand-process-manager-configuration

Tipo de datos para el gestor de procesos on-demand de php-fpm. Con el gestor de procesos on-demand, se crean procesos de trabajo únicamente cuando se reciben peticiones.

max-children (predeterminados: 5)

Número máximo de procesos de trabajo.

process-idle-timeout (predeterminado: 10)

El tiempo en segundos tras el cual un proceso sin peticiones será eliminado.

Procedimiento: nginx-php-location [#:nginx-package nginx] [socket (string-append "/var/run/php"  (version-major (package-version

php))  "-fpm.sock")] Función auxiliar para añadir php a una configuración nginx-server-configuration rápidamente.

Una configuración simple de servicios para nginx con php puede ser más o menos así:

(services (cons* (service dhcp-client-service-type)
                 (service php-fpm-service-type)
                 (service nginx-service-type
                          (nginx-server-configuration
                           (server-name '("example.com"))
                           (root "/srv/http/")
                           (locations
                            (list (nginx-php-location)))
                           (listen '("80"))
                           (ssl-certificate #f)
                           (ssl-certificate-key #f)))
                 %base-services))

El generadores de avatares de gato es un servicio simple para demostrar el uso de php-fpm en Nginx. Se usa para generar un avatar de gato desde una semilla, por ejemplo el hash de la dirección de correo de la usuaria.

Procedimiento: cat-avatar-generator-service [#:cache-dir "/var/cache/cat-avatar-generator"]  [#:package

cat-avatar-generator]  [#:configuration (nginx-server-configuration)] Devuelve una configuración de nginx-server-configuration que hereda de configuration. Extiende la configuración de nginx para añadir un bloque de servidor que proporciona package, una versión de cat-avatar-generator. Durante su ejecución, cat-avatar-generator podrá usar cache-dir como su directorio de caché.

Una configuración simple para cat-avatar-generator puede ser más o menos así:

(services (cons* (cat-avatar-generator-service
                  #:configuration
                  (nginx-server-configuration
                    (server-name '("example.com"))))
                 ...
                 %base-services))

Hpcguix-web

El programa hpcguix-web es una interfaz web personalizable para buscar paquetes de Guix, diseñado inicialmente para usuarias de clusters de computación de alto rendimiento (HPC).

Variable: hpcguix-web-service-type

El tipo de servicio para hpcguix-web.

Tipo de datos: hpcguix-web-configuration

El tipo de datos para la configuración del servicio hpcguix-web.

specs (default: #f)

Either #f or a gexp (see Expresiones-G) specifying the hpcguix-web service configuration as an hpcguix-web-configuration record. The main fields of that record type are:

title-prefix (predeterminado: "hpcguix | ")

El prefijo del título de la página.

guix-command (predeterminada: "guix")

The guix command to use in examples that appear on HTML pages.

package-filter-proc (predeterminado: (const #t))

Un procedimiento que especifica cómo filtrar los paquetes mostrados.

package-page-extension-proc (predeterminado: (const '()))

Paquete de extensión para hpcguix-web.

menu (predeterminadas: '())

Entradas adicionales en el menú de la página.

channels (predeterminados: %default-channels)

Lista de canales desde los que se construye la lista de paquetes (see Canales).

package-list-expiration (predeterminado: (* 12 3600))

El tiempo de expiración, en segundos, tras el cual la lista de paquetes se reconstruye desde las últimas instancias de los canales proporcionados.

Véase el repositorio de hpcguix-web para un ejemplo completo.

package (predeterminado: hpcguix-web)

El paquete hpcguix-web usado.

address (default: "127.0.0.1")

The IP address to listen to.

port (default: 5000)

The port number to listen to.

Una declaración típica del servicio hpcguix-web es más o menos así:

(service hpcguix-web-service-type
         (hpcguix-web-configuration
          (specs
           #~(hpcweb-configuration
              (title-prefix "Guix-HPC - ")
              (menu '(("/about" "ABOUT")))))))

Nota: El servicio hpcguix-web actualiza periódicamente la lista de paquetes que publica obteniendo canales con Git. Para ello, necesita acceder a certificados X.509 de manera que pueda validar los servidores Git durante la comunicación con HTTPS, y asume que /etc/ssl/certs contiene dichos certificados.

A certificate package, nss-certs, is provided by default as part of %base-packages. Certificados X.509, for more information on X.509 certificates.

gmnisrv

El programa gmnisrv es un servidor simple del protocolo Gemini.

Variable: gmnisrv-service-type

Es el tipo del servicio gmnisrv, cuyo valor debe ser un objeto gmniserv-configuration como en este ejemplo:

(service gmnisrv-service-type
         (gmnisrv-configuration
           (config-file (local-file "./mi-gmnisrv.ini"))))
Tipo de datos: gmnisrv-configuration

Tipo de datos que representa la configuración de gmnisrv.

package (predeterminado: gmnisrv)

El objeto paquete del servidor gmnisrv.

config-file (predeterminado: %default-gmnisrv-config-file)

Objeto tipo-archivo del archivo de configuración de gmnisrv usado. La configuración predeterminada escucha en el puerto 1965 y proporciona archivos desde /srv/gemini. Los certificados se almacenan en /var/lib/gemini/certs. Puede ejecutar las ordenes man gmnisrv y man gmnisrv.ini para obtener más información.

Agate

The Agate (GitHub page over HTTPS) program is a simple Gemini protocol server written in Rust.

Variable: agate-service-type

This is the type of the agate service, whose value should be an agate-service-type object, as in this example:

(service agate-service-type
	 (agate-configuration
	   (content "/srv/gemini")
	   (certificates "/srv/gemini-certs")))

The example above represents the minimal tweaking necessary to get Agate up and running. Specifying the path to the certificate and key directory is always necessary, as the Gemini protocol requires TLS by default.

If the specified certificates path is writable by Agate, and contains no valid pre-generated key and certificate, Agate will try to generate them on the first start. In this case you should pass at least one hostname using the hostnames option. If the specified directory is read-only, key and certificate should be pre-generated by the user.

To obtain a certificate and a key in DER format, you could, for example, use OpenSSL, running commands similar to the following example:

openssl genpkey -out key.der -outform DER -algorithm RSA \
    -pkeyopt rsa_keygen_bits:4096
openssl req -x509 -key key.der -outform DER -days 3650 -out cert.der \
    -subj "/CN=example.com"

Of course, you’ll have to replace example.com with your own domain name, and then point the Agate configuration towards the path of the directory with the generated key and certificate using the certificates option.

Data Type: agate-configuration

Data type representing the configuration of Agate.

package (default: agate)

The package object of the Agate server.

content (default: "/srv/gemini")

The directory from which Agate will serve files.

certificates (default: "/srv/gemini-certs")

Root of the certificate directory. Must be filled in with a value from the user.

addresses (default: '("[::]:1965" "0.0.0.0:1965"))

A list of the addresses to listen on.

hostnames (default: '())

Virtual hosts for the Gemini server. If multiple values are specified, corresponding directory names should be present in the content directory. Optional.

languages (default: #f)

RFC 4646 language code(s) for text/gemini documents. Optional.

only-tls13? (default: #f)

Set to #t to disable support for TLSv1.2.

serve-secret? (default: #f)

Set to #t to serve secret files (files/directories starting with a dot).

central-configuration? (default: #f)

Set to #t to look for the .meta configuration file in the content root directory and will ignore .meta files in other directories

ed25519? (default: #f)

Set to #t to generate keys using the Ed25519 signature algorithm instead of the default ECDSA.

skip-port-check? (default: #f)

Set to #t to skip URL port check even when a hostname is specified.

log-ip? (default: #t)

Whether or not to output IP addresses when logging.

user (default: "agate")

Owner of the agate process.

group (default: "agate")

Owner’s group of the agate process.

log-file (default: "/var/log/agate.log")

The file which should store the logging output of Agate.


Footnotes

(41)

NdT: Front-end en inglés.


Next: Servicios de certificados, Previous: Servicios LDAP, Up: Servicios   [Contents][Index]