Nächste: Zertifikatsdienste, Vorige: LDAP-Dienste, Nach oben: Dienste [Inhalt][Index]
Das Modul (gnu services web)
stellt den Apache-HTTP-Server, den
nginx-Webserver und auch einen fastcgi-Wrapperdienst bereit.
Diensttyp für den Apache-HTTP-Server
httpd. Der Wert dieses Diensttyps ist ein
httpd-configuration
-Verbund.
Es folgt ein einfaches Beispiel der Konfiguration.
(service httpd-service-type
(httpd-configuration
(config
(httpd-config-file
(server-name "www.example.com")
(document-root "/srv/http/www.example.com")))))
Andere Dienste können den httpd-service-type
auch erweitern, um etwas
zur Konfiguration hinzuzufügen.
(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")))))
Nun folgt eine Beschreibung der Verbundstypen httpd-configuration
,
httpd-module
, httpd-config-file
und httpd-virtualhost
.
Dieser Datentyp repräsentiert die Konfiguration des httpd-Dienstes.
package
(Vorgabe: httpd
)Das zu benutzende httpd-Paket.
pid-file
(Vorgabe: "/var/run/httpd"
)Die vom Shepherd-Dienst benutzte PID-Datei.
config
(Vorgabe: (httpd-config-file)
)Die vom httpd-Dienst zu benutzende Konfigurationsdatei. Vorgegeben ist ein
httpd-config-file
-Verbundsobjekt, aber als Wert kann auch ein anderer
G-Ausdruck benutzt werden, der eine Datei erzeugt, zum Beispiel ein
plain-file
. Es kann auch eine Datei außerhalb des Stores mit einer
Zeichenkette angegeben werden.
Dieser Datentyp steht für ein Modul des httpd-Dienstes.
name
Der Name des Moduls.
file
Die Datei, in der das Modul steht. Sie kann relativ zum benutzten
httpd-Paket oder als absoluter Pfad einer Datei oder als ein G-Ausdruck für
eine Datei im Store angegeben werden, zum Beispiel (file-append
mod-wsgi "/modules/mod_wsgi.so")
.
Eine vorgegebene Liste von httpd-module
-Objekten.
Dieser Datentyp repräsentiert eine Konfigurationsdatei für den httpd-Dienst.
modules
(Vorgabe: %default-httpd-modules
)Welche Module geladen werden sollen. Zusätzliche Module können hier eingetragen werden oder durch eine zusätzliche Konfigurationsangabe geladen werden.
Um zum Beispiel Anfragen nach PHP-Dateien zu behandeln, können Sie das Modul
mod_proxy_fcgi
von Apache zusammen mit php-fpm-service-type
benutzen:
(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")))
server-root
(Vorgabe: httpd
)Die ServerRoot
in der Konfigurationsdatei, vorgegeben ist das
httpd-Paket. Direktiven wie Include
und LoadModule
werden
relativ zur ServerRoot interpretiert.
server-name
(Vorgabe: #f
)Der ServerName
in der Konfigurationsdatei, mit dem das Anfrageschema
(Request Scheme), der Rechnername (Hostname) und Port angegeben wird, mit
denen sich der Server identifiziert.
Es muss nicht als Teil der Server-Konfiguration festgelegt werden, sondern
kann auch in virtuellen Rechnern (Virtual Hosts) festgelegt
werden. Vorgegeben ist #f
, wodurch kein ServerName
festgelegt
wird.
document-root
(Vorgabe: "/srv/http"
)Das DocumentRoot
-Verzeichnis, in dem sich die Dateien befinden, die
man vom Server abrufen kann.
listen
(Vorgabe: '("80")
)Die Liste der Werte für die Listen
-Direktive in der
Konfigurationsdatei. Als Wert sollte eine Liste von Zeichenketten angegeben
werden, die jeweils die Portnummer, auf der gelauscht wird, und optional
auch die zu benutzende IP-Adresse und das Protokoll angeben.
pid-file
(Vorgabe: "/var/run/httpd"
)Hiermit wird die PID-Datei als PidFile
-Direktive angegeben. Der Wert
sollte mit der pid-file
-Datei in der httpd-configuration
übereinstimmen, damit der Shepherd-Dienst richtig konfiguriert ist.
error-log
(Vorgabe: "/var/log/httpd/error_log"
)Der Ort, an den der Server mit der ErrorLog
-Direktive
Fehlerprotokolle schreibt.
user
(Vorgabe: "httpd"
)Der Benutzer, als der der Server durch die User
-Direktive Anfragen
beantwortet.
group
(Vorgabe: "httpd"
)Die Gruppe, mit der der Server durch die Group
-Direktive Anfragen
beantwortet.
extra-config
(Vorgabe: (list "TypesConfig etc/httpd/mime.types")
)Eine flache Liste von Zeichenketten und G-Ausdrücken, die am Ende der Konfigurationsdatei hinzugefügt werden.
Alle Werte, mit denen dieser Dienst erweitert wird, werden an die Liste angehängt.
Dieser Datentyp repräsentiert einen Konfigurationsblock für einen virtuellen Rechner (Virtual Host) des httpd-Dienstes.
Sie sollten zur zusätzlichen Konfiguration extra-config des httpd-Dienstes hinzugefügt werden.
(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")))))
addresses-and-ports
Adressen und Ports für die VirtualHost
-Direktive.
contents
Der Inhalt der VirtualHost
-Direktive. Er sollte als Liste von
Zeichenketten und G-Ausdrücken angegeben werden.
Diensttyp für den NGinx-Webserver. Der Wert des
Dienstes ist ein <nginx-configuration>
-Verbundsobjekt.
Es folgt ein einfaches Beispiel der Konfiguration.
(service nginx-service-type
(nginx-configuration
(server-blocks
(list (nginx-server-configuration
(server-name '("www.example.com"))
(root "/srv/http/www.example.com"))))))
Außer durch direktes Hinzufügen von Server-Blöcken zur Dienstkonfiguration kann der Dienst auch durch andere Dienste erweitert werden, um Server-Blöcke hinzuzufügen, wie man im folgenden Beispiel sieht:
(simple-service 'my-extra-server nginx-service-type
(list (nginx-server-configuration
(root "/srv/http/extra-website")
(try-files (list "$uri" "$uri/index.html")))))
Beim Starten hat nginx
seine Konfigurationsdatei noch nicht
gelesen und benutzt eine vorgegebene Datei, um Fehlermeldungen zu
protokollieren. Wenn er seine Konfigurationsdatei nicht laden kann, landen
Fehlermeldungen also dort. Nachdem die Konfigurationsdatei geladen ist,
werden Fehlerprotokolle nach Voreinstellung in die Datei geschrieben, die in
der Konfiguration angegeben ist. In unserem Fall können Sie Fehlermeldungen
beim Starten in /var/run/nginx/logs/error.log finden und nachdem die
Konfiguration eingelesen wurde, finden Sie sie in
/var/log/nginx/error.log. Letzterer Ort kann mit der
Konfigurationsoption log-directory geändert werden.
Dieser Datentyp repräsentiert die Konfiguration von NGinx. Ein Teil der Konfiguration kann hierüber und über die anderen zu Ihrer Verfügung stehenden Verbundstypen geschehen, alternativ können Sie eine Konfigurationsdatei mitgeben.
nginx
(Vorgabe: nginx
)Das zu benutzende nginx-Paket.
shepherd-requirement
(Vorgabe: '()
)Eine Liste von Symbolen, die angeben, von welchen anderen Shepherd-Diensten der nginx-Dienst abhängen soll.
Das können Sie dann gebrauchen, wenn Sie wollen, dass nginx
erst
dann gestartet wird, wenn Web-Server im Hintergrund oder
Protokollierungsdienste wie Anonip bereits gestartet wurden.
log-directory
(Vorgabe: "/var/log/nginx"
)In welches Verzeichnis NGinx Protokolldateien schreiben wird.
log-level
(Vorgabe: 'error
) (Typ: Symbol)Die Protokollierungsstufe. Zur Auswahl stehen folgende Werte: 'debug
(Fehlersuche), 'info
(Informationen), 'notice
(Benachrichtigungen), 'warn
(Warnungen), 'error
(Fehler),
'crit
(kritische Fehler), 'alert
(Alarme) oder 'emerg
(Notfälle).
run-directory
(Vorgabe: "/var/run/nginx"
)In welchem Verzeichnis NGinx eine PID-Datei anlegen und temporäre Dateien ablegen wird.
server-blocks
(Vorgabe: '()
)Eine Liste von Server-Blöcken, die in der erzeugten
Konfigurationsdatei stehen sollen. Die Elemente davon sollten den Typ
<nginx-server-configuration>
haben.
Im folgenden Beispiel wäre NGinx so eingerichtet, dass Anfragen an
www.example.com
mit Dateien aus dem Verzeichnis
/srv/http/www.example.com
beantwortet werden, ohne HTTPS zu benutzen.
(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
(Vorgabe: '()
)Eine Liste von Upstream-Blöcken, die in der erzeugten
Konfigurationsdatei stehen sollen. Ihre Elemente sollten den Typ
<nginx-upstream-configuration>
haben.
Upstreams als upstream-blocks
zu konfigurieren, kann hilfreich sein,
wenn es mit locations
in <nginx-server-configuration>
verbunden wird. Das folgende Beispiel erzeugt eine Server-Konfiguration mit
einer Location-Konfiguration, bei der Anfragen als Proxy entsprechend einer
Upstream-Konfiguration weitergeleitet werden, wodurch zwei Server diese
beantworten können.
(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 "/path1")
(body '("proxy_pass http://server-proxy;"))))))))
(upstream-blocks
(list (nginx-upstream-configuration
(name "server-proxy")
(servers (list "server1.example.com"
"server2.example.com")))))))
file
(Vorgabe: #f
)Wenn eine Konfigurationsdatei als file angegeben wird, dann wird diese
benutzt und keine Konfigurationsdatei anhand der angegebenen
log-directory
, run-directory
, server-blocks
und
upstream-blocks
erzeugt. Trotzdem sollten diese Argumente bei einer
richtigen Konfiguration mit denen in der Datei file übereinstimmen,
damit die Verzeichnisse bei Aktivierung des Dienstes erzeugt werden.
Das kann nützlich sein, wenn Sie schon eine bestehende Konfigurationsdatei haben oder das, was Sie brauchen, nicht mit anderen Teilen eines nginx-configuration-Verbundsobjekts umgesetzt werden kann.
server-names-hash-bucket-size
(Vorgabe: #f
)Größe der Behälter (englisch „Buckets“) für die Hashtabelle der Servernamen;
vorgegeben ist #f
, wodurch die Größe der Cache-Lines des Prozessors
verwendet wird.
server-names-hash-bucket-max-size
(Vorgabe: #f
)Maximale Behältergröße für die Hashtabelle der Servernamen.
modules
(Vorgabe: '()
)Die Liste zu ladender dynamisch gebundener Module für nginx. Die dynamischen Module sollten als Liste von Dateinamen ladbarer Module angegeben werden. Zum Beispiel:
(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
(Vorgabe: '()
)Die Liste zu ladender nginx-Lua-Pakete. Hier sollte eine Liste von Paketnamen ladbarer Lua-Module angegeben werden. Zum Beispiel:
(lua-package-path (list lua-resty-core
lua-resty-lrucache
lua-resty-signal
lua-tablepool
lua-resty-shell))
lua-package-cpath
(Vorgabe: '()
)Die Liste zu ladender nginx-Lua-C-Pakete. Hier sollte eine Liste von Paketnamen ladbarer Lua-C-Module angegeben werden. Zum Beispiel:
(lua-package-cpath (list lua-resty-signal))
global-directives
(Vorgabe: '((events . ()))
)Assoziative Liste von globalen Direktiven für die oberste Ebene der nginx-Konfiguration. Als Werte können wiederum assoziative Listen angegeben werden.
(global-directives
`((worker_processes . 16)
(pcre_jit . on)
(events . ((worker_connections . 1024)))))
extra-content
(Vorgabe: ""
)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 ";")))
Der Datentyp, der die Konfiguration eines nginx-Serverblocks repräsentiert. Dieser Typ hat die folgenden Parameter:
listen
(Vorgabe: '("80" "443 ssl")
)Jede listen
-Direktive legt Adresse und Port für eine IP fest oder
gibt einen Unix-Socket an, auf dem der Server Anfragen beantwortet. Es
können entweder sowohl Adresse als auch Port oder nur die Adresse oder nur
der Port angegeben werden. Als Adresse kann auch ein Rechnername
(„Hostname“) angegeben werden, zum Beispiel:
'("127.0.0.1:8000" "127.0.0.1" "8000" "*:8000" "localhost:8000")
server-name
(Vorgabe: (list 'default)
)Eine Liste von Servernamen, die dieser Server repräsentiert. 'default
repräsentiert den voreingestellten Server, der für Verbindungen verwendet
wird, die zu keinem anderen Server passen.
root
(Vorgabe: "/srv/http"
)Wurzelverzeichnis des Webauftritts, der über nginx abgerufen werden kann.
locations
(Vorgabe: '()
)Eine Liste von nginx-location-configuration- oder nginx-named-location-configuration-Verbundsobjekten, die innerhalb des Serverblocks benutzt werden.
index
(Vorgabe: (list "index.html")
)Index-Dateien, mit denen Anfragen nach einem Verzeichnis beantwortet werden. Wenn keine davon gefunden wird, antwortet Nginx mit der Liste der Dateien im Verzeichnis.
try-files
(Vorgabe: '()
)Eine Liste der Dateien, bei denen in der angegebenen Reihenfolge geprüft
wird, ob sie existieren. nginx
beantwortet die Anfrage mit der ersten
Datei, die es findet.
ssl-certificate
(Vorgabe: #f
)Wo das Zertifikat für sichere Verbindungen gespeichert ist. Sie sollten es
auf #f
setzen, wenn Sie kein Zertifikat haben oder kein HTTPS
benutzen möchten.
ssl-certificate-key
(Vorgabe: #f
)Wo der private Schlüssel für sichere Verbindungen gespeichert ist. Sie
sollten ihn auf #f
setzen, wenn Sie keinen Schlüssel haben oder kein
HTTPS benutzen möchten.
server-tokens?
(Vorgabe: #f
)Ob der Server Informationen über seine Konfiguration bei Antworten beilegen soll.
raw-content
(Vorgabe: '()
)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.
Der Datentyp, der die Konfiguration eines nginx-upstream
-Blocks
repräsentiert. Dieser Typ hat folgende Parameter:
name
Der Name dieser Servergruppe.
servers
Gibt die Adressen der Server in der Gruppe an. Die Adresse kann als IP-Adresse (z.B. ‘127.0.0.1’), Domänenname (z.B. ‘backend1.example.com’) oder als Pfad eines Unix-Sockets mit dem vorangestellten Präfix ‘unix:’ angegeben werden. Wenn Adressen eine IP-Adresse oder einen Domänennamen benutzen, ist der voreingestellte Port 80, aber ein abweichender Port kann auch explizit angegeben werden.
extra-content
Additional content to be appended to the upstream block. Can be a string or file-like object or list of thereof. In case of list, each item is prefixed with indentation and suffixed with a new line. Nested lists are flattened.
(extra-content "include /etc/nginx/custom-config.conf;") (extra-content `("include /etc/nginx/custom-config.conf;" ("include " ,%custom-config.conf ";")))
Der Datentyp, der die Konfiguration eines nginx-location
-Blocks
angibt. Der Typ hat die folgenden Parameter:
uri
Die URI, die auf diesen Block passt.
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;")’.
Der Datentyp repräsentiert die Konfiguration eines mit Namen versehenen nginx-location-Blocks („Named Location Block“). Ein mit Namen versehener location-Block wird zur Umleitung von Anfragen benutzt und nicht für die normale Anfrageverarbeitung. Dieser Typ hat die folgenden Parameter:
name
Der Name, mit dem dieser location-Block identifiziert wird.
body
Siehe nginx-location-configuration body, weil der Rumpf („Body“) eines
mit Namen versehenen location-Blocks wie ein
nginx-location-configuration body
benutzt werden kann. Eine
Einschränkung ist, dass der Rumpf eines mit Namen versehenen location-Blocks
keine location-Blöcke enthalten kann.
Varnish ist ein schneller zwischenspeichernder Server, der zwischen Web-Anwendungen und deren Endbenutzern sitzt. Er leitet Anfragen von Clients weiter und lagert die URLs, auf die zugegriffen wird, in einen Zwischenspeicher ein, damit bei mehreren Anfragen auf dieselbe Ressource nur eine Anfrage an die Hintergrundanwendung gestellt wird.
Diensttyp für den Varnish-Daemon.
Der Datentyp, der die Konfiguration des varnish
-Dienstes
repräsentiert. Dieser Typ hat die folgenden Parameter:
package
(Vorgabe: varnish
)Das Varnish-Paket, was benutzt werden soll.
name
(Vorgabe: "default"
)Ein Name für diese Varnish-Instanz. Varnish wird ein Verzeichnis in /var/varnish/ mit diesem Namen erzeugen und dort temporäre Dateien speichern. Wenn der Name mit einem Schrägstrich beginnt, wird er als absoluter Verzeichnispfad interpretiert.
Übergeben Sie die Befehlszeilenoption -n
an andere Varnish-Programme,
um sich mit der Instanz diesen Namens zu verbinden, z.B.
varnishncsa -n default
.
backend
(Vorgabe: "localhost:8080"
)Welcher Hintergrunddienst benutzt werden soll. Diese Option wird ignoriert,
wenn vcl
gesetzt ist.
vcl
(Vorgabe: #f)Das VCL-Programm (in der Varnish Configuration Language), das
ausgeführt werden soll. Ist dies auf #f
gesetzt, fungiert Varnish als
Proxy für den Hintergrunddienst backend
mit der voreingestellten
Konfiguration. Andernfalls muss dies ein dateiartiges Objekt mit gültiger
VCL-Syntax sein.
Um zum Beispiel mit VCL einen Spiegelserver für www.gnu.org einzurichten, können Sie so etwas benutzen:
(define %gnu-mirror (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 %gnu-mirror))) %base-services)))
Die Konfiguration einer bereits laufenden Varnish-Instanz kann mit dem
Programm varnishadm
eingesehen und verändert werden.
Ziehen Sie die Varnish User Guide und das Varnish Book zu Rate, wenn Sie eine umfassende Dokumentation zu Varnish und seiner Konfigurationssprache suchen.
listen
(Vorgabe: '("localhost:80")
)Liste der Adressen, auf denen Varnish lauschen soll.
storage
(Vorgabe: '("malloc,128m")
)Liste der Speicher-Hintergrunddienste („Storage Backends“), die von der VCL aus benutzt werden können.
parameters
(Vorgabe: '()
)Liste der Laufzeitparameter von der Form '(("Parameter" . "Wert"))
.
extra-options
(Vorgabe: '()
)Zusätzliche Argumente, die an den varnishd
-Prozess übergeben
werden.
Whoogle Search ist eine
selbstbetriebene, werbefreie, datenschutzfreundliche Meta-Suchmaschine, die
Suchergebnisse von Google sammelt und anzeigt. Sie können sie in ihren
Vorgabeeinstellungen konfigurieren, indem Sie diese Zeile in das Feld
services
Ihrer Betriebssystemdeklaration eintragen:
Dadurch wird Whoogle Search als lokaler Web-Server laufen, auf den Sie durch
Öffnen von ‘http://localhost:5000
’ in Ihrem Browser zugreifen
können. Die Referenz der Konfiguration folgt.
Der Diensttyp des Whoogle-Search-Dienstes. Sein Wert muss ein
whoogle-configuration
-Verbundsobjekt sein, siehe unten.
Der Datentyp repräsentiert die Konfiguration für den Whoogle-Search-Dienst.
package
(Vorgabe: whoogle-search
)Das zu verwendende Whoogle-Search-Paket.
host
(Vorgabe: "127.0.0.1"
)Die IP-Adresse des Rechners, auf dem Whoogle laufen wird.
port
(Vorgabe: 5000
)Der Port, auf dem Whoogle zugänglich sein wird.
environment-variables
(Vorgabe: '()
)Eine Liste von Zeichenketten mit den Umgebungsvariablen, mit denen Sie Einstellungen an Whoogle vornehmen. Sehen Sie in den Vorlagen für dessen Umgebungsvariable nach, was zur Verfügung steht.
Patchwork ist ein System, um eingereichten Patches zu folgen. Es kann an eine Mailing-Liste geschickte Patches sammeln und auf einer Web-Oberfläche anzeigen.
Diensttyp für Patchwork.
Es folgt ein Minimalbeispiel für einen Patchwork-Dienst, der auf der Domain
patchwork.example.com
läuft.
(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 . ("Patches"))))))))
Der Patchwork-Dienst wird über drei Verbundsobjekte konfiguriert. Die
<patchwork-configuration>
hat mit der Konfiguration von Patchwork
innerhalb des HTTPD-Dienstes zu tun.
Das settings-module
-Feld innerhalb des
<patchwork-configuration>
-Verbundsobjekts kann mit einem
<patchwork-settings-module>
-Verbundsobjekt ausgefüllt werden, das ein
im Guix-Store angelegtes Einstellungsmodul beschreibt.
Für das database-configuration
-Feld innerhalb des
<patchwork-settings-module>
muss eine
<patchwork-database-configuration>
benutzt werden.
Der Datentyp, der die Konfiguration des Patchwork-Dienstes repräsentiert. Dieser Typ hat die folgenden Parameter:
patchwork
(Vorgabe: patchwork
)Welches Patchwork-Paket benutzt werden soll.
domain
Welche Domain für Patchwork benutzt werden soll. Sie findet Verwendung in Patchworks virtuellen Rechner („Virtual Host“) für den HTTPD-Dienst.
settings-module
Das durch Patchwork benutzte Einstellungsmodul. Als eine Django-Anwendung
wird Patchwork mit einem Python-Modul konfiguriert, das die Einstellungen
speichert. Es kann entweder eine Instanz des
<patchwork-settings-module>
-Verbundstyps sein, ein beliebiges anderes
Verbundsobjekt sein, das die Einstellungen im Store repräsentiert, oder ein
Verzeichnis außerhalb des Stores.
static-path
(Vorgabe: "/static/"
)Der Pfad, auf dem der HTTPD-Dienst die statischen Dateien anbieten soll.
getmail-retriever-config
Das durch Patchwork benutzte getmail-retriever-configuration-Verbundsobjekt. Getmail wird mit diesem Wert konfiguriert. Die Mitteilungen werden mit Patchwork als Empfänger zugestellt.
Der Datentyp, der das Einstellungsmodul für Patchwork repräsentiert. Manche dieser Einstellungen haben direkt mit Patchwork zu tun, andere beziehen sich auf Django, dem Web-Framework auf dem Patchwork aufsetzt, oder dessen Django-Rest-Framework-Bibliothek. Dieser Typ verfügt über die folgenden Parameter:
database-configuration
(Vorgabe: (patchwork-database-configuration)
)Die für Patchwork benutzten Datenbankverbindungseinstellungen. Siehe den
<patchwork-database-configuration>
-Verbundstyp für weitere
Informationen.
secret-key-file
(Vorgabe: "/etc/patchwork/django-secret-key"
)Patchwork benutzt als eine Django-Webanwendung einen geheimen Schlüssel, um Werte kryptographisch zu signieren. Diese Datei sollte einen einzigartigen, unvorhersehbaren Wert enthalten.
Wenn diese Datei nicht existiert, wird sie erzeugt und ein zufälliger Wert wird durch den Shepherd-Dienst für patchwork-setup hineingeschrieben.
Diese Einstellung bezieht sich auf Django.
allowed-hosts
Eine Liste zulässiger Netzwerkschnittstellen (Hosts), auf denen dieser
Patchwork-Dienst antwortet. Sie sollte wenigstens die im
<patchwork-configuration>
-Verbundsobjekt genannte Domain enthalten.
Dies ist eine Django-Einstellung.
default-from-email
Die E-Mail-Adresse, von der aus Patchwork nach Voreinstellung E-Mails verschicken soll.
Dies ist eine Patchwork-Einstellung.
static-url
(Vorgabe: #f
)Die URL, über die statische Dokumente angeboten werden. Es kann eine
teilweise URL oder eine vollständige URL angegeben werden, aber sie muss auf
/
enden.
Wenn der Vorgabewert benutzt wird, wird der static-path
-Wert aus dem
<patchwork-configuration>
-Verbundsobjekt benutzt.
Dies ist eine Django-Einstellung.
admins
(Vorgabe: '()
)Die E-Mail-Adressen, an die Details zu auftretenden Fehlern versendet werden. Jeder Wert sollte eine zweielementige Liste mit dem Namen und der E-Mail-Adresse sein.
Dies ist eine Django-Einstellung.
debug?
(Vorgabe: #f
)Ob Patchwork im Fehlersuchmodus („Debug Mode“) ausgeführt werden soll. Wenn
dies auf #t
steht, werden detaillierte Fehlermeldungen angezeigt.
Dies ist eine Django-Einstellung.
enable-rest-api?
(Vorgabe: #t
)Ob Patchworks REST-Programmschnittstelle („REST-API“) aktiviert werden soll.
Dies ist eine Patchwork-Einstellung.
enable-xmlrpc?
(Vorgabe: #t
)Ob die XML-Programmschnittstelle für entfernte Prozeduraufrufe („XML-RPC-API“) aktiviert werden soll.
Dies ist eine Patchwork-Einstellung.
force-https-links?
(Vorgabe: #t
)Ob auf den Webseiten von Patchwork die Verweise auf andere Seiten HTTPS verwenden sollen.
Dies ist eine Patchwork-Einstellung.
extra-settings
(Vorgabe: ""
)Zusätzlicher Code, der am Ende des Patchwork-Einstellungsmoduls platziert werden soll.
Der Datentyp, der die Datenbankkonfiguration für Patchwork repräsentiert.
engine
(Vorgabe: "django.db.backends.postgresql_psycopg2"
)Welcher Datenbanktreiber („Engine“) benutzt werden soll.
name
(Vorgabe: "patchwork"
)Der Name der zu benutzenden Datenbank.
user
(Vorgabe: "httpd"
)Der Benutzer, als der sich Patchwork mit der Datenbank verbindet.
password
(Vorgabe: ""
)Das Passwort, das zum Herstellen einer Verbindung zur Datenbank verwendet werden soll.
host
(Vorgabe: ""
)Der Rechner, mit dem die Datenbankverbindung hergestellt wird.
port
(Vorgabe: ""
)Der Port, auf dem sich Patchwork mit der Datenbank verbindet.
Mumi ist eine Weboberfläche für Debbugs, einem System, um Fehlerberichte zu verwalten. Nach Vorgabe zeigt es die bei GNU angebotene Debbugs-Instanz. Mumi ist ein Web-Server, er lädt aber auch E-Mails von Debbugs herunter und indiziert diese.
Dies ist der Diensttyp für Mumi.
Der Datentyp, der die Konfiguration des Mumi-Dienstes repräsentiert. Dieser Typ hat die folgenden Felder:
mumi
(Vorgabe: mumi
)Das zu verwendende Mumi-Paket.
mailer?
(Vorgabe: #true
)Ob die Komponente zum Mailversand aktiviert sein soll oder nicht.
mumi-configuration-sender
Die E-Mail-Adresse, die bei Kommentaren als Absender angegeben wird.
mumi-configuration-smtp
Eine URI, um die SMTP-Einstellungen für Mailutils einzurichten. Hierfür
könnte etwas wie sendmail:///path/to/bin/msmtp
angegeben werden, oder
eine beliebige andere URI, die von Mailutils unterstützt wird. Siehe
SMTP-Postfächer in GNU Mailutils.
FastCGI ist eine Schnittstelle zwischen den Anwendungen im Vordergrund („Front-End“) und Hintergrund („Back-End“) eines Webdienstes. Die Rolle, die es ausübt, ist nicht mehr ganz aktuell, weil neue Webdienste im Allgemeinen einfach über HTTP zwischen Vorder- und Hintergrund kommunizieren sollten. Allerdings gibt es eine Menge von Hintergrunddiensten wie PHP oder den optimierten Git-Repository-Zugang über HTTP, welche FastCGI benutzen, also wird es auch in Guix unterstützt.
Um FastCGI zu benutzen, konfigurieren Sie den Webserver im Vordergrund
(z.B. nginx) so, dass er eine Teilmenge der Anfragen an die
fastcgi-Hintergrundanwendung weiterleitet, dass auf einem lokalen TCP- oder
Unix-Socket lauscht. Ein dazwischenliegendes fcgiwrap
-Programm sitzt
zwischen dem eigentlichen Hintergrundprozess und dem Webserver. Vom
Vordergrund wird angezeigt, welches Hintergrundprogramm ausgeführt werden
soll. Diese Informationen werden an den fcgiwrap
-Prozess übermittelt.
Ein Diensttyp für den fcgiwrap
-FastCGI-Proxy.
Der Datentyp, der die Konfiguration des fcgiwrap
-Dienstes
repräsentiert. Dieser Typ hat die folgenden Parameter:
package
(Vorgabe: fcgiwrap
)Welches fcgiwrap-Paket benutzt werden soll.
socket
(Vorgabe: tcp:127.0.0.1:9000
)Der Socket, auf dem der fcgiwrap
-Prozess lauschen soll, als eine
Zeichenkette. Gültige Werte für socket wären unter anderem
unix:/pfad/zum/unix/socket
,
tcp:vier.teile.gepunkt.et:Port
und
tcp6:[IPv6-Adresse]:Port
.
user
(Vorgabe: fcgiwrap
)group
(Vorgabe: fcgiwrap
)Die Benutzerkonten- und Gruppennamen als Zeichenketten, unter denen der
fcgiwrap
-Prozess ausgeführt werden soll. Der fastcgi
-Dienst
wird sicherstellen, dass, wenn der Nutzer den Benutzer- oder Gruppennamen
fcgiwrap
verlangt, der entsprechende Benutzer und/oder Gruppe auch
auf dem System existiert.
Es ist möglich, einen FastCGI-gestützten Webdienst so zu konfigurieren, dass
er HTTP-Authentisierungsinformationen vom Vordergrundserver an das
Hintergrundsystem weiterreicht und es fcgiwrap
möglich macht, den
Hintergrundprozess als ein entsprechender lokaler Nutzer auszuführen. Um dem
Hintergrundsystem diese Funktionalität anzubieten, lassen Sie
fcgiwrap
als der Administratornutzer root
mit selbiger Gruppe
ausführen. Beachten Sie, dass die Funktionalität auch auf dem
Vordergrundsystem erst eingerichtet werden muss.
PHP-FPM (FastCGI Process Manager) ist eine alternative PHP-FastCGI-Implementierung, die über einige zusätzliche Funktionalitäten verfügt, die für Webauftritte jeder Größe nützlich sind.
Zu diesen Funktionalitäten gehören:
… und vieles mehr.
Ein Diensttyp für php-fpm
.
Datentyp für die Konfiguration des php-fpm-Dienstes.
php
(Vorgabe: php
)Das zu benutzende PHP-Paket.
socket
(Vorgabe: (string-append "/var/run/php" (version-major (package-version php)) "-fpm.sock")
)Die Adresse, auf der FastCGI-Anfragen angenommen werden. Gültige Syntax hierfür ist:
"ip.ad.res.se:Port"
Lässt auf einem TCP-Socket auf der angegebenen Adresse auf dem angegebenen Port lauschen.
"port"
Lässt auf einem TCP-Socket auf allen Adressen auf dem angegebenen Port lauschen.
"/pfad/zum/unix/socket"
Lässt auf einem Unix-Socket lauschen.
user
(Vorgabe: php-fpm
)Der Benutzer, dem die PHP-Arbeiterprozesse gehören werden.
group
(Vorgabe: php-fpm
)Die Gruppe für die Arbeiterprozesse.
socket-user
(Vorgabe: php-fpm
)Der Benutzer, der mit dem php-fpm-Socket kommunizieren kann.
socket-group
(Vorgabe: nginx
)Die Gruppe, die mit dem php-fpm-Socket kommunizieren kann.
pid-file
(Vorgabe: (string-append "/var/run/php" (version-major (package-version php)) "-fpm.pid")
)Der Prozessidentifikator des php-fpm-Prozesses wird in diese Datei geschrieben, sobald der Dienst gestartet wurde.
log-file
(Vorgabe: (string-append "/var/log/php" (version-major (package-version php)) "-fpm.log")
)Wohin das Protokoll für den php-fpm-Hauptprozess geschrieben wird.
process-manager
(Vorgabe: (php-fpm-dynamic-process-manager-configuration)
)Detaillierte Einstellungen für die php-fpm-Prozessverwaltung. Sie müssen eines der Folgenden sein:
<php-fpm-dynamic-process-manager-configuration>
<php-fpm-static-process-manager-configuration>
<php-fpm-on-demand-process-manager-configuration>
display-errors
(Vorgabe: #f
)Legt fest, ob PHP-Fehler und Warnungen an Clients geschickt und in ihren Browsern angezeigt werden. Dies ist nützlich für lokale PHP-Entwicklung, aber ein Sicherheitsrisiko für öffentliche Webauftritte, weil Fehlermeldungen Passwörter und Passwortdaten offenlegen können.
timezone
(Vorgabe: #f
)Legt den Parameter php_admin_value[date.timezone]
fest.
workers-logfile
(Vorgabe: (string-append "/var/log/php" (version-major (package-version php)) "-fpm.www.log")
)In dieser Datei werden stderr
-Ausgaben von PHP-Arbeiterprozessen
protokolliert. Das Feld kann auf #f
gesetzt werden, damit nicht
protokolliert wird.
file
(Vorgabe: #f
)Optional kann hier ein vorrangig benutzter Ersatz für die gesamte
Konfigurationsdatei angegeben werden. Sie können dafür die
mixed-text-file
-Funktion oder einen absoluten Dateipfad verwenden.
php-ini-file
(Vorgabe: #f
)Hier können optional die PHP-Voreinstellungen geändert werden. Geben Sie
dazu eine beliebige Art von „dateiartigem“ Objekt an (siehe
dateiartige Objekte). Sie können dafür die
mixed-text-file
-Funktion oder einen absoluten Dateipfad verwenden.
Bei der Entwicklung mit dem lokalen Rechner bietet es sich an, die Zeit- und Speicherbegrenzung erzeugter PHP-Prozesse anzuheben. Benutzen Sie dazu folgndes Code-Schnipsel in Ihrer Betriebssystemkonfiguration:
(define %local-php-ini (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 %local-php-ini))) %base-services)))
Umfassende Dokumentation dazu, welche Direktiven Sie in der php.ini verwenden dürfen, sollten Sie unter den php.ini-Kerndirektiven nachschlagen.
Datentyp für die dynamische Prozessverwaltung durch php-fpm. Bei der dynamischen Prozessverwaltung bleiben Arbeiterprozesse nach Abschluss ihrer Aufgabe weiterhin erhalten, solange die konfigurierten Beschränkungen eingehalten werden.
max-children
(Vorgabe: 5
)Die maximale Anzahl an Arbeiterprozessen.
start-servers
(Vorgabe: 2
)Wie viele Arbeiterprozesse gleich zu Beginn gestartet werden sollen.
min-spare-servers
(Vorgabe: 1
)Wie viele untätige Arbeiterprozesse mindestens weiterhin vorgehalten bleiben sollen.
max-spare-servers
(Vorgabe: 3
)Wie viele untätige Arbeiterprozesse höchstens weiterhin vorgehalten bleiben sollen.
Datentyp für die statische Prozessverwaltung durch php-fpm. Bei der statischen Prozessverwaltung wird eine unveränderliche Anzahl an Arbeiterprozessen erzeugt.
max-children
(Vorgabe: 5
)Die maximale Anzahl an Arbeiterprozessen.
Datentyp für die Prozessverwaltung nach Bedarf durch php-fpm. Bei der Prozessverwaltung nach Bedarf werden Arbeiterprozesse erst erzeugt, wenn Anfragen vorliegen.
max-children
(Vorgabe: 5
)Die maximale Anzahl an Arbeiterprozessen.
process-idle-timeout
(Vorgabe: 10
)Die Zeit in Sekunden, nach der ein Prozess ohne Anfragen erzwungen beendet wird.
php)) "-fpm.sock")] Eine Hilfsfunktion, mit der in kurzer Zeit PHP zu einer
nginx-server-configuration
hinzugefügt werden kann.
Eine einfache Art, die Dienste für nginx mit PHP einzurichten, kann so aussehen:
(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))
Der Cat Avatar Generator („Katzenavatargenerator“) ist ein einfacher Dienst,
um die Nutzung von php-fpm in Nginx
zu demonstrieren. Mit ihm können
Katzenavatarbilder aus einem Startwert („Seed“) heraus erzeugt werden, zum
Beispiel aus dem Hash der E-Mail-Adresse eines Benutzers.
cat-avatar-generator] [#:configuration (nginx-server-configuration)]
Liefert ein nginx-server-configuration-Objekt, das von der in
configuration
angegebenen Konfiguration erbt. Es erweitert die
Nginx-Konfiguration, indem es einen Server-Block hinzufügt, der die in
package
angegebene Version vom cat-avatar-generator anbietet. Bei der
Ausführung wird dem cat-avatar-generator Zugriff auf sein in
cache-dir
angegebenes Zwischenspeicherverzeichnis gewährt.
Eine einfache Konfiguration des cat-avatar-generator kann so aussehen:
(services (cons* (cat-avatar-generator-service
#:configuration
(nginx-server-configuration
(server-name '("example.com"))))
...
%base-services))
Das Programm hpcguix-web ist eine anpassbare Weboberfläche, um Guix-Pakete zu suchen. Am Anfang war es für Nutzer von Hochleistungs-Rechenclustern gedacht („High-Performance Computing“, kurz HPC).
Der Diensttyp für hpcguix-web
.
Datentyp für die Konfiguration des hpcguix-web-Dienstes.
specs
(Vorgabe: #f
)Entweder #f
oder ein G-Ausdruck (siehe G-Ausdrücke), der die
Konfiguration des hpcguix-web-Dienstes als
hpcguix-web-configuration
-Verbundsobjekt festlegt. Die wichtigsten
Felder in diesem Verbundsobjekt sind:
title-prefix
(Vorgabe: "hpcguix | "
)Das Präfix der Webseitentitel.
guix-command
(Vorgabe: "guix"
)Welcher Befehl zum Aufrufen von guix
in Beispielen auf den
HTML-Seiten dargestellt wird.
package-filter-proc
(Vorgabe: (const #t)
)Eine Prozedur, die festlegt, wie anzuzeigende Pakete gefiltert werden.
package-page-extension-proc
(Vorgabe: (const '())
)Erweiterungspaket für hpcguix-web
.
menu
(Vorgabe: '()
)Zusätzlicher Eintrag auf der Menüseite.
channels
(Vorgabe: %default-channels
)Liste der Kanäle, aus denen die Paketliste erstellt wird (siehe Kanäle).
package-list-expiration
(Vorgabe: (* 12 3600)
)Nach wie viel Zeit in Sekunden die Paketliste aus den neuesten Instanzen der angegebenen Kanäle neu erzeugt wird.
Siehe das Repository von hpcguix-web für ein vollständiges Beispiel.
package
(Vorgabe: hpcguix-web
)Das hpcguix-web-Paket, was benutzt werden soll.
address
(Vorgabe: "127.0.0.1"
)Die IP-Adresse, auf die gelauscht werden soll.
port
(Vorgabe: 5000
)Die Portnummer, auf der gelauscht werden soll.
Eine typische Deklaration eines hpcguix-web-Dienstes sieht so aus:
(service hpcguix-web-service-type
(hpcguix-web-configuration
(specs
#~(hpcweb-configuration
(title-prefix "Guix-HPC - ")
(menu '(("/about" "ABOUT")))))))
Anmerkung: Der hpcguix-web-Dienst aktualisiert die Liste der Pakete, die er veröffentlicht, periodisch, indem er die Kanäle über einen Git-„Pull“ lädt. Dazu muss er auf X.509-Zertifikate zugreifen, damit Git-Server authentifiziert werden können, wenn mit diesen über HTTPS kommuniziert wird, wofür der Dienst davon ausgeht, dass sich jene Zertifikate in /etc/ssl/certs befinden.
Dass ein Zertifikatspaket,
nss-certs
, verwendet wird, ist als Teil der%base-packages
vorgegeben. Siehe X.509-Zertifikate für weitere Informationen zu X.509-Zertifikaten.
Das Programm gmnisrv ist ein einfacher Server für das Gemini-Protokoll.
Dies ist der Diensttyp des gmnisrv-Dienstes, dessen Wert ein
gmnisrv-configuration
-Objekt wie in diesem Beispiel sein sollte:
(service gmnisrv-service-type
(gmnisrv-configuration
(config-file (local-file "./my-gmnisrv.ini"))))
Datentyp, der die Konfiguration von gmnisrv repräsentiert.
package
(Vorgabe: gmnisrv)Das Paketobjekt des gmnisrv-Servers.
config-file
(Vorgabe: %default-gmnisrv-config-file
)Ein dateiartiges Objekt mit der zu nutzenden
gmnisrv-Konfigurationsdatei. Die Vorgabekonfiguration lauscht auf Port 1965
und bietet die Dateien in /srv/gemini an. Zertifikate werden in
/var/lib/gemini/certs gespeichert. Führen Sie für mehr Informationen
man gmnisrv
und man gmnisrv.ini
aus.
Das Programm Agate (GitHub-Seite über HTTPS) ist ein einfacher Server für das Gemini-Protokoll, der in Rust geschrieben ist.
Dies ist der Diensttyp des agate-Dienstes, dessen Wert ein
agate-configuration
-Objekt wie in diesem Beispiel sein sollte:
(service agate-service-type
(agate-configuration
(content "/srv/gemini")
(certificates "/srv/gemini-certs")))
Das obige Beispiel steht für die minimalen Abänderungen, um Agate lauffähig zu machen. Den Pfad zum Zertifikat und zum Schlüsselverzeichnis anzugeben, ist auf jeden Fall nötig, denn das Gemini-Protokoll setzt standardmäßig TLS voraus.
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.
Der Datentyp, der die Konfiguration von Agate repräsentiert.
package
(Vorgabe: agate
)Das Paketobjekt des Agate-Servers.
content
(Vorgabe: "/srv/gemini")Aus welchem Verzeichnis Agate Dateien anbieten soll.
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")
)Liste der Adressen, auf denen gelauscht werden soll.
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-Sprachcode(s) für Dokumente des Typs text/gemini. Optional.
only-tls13?
(default: #f
)Set to #t
to disable support for TLSv1.2.
serve-secret?
(Vorgabe: #f
)Setzen Sie dies auf #t
, um geheime Dateien (mit einem Punkt
beginnende Dateien und Verzeichnisse) anzubieten.
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?
(Vorgabe: #t
)Ob in die Protokolle auch IP-Adressen geschrieben werden sollen.
user
(Vorgabe: "agate"
)Besitzer des agate
-Prozesses.
group
(Vorgabe: "agate"
)Gruppe des Besitzers des agate
-Prozesses.
log-file
(Vorgabe: "/var/log/agate.log")Die Datei, in die die Protokollierung von Agate ausgegeben werden soll.
Nächste: Zertifikatsdienste, Vorige: LDAP-Dienste, Nach oben: Dienste [Inhalt][Index]