services: httpd: Allow using it with PHP.

* gnu/services/web.scm (httpd): Make existing httpd-module API public.
* doc/guix.texi (Apache HTTP Server): Document its usage with PHP-FPM.

Signed-off-by: Christopher Baines <mail@cbaines.net>
This commit is contained in:
Florian Pelz 2018-10-20 18:44:03 +02:00 committed by Christopher Baines
parent cbea1e8dd2
commit abc98e3be5
No known key found for this signature in database
GPG Key ID: 5E28A33B0B84F577
2 changed files with 36 additions and 0 deletions

View File

@ -50,6 +50,7 @@ Copyright @copyright{} 2018 Oleg Pykhalov@*
Copyright @copyright{} 2018 Mike Gerwitz@*
Copyright @copyright{} 2018 Pierre-Antoine Rouby@*
Copyright @copyright{} 2018 Gábor Boskovits@*
Copyright @copyright{} 2018 Florian Pelz@*
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@ -16612,6 +16613,10 @@ within the store, for example @code{(file-append mod-wsgi
@end table
@end deffn
@defvr {Scheme Variable} %default-httpd-modules
A default list of @code{httpd-module} objects.
@end defvr
@deffn {Data Type} httpd-config-file
This data type represents a configuration file for the httpd service.
@ -16620,6 +16625,32 @@ This data type represents a configuration file for the httpd service.
The modules to load. Additional modules can be added here, or loaded by
additional configuration.
For example, in order to handle requests for PHP files, you can use Apaches
@code{mod_proxy_fcgi} module along with @code{php-fpm-service-type}:
@example
(service httpd-service-type
(httpd-configuration
(config
(httpd-config-file
(modules (cons*
(httpd-module
(name "proxy_module")
(file "modules/mod_proxy.so"))
(httpd-module
(name "proxy_fcgi_module")
(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")))
@end example
@item @code{server-root} (default: @code{httpd})
The @code{ServerRoot} in the configuration file, defaults to the httpd
package. Directives including @code{Include} and @code{LoadModule} are

View File

@ -70,6 +70,11 @@
httpd-config-file-user
httpd-config-file-group
<httpd-module>
httpd-module
httpd-module?
%default-httpd-modules
httpd-service-type
<nginx-configuration>