Skip to content

How to Create a Systemd Service File for Flask Project

Advertisement

Creating a systemd service file for a Flask application is an excellent way to ensure that your app runs smoothly on a Linux system, providing a robust and reliable way to manage the application process. This article will guide you through the steps to create and configure a systemd service file for your Flask application.

Systemd is a system and service manager for Linux operating systems, which uses a concept of units to manage different resources. A Flask application is a lightweight and powerful web framework for Python, making it a popular choice for web development.

Prerequisites

Before you begin, ensure that you have:

  • A Flask application ready to be deployed.
  • Access to a Linux server with systemd.
  • Sudo or root privileges on the server.

Step 1: Create a Flask Application

Create a sample Flask application if you haven’t already:


from flask import Flask
app = Flask(__name__)

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

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

Step 2: Test Your Flask Application

Before creating a service file, ensure your Flask app runs without errors.

python app.py 

Step 3: Creating a Systemd Service File

  1. Navigate to systemd directory:
    cd /etc/systemd/system 
    
  2. Create a new service file:

    Use a text editor to create a file named yourapp.service (replace yourapp with the name of your application).

    sudo nano flaskapp.service 
    
  3. Edit the Service File:

    Add the following content to the file:

    
    [Unit]
    Description=Your Flask App
    After=network.target
    
    [Service]
    User=username
    Group=groupname
    WorkingDirectory=/path/to/your/app
    Environment="PATH=/path/to/your/app/env/bin"
    ExecStart=/path/to/your/app/env/bin/gunicorn -w 4 -b 0.0.0.0:8000 app:app
    
    [Install]
    WantedBy=multi-user.target
    
    

    Replace username, groupname, /path/to/your/app, and app:app with appropriate values.

    Explanation of Service File Sections:

    • [Unit]: Describes the service and dependencies.
    • [Service]: How to start and manage the service.
    • [Install]: Integration with the system startup.

Step 4: Enable and Start Your Flask Service

  • Reload systemd to read the new service file:
    sudo systemctl daemon-reload 
    
  • Enable your service to start on boot:
    sudo systemctl enable flaskapp.service 
    
  • Start your service:
    sudo systemctl start flaskapp.service 
    

Step 5: Monitoring and Troubleshooting

  • Check the status of your service:
    sudo systemctl status flaskapp.service 
    
  • View logs for troubleshooting:
    journalctl -u flaskapp.service 
    

Conclusion

You have successfully created a systemd service file for your Flask application. This setup ensures that your app starts automatically on boot and restarts in case of failure, providing a more reliable and robust deployment.

Further Reading:

Creating a systemd service for your Flask app is a fundamental step in deploying a production-grade application. It allows for better resource management, automatic restarts, and integrates your app seamlessly with your system’s startup and shutdown processes.

Rahul

I, Rahul Kumar am the founder and chief editor of TecAdmin.net. I am a Red Hat Certified Engineer (RHCE) and working as an IT professional since 2009..

Leave a Reply

Your email address will not be published. Required fields are marked *


Back to top