(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" ))