(define-module (gn services gn1-httpd-config)
#:export (%default-httpd22-modules
GN1-httpd-config-prod
GN1-httpd-config-test
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"))))
(define (GN1-httpd-config gn1-user cwd url gn1-port)
(let* ((gn1-source cwd)
(home (string-append "/home/" gn1-user)))
(httpd-config-file
(server-name url)
;; 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
# CUSTOM: Add PHP 5 parsing (via CGI) handler and action
ScriptAlias /local-bin " home "/.guix-profile/bin/
AddHandler application/x-httpd-php5 php html htm
Action application/x-httpd-php5 /local-bin/php-cgi
SetEnv PHP_INI_SCAN_DIR " gn1-source "
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
# "
)))))
(define GN1-httpd-config-prod
(GN1-httpd-config "gn1"
"/home/gn1/production/gnshare/gn"
"gn1.genenetwork.org"
"8042"
))
(define GN1-httpd-config-test
(GN1-httpd-config "gn1"
"/home/gn1/production/gnshare/gn-pjotr-test"
"gn1-pjotr.genenetwork.org"
"8044"
))