# Configuration Overview
Gunicorn reads configuration from five places, in increasing order of priority:
1. Environment variables, for settings that support them.
2. Framework-specific configuration (currently Paste Deploy only).
3. A Python configuration file `gunicorn.conf.py` (default in the working directory).
4. The `GUNICORN_CMD_ARGS` environment variable.
5. Command-line arguments.
If a configuration file is provided both via `GUNICORN_CMD_ARGS` and the CLI,
only the file specified on the command line is used.
!!! note
Print the fully resolved configuration:
```bash
gunicorn --print-config APP_MODULE
```
Validate configuration and exit:
```bash
gunicorn --check-config APP_MODULE
```
This is also a quick way to confirm that your application can start.
## Command line
Options set on the command line override framework settings and values from the
configuration file. Not every setting has a command-line flag; run
```bash
gunicorn -h
```
for the complete list. The CLI also exposes `--version`, which is not part of
the main [settings reference](reference/settings.md).
## Configuration file
Provide a Python file (for example `gunicorn.conf.py`). Gunicorn executes the
file on every start or reload, so any valid Python is allowed:
```python
import multiprocessing
bind = "127.0.0.1:8000"
workers = multiprocessing.cpu_count() * 2 + 1
```
Every configuration key is documented in the [settings reference](reference/settings.md).
## Framework settings
At present only Paste Deploy applications expose framework-specific settings.
If you have ideas for Django or other frameworks, open an
[issue](https://github.com/benoitc/gunicorn/issues).
### Paste applications
Reference Gunicorn as the server in your INI file:
```ini
[server:main]
use = egg:gunicorn#main
host = 192.168.0.1
port = 80
workers = 2
proc_name = brim
```
Gunicorn merges any recognised parameters into the base configuration. Values
from the configuration file and command line still override these defaults.