blob: 628e2b3146869234df5c8f88ea2ece220afe2665 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
;; SPDX-License-Identifier: CC0-1.0
;; Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org>
;;
;; Available under the terms of Creative Commons Zero v1.0 Universal.
(use-modules (gnu))
(use-modules (koszko-org-website))
(use-package-modules web)
(use-service-modules web)
(use-service-modules shepherd)
(define %koszko-org-virtualhost
(httpd-virtualhost
"*:80"
(list "\
ServerName koszko.org
ServerAlias www.koszko.org
DocumentRoot /srv/http/koszko.org
ServerAdmin koszko@koszko.org
<If \"%{HTTP_HOST} != 'koszko.org'\">
Redirect permanent / http://koszko.org/
</If>
Alias /sideload /srv/http/koszko.org
WSGIScriptReloading On
"
#~(let* ((script-rel "/share/koszko-org-website/wsgi.py")
(wsgi-file (string-append #$koszko-org-website script-rel)))
(format #f
"\
<Files ~s>
Require all granted
</Files>
WSGIScriptAlias / ~a
"
wsgi-file wsgi-file)))))
(define %wsgi-module
(httpd-module
(name "wsgi_module")
(file (file-append mod-wsgi "/modules/mod_wsgi.so"))))
;; logio is needed for the '%O' log format directive
(define %logio-module
(httpd-module
(name "logio_module")
(file (file-append httpd "/modules/mod_logio.so"))))
(define %logformat-combined
"\"%h %l %u %t \\\"%r\\\" %>s %O \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\"")
(define %koszko-httpd-service
(service
httpd-service-type
(httpd-configuration
(config
(httpd-config-file
(server-name "koszko.org")
(error-log "/var/log/httpd/error.log")
(modules (cons* %wsgi-module %logio-module %default-httpd-modules))
(extra-config
(list
(string-join `("LogFormat" ,%logformat-combined "combined")) "\n"
"ErrorLog /var/log/httpd/error.log" "\n"
"CustomLog /var/log/httpd/access.log combined" "\n"
)))))))
(operating-system
(host-name "koszko")
(timezone "Europe/Warsaw")
(file-systems (cons (file-system
(device (file-system-label "does-not-matter"))
(mount-point "/")
(type "ext4"))
%base-file-systems))
(bootloader (bootloader-configuration
(bootloader grub-bootloader)
(targets '("/dev/sdDOES-NOT-MATTER"))))
(services
(cons* %koszko-httpd-service
(simple-service 'koszko-org-website httpd-service-type
(list %koszko-org-virtualhost))
(service
(shepherd-service-type
'dummy-network
(const
(shepherd-service
(documentation "Provide 'networking' without actually doing anything")
(provision '(networking))
(start #~(const #t))
(stop #~(const #t))
(respawn? #f)))
(description "Make other services assume network is there."))
#f)
%base-services)))
|