diff --git a/README.md b/README.md new file mode 100644 index 00000000..eac4c4f7 --- /dev/null +++ b/README.md @@ -0,0 +1,59 @@ +# Gunicorn + +[![PyPI version](https://img.shields.io/pypi/v/gunicorn.svg?style=flat)](https://pypi.python.org/pypi/gunicorn) +[![Supported Python versions](https://img.shields.io/pypi/pyversions/gunicorn.svg)](https://pypi.python.org/pypi/gunicorn) +[![Build Status](https://github.com/benoitc/gunicorn/actions/workflows/tox.yml/badge.svg)](https://github.com/benoitc/gunicorn/actions/workflows/tox.yml) + +Gunicorn 'Green Unicorn' is a Python WSGI HTTP Server for UNIX. It's a pre-fork +worker model ported from Ruby's [Unicorn](https://bogomips.org/unicorn/) project. The Gunicorn server is broadly +compatible with various web frameworks, simply implemented, light on server +resource usage, and fairly speedy. + +**New in v25**: Per-app worker allocation for dirty arbiters, HTTP/2 support (beta)! + +## Quick Start + +```bash +pip install gunicorn +gunicorn myapp:app --workers 4 +``` + +For ASGI applications (FastAPI, Starlette): + +```bash +gunicorn myapp:app --worker-class asgi +``` + +## Features + +- WSGI support for Django, Flask, Pyramid, and any WSGI framework +- **ASGI support** (beta) for FastAPI, Starlette, Quart +- **HTTP/2 support** (beta) with multiplexed streams +- **Dirty Arbiters** for heavy workloads (ML models, long-running tasks) +- uWSGI binary protocol for nginx integration +- Multiple worker types: sync, gthread, gevent, eventlet, asgi +- Graceful worker process management +- Compatible with Python 3.9+ + +## Documentation + +Full documentation at https://gunicorn.org + +- [Quickstart](https://gunicorn.org/quickstart/) +- [Configuration](https://gunicorn.org/configure/) +- [Deployment](https://gunicorn.org/deploy/) +- [Settings Reference](https://gunicorn.org/reference/settings/) + +## Community + +- Report bugs on [GitHub Issues](https://github.com/benoitc/gunicorn/issues) +- Chat in [#gunicorn](https://web.libera.chat/?channels=#gunicorn) on [Libera.chat](https://libera.chat/) +- See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines + +## Sponsors + +Gunicorn is maintained thanks to our sponsors. [Become a sponsor](https://github.com/sponsors/benoitc). + +## License + +Gunicorn is released under the MIT License. See the [LICENSE](https://github.com/benoitc/gunicorn/blob/master/LICENSE) file for details. diff --git a/README.rst b/README.rst deleted file mode 100644 index 97558ec2..00000000 --- a/README.rst +++ /dev/null @@ -1,79 +0,0 @@ -Gunicorn -======== - -.. image:: https://img.shields.io/pypi/v/gunicorn.svg?style=flat - :alt: PyPI version - :target: https://pypi.python.org/pypi/gunicorn - -.. image:: https://img.shields.io/pypi/pyversions/gunicorn.svg - :alt: Supported Python versions - :target: https://pypi.python.org/pypi/gunicorn - -.. image:: https://github.com/benoitc/gunicorn/actions/workflows/tox.yml/badge.svg - :alt: Build Status - :target: https://github.com/benoitc/gunicorn/actions/workflows/tox.yml - -Gunicorn 'Green Unicorn' is a Python WSGI HTTP Server for UNIX. It's a pre-fork -worker model ported from Ruby's Unicorn_ project. The Gunicorn server is broadly -compatible with various web frameworks, simply implemented, light on server -resource usage, and fairly speedy. - -**New in v24**: Native ASGI support (beta) for async frameworks like FastAPI! - -Quick Start ------------ - -.. code-block:: bash - - pip install gunicorn - gunicorn myapp:app --workers 4 - -For ASGI applications (FastAPI, Starlette): - -.. code-block:: bash - - gunicorn myapp:app --worker-class asgi - -Features --------- - -- WSGI support for Django, Flask, Pyramid, and any WSGI framework -- **ASGI support** (beta) for FastAPI, Starlette, Quart -- uWSGI binary protocol for nginx integration -- Multiple worker types: sync, gthread, gevent, eventlet, asgi -- Graceful worker process management -- Compatible with Python 3.12+ - -Documentation -------------- - -Full documentation at https://gunicorn.org - -- `Quickstart `_ -- `Configuration `_ -- `Deployment `_ -- `Settings Reference `_ - -Community ---------- - -- Report bugs on `GitHub Issues `_ -- Chat in `#gunicorn`_ on `Libera.chat`_ -- See `CONTRIBUTING.md `_ for contribution guidelines - -Sponsors --------- - -Gunicorn is maintained thanks to our sponsors. `Become a sponsor `_. - -.. Sponsor logos will appear here - -License -------- - -Gunicorn is released under the MIT License. See the LICENSE_ file for details. - -.. _Unicorn: https://bogomips.org/unicorn/ -.. _`#gunicorn`: https://web.libera.chat/?channels=#gunicorn -.. _`Libera.chat`: https://libera.chat/ -.. _LICENSE: https://github.com/benoitc/gunicorn/blob/master/LICENSE diff --git a/docs/modernization-plan.md b/docs/modernization-plan.md deleted file mode 100644 index 6c04bb4d..00000000 --- a/docs/modernization-plan.md +++ /dev/null @@ -1,35 +0,0 @@ -# Website Modernization Plan - -## Goals -- Serve a single, canonical domain backed by a static MkDocs build. -- Keep the documentation authoring experience entirely in Markdown. -- Modernize the marketing home page with a refreshed visual identity. -- Preserve the generated settings reference sourced from Python code. - -## Architecture Overview -- **Static site generator:** MkDocs with the Material theme. -- **Content layout:** Markdown files in `docs/content/`, grouped by guides, reference, and news archives. -- **Styling:** Lightweight CSS overrides in `docs/content/styles/overrides.css` for hero, feature cards, and color palette. -- **Dynamic data:** `docs/macros.py` exposes the Gunicorn version, while `scripts/build_settings_doc.py` renders the settings reference into Markdown during every build. -- **Assets:** SVG mascot and hero art live under `docs/content/assets/` so both the homepage and docs share the same branding. - -## Completed Work -- Removed Sphinx configuration, themes, and the legacy static snapshot under `docs/site/`. -- Converted the entire content library (guides, FAQ, design notes, yearly news) from MyST/RST to MkDocs-friendly Markdown. -- Rebuilt the homepage using Material’s layout primitives with responsive hero, CTAs, and feature cards. -- Added CSS overrides that mirror Gunicorn’s brand colors and support light/dark modes. -- Replaced the Sphinx extension with a standalone Markdown generator for the settings reference. -- Introduced an automated MkDocs workflow (`.github/workflows/docs.yml`) that builds on every push and deploys to `gh-pages` from the `main` branch. - -## Remaining Enhancements -1. **Visual polish:** produce updated screenshots/asciicasts for quickstart and deployment examples; add Open Graph imagery. -2. **Content review:** prune outdated news entries, tighten FAQs, and add framework-specific quickstarts (FastAPI, Flask, Django). -3. **Accessibility & internationalization:** run axe audits, ensure color contrast, and consider adding minimal localization support. -4. **Performance extras:** enable MkDocs search index minification and gzip the GitHub Pages output (served automatically once deployed). -5. **Contributor docs:** extend `CONTRIBUTING.md` with MkDocs authoring tips, link to preview artifacts, and describe the `mkdocs serve` workflow. - -## Deployment Checklist -- [x] Update DNS to point away from ReadTheDocs once `gh-pages` is published. -- [x] Verify `site_url` in `mkdocs.yml` for canonical URLs and sitemap generation. -- [x] Ensure `CNAME` (if required) is checked into `gh-pages` during deployment. -- [ ] Announce the migration to end-users and update links in READMEs and PyPI metadata. diff --git a/pyproject.toml b/pyproject.toml index ab60df96..852cdfe6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ authors = [{name = "Benoit Chesneau", email = "benoitc@gunicorn.org"}] license = "MIT" license-files = ["LICENSE"] description = "WSGI HTTP Server for UNIX" -readme = "README.rst" +readme = "README.md" classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Other Environment",