(define-module (gn services gn1-httpd-config)
#:export (%default-httpd22-modules
GN1-httpd-config))
(use-modules (gnu)
(ice-9 match)
(gn packages genenetwork)
(past packages web))
(use-service-modules web)
(define %default-httpd22-modules
(map (match-lambda
((name file)
(httpd-module
(name name)
(file file))))
'(("authn_file_module" "modules/mod_authn_file.so")
("authn_dbm_module" "modules/mod_authn_dbm.so")
("authn_anon_module" "modules/mod_authn_anon.so")
("authn_dbd_module" "modules/mod_authn_dbd.so")
("authn_default_module" "modules/mod_authn_default.so")
("authz_host_module" "modules/mod_authz_host.so")
("authz_groupfile_module" "modules/mod_authz_groupfile.so")
("authz_user_module" "modules/mod_authz_user.so")
("authz_dbm_module" "modules/mod_authz_dbm.so")
("authz_owner_module" "modules/mod_authz_owner.so")
("authz_default_module" "modules/mod_authz_default.so")
("auth_basic_module" "modules/mod_auth_basic.so")
("auth_digest_module" "modules/mod_auth_digest.so")
("dbd_module" "modules/mod_dbd.so")
("dumpio_module" "modules/mod_dumpio.so")
("reqtimeout_module" "modules/mod_reqtimeout.so")
("ext_filter_module" "modules/mod_ext_filter.so")
("include_module" "modules/mod_include.so")
("filter_module" "modules/mod_filter.so")
("substitute_module" "modules/mod_substitute.so")
("log_config_module" "modules/mod_log_config.so")
("logio_module" "modules/mod_logio.so")
("env_module" "modules/mod_env.so")
("mime_magic_module" "modules/mod_mime_magic.so")
("expires_module" "modules/mod_expires.so")
("headers_module" "modules/mod_headers.so")
("ident_module" "modules/mod_ident.so")
("setenvif_module" "modules/mod_setenvif.so")
("version_module" "modules/mod_version.so")
("ssl_module" "modules/mod_ssl.so")
("mime_module" "modules/mod_mime.so")
("dav_module" "modules/mod_dav.so")
("status_module" "modules/mod_status.so")
("autoindex_module" "modules/mod_autoindex.so")
("asis_module" "modules/mod_asis.so")
("info_module" "modules/mod_info.so")
("cgi_module" "modules/mod_cgi.so")
("dav_fs_module" "modules/mod_dav_fs.so")
("vhost_alias_module" "modules/mod_vhost_alias.so")
("negotiation_module" "modules/mod_negotiation.so")
("dir_module" "modules/mod_dir.so")
("imagemap_module" "modules/mod_imagemap.so")
("actions_module" "modules/mod_actions.so")
("speling_module" "modules/mod_speling.so")
("userdir_module" "modules/mod_userdir.so")
("alias_module" "modules/mod_alias.so")
("rewrite_module" "modules/mod_rewrite.so"))))
; Alternative setup
; (let* ((gn1-user "wrk")
; (gn1-source "/home/wrk/gn1-pjotr/gnshare/gn")
; (gn1-server "gn1-pjotr.genenetwork.org")
; (gn1-port "8043"))
(define GN1-httpd-config
(let* ((gn1-user "gn1")
(gn1-source (string-append "/home/" gn1-user "/production/gnshare/gn"))
(gn1-server "gn1.genenetwork.org")
(gn1-port "8042"))
(httpd-config-file
(server-name gn1-server)
;; Defaults to httpd, should be same as 'package' above to launch service.
(server-root httpd22-with-mod-python)
(user gn1-user)
(group "users")
(pid-file (string-append "/tmp/guix-gn1/httpd-gn1-source-" gn1-port ".pid"))
(error-log (string-append "/tmp/guix-gn1/httpd-gn1-source-error-" gn1-port ".log"))
(listen `(,gn1-port))
(modules (cons*
(httpd-module
(name "python_module")
(file "modules/mod_python.so"))
%default-httpd22-modules))
(extra-config (list "\
TypesConfig " httpd22-with-mod-python "/etc/httpd/mime.types
DefaultType application/octet-stream
# DocumentRoot MUST NOT be in the PythonPath. Because gn1-source must be in PythonPath we leave the document-root keyword above unset.
PythonPath \"sys.path+['/run/current-system/profile/lib/python2.4', '/run/current-system/profile/lib/python2.4/site-packages', '" gn1-source "/web/webqtl']\"
# same as 'listen' above
NameVirtualHost *:" gn1-port "
DocumentRoot "gn1-source "/web/
Alias /images "gn1-source "/web/images/
Alias /javascript "gn1-source "/web/javascript/
Alias /css "gn1-source "/web/css/
AllowOverride None
Order allow,deny
Allow from all
AllowOverride None
Order allow,deny
Allow from all
AllowOverride None
Order allow,deny
Allow from all
#what is the difference between these two?
AddHandler mod_python .py
#SetHandler python-program
#publisher has more debug information
PythonHandler " gn1-source "/web/webqtl/main.py
#PythonHandler mod_python.publisher
#PythonHandler mod_python.cgihandler
PythonOption mod_python.session.session_type FileSession
# only while debugging:
PythonDebug On
# only while debugging:
#
# SetHandler python-program
# PythonHandler mod_python.testhandler
# "
)))))