How To Deploy a Flask Application on Ubuntu 24.04 or Newer
Welcome to the Greenhost.cloud blog! Today, we’re going to walk you through the steps necessary to deploy a Flask application on Ubuntu 24.04 or newer. Flask is a lightweight web framework for Python that allows you to create web applications quickly and easily. Ubuntu, being one of the most popular Linux distributions, provides a solid foundation for hosting your applications.
Prerequisites
Before we dive into the deployment steps, ensure you have the following:
- Ubuntu 24.04 or newer installed on your server.
- A non-root user with sudo privileges.
- Python 3 and pip installed. You can check if they are installed by running:
python3 --version
pip3 --version
- Basic knowledge of command-line operations.
Step 1: Update Your System
It’s always a good practice to update your system before installing new software. Run the following commands to update your package list and upgrade your installed packages:
sudo apt update
sudo apt upgrade -y
Step 2: Install Required Packages
You will need to install some packages to get your Flask application up and running. This includes Python itself, pip for managing Python packages, and a web server like Nginx or Apache. In this example, we’ll use Nginx due to its performance and ease of use.
Install the necessary packages:
sudo apt install python3 python3-pip python3-venv nginx -y
Step 3: Set Up Your Flask Application
- Create a project directory: Navigate to your home directory and create a new directory for your Flask application:
mkdir ~/myflaskapp
cd ~/myflaskapp
- Create a virtual environment: It’s a good idea to use a virtual environment to manage your Python dependencies. Run the following commands:
python3 -m venv venv
source venv/bin/activate
- Install Flask: With the virtual environment activated, install Flask:
pip install Flask gunicorn
- Create a simple Flask application: Create a file called
app.py
and add the following code:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, Flask on Ubuntu 24.04!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000)
Step 4: Test Your Flask Application
Before setting up Nginx, let’s test if your Flask application runs correctly. In your project directory, run:
python app.py
You should see output indicating that the server is running. Open a web browser and navigate to http://your_server_ip:8000
. You should see “Hello, Flask on Ubuntu 24.04!” displayed in your browser.
Step 5: Configure Gunicorn
Gunicorn is a Python WSGI HTTP server that will serve your Flask application. To start Gunicorn, run the following command:
gunicorn --bind 0.0.0.0:8000 app:app
Step 6: Set Up Nginx as a Reverse Proxy
Now, we’ll configure Nginx to act as a reverse proxy to forward requests to Gunicorn.
- Create an Nginx configuration file for your Flask application:
sudo nano /etc/nginx/sites-available/myflaskapp
- Add the following configuration:
server {
listen 80;
server_name your_server_ip; # Change this to your server's IP or domain
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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
- Enable the new configuration: Create a symbolic link to the
sites-enabled
directory:
sudo ln -s /etc/nginx/sites-available/myflaskapp /etc/nginx/sites-enabled
- Test the Nginx configuration for syntax errors:
sudo nginx -t
- Restart Nginx:
sudo systemctl restart nginx
Step 7: Run Gunicorn as a Service
To ensure your application runs continuously, even after a server restart, you can create a systemd service for Gunicorn.
- Create a service file:
sudo nano /etc/systemd/system/myflaskapp.service
- Add the following configuration:
[Unit]
Description=Gunicorn instance to serve myflaskapp
After=network.target
[Service]
User=your_username
Group=www-data
WorkingDirectory=/home/your_username/myflaskapp
Environment="PATH=/home/your_username/myflaskapp/venv/bin"
ExecStart=/home/your_username/myflaskapp/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:myflaskapp.sock -m 007 app:app
[Install]
WantedBy=multi-user.target
Be sure to replace your_username
with your actual username.
- Start and enable the Gunicorn service:
sudo systemctl start myflaskapp
sudo systemctl enable myflaskapp
Step 8: Access Your Flask Application
Now that everything is set up, you can access your Flask application by navigating to your server’s IP address in a web browser. You should see the “Hello, Flask on Ubuntu 24.04!” message.
Conclusion
Congratulations! You’ve successfully deployed a Flask application on Ubuntu 24.04 or newer. This setup uses Gunicorn as the application server and Nginx as a reverse proxy, providing a robust environment for your Flask apps.
Feel free to reach out to us at Greenhost.cloud if you have any questions or need assistance with your web hosting needs. Happy coding!