Developing a Python Application with Flask, Gunicorn & Nginx

Posted by

Python Using Flask, Gunicorn & Nginx

Python Using Flask, Gunicorn & Nginx

Python is a versatile and powerful programming language that is widely used for web development. One popular framework for building web applications with Python is Flask. Flask is a micro-framework that is easy to use and has a simple and elegant syntax, making it a great choice for building web applications.

In order to deploy a Flask web application, it is common to use Gunicorn as the application server and Nginx as the web server. Gunicorn is a WSGI HTTP server for Python that allows you to run multiple worker processes, providing a high level of concurrency and performance. Nginx is a popular web server known for its high performance, stability, and easy configuration, making it a great choice for serving as a reverse proxy for Flask applications.

To use Flask with Gunicorn and Nginx, you first need to install Flask and Gunicorn on your server. You can do this using the pip package manager:

    
      $ pip install Flask
      $ pip install gunicorn
    
  

Once you have installed Flask and Gunicorn, you can create a simple Flask application and run it using Gunicorn. Here is an example of a basic Flask application:

    
      from flask import Flask

      app = Flask(__name__)

      @app.route('/')
      def hello_world():
          return 'Hello, World!'

      if __name__ == '__main__':
          app.run()
    
  

Save the above code to a file called app.py, and then run the following command to start the Flask application with Gunicorn:

    
      $ gunicorn -w 4 -b 127.0.0.1:8000 app:app
    
  

After running the above command, your Flask application will be running on port 8000. Now, you can configure Nginx to serve as a reverse proxy for the Flask application. Here is an example of an Nginx configuration file:

    
      server {
          listen 80;
          server_name example.com;

          location / {
              proxy_pass http://127.0.0.1:8000;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          }
      }
    
  

Save the above configuration to a file called example.com in the /etc/nginx/sites-available directory, and then create a symbolic link to the /etc/nginx/sites-enabled directory. Finally, restart Nginx to apply the changes:

    
      $ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
      $ sudo service nginx restart
    
  

With these steps, you have successfully deployed a Flask web application using Gunicorn as the application server and Nginx as the web server. This setup provides a high level of performance, scalability, and stability, making it a great choice for hosting production web applications written in Python with Flask.

0 0 votes
Article Rating
4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@ruperto7556
6 months ago

Can i use the same code in red hat?

@RaphiAlmes
6 months ago

really APPreciated! awesome script

@esshieldd
6 months ago

I will kiss you on the lips, you have no clue how much time you just saved me, thank you so much💖