mod-wsgi 5.0.2__tar.gz → 6.0.0.dev3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mod_wsgi-6.0.0.dev3/MANIFEST.in +13 -0
- mod_wsgi-6.0.0.dev3/PKG-INFO +92 -0
- mod_wsgi-6.0.0.dev3/README-express.rst +46 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/README-standalone.rst +12 -10
- mod_wsgi-6.0.0.dev3/README.rst +135 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/configure +1678 -933
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/configure.ac +14 -26
- mod_wsgi-6.0.0.dev3/mod_wsgi.egg-info/PKG-INFO +92 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/mod_wsgi.egg-info/SOURCES.txt +43 -8
- mod_wsgi-6.0.0.dev3/mod_wsgi.egg-info/entry_points.txt +2 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/setup.py +22 -30
- mod_wsgi-6.0.0.dev3/src/diagnostics/environ.py +86 -0
- mod_wsgi-6.0.0.dev3/src/express/apache.py +1033 -0
- mod_wsgi-6.0.0.dev3/src/express/cli.py +260 -0
- mod_wsgi-6.0.0.dev3/src/express/management/commands/__init__.py +0 -0
- {mod_wsgi-5.0.2/src/server → mod_wsgi-6.0.0.dev3/src/express}/management/commands/runmodwsgi.py +19 -13
- mod_wsgi-6.0.0.dev3/src/express/options.py +889 -0
- mod_wsgi-6.0.0.dev3/src/express/platform.py +103 -0
- mod_wsgi-6.0.0.dev3/src/express/reloader.py +113 -0
- mod_wsgi-6.0.0.dev3/src/express/runtime.py +305 -0
- mod_wsgi-6.0.0.dev3/src/express/scripts.py +297 -0
- mod_wsgi-6.0.0.dev3/src/express/server.py +955 -0
- mod_wsgi-6.0.0.dev3/src/server/__init__.py +8 -0
- mod_wsgi-6.0.0.dev3/src/server/management/__init__.py +0 -0
- mod_wsgi-6.0.0.dev3/src/server/management/commands/__init__.py +0 -0
- mod_wsgi-6.0.0.dev3/src/server/management/commands/runmodwsgi.py +1 -0
- mod_wsgi-6.0.0.dev3/src/server/mod_wsgi.c +1284 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_adapter.c +2256 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_adapter.h +117 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_apache.c +65 -86
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_apache.h +12 -72
- mod_wsgi-6.0.0.dev3/src/server/wsgi_auth.c +1790 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_auth.h +81 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_buckets.c +70 -20
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_buckets.h +1 -1
- mod_wsgi-6.0.0.dev3/src/server/wsgi_config.c +2390 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_config.h +132 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_convert.c +34 -33
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_convert.h +2 -2
- mod_wsgi-6.0.0.dev3/src/server/wsgi_daemon.c +4677 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_daemon.h +54 -13
- mod_wsgi-6.0.0.dev3/src/server/wsgi_dispatch.c +738 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_dispatch.h +86 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_environ.c +1129 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_environ.h +35 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_execute.c +455 -0
- mod_wsgi-5.0.2/src/server/wsgi_stream.h → mod_wsgi-6.0.0.dev3/src/server/wsgi_execute.h +4 -10
- mod_wsgi-6.0.0.dev3/src/server/wsgi_gc.c +483 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_gc.h +126 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_input.c +1164 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_input.h +105 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_interp.c +3572 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_interp.h +128 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_logger.c +1171 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_logger.h +275 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_memory.c +25 -33
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_memory.h +1 -1
- mod_wsgi-6.0.0.dev3/src/server/wsgi_metrics.c +3409 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_metrics.h +392 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_module.c +613 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_module.h +269 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_python.h +65 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_remote.c +2104 -0
- mod_wsgi-5.0.2/src/server/wsgi_daemon.c → mod_wsgi-6.0.0.dev3/src/server/wsgi_remote.h +11 -9
- mod_wsgi-6.0.0.dev3/src/server/wsgi_restrict.c +172 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_restrict.h +81 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_server.c +18 -13
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_server.h +121 -16
- mod_wsgi-6.0.0.dev3/src/server/wsgi_shutdown.c +322 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_shutdown.h +86 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_signal.c +246 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_signal.h +94 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_stream.c +339 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_stream.h +84 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_telemetry.c +1663 -0
- mod_wsgi-6.0.0.dev3/src/server/wsgi_telemetry.h +978 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_thread.c +64 -31
- mod_wsgi-6.0.0.dev3/src/server/wsgi_thread.h +262 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_validate.c +50 -34
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_validate.h +1 -1
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/server/wsgi_version.h +4 -4
- mod_wsgi-5.0.2/MANIFEST.in +0 -18
- mod_wsgi-5.0.2/PKG-INFO +0 -467
- mod_wsgi-5.0.2/README.rst +0 -434
- mod_wsgi-5.0.2/mod_wsgi.egg-info/PKG-INFO +0 -467
- mod_wsgi-5.0.2/mod_wsgi.egg-info/entry_points.txt +0 -2
- mod_wsgi-5.0.2/src/server/__init__.py +0 -3859
- mod_wsgi-5.0.2/src/server/environ.py +0 -111
- mod_wsgi-5.0.2/src/server/mod_wsgi.c +0 -16477
- mod_wsgi-5.0.2/src/server/wsgi_interp.c +0 -2813
- mod_wsgi-5.0.2/src/server/wsgi_interp.h +0 -90
- mod_wsgi-5.0.2/src/server/wsgi_logger.c +0 -743
- mod_wsgi-5.0.2/src/server/wsgi_logger.h +0 -46
- mod_wsgi-5.0.2/src/server/wsgi_metrics.c +0 -1422
- mod_wsgi-5.0.2/src/server/wsgi_metrics.h +0 -61
- mod_wsgi-5.0.2/src/server/wsgi_python.h +0 -190
- mod_wsgi-5.0.2/src/server/wsgi_restrict.c +0 -98
- mod_wsgi-5.0.2/src/server/wsgi_restrict.h +0 -43
- mod_wsgi-5.0.2/src/server/wsgi_stream.c +0 -255
- mod_wsgi-5.0.2/src/server/wsgi_thread.h +0 -56
- mod_wsgi-5.0.2/tests/access.wsgi +0 -3
- mod_wsgi-5.0.2/tests/auth.wsgi +0 -36
- mod_wsgi-5.0.2/tests/environ.wsgi +0 -129
- mod_wsgi-5.0.2/tests/events.wsgi +0 -89
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/CREDITS.rst +0 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/LICENSE +0 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/Makefile.in +0 -0
- {mod_wsgi-5.0.2/docs/_build/html → mod_wsgi-6.0.0.dev3/images}/__init__.py +0 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/images/snake-whiskey.jpg +0 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/mod_wsgi.egg-info/dependency_links.txt +0 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/mod_wsgi.egg-info/not-zip-safe +0 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/mod_wsgi.egg-info/top_level.txt +0 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/setup.cfg +0 -0
- {mod_wsgi-5.0.2 → mod_wsgi-6.0.0.dev3}/src/__init__.py +0 -0
- {mod_wsgi-5.0.2/images → mod_wsgi-6.0.0.dev3/src/diagnostics}/__init__.py +0 -0
- /mod_wsgi-5.0.2/tests/hello.wsgi → /mod_wsgi-6.0.0.dev3/src/diagnostics/hello.py +0 -0
- {mod_wsgi-5.0.2/src/server/management → mod_wsgi-6.0.0.dev3/src/express}/__init__.py +0 -0
- {mod_wsgi-5.0.2/src/server/management/commands → mod_wsgi-6.0.0.dev3/src/express/management}/__init__.py +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
include configure.ac
|
|
2
|
+
include configure
|
|
3
|
+
include LICENSE
|
|
4
|
+
include Makefile.in
|
|
5
|
+
include README.rst
|
|
6
|
+
include README-express.rst
|
|
7
|
+
include README-standalone.rst
|
|
8
|
+
include CREDITS.rst
|
|
9
|
+
include src/server/*.h
|
|
10
|
+
include src/server/*.c
|
|
11
|
+
exclude src/express/apxs_config.py
|
|
12
|
+
include images/*
|
|
13
|
+
include pyproject.toml
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mod_wsgi
|
|
3
|
+
Version: 6.0.0.dev3
|
|
4
|
+
Summary: Installer for Apache/mod_wsgi.
|
|
5
|
+
Home-page: https://www.modwsgi.org/
|
|
6
|
+
Author: Graham Dumpleton
|
|
7
|
+
Author-email: Graham.Dumpleton@gmail.com
|
|
8
|
+
Maintainer: Graham Dumpleton
|
|
9
|
+
Maintainer-email: Graham.Dumpleton@gmail.com
|
|
10
|
+
License: Apache License, Version 2.0
|
|
11
|
+
Project-URL: Documentation, https://modwsgi.readthedocs.io/
|
|
12
|
+
Project-URL: Source, https://github.com/GrahamDumpleton/mod_wsgi
|
|
13
|
+
Project-URL: Tracker, https://github.com/GrahamDumpleton/mod_wsgi/issues
|
|
14
|
+
Keywords: mod_wsgi wsgi apache
|
|
15
|
+
Classifier: Development Status :: 6 - Mature
|
|
16
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
17
|
+
Classifier: Operating System :: MacOS :: MacOS X
|
|
18
|
+
Classifier: Operating System :: POSIX
|
|
19
|
+
Classifier: Operating System :: POSIX :: BSD
|
|
20
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
21
|
+
Classifier: Operating System :: POSIX :: SunOS/Solaris
|
|
22
|
+
Classifier: Programming Language :: Python
|
|
23
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
27
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
28
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
29
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
|
|
30
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
|
|
31
|
+
Requires-Python: >=3.10
|
|
32
|
+
License-File: LICENSE
|
|
33
|
+
Dynamic: author
|
|
34
|
+
Dynamic: author-email
|
|
35
|
+
Dynamic: classifier
|
|
36
|
+
Dynamic: description
|
|
37
|
+
Dynamic: home-page
|
|
38
|
+
Dynamic: keywords
|
|
39
|
+
Dynamic: license
|
|
40
|
+
Dynamic: license-file
|
|
41
|
+
Dynamic: maintainer
|
|
42
|
+
Dynamic: maintainer-email
|
|
43
|
+
Dynamic: project-url
|
|
44
|
+
Dynamic: requires-python
|
|
45
|
+
Dynamic: summary
|
|
46
|
+
|
|
47
|
+
Overview
|
|
48
|
+
--------
|
|
49
|
+
|
|
50
|
+
The mod_wsgi package provides an Apache module that implements a WSGI
|
|
51
|
+
compliant interface for hosting Python-based web applications on top of
|
|
52
|
+
the Apache web server, conforming to the WSGI specification (PEP 3333).
|
|
53
|
+
|
|
54
|
+
When installed from PyPi using ``pip``, the ``mod_wsgi`` package builds
|
|
55
|
+
the mod_wsgi Apache module against the Apache and Python installations
|
|
56
|
+
on your host, and installs the ``mod_wsgi-express`` command-line wrapper
|
|
57
|
+
alongside it.
|
|
58
|
+
|
|
59
|
+
``mod_wsgi-express`` ships a curated Apache configuration template
|
|
60
|
+
tuned for hosting a single WSGI application, and generates a complete
|
|
61
|
+
Apache configuration from it on the fly based on the command-line
|
|
62
|
+
options you supply. Running ``mod_wsgi-express start-server`` brings
|
|
63
|
+
up an Apache instance owned by your own user account, with the
|
|
64
|
+
generated configuration loading mod_wsgi and wiring in your WSGI
|
|
65
|
+
application, without you needing to write or maintain any Apache
|
|
66
|
+
configuration yourself. This makes the package an alternative to
|
|
67
|
+
using a system-supplied mod_wsgi package together with a hand-managed
|
|
68
|
+
Apache configuration, and is well suited to development environments,
|
|
69
|
+
container images, and production deployments where having Apache
|
|
70
|
+
configured automatically is preferable to managing the Apache
|
|
71
|
+
configuration directly.
|
|
72
|
+
|
|
73
|
+
The ``mod_wsgi`` package can also be used purely as a way to build the
|
|
74
|
+
mod_wsgi Apache module (``mod_wsgi.so``) for use with an existing
|
|
75
|
+
Apache installation. The built module can be referenced from where
|
|
76
|
+
``pip`` placed it, or copied into the modules directory of the target
|
|
77
|
+
Apache using the ``mod_wsgi-express install-module`` command. This
|
|
78
|
+
works both with the system-supplied Apache on your operating system
|
|
79
|
+
and with a self-built Apache installation. In this mode you continue
|
|
80
|
+
to write the Apache configuration yourself, and the ``mod_wsgi``
|
|
81
|
+
package serves as a convenient way to obtain a compiled Apache module
|
|
82
|
+
that matches your Python interpreter.
|
|
83
|
+
|
|
84
|
+
The ``mod_wsgi`` package on PyPi assumes that you have a suitable
|
|
85
|
+
version of Apache pre-installed on your target system, including its
|
|
86
|
+
development headers. If you do not, and you are on a UNIX-like system
|
|
87
|
+
(Linux), see the companion ``mod_wsgi-standalone`` package on PyPi,
|
|
88
|
+
which additionally installs a private build of Apache as part of the
|
|
89
|
+
Python installation.
|
|
90
|
+
|
|
91
|
+
For installation instructions, configuration directives, and usage
|
|
92
|
+
guides, see the mod_wsgi documentation site at https://www.modwsgi.org.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
Overview
|
|
2
|
+
--------
|
|
3
|
+
|
|
4
|
+
The mod_wsgi package provides an Apache module that implements a WSGI
|
|
5
|
+
compliant interface for hosting Python-based web applications on top of
|
|
6
|
+
the Apache web server, conforming to the WSGI specification (PEP 3333).
|
|
7
|
+
|
|
8
|
+
When installed from PyPi using ``pip``, the ``mod_wsgi`` package builds
|
|
9
|
+
the mod_wsgi Apache module against the Apache and Python installations
|
|
10
|
+
on your host, and installs the ``mod_wsgi-express`` command-line wrapper
|
|
11
|
+
alongside it.
|
|
12
|
+
|
|
13
|
+
``mod_wsgi-express`` ships a curated Apache configuration template
|
|
14
|
+
tuned for hosting a single WSGI application, and generates a complete
|
|
15
|
+
Apache configuration from it on the fly based on the command-line
|
|
16
|
+
options you supply. Running ``mod_wsgi-express start-server`` brings
|
|
17
|
+
up an Apache instance owned by your own user account, with the
|
|
18
|
+
generated configuration loading mod_wsgi and wiring in your WSGI
|
|
19
|
+
application, without you needing to write or maintain any Apache
|
|
20
|
+
configuration yourself. This makes the package an alternative to
|
|
21
|
+
using a system-supplied mod_wsgi package together with a hand-managed
|
|
22
|
+
Apache configuration, and is well suited to development environments,
|
|
23
|
+
container images, and production deployments where having Apache
|
|
24
|
+
configured automatically is preferable to managing the Apache
|
|
25
|
+
configuration directly.
|
|
26
|
+
|
|
27
|
+
The ``mod_wsgi`` package can also be used purely as a way to build the
|
|
28
|
+
mod_wsgi Apache module (``mod_wsgi.so``) for use with an existing
|
|
29
|
+
Apache installation. The built module can be referenced from where
|
|
30
|
+
``pip`` placed it, or copied into the modules directory of the target
|
|
31
|
+
Apache using the ``mod_wsgi-express install-module`` command. This
|
|
32
|
+
works both with the system-supplied Apache on your operating system
|
|
33
|
+
and with a self-built Apache installation. In this mode you continue
|
|
34
|
+
to write the Apache configuration yourself, and the ``mod_wsgi``
|
|
35
|
+
package serves as a convenient way to obtain a compiled Apache module
|
|
36
|
+
that matches your Python interpreter.
|
|
37
|
+
|
|
38
|
+
The ``mod_wsgi`` package on PyPi assumes that you have a suitable
|
|
39
|
+
version of Apache pre-installed on your target system, including its
|
|
40
|
+
development headers. If you do not, and you are on a UNIX-like system
|
|
41
|
+
(Linux), see the companion ``mod_wsgi-standalone`` package on PyPi,
|
|
42
|
+
which additionally installs a private build of Apache as part of the
|
|
43
|
+
Python installation.
|
|
44
|
+
|
|
45
|
+
For installation instructions, configuration directives, and usage
|
|
46
|
+
guides, see the mod_wsgi documentation site at https://www.modwsgi.org.
|
|
@@ -2,15 +2,17 @@ Overview
|
|
|
2
2
|
--------
|
|
3
3
|
|
|
4
4
|
The mod_wsgi package provides an Apache module that implements a WSGI
|
|
5
|
-
compliant interface for hosting Python
|
|
5
|
+
compliant interface for hosting Python-based web applications on top of the
|
|
6
6
|
Apache web server.
|
|
7
7
|
|
|
8
8
|
The primary package for mod_wsgi is available on the Python package index
|
|
9
|
-
(PyPi) as ``mod_wsgi``. That package
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
(PyPi) as ``mod_wsgi``. That package installs the Apache mod_wsgi module
|
|
10
|
+
itself, along with the ``mod_wsgi-express`` command-line wrapper for
|
|
11
|
+
starting Apache/httpd with mod_wsgi pre-configured. It assumes that you
|
|
12
|
+
have a suitable version of Apache pre-installed on your target system,
|
|
13
|
+
and if you don't, installation of the package will fail.
|
|
12
14
|
|
|
13
|
-
If you are on a UNIX
|
|
15
|
+
If you are on a UNIX-like system (Linux) and need a version of Apache
|
|
14
16
|
to be installed for you, you can use the ``mod_wsgi-standalone``
|
|
15
17
|
package on PyPi instead. When installing the ``mod_wsgi-standalone``
|
|
16
18
|
package it will first trigger the installation of the ``mod_wsgi-httpd``
|
|
@@ -24,15 +26,15 @@ This method of installation is only suitable for where you want to use
|
|
|
24
26
|
your system Apache installation. This installation method will not
|
|
25
27
|
work on Windows.
|
|
26
28
|
|
|
27
|
-
When installing mod_wsgi using this method,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
When installing mod_wsgi using this method, follow the installation and
|
|
30
|
+
usage instructions outlined on the mod_wsgi documentation site at
|
|
31
|
+
https://www.modwsgi.org, substituting ``mod_wsgi-standalone`` for
|
|
32
|
+
``mod_wsgi`` as the package to install.
|
|
31
33
|
|
|
32
34
|
**NOTE: Although this package may allow you to install a standalone Apache
|
|
33
35
|
version, it is only really recommended that you use this package if you
|
|
34
36
|
have absolutely no other choice for getting the Apache httpd server
|
|
35
37
|
installed. Always use the Apache httpd server supplied with the operating
|
|
36
38
|
system if you can. Building this package if you do choose to do so, will
|
|
37
|
-
take some time. So if you
|
|
39
|
+
take some time. So if you think the install is hanging, it is probably
|
|
38
40
|
still busy compiling everything.**
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
========
|
|
2
|
+
mod_wsgi
|
|
3
|
+
========
|
|
4
|
+
|
|
5
|
+
mod_wsgi is an Apache HTTP Server module for hosting Python web
|
|
6
|
+
applications that implement the WSGI specification (`PEP 3333`_). It
|
|
7
|
+
has been used in production deployments for over 15 years and
|
|
8
|
+
continues to be actively maintained.
|
|
9
|
+
|
|
10
|
+
mod_wsgi requires Python 3.10 or later and Apache 2.4. The 6.x
|
|
11
|
+
release line is the current focus of development; see the
|
|
12
|
+
documentation for the full version support policy.
|
|
13
|
+
|
|
14
|
+
Documentation
|
|
15
|
+
-------------
|
|
16
|
+
|
|
17
|
+
Full documentation for mod_wsgi is published at:
|
|
18
|
+
|
|
19
|
+
* https://www.modwsgi.org
|
|
20
|
+
|
|
21
|
+
That site covers installation on the various supported platforms,
|
|
22
|
+
the complete reference for ``WSGI`` configuration directives, the
|
|
23
|
+
error code reference for ``WSGI####`` log messages, deployment and
|
|
24
|
+
hardening guides, and troubleshooting.
|
|
25
|
+
|
|
26
|
+
The documentation sources live under ``docs`` in this repository
|
|
27
|
+
and are built with Sphinx.
|
|
28
|
+
|
|
29
|
+
Releases
|
|
30
|
+
--------
|
|
31
|
+
|
|
32
|
+
This source code repository publishes three distinct packages to the
|
|
33
|
+
Python Package Index:
|
|
34
|
+
|
|
35
|
+
* `mod_wsgi`_ on PyPI builds the mod_wsgi Apache module against an
|
|
36
|
+
existing Apache and Python installation on your host, and
|
|
37
|
+
installs the ``mod_wsgi-express`` command-line wrapper for
|
|
38
|
+
running Apache with a generated configuration tuned for hosting
|
|
39
|
+
a single WSGI application.
|
|
40
|
+
|
|
41
|
+
* `mod_wsgi-standalone`_ on PyPI additionally installs a private
|
|
42
|
+
build of Apache into your Python environment, for use on
|
|
43
|
+
UNIX-like systems where no system Apache is available.
|
|
44
|
+
|
|
45
|
+
* `mod_wsgi-telemetry`_ on PyPI is the out-of-process telemetry
|
|
46
|
+
ingester and live UI that consume datagrams emitted when the
|
|
47
|
+
``WSGITelemetryService`` directive is enabled. It is distributed
|
|
48
|
+
separately so that installations using the operating-system
|
|
49
|
+
``mod_wsgi`` package, or any other manually-configured Apache,
|
|
50
|
+
can adopt the telemetry pipeline without switching to the PyPI
|
|
51
|
+
``mod_wsgi`` or ``mod_wsgi-express`` packages.
|
|
52
|
+
|
|
53
|
+
Reporting bugs
|
|
54
|
+
--------------
|
|
55
|
+
|
|
56
|
+
File bug reports and feature requests on the GitHub issue tracker:
|
|
57
|
+
|
|
58
|
+
* https://github.com/GrahamDumpleton/mod_wsgi/issues
|
|
59
|
+
|
|
60
|
+
Before filing a bug report, work through the troubleshooting guide
|
|
61
|
+
in the documentation. A substantial share of reports against
|
|
62
|
+
mod_wsgi turn out to be configuration, application, or third-party
|
|
63
|
+
package issues rather than mod_wsgi bugs.
|
|
64
|
+
|
|
65
|
+
For suspected security issues, do not open a public issue. Submit a
|
|
66
|
+
private security advisory via GitHub:
|
|
67
|
+
|
|
68
|
+
* https://github.com/GrahamDumpleton/mod_wsgi/security/advisories/new
|
|
69
|
+
|
|
70
|
+
See the security issues page in the documentation for the full
|
|
71
|
+
disclosure process and the list of past CVEs.
|
|
72
|
+
|
|
73
|
+
Contributing
|
|
74
|
+
------------
|
|
75
|
+
|
|
76
|
+
Pull requests are welcome. Small fixes and self-contained features
|
|
77
|
+
can be sent straight through. For larger changes it is worth opening
|
|
78
|
+
an issue first to discuss the approach, since mod_wsgi sits across
|
|
79
|
+
both the Apache and CPython C APIs and the relevant context is not
|
|
80
|
+
always obvious from the code alone.
|
|
81
|
+
|
|
82
|
+
If you have hit a problem or have an idea but writing the code
|
|
83
|
+
yourself would be more friction than help, describing it in an issue
|
|
84
|
+
is just as useful. The maintainer is usually quicker at producing a
|
|
85
|
+
fix or a small feature in this code base than a first-time
|
|
86
|
+
contributor would be.
|
|
87
|
+
|
|
88
|
+
Sponsorship is set up through GitHub Sponsors:
|
|
89
|
+
|
|
90
|
+
* https://github.com/sponsors/GrahamDumpleton
|
|
91
|
+
|
|
92
|
+
Building from source
|
|
93
|
+
--------------------
|
|
94
|
+
|
|
95
|
+
The repository contains:
|
|
96
|
+
|
|
97
|
+
* ``src/server`` for the Apache module sources (C).
|
|
98
|
+
* ``src/express`` and the rest of ``src`` for the Python-side
|
|
99
|
+
package that includes ``mod_wsgi-express`` and the diagnostics
|
|
100
|
+
WSGI applications.
|
|
101
|
+
* ``telemetry`` for the separately-distributed
|
|
102
|
+
``mod_wsgi-telemetry`` package, which provides the out-of-process
|
|
103
|
+
telemetry ingester, browser-based live UI and ``top``-style
|
|
104
|
+
curses monitor that consume datagrams emitted when the
|
|
105
|
+
``WSGITelemetryService`` directive is enabled.
|
|
106
|
+
* ``docs`` for the Sphinx documentation published to
|
|
107
|
+
https://www.modwsgi.org.
|
|
108
|
+
* ``tests`` for the test suite and sample WSGI applications used by
|
|
109
|
+
it.
|
|
110
|
+
* ``scripts`` for helper scripts, including the test runner.
|
|
111
|
+
|
|
112
|
+
Building from source requires a complete Apache installation
|
|
113
|
+
including its development headers (``apache2-dev`` or
|
|
114
|
+
``httpd-devel`` depending on distribution), and the Python
|
|
115
|
+
development headers. See the documentation's installation page for
|
|
116
|
+
the full prerequisites.
|
|
117
|
+
|
|
118
|
+
For an editable development build into a virtual environment::
|
|
119
|
+
|
|
120
|
+
uv pip install -e . --no-cache
|
|
121
|
+
|
|
122
|
+
To run the test suite::
|
|
123
|
+
|
|
124
|
+
./scripts/run-tests.sh
|
|
125
|
+
|
|
126
|
+
License
|
|
127
|
+
-------
|
|
128
|
+
|
|
129
|
+
mod_wsgi is distributed under the Apache License, Version 2.0. See
|
|
130
|
+
the ``LICENSE`` file in this repository for the full text.
|
|
131
|
+
|
|
132
|
+
.. _PEP 3333: https://peps.python.org/pep-3333/
|
|
133
|
+
.. _mod_wsgi: https://pypi.org/project/mod_wsgi/
|
|
134
|
+
.. _mod_wsgi-standalone: https://pypi.org/project/mod_wsgi-standalone/
|
|
135
|
+
.. _mod_wsgi-telemetry: https://pypi.org/project/mod_wsgi-telemetry/
|