Thank you for the awesome explanation. I confess that I was hacking around with a script I found on your blog without fully understanding! :)
Joel G Mathew On Sun, 9 Sep 2018 at 12:13, Graham Dumpleton <[email protected]> wrote: > > Should mention that if configuring Apache/mod_wsgi yourself, you can set > startup-timeout yourself on WSGIDaemonProcess. It isn't enabled by default in > that case. > > > On 9 Sep 2018, at 4:38 pm, Graham Dumpleton <[email protected]> > > wrote: > > > > You shouldn't need: > > > > try: > > application = get_wsgi_application() > > except Exception: > > # Error loading applications > > if 'mod_wsgi' in sys.modules: > > traceback.print_exc() > > os.kill(os.getpid(), signal.SIGINT) > > time.sleep(2.5) > > > > When using mod_wsgi-express it has a default startup-timeout of 15 seconds. > > > > optparse.make_option('--startup-timeout', type='int', default=15, > > metavar='SECONDS', help='Maximum number of seconds allowed ' > > 'to pass waiting for the application to be successfully ' > > 'loaded and started by a worker process. When this timeout ' > > 'has been reached without the application having been ' > > 'successfully loaded and started, the worker process will ' > > 'be forced to restart. Defaults to 15 seconds.'), > > > > This means that if the WSGI script doesn't load, the whole daemon process > > will be restarted automatically. > > > > This gets around transient problems when doing Django initialisation, and > > Django initialisation not being able to be called a second time in the same > > process, which is what that try/except hack is about. > > > > So you can use just: > > > > application = get_wsgi_application() > > > > Also, when using mod_wsgi-express you don't need: > > > > > > sys.path.append('/home/joel/myappointments/venv/lib/python3.6/site-packages') > > > > as it will automatically use what virtual environment mod_wsgi was > > installed in. You shouldn't try and force it to use site-packages from a > > separate virtual environment. > > > > Finally: > > > > sys.path.append('/home/joel/myappointments') > > > > isn't needed if that is the current directory when you run > > mod_wsgi-express, or is the directory the WSGI script file is in. > > > > If needing to force the home directory for the WSGI application, better to > > use: > > > > --home=/home/joel/myappointments > > > > option. This will cause modules search to be performed from that directory > > as well. > > > > If need to add additional directories, use: > > > > --python-path=/home/joel/myappointments > > > > This option can be used more than once. > > > > Graham > > > >> On 9 Sep 2018, at 4:28 pm, Joel Mathew <[email protected]> wrote: > >> > >> Thank you. The problem is fixed. > >> My final command line: > >> mod_wsgi-express setup-server wsgi.py --https-port 443 --https-only > >> --server-name mysite.com --ssl-certificate-file ssl-certs/cert.pem > >> --ssl-certificate-key-file ssl-certs/privkey.pem --user www-data > >> --group www-data --url-alias /appointments/static > >> ./appointments/static > >> > >> I wrote a short blog on using letsencrypt certificates with > >> mod_wsgi-express: > >> http://blog.droidzone.in/2018/09/08/using-letsencrypt-certificate-files-with-mod_wsgi-express-for-https-on-django/ > >> > >> Thank you for the great utility, Graham Dumpleton > >> > >> > >> > >> > >> On Sun, 9 Sep 2018 at 08:12, Graham Dumpleton > >> <[email protected]> wrote: > >>> > >>> > >>> > >>>> On 9 Sep 2018, at 12:27 pm, Joel Mathew <[email protected]> wrote: > >>>> > >>>> When I do it like: > >>>> > >>>> mod_wsgi-express start-server --log-to-terminal --startup-log > >>>> --https-port 443 --server-name myopip.com --ssl-certificate-file > >>>> ssl-certs/cert.pem --ssl-certificate-key-file ssl-certs/privkey.pem > >>>> --user www-data --group www-data --host mysite.com --host 17.104.53.57 > >>>> > >>>> where the last is the ip of my server, I get the `My web site runs on > >>>> Malt Whiskey ` message. Not my actual site. > >>> > >>> Which is expected as you haven't given it as argument the path to the > >>> WSGI script file for your application. > >>> > >>>> Without the --host mysite.com, again I get the malt whiskey page > >>> > >>> Either way, I am saying you shouldn't use --host argument unless you have > >>> a specific reason to. > >>> > >>>> > >>>> > >>>> Joel G Mathew > >>>> On Sun, 9 Sep 2018 at 03:19, Graham Dumpleton > >>>> <[email protected]> wrote: > >>>>> > >>>>> I should clarify, use these options in addition to --server-name with > >>>>> the value you have now. Don't drop --server-name as must use that when > >>>>> using certificate. > >>>>> > >>>>> On 9 Sep 2018, at 7:47 am, Graham Dumpleton > >>>>> <[email protected]> wrote: > >>>>> > >>>>> You would not usually set --host with an argument of a hostname, but an > >>>>> IP address. You would only use that though if absolutely needed and > >>>>> have multiple interfaces and need to restrict which connections can > >>>>> come in on. Based on the error though, even though suggest not using > >>>>> it, I don't believe that is the issue. > >>>>> > >>>>> The usual reason for getting forbidden is that because you have used > >>>>> '--server-name mysite.com', you can only connect when using that > >>>>> hostname in the URL. You can't connect to it with an IP address or > >>>>> other hostname. If behind a proxy, that may be a problem. > >>>>> > >>>>> If trying to connect via 'localhost' or '127.0.0.1', you can add > >>>>> '--allow-localhost'. > >>>>> > >>>>> optparse.make_option('--allow-localhost', action='store_true', > >>>>> default=False, help='Flag indicating whether access via ' > >>>>> 'localhost should still be allowed when a server name has been > >>>>> ' > >>>>> 'specified and a name based virtual host has been > >>>>> configured.'), > >>>>> > >>>>> If connecting remotely, from memory you can use '--server-alias *'. > >>>>> > >>>>> optparse.make_option('--server-alias', action='append', > >>>>> dest='server_aliases', metavar='HOSTNAME', help='A secondary ' > >>>>> 'host name for the web server. May include wildcard > >>>>> patterns.'), > >>>>> > >>>>> The use of the wildcard of just '*' says allow connecting with any > >>>>> hostname. This should work even though it doesn't match what you expect > >>>>> to be used and what the certificate is set up. You may as a result get > >>>>> warnings about original hostname used not then matching the certificate. > >>>>> > >>>>> Graham > >>>>> > >>>>> On 9 Sep 2018, at 1:26 am, Joel <[email protected]> wrote: > >>>>> > >>>>> I am using the following command to start mod_wsgi-express for my > >>>>> django project: > >>>>> > >>>>> mod_wsgi-express start-server --log-to-terminal --startup-log > >>>>> --https-port 443 --server-name mysite.com --ssl-certificate-file > >>>>> ssl-certs/cert.pem --ssl-certificate-key-file ssl-certs/privkey.pem > >>>>> --user www-data --group www-data --host mysite.com > >>>>> > >>>>> When loading https://mysite.com/, I get a 403 Forbidden error: You > >>>>> don't have permission to access / on this server. > >>>>> > >>>>> The terminal shows the following lines: > >>>>> root@localhost:/home/joel/new/myappointments# mod_wsgi-express > >>>>> start-server --log-to-terminal --startup-log --https-port 443 > >>>>> --server-name mysite.com --ssl-certificate-file ssl-certs/cert.pem > >>>>> --ssl-certificate-key-file ssl-certs/privkey.pem --user www-data > >>>>> --group www-data --host mysite.com > >>>>> Server URL : http://mysite.com:8000/ > >>>>> Server URL (HTTPS) : https://mysite.com/ > >>>>> Server Root : /tmp/mod_wsgi-mysite.com:8000:0 > >>>>> Server Conf : /tmp/mod_wsgi-mysite.com:8000:0/httpd.conf > >>>>> Error Log File : /dev/stderr (warn) > >>>>> Startup Log File : /dev/stderr > >>>>> Request Capacity : 5 (1 process * 5 threads) > >>>>> Request Timeout : 60 (seconds) > >>>>> Startup Timeout : 15 (seconds) > >>>>> Queue Backlog : 100 (connections) > >>>>> Queue Timeout : 45 (seconds) > >>>>> Server Capacity : 20 (event/worker), 20 (prefork) > >>>>> Server Backlog : 500 (connections) > >>>>> Locale Setting : en_US.UTF-8 > >>>>> [Sat Sep 08 20:51:37.800732 2018] [ssl:warn] [pid 5130:tid > >>>>> 140248589061056] AH01873: Init: Session Cache is not configured [hint: > >>>>> SSLSessionCache] > >>>>> [Sat Sep 08 20:51:37.803786 2018] [mpm_event:notice] [pid 5130:tid > >>>>> 140248589061056] AH00489: Apache/2.4.29 (Ubuntu) mod_wsgi/4.6.4 > >>>>> Python/3.6 OpenSSL/1.1.0g configured -- resuming normal operations > >>>>> [Sat Sep 08 20:51:37.804264 2018] [core:notice] [pid 5130:tid > >>>>> 140248589061056] AH00094: Command line: 'apache2 (mod_wsgi-express) -f > >>>>> /tmp/mod_wsgi-mysite.com:8000:0/httpd.conf -E /dev/stderr -D > >>>>> MOD_WSGI_VIRTUAL_HOST -D MOD_WSGI_WITH_HTTPS -D > >>>>> MOD_WSGI_WITH_LISTENER_HOST -D MOD_WSGI_MPM_ENABLE_EVENT_MODULE -D > >>>>> MOD_WSGI_MPM_EXISTS_EVENT_MODULE -D MOD_WSGI_MPM_EXISTS_WORKER_MODULE > >>>>> -D MOD_WSGI_MPM_EXISTS_PREFORK_MODULE -D FOREGROUND' > >>>>> [Sat Sep 08 20:51:44.573958 2018] [authz_core:error] [pid 5133:tid > >>>>> 140248492054272] [client 62.58.165.208:33302] AH01630: client denied by > >>>>> server configuration: /tmp/mod_wsgi-mysite.com:8000:0/htdocs/ > >>>>> [Sat Sep 08 20:51:45.084675 2018] [authz_core:error] [pid 5133:tid > >>>>> 140248491788032] [client 72.68.14.235:62556] AH01630: client denied by > >>>>> server configuration: > >>>>> /tmp/mod_wsgi-mysite.com:8000:0/htdocs/favicon.ico, referer: > >>>>> https://mysite.com/ > >>>>> > >>>>> > >>>>> The generated conf /tmp/mod_wsgi-mysite.com:8000:0/httpd.conf shows: > >>>>> > >>>>> <IfModule !version_module> > >>>>> LoadModule version_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_version.so' > >>>>> </IfModule> > >>>>> > >>>>> > >>>>> ServerName mysite.com > >>>>> ServerRoot '/tmp/mod_wsgi-mysite.com:8000:0' > >>>>> PidFile '/tmp/mod_wsgi-mysite.com:8000:0/httpd.pid' > >>>>> > >>>>> > >>>>> <IfVersion >= 2.4> > >>>>> DefaultRuntimeDir '/tmp/mod_wsgi-mysite.com:8000:0' > >>>>> </IfVersion> > >>>>> > >>>>> > >>>>> ServerTokens ProductOnly > >>>>> ServerSignature Off > >>>>> > >>>>> > >>>>> User ${MOD_WSGI_USER} > >>>>> Group ${MOD_WSGI_GROUP} > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_WITH_LISTENER_HOST> > >>>>> Listen mysite.com:8000 > >>>>> </IfDefine> > >>>>> <IfDefine !MOD_WSGI_WITH_LISTENER_HOST> > >>>>> Listen 8000 > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfVersion < 2.4> > >>>>> LockFile '/tmp/mod_wsgi-mysite.com:8000:0/accept.lock' > >>>>> </IfVersion> > >>>>> > >>>>> > >>>>> <IfVersion >= 2.4> > >>>>> <IfDefine MOD_WSGI_WITH_PHP5> > >>>>> <IfModule !mpm_event_module> > >>>>> <IfModule !mpm_worker_module> > >>>>> <IfModule !mpm_prefork_module> > >>>>> <IfDefine MOD_WSGI_MPM_EXISTS_PREFORK_MODULE> > >>>>> LoadModule mpm_prefork_module > >>>>> '${MOD_WSGI_MODULES_DIRECTORY}/mod_mpm_prefork.so' > >>>>> </IfDefine> > >>>>> </IfModule> > >>>>> </IfModule> > >>>>> </IfModule> > >>>>> </IfDefine> > >>>>> </IfVersion> > >>>>> > >>>>> > >>>>> <IfVersion >= 2.4> > >>>>> <IfModule !mpm_event_module> > >>>>> <IfModule !mpm_worker_module> > >>>>> <IfModule !mpm_prefork_module> > >>>>> <IfDefine MOD_WSGI_MPM_ENABLE_EVENT_MODULE> > >>>>> LoadModule mpm_event_module > >>>>> '${MOD_WSGI_MODULES_DIRECTORY}/mod_mpm_event.so' > >>>>> </IfDefine> > >>>>> <IfDefine MOD_WSGI_MPM_ENABLE_WORKER_MODULE> > >>>>> LoadModule mpm_worker_module > >>>>> '${MOD_WSGI_MODULES_DIRECTORY}/mod_mpm_worker.so' > >>>>> </IfDefine> > >>>>> <IfDefine MOD_WSGI_MPM_ENABLE_PREFORK_MODULE> > >>>>> LoadModule mpm_prefork_module > >>>>> '${MOD_WSGI_MODULES_DIRECTORY}/mod_mpm_prefork.so' > >>>>> </IfDefine> > >>>>> </IfModule> > >>>>> </IfModule> > >>>>> </IfModule> > >>>>> </IfVersion> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_WITH_HTTP2> > >>>>> LoadModule http2_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_http2.so' > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfVersion >= 2.4> > >>>>> <IfModule !access_compat_module> > >>>>> LoadModule access_compat_module > >>>>> '${MOD_WSGI_MODULES_DIRECTORY}/mod_access_compat.so' > >>>>> </IfModule> > >>>>> <IfModule !unixd_module> > >>>>> LoadModule unixd_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_unixd.so' > >>>>> </IfModule> > >>>>> <IfModule !authn_core_module> > >>>>> LoadModule authn_core_module > >>>>> '${MOD_WSGI_MODULES_DIRECTORY}/mod_authn_core.so' > >>>>> </IfModule> > >>>>> <IfModule !authz_core_module> > >>>>> LoadModule authz_core_module > >>>>> '${MOD_WSGI_MODULES_DIRECTORY}/mod_authz_core.so' > >>>>> </IfModule> > >>>>> </IfVersion> > >>>>> > >>>>> > >>>>> <IfModule !authz_host_module> > >>>>> LoadModule authz_host_module > >>>>> '${MOD_WSGI_MODULES_DIRECTORY}/mod_authz_host.so' > >>>>> </IfModule> > >>>>> <IfModule !mime_module> > >>>>> LoadModule mime_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_mime.so' > >>>>> </IfModule> > >>>>> <IfModule !rewrite_module> > >>>>> LoadModule rewrite_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_rewrite.so' > >>>>> </IfModule> > >>>>> <IfModule !alias_module> > >>>>> LoadModule alias_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_alias.so' > >>>>> </IfModule> > >>>>> <IfModule !dir_module> > >>>>> LoadModule dir_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_dir.so' > >>>>> </IfModule> > >>>>> <IfModule !env_module> > >>>>> LoadModule env_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_env.so' > >>>>> </IfModule> > >>>>> <IfModule !headers_module> > >>>>> LoadModule headers_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_headers.so' > >>>>> </IfModule> > >>>>> <IfModule !filter_module> > >>>>> LoadModule filter_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_filter.so' > >>>>> </IfModule> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_DIRECTORY_LISTING> > >>>>> <IfModule !autoindex_module> > >>>>> LoadModule autoindex_module > >>>>> '${MOD_WSGI_MODULES_DIRECTORY}/mod_autoindex.so' > >>>>> </IfModule> > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfVersion >= 2.2.15> > >>>>> <IfModule !reqtimeout_module> > >>>>> LoadModule reqtimeout_module > >>>>> '${MOD_WSGI_MODULES_DIRECTORY}/mod_reqtimeout.so' > >>>>> </IfModule> > >>>>> </IfVersion> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_COMPRESS_RESPONSES> > >>>>> <IfModule !deflate_module> > >>>>> LoadModule deflate_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_deflate.so' > >>>>> </IfModule> > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_AUTH_USER> > >>>>> <IfModule !auth_basic_module> > >>>>> LoadModule auth_basic_module > >>>>> '${MOD_WSGI_MODULES_DIRECTORY}/mod_auth_basic.so' > >>>>> </IfModule> > >>>>> <IfModule !auth_digest_module> > >>>>> LoadModule auth_digest_module > >>>>> '${MOD_WSGI_MODULES_DIRECTORY}/mod_auth_digest.so' > >>>>> </IfModule> > >>>>> <IfModule !authz_user_module> > >>>>> LoadModule authz_user_module > >>>>> '${MOD_WSGI_MODULES_DIRECTORY}/mod_authz_user.so' > >>>>> </IfModule> > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_WITH_PROXY> > >>>>> <IfModule !proxy_module> > >>>>> LoadModule proxy_module ${MOD_WSGI_MODULES_DIRECTORY}/mod_proxy.so > >>>>> </IfModule> > >>>>> <IfModule !proxy_http_module> > >>>>> LoadModule proxy_http_module > >>>>> ${MOD_WSGI_MODULES_DIRECTORY}/mod_proxy_http.so > >>>>> </IfModule> > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfModule mpm_prefork_module> > >>>>> <IfDefine MOD_WSGI_WITH_PHP5> > >>>>> <IfModule !php5_module> > >>>>> Loadmodule php5_module '${MOD_WSGI_MODULES_DIRECTORY}/libphp5.so' > >>>>> </IfModule> > >>>>> AddHandler application/x-httpd-php .php > >>>>> </IfDefine> > >>>>> </IfModule> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_LOAD_PYTHON_DYLIB> > >>>>> LoadFile '' > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> LoadModule wsgi_module > >>>>> '/usr/local/lib/python3.6/dist-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so' > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_SERVER_METRICS> > >>>>> <IfModule !status_module> > >>>>> LoadModule status_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_status.so' > >>>>> </IfModule> > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_CGID_SCRIPT> > >>>>> <IfModule !cgid_module> > >>>>> LoadModule cgid_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_cgid.so' > >>>>> </IfModule> > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_CGI_SCRIPT> > >>>>> <IfModule !cgi_module> > >>>>> LoadModule cgi_module '${MOD_WSGI_MODULES_DIRECTORY}/mod_cgi.so' > >>>>> </IfModule> > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfVersion < 2.4> > >>>>> DefaultType text/plain > >>>>> </IfVersion> > >>>>> > >>>>> > >>>>> TypesConfig '/etc/mime.types' > >>>>> > >>>>> > >>>>> HostnameLookups Off > >>>>> MaxMemFree 64 > >>>>> Timeout 60 > >>>>> ListenBacklog 500 > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_WITH_HTTP2> > >>>>> Protocols h2 h2c http/1.1 > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfVersion >= 2.2.15> > >>>>> RequestReadTimeout header=15-30,MinRate=500 body=15,MinRate=500 > >>>>> </IfVersion> > >>>>> > >>>>> > >>>>> LimitRequestBody 10485760 > >>>>> > >>>>> > >>>>> <Directory /> > >>>>> AllowOverride None > >>>>> <IfVersion < 2.4> > >>>>> Order deny,allow > >>>>> Deny from all > >>>>> </IfVersion> > >>>>> <IfVersion >= 2.4> > >>>>> Require all denied > >>>>> </IfVersion> > >>>>> </Directory> > >>>>> > >>>>> > >>>>> WSGIPythonHome '/usr' > >>>>> > >>>>> > >>>>> WSGIVerboseDebugging 'Off' > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_WITH_SOCKET_PREFIX> > >>>>> WSGISocketPrefix None/wsgi > >>>>> </IfDefine> > >>>>> <IfDefine !MOD_WSGI_WITH_SOCKET_PREFIX> > >>>>> WSGISocketPrefix /tmp/mod_wsgi-mysite.com:8000:0/wsgi > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> WSGISocketRotation Off > >>>>> > >>>>> > >>>>> <IfDefine !ONE_PROCESS> > >>>>> WSGIRestrictEmbedded On > >>>>> <IfDefine MOD_WSGI_MULTIPROCESS> > >>>>> WSGIDaemonProcess mysite.com:8000 \ > >>>>> display-name='(wsgi:mysite.com:8000:0)' \ > >>>>> home='/home/joel/new/myappointments' \ > >>>>> processes=1 \ > >>>>> threads=5 \ > >>>>> maximum-requests=0 \ > >>>>> python-path='' \ > >>>>> python-eggs='/tmp/mod_wsgi-mysite.com:8000:0/python-eggs' \ > >>>>> lang='en_US.UTF-8' \ > >>>>> locale='en_US.UTF-8' \ > >>>>> listen-backlog=100 \ > >>>>> queue-timeout=45 \ > >>>>> socket-timeout=60 \ > >>>>> connect-timeout=15 \ > >>>>> request-timeout=60 \ > >>>>> inactivity-timeout=0 \ > >>>>> startup-timeout=15 \ > >>>>> deadlock-timeout=60 \ > >>>>> graceful-timeout=15 \ > >>>>> eviction-timeout=0 \ > >>>>> restart-interval=0 \ > >>>>> cpu-time-limit=0 \ > >>>>> shutdown-timeout=5 \ > >>>>> send-buffer-size=0 \ > >>>>> receive-buffer-size=0 \ > >>>>> header-buffer-size=0 \ > >>>>> response-buffer-size=0 \ > >>>>> response-socket-timeout=0 \ > >>>>> server-metrics=Off > >>>>> </IfDefine> > >>>>> <IfDefine !MOD_WSGI_MULTIPROCESS> > >>>>> WSGIDaemonProcess mysite.com:8000 \ > >>>>> display-name='(wsgi:mysite.com:8000:0)' \ > >>>>> home='/home/joel/new/myappointments' \ > >>>>> threads=5 \ > >>>>> maximum-requests=0 \ > >>>>> python-path='' \ > >>>>> python-eggs='/tmp/mod_wsgi-mysite.com:8000:0/python-eggs' \ > >>>>> lang='en_US.UTF-8' \ > >>>>> locale='en_US.UTF-8' \ > >>>>> listen-backlog=100 \ > >>>>> queue-timeout=45 \ > >>>>> socket-timeout=60 \ > >>>>> connect-timeout=15 \ > >>>>> request-timeout=60 \ > >>>>> inactivity-timeout=0 \ > >>>>> startup-timeout=15 \ > >>>>> deadlock-timeout=60 \ > >>>>> graceful-timeout=15 \ > >>>>> eviction-timeout=0 \ > >>>>> restart-interval=0 \ > >>>>> cpu-time-limit=0 \ > >>>>> shutdown-timeout=5 \ > >>>>> send-buffer-size=0 \ > >>>>> receive-buffer-size=0 \ > >>>>> response-buffer-size=0 \ > >>>>> response-socket-timeout=0 \ > >>>>> server-metrics=Off > >>>>> </IfDefine> > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> WSGICallableObject 'application' > >>>>> WSGIPassAuthorization On > >>>>> WSGIMapHEADToGET Auto > >>>>> > >>>>> > >>>>> <IfDefine ONE_PROCESS> > >>>>> WSGIRestrictStdin Off > >>>>> <IfDefine MOD_WSGI_WITH_PYTHON_PATH> > >>>>> WSGIPythonPath '' > >>>>> </IfDefine> > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_SERVER_METRICS> > >>>>> ExtendedStatus On > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> WSGIServerMetrics Off > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_SERVER_STATUS> > >>>>> <Location /server-status> > >>>>> SetHandler server-status > >>>>> <IfVersion < 2.4> > >>>>> Order deny,allow > >>>>> Deny from all > >>>>> Allow from localhost > >>>>> </IfVersion> > >>>>> <IfVersion >= 2.4> > >>>>> Require all denied > >>>>> Require host localhost > >>>>> </IfVersion> > >>>>> </Location> > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_KEEP_ALIVE> > >>>>> KeepAlive On > >>>>> KeepAliveTimeout 0 > >>>>> </IfDefine> > >>>>> <IfDefine !MOD_WSGI_KEEP_ALIVE> > >>>>> KeepAlive Off > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_COMPRESS_RESPONSES> > >>>>> AddOutputFilterByType DEFLATE text/plain > >>>>> AddOutputFilterByType DEFLATE text/html > >>>>> AddOutputFilterByType DEFLATE text/xml > >>>>> AddOutputFilterByType DEFLATE text/css > >>>>> AddOutputFilterByType DEFLATE text/javascript > >>>>> AddOutputFilterByType DEFLATE application/xhtml+xml > >>>>> AddOutputFilterByType DEFLATE application/javascript > >>>>> AddOutputFilterByType DEFLATE application/json > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_ROTATE_LOGS> > >>>>> ErrorLog "|/usr/bin/rotatelogs \ > >>>>> /dev/stderr.%Y-%m-%d-%H_%M_%S 5M" > >>>>> </IfDefine> > >>>>> <IfDefine !MOD_WSGI_ROTATE_LOGS> > >>>>> ErrorLog "/dev/stderr" > >>>>> </IfDefine> > >>>>> LogLevel warn > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_ERROR_LOG_FORMAT> > >>>>> ErrorLogFormat "None" > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_ACCESS_LOG> > >>>>> <IfModule !log_config_module> > >>>>> LoadModule log_config_module > >>>>> ${MOD_WSGI_MODULES_DIRECTORY}/mod_log_config.so > >>>>> </IfModule> > >>>>> LogFormat "%h %l %u %t \"%r\" %>s %b" common > >>>>> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" > >>>>> \"%{User-agent}i\"" combined > >>>>> LogFormat "undefined" custom > >>>>> <IfDefine MOD_WSGI_ROTATE_LOGS> > >>>>> CustomLog "|/usr/bin/rotatelogs \ > >>>>> /dev/stdout.%Y-%m-%d-%H_%M_%S 5M" common > >>>>> </IfDefine> > >>>>> <IfDefine !MOD_WSGI_ROTATE_LOGS> > >>>>> CustomLog "/dev/stdout" common > >>>>> </IfDefine> > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_CHUNKED_REQUEST> > >>>>> WSGIChunkedRequest On > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_WITH_PROXY_HEADERS> > >>>>> WSGITrustedProxyHeaders > >>>>> </IfDefine> > >>>>> <IfDefine MOD_WSGI_WITH_TRUSTED_PROXIES> > >>>>> WSGITrustedProxies > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_WITH_HTTPS> > >>>>> <IfModule !ssl_module> > >>>>> LoadModule ssl_module ${MOD_WSGI_MODULES_DIRECTORY}/mod_ssl.so > >>>>> </IfModule> > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfModule mpm_prefork_module> > >>>>> <IfDefine !ONE_PROCESS> > >>>>> ServerLimit 20 > >>>>> StartServers 1 > >>>>> MaxClients 20 > >>>>> MinSpareServers 1 > >>>>> MaxSpareServers 2 > >>>>> </IfDefine> > >>>>> <IfDefine ONE_PROCESS> > >>>>> ServerLimit 1 > >>>>> StartServers 1 > >>>>> MaxClients 1 > >>>>> MinSpareServers 1 > >>>>> MaxSpareServers 1 > >>>>> </IfDefine> > >>>>> MaxRequestsPerChild 0 > >>>>> </IfModule> > >>>>> > >>>>> > >>>>> <IfModule mpm_worker_module> > >>>>> <IfDefine !ONE_PROCESS> > >>>>> ServerLimit 2 > >>>>> ThreadLimit 10 > >>>>> StartServers 1 > >>>>> MaxClients 20 > >>>>> MinSpareThreads 10 > >>>>> MaxSpareThreads 10 > >>>>> ThreadsPerChild 10 > >>>>> </IfDefine> > >>>>> <IfDefine ONE_PROCESS> > >>>>> ServerLimit 1 > >>>>> ThreadLimit 1 > >>>>> StartServers 1 > >>>>> MaxClients 1 > >>>>> MinSpareThreads 1 > >>>>> MaxSpareThreads 1 > >>>>> ThreadsPerChild 1 > >>>>> </IfDefine> > >>>>> MaxRequestsPerChild 0 > >>>>> ThreadStackSize 262144 > >>>>> </IfModule> > >>>>> > >>>>> > >>>>> <IfModule mpm_event_module> > >>>>> <IfDefine !ONE_PROCESS> > >>>>> ServerLimit 2 > >>>>> ThreadLimit 10 > >>>>> StartServers 1 > >>>>> MaxClients 20 > >>>>> MinSpareThreads 10 > >>>>> MaxSpareThreads 10 > >>>>> ThreadsPerChild 10 > >>>>> </IfDefine> > >>>>> <IfDefine ONE_PROCESS> > >>>>> ServerLimit 1 > >>>>> ThreadLimit 1 > >>>>> StartServers 1 > >>>>> MaxClients 1 > >>>>> MinSpareThreads 1 > >>>>> MaxSpareThreads 1 > >>>>> ThreadsPerChild 1 > >>>>> </IfDefine> > >>>>> MaxRequestsPerChild 0 > >>>>> ThreadStackSize 262144 > >>>>> </IfModule> > >>>>> > >>>>> > >>>>> <IfDefine !MOD_WSGI_VIRTUAL_HOST> > >>>>> <IfVersion < 2.4> > >>>>> NameVirtualHost *:8000 > >>>>> </IfVersion> > >>>>> <VirtualHost _default_:8000> > >>>>> </VirtualHost> > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_VIRTUAL_HOST> > >>>>> > >>>>> > >>>>> <IfVersion < 2.4> > >>>>> NameVirtualHost *:8000 > >>>>> </IfVersion> > >>>>> <VirtualHost _default_:8000> > >>>>> <Location /> > >>>>> <IfVersion < 2.4> > >>>>> Order deny,allow > >>>>> Deny from all > >>>>> </IfVersion> > >>>>> <IfVersion >= 2.4> > >>>>> Require all denied > >>>>> </IfVersion> > >>>>> <IfDefine MOD_WSGI_ALLOW_LOCALHOST> > >>>>> Allow from localhost > >>>>> </IfDefine> > >>>>> </Location> > >>>>> </VirtualHost> > >>>>> <IfDefine !MOD_WSGI_HTTPS_ONLY> > >>>>> <VirtualHost *:8000> > >>>>> ServerName mysite.com > >>>>> <IfDefine MOD_WSGI_SERVER_ALIAS> > >>>>> ServerAlias None > >>>>> </IfDefine> > >>>>> </VirtualHost> > >>>>> <IfDefine MOD_WSGI_REDIRECT_WWW> > >>>>> <VirtualHost *:8000> > >>>>> ServerName unspecified > >>>>> Redirect permanent / http://mysite.com:8000/ > >>>>> </VirtualHost> > >>>>> </IfDefine> > >>>>> </IfDefine> > >>>>> > >>>>> > >>>>> <IfDefine MOD_WSGI_HTTPS_ONLY> > >>>>> <VirtualHost *:8000> > >>>>> ServerName mysite.com > >>>>> <IfDefine MOD_WSGI_SERVER_ALIAS> > >>>>> ServerAlias None > >>>>> </IfDefine> > >>>>> RewriteEngine On > >>>>> RewriteCond %{HTTPS} off > >>>>> RewriteRule (.*) https://mysite.com:443%{REQUEST_URI} > >>>>> </VirtualHost> > >>>>> <IfDefine MOD_WSGI_REDIRECT_WWW> > >>>>> <VirtualHost *:8000> > >>>>> ServerName unspecified > >>>>> RewriteEngine On > >>>>> RewriteCond %{HTTPS} off > >>>>> RewriteRule (.*) https://mysite.com:443%{REQUEST_URI} > >>>>> </VirtualHost> > >>>>> </IfDefine> > >>>> > >>>> -- > >>>> You received this message because you are subscribed to the Google > >>>> Groups "modwsgi" group. > >>>> To unsubscribe from this group and stop receiving emails from it, send > >>>> an email to [email protected]. > >>>> To post to this group, send email to [email protected]. > >>>> Visit this group at https://groups.google.com/group/modwsgi. > >>>> For more options, visit https://groups.google.com/d/optout. > >>> > >>> -- > >>> You received this message because you are subscribed to the Google Groups > >>> "modwsgi" group. > >>> To unsubscribe from this group and stop receiving emails from it, send an > >>> email to [email protected]. > >>> To post to this group, send email to [email protected]. > >>> Visit this group at https://groups.google.com/group/modwsgi. > >>> For more options, visit https://groups.google.com/d/optout. > >> > >> -- > >> You received this message because you are subscribed to the Google Groups > >> "modwsgi" group. > >> To unsubscribe from this group and stop receiving emails from it, send an > >> email to [email protected]. > >> To post to this group, send email to [email protected]. > >> Visit this group at https://groups.google.com/group/modwsgi. > >> For more options, visit https://groups.google.com/d/optout. > > > > -- > You received this message because you are subscribed to the Google Groups > "modwsgi" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/modwsgi. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "modwsgi" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/modwsgi. For more options, visit https://groups.google.com/d/optout.
