Apache Airflow auf Ubuntu 24.04 installieren: Schritt-für-Schritt-Anleitung
Apache Airflow ist eine Open-Source-Plattform zur Verwaltung von Workflows und eignet sich ideal zur Automatisierung von Datenprozessen wie ETL (Extract, Transform, Load). Die Plattform verwendet sogenannte Directed Acyclic Graphs (DAGs) in Python, um Aufgaben zu planen und Abhängigkeiten zuverlässig zu verwalten. Diese Anleitung zeigt, wie du Apache Airflow unter Ubuntu 24.04 einrichtest, absicherst und mit einem Beispiel-DAG testest.
Voraussetzungen
- Ein Ubuntu 24.04 Server mit mindestens 4 GB RAM
- Ein A-Record, der auf die IP-Adresse deines Servers verweist
Apache Airflow unter Ubuntu 24.04 installieren
Airflow wird als Python-Paket angeboten und lässt sich über Pip installieren. Im Folgenden installierst du Python, richtest eine virtuelle Umgebung ein und installierst Airflow.
1. Schritt: Paketindex aktualisieren
$ sudo apt update
2. Schritt: Python-Version prüfen
$ python3 --version
Beispielausgabe:
Python 3.12.3
3. Schritt: Python installieren (falls erforderlich)
$ sudo apt install python3
4. Schritt: Virtuelle Umgebung und Abhängigkeiten installieren
$ sudo apt install python3-venv libpq-dev -y
5. Schritt: Virtuelle Umgebung erstellen und aktivieren
$ python3 -m venv airflow_env
$ source ~/airflow_env/bin/activate
Die Shell-Eingabeaufforderung sollte sich wie folgt ändern:
(airflow_env) linuxuser@example:~$
6. Schritt: Apache Airflow mit PostgreSQL-Unterstützung installieren
$ pip install apache-airflow[postgres] psycopg2
7. Schritt: PostgreSQL installieren
$ sudo apt install postgresql postgresql-contrib
$ sudo systemctl start postgresql
8. Schritt: PostgreSQL für Airflow konfigurieren
$ sudo -u postgres psql
Beispielausgabe:
psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1))
Type “help” for help.
postgres=#
postgres=# CREATE USER airflow PASSWORD 'YourStrongPassword';
postgres=# CREATE DATABASE airflowdb;
postgres=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO airflow;
postgres=# ALTER DATABASE airflowdb OWNER TO airflow;
postgres=# GRANT ALL ON SCHEMA public TO airflow;
postgres=# exit;
9. Schritt: Airflow konfigurieren
$ nano ~/airflow/airflow.cfg
Falls das Verzeichnis ~/airflow
nicht existiert, erstelle es mit:
$ airflow db init; airflow scheduler
Drücke Strg + C, um den Scheduler zu stoppen.
Passe in airflow.cfg
folgende Werte an:
executor = LocalExecutor
sql_alchemy_conn = postgresql+psycopg2://airflow:YourStrongPassword@localhost/airflowdb
10. Schritt: Datenbank initialisieren
$ airflow db init
Beispielausgabe:
DB: postgresql+psycopg2://airflow:***@localhost/airflow
[2025-01-05T23:58:36.808+0000] {migration.py:207} INFO – Context impl PostgresqlImpl.
[2025-01-05T23:58:36.809+0000] {migration.py:210} INFO – Will assume transactional DDL.
INFO [alembic.runtime.migration] Running stamp_revision -> 5f2621c13b39
WARNI [airflow.models.crypto] empty cryptography key – values will not be stored encrypted.
Initialization done
11. Schritt: Admin-Benutzer erstellen
$ airflow users create \
--username admin \
--password yourSuperSecretPassword \
--firstname Admin \
--lastname User \
--role Admin \
--email admin@example.com
12. Schritt: Airflow-Dienste starten
Starte den Webserver auf Port 8080 und leite Logs in webserver.log
um:
$ nohup airflow webserver -p 8080 > webserver.log 2>&1 &
Starte den Scheduler und schreibe Logs in scheduler.log
:
$ nohup airflow scheduler > scheduler.log 2>&1 &
Nginx als Reverse Proxy für Apache Airflow einrichten
Standardmäßig lauscht Apache Airflow auf Port 8080. Um die Anwendung über HTTP oder HTTPS erreichbar zu machen und abzusichern, kannst du Nginx als Reverse Proxy nutzen.
1. Schritt: Nginx installieren
$ sudo apt install -y nginx
2. Schritt: Nginx-Konfigurationsdatei für Airflow erstellen
$ sudo nano /etc/nginx/sites-available/airflow
Füge den folgenden Inhalt in die Datei ein (ersetze airflow.example.com
durch deine Domain):
server {
listen 80;
server_name airflow.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
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;
}
}
Diese Konfiguration leitet alle Anfragen auf Port 80 über die angegebene Domain an den Airflow-Port 8080 weiter.
3. Schritt: Virtuellen Host aktivieren
$ sudo ln -s /etc/nginx/sites-available/airflow /etc/nginx/sites-enabled/
4. Schritt: Nginx-Konfiguration testen und neu laden
$ sudo nginx -t
Erwartete Ausgabe:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl reload nginx
5. Schritt: Port 80 in der Firewall freigeben
$ sudo ufw allow 80/tcp
$ sudo ufw reload
Öffne nun im Browser die URL http://airflow.example.com
, um das Login-Interface von Apache Airflow aufzurufen.
Apache Airflow mit HTTPS absichern (SSL-Zertifikat einrichten)
Um die Verbindung zum Apache Airflow Webinterface zu verschlüsseln, kannst du mit Certbot ein kostenloses SSL-Zertifikat von Let’s Encrypt erstellen und Nginx damit konfigurieren.
1. Schritt: Certbot installieren
$ sudo snap install --classic certbot
Falls Snap noch nicht vorhanden ist, installiere es mit folgendem Befehl:
$ sudo apt install snapd -y
2. Schritt: Certbot global verfügbar machen
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
3. Schritt: SSL-Zertifikat anfordern
Ersetze airflow.example.com
und admin@example.com
mit deiner echten Domain und Mailadresse.
$ sudo certbot --nginx --redirect -d airflow.example.com -m admin@example.com --agree-tos
Beispielausgabe:
...
Konto registriert.
Zertifikat wird für airflow.example.com angefordert
Zertifikat erfolgreich erhalten.
Zertifikat gespeichert unter: /etc/letsencrypt/live/airflow.example.com/fullchain.pem
Schlüssel gespeichert unter: /etc/letsencrypt/live/airflow.example.com/privkey.pem
Dieses Zertifikat läuft am 2025-04-21 ab.
Es wird automatisch verlängert.
Zertifikat wurde erfolgreich in /etc/nginx/sites-enabled/airflow eingebunden.
Glückwunsch! HTTPS ist nun aktiv unter https://airflow.example.com
4. Schritt: Automatische Verlängerung testen
$ sudo certbot renew --dry-run
5. Schritt: Nginx neu starten
$ sudo systemctl restart nginx
Apache Airflow Webinterface aufrufen
Rufe die Airflow-Weboberfläche in deinem Browser auf:
Verwende die zuvor angelegten Zugangsdaten:
- Benutzername: admin
- Passwort: yourSuperSecretPassword
Eigenen DAG in Apache Airflow erstellen und starten
Erstelle einen einfachen DAG (Directed Acyclic Graph), um den Ablauf zu testen und zu automatisieren.
1. Schritt: DAG-Verzeichnis anlegen
$ mkdir ~/airflow/dags
2. Schritt: Beispiel-DAG-Datei erstellen
$ nano ~/airflow/dags/my_first_dag.py
3. Schritt: Python-Code für DAG hinzufügen
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime, timedelta
with DAG(
'my_first_dag',
start_date=datetime(2024, 1, 1),
schedule_interval=timedelta(days=1),
catchup=False
) as dag:
def print_hello():
print('Greetings from centron')
hello_task = PythonOperator(
task_id='hello_task',
python_callable=print_hello
)
Dieser Code definiert einen DAG namens my_first_dag
, der täglich ausgeführt wird und eine Grußnachricht ausgibt.
Schritt 4: DAG im Webinterface aktivieren
Wechsle in der Airflow-Oberfläche zur DAG-Übersicht, aktiviere den my_first_dag
und starte ihn manuell.
Schritt 5: DAG überwachen
Nutze die Graph-Ansicht und das Ereignisprotokoll in der Benutzeroberfläche von Airflow, um den Ablauf zu überwachen.
Fazit
Du hast Apache Airflow erfolgreich auf Ubuntu 24.04 installiert, den Zugriff mit Nginx und SSL abgesichert und einen Beispiel-DAG eingerichtet. Airflow bietet dir flexible Möglichkeiten zur Workflow-Orchestrierung für deine Automatisierungsprojekte.
Für weiterführende Informationen empfiehlt sich die offizielle Airflow-Dokumentation.