Metadata-Version: 2.1
Name: nginx_python
Version: 0.1.2
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: jinja2
Requires-Dist: requests

# nginx-python

## Overview

nginx-python is a Python package designed to automatically and easily configure and host your Python web applications (Django, Flask, FastAPI) with Nginx using simple Python code. This tool aims to streamline the deployment process, reducing the complexity and potential for errors associated with manual configuration.

## Features

- **Automatic Nginx Configuration**: Generate Nginx configuration files tailored to your application’s needs with minimal effort.
- **Service Management**: Start, stop, and reload Nginx services directly from your Python code.
- **SSL Certificate Integration**: Optionally integrate Let's Encrypt SSL certificates to secure your applications.
- **Multi-Framework Support**: Seamlessly supports Django, Flask, and FastAPI web frameworks.
- **User-Friendly**: Simplifies the deployment process, making it accessible even to developers who are not familiar with server configuration.

## Installation

Install Python-nginx via pip:
```bash
pip install nginx-python
```

## Usage

### Basic Setup

Here’s a quick example of how to set up Nginx for a FastAPI application:

```python
from nginx_python.core import create_nginx_config, manage_service

# Define your server name and application port
server_name = 'example.com'
app_port = 8000

# Generate the Nginx configuration
create_nginx_config(server_name, app_port)

# Start the Nginx service
manage_service('start')
```

### Set up SSL certificate configuration path

```python
from nginx_python.core import create_nginx_config, manage_service

# Define your Nginx conf setup
server_name = 'example.com'
app_name = 'django'
app_port = 8000
use_ssl = True
ssl_certificate_path='your_certificate_path'
ssl_certificate_key_path = 'your_certificate_key_path'
# Generate the Nginx configuration
create_nginx_config(server_name=server_name, app_port=app_port, 
                    app_name=app_name, use_ssl=use_ssl, 
                    ssl_certificate_path=ssl_certificate_path, 
                    ssl_certificate_key_path=ssl_certificate_key_path)

# Start the Nginx service
manage_service('start')
```


### Command-Line Interface

Python-nginx also provides a CLI for easy management:
```bash
nginx_python setup --server-name example.com --app-port 8000
nginx_python start
nginx_python stop
nginx_python reload
```

## Configuration File Template

The default Nginx configuration template used by Python-nginx:
```nginx
server {
    listen 80;
    server_name {{ server_name }};

    location / {
        proxy_pass http://{{ app_name }}:{{ app_port }};
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    error_page 404 /404.html;
    location = /404.html {
        internal;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        internal;
    }
}
```

## Contributing

Contributions are welcome! Please read our [contributing guide](CONTRIBUTING.md) to get started.

## License

This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.

## GitHub Actions Workflow

This repository includes a GitHub Actions workflow to automatically test and publish the package to PyPI. For more information, see [the workflow file](.github/workflows/python-package.yml).

## Contact

For any questions or feedback, please contact [barseghyangor8@gmail.com](mailto:your.email@example.com).

---

With nginx-python, deploying your Python web applications has never been easier. Simplify your server configuration and focus on building great applications!
