Search code examples
linuxairflowairflow-schedulersystemctl

Start Airflow Webserver Automaticalll as a Service


I currently would like to write a system configuration file that starts the airflow webserver. Here is my config file definition:

#airflow-webserver.service

[Unit]
Description=Airflow webserver daemon
After=network.target postgresql.service mysql.service redis.service rabbitmq-server.service
Wants=postgresql.service mysql.service redis.service rabbitmq-server.service

[Service]
#EnvironmentFile=/etc/default/airflow
Environment="PATH=/root/airflow_venv/bin"
User=airflow
Group=airflow
Type=simple
ExecStart=/root/airflow_venv/bin/airflow webserver -p 8080 --pid /root/airflow/airflow-webserver.pid
Restart=on-failure
RestartSec=5s
PrivateTmp=true

[Install]
WantedBy=multi-user.target

However running "sudo service airflow-webserver status" it return:

● airflow-webserver.service - Airflow webserver daemon
   Loaded: loaded (/etc/systemd/system/airflow-webserver.service; enabled; vendor preset: disabled)
   Active: activating (auto-restart) (Result: exit-code) since Mon 2021-01-25 06:58:14 UTC; 3s ago
  Process: 5913 ExecStart=/root/airflow_venv/bin/airflow webserver -p 8080 --pid /root/airflow/airflow-webserver.pid (code=exited, status=217/USER)
 Main PID: 5913 (code=exited, status=217/USER)
   CGroup: /system.slice/airflow-webserver.service

I already looked at How to enable a virtualenv in a systemd service unit? as it sounds like a similar issue. However, I could not find my solution there. The OS I am operating on is Amazon Linux 2 AMI.

Can somebody help?

Lazloo


Solution

  • For anyone who gets the same Error:

    Main PID: 5913 (code=exited, status=217/USER)

    this indicates that the user is incorrect. After adapting the user and group, this service worked for me.