Deploying Flask applications to a cloud platform is a major step in making your web app accessible to the world. Among the various cloud providers available, Amazon Web Services (AWS) stands out due to its flexibility, scalability, and wide adoption. In this blog, we’ll walk through the key steps involved in deploying a fullstack Flask application on AWS EC2 (Elastic Compute Cloud)—a widely used virtual server environment offered by AWS.
Why Use AWS EC2 for Flask Deployment?
AWS EC2 allows developers to launch virtual machines (called instances) that can host applications just like any traditional server—but with the added benefits of cloud scalability and flexibility. It’s ideal for projects that need:
Custom server configuration
High performance and availability
Root access to install packages and services
Scalability with auto-scaling groups and load balancers
Step-by-Step: Deploy Flask App on AWS EC2
1. Prepare Your Flask Application
Make sure your Flask app is ready to deploy:
Structure your project using a standard layout.
Create a requirements.txt using:
pgsql
pip freeze > requirements.txt
Include a WSGI entry point like wsgi.py:
python
from app import app
if __name__ == "__main__":
app.run()
Test it locally using gunicorn:
nginx
Copy
Edit
gunicorn wsgi:app
2. Launch an EC2 Instance
Log in to your AWS account.
Go to EC2 Dashboard > Instances > Launch Instance.
Choose an Amazon Linux 2 or Ubuntu AMI.
Select instance type (e.g., t2.micro for free-tier).
Create a new key pair and download the .pem file.
Configure security group to allow:
SSH (port 22)
HTTP (port 80)
Custom TCP (port 5000, if needed)
3. Connect to Your EC2 Instance
Use SSH to connect from your terminal:
bash
chmod 400 your-key.pem
ssh -i your-key.pem ec2-user@your-ec2-public-ip
4. Install Required Packages
Update packages and install Python, pip, and Git:
bash
sudo apt update
sudo apt install python3-pip python3-dev nginx git
Clone your Flask app from GitHub or transfer files using scp.
5. Set Up Virtual Environment and Install Dependencies
bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
6. Configure Gunicorn and Nginx
Run Gunicorn:
bash
Copy
Edit
gunicorn --bind 0.0.0.0:5000 wsgi:app
Set up a systemd service to run Gunicorn in the background. Then, configure Nginx as a reverse proxy:
Example Nginx config:
bash
Copy
Edit
server {
listen 80;
server_name your-ec2-public-ip;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Restart Nginx:
bash
Copy
Edit
sudo systemctl restart nginx
7. Access Your Flask App
Visit your EC2 public IP in the browser. You should see your Flask app live!
Final Tips
Use HTTPS with a free SSL certificate from Let’s Encrypt.
Secure your EC2 instance (disable root login, close unused ports).
Set up a domain name with Route 53 or any DNS provider.
Conclusion
Deploying a Flask app on AWS EC2 gives you full control over your environment and makes your application production-ready. While the setup may be more involved compared to platforms like Heroku or Render, the flexibility and scalability that EC2 offers make it a top choice for serious fullstack developers. Once you’ve deployed your first app, you’ll be equipped to take on more complex cloud deployment scenarios with ease.
Learn FullStack Python Training
Read More : Fullstack Python: Using Prometheus and Grafana for Microservices MonitoringRead More : Fullstack Flask: Scaling Microservices with Kubernetes Horizontal Pod Autoscaling
Read More : Introduction to Cloud Deployment for Fullstack Python Applications
Visit Our IHUB Talent Training Institute in Hyderabad
Comments
Post a Comment