Makefile fuer Serveraufgaben
Makefiles sind eigentlich für Build-Prozesse gedacht aber sie eignen sich hervorragend als Sammlung von Shortcuts für wiederkehrende Serveraufgaben.
Grundaufbau
.PHONY: deploy restart logs status backup deploy: git -C /var/www/projekt pull composer install --no-dev --optimize-autoloader $(MAKE) restart restart: systemctl restart php8.3-fpm systemctl reload nginx logs: journalctl -u nginx -u php8.3-fpm -f status: systemctl status nginx php8.3-fpm backup: mysqldump -u root meinedb | gzip > /var/backups/meinedb_$(shell date +%Y%m%d).sql.gz @echo "Backup erstellt"
.PHONY erklärt dass diese Targets keine Dateien sind sondern immer ausgeführt werden sollen.
Aufrufen
make deploy make logs make backup
Variablen
APP_DIR = /var/www/projekt PHP = /usr/bin/php8.3 test: $(PHP) $(APP_DIR)/vendor/bin/phpunit lint: $(PHP) -l $(APP_DIR)/src/**/*.php
Abhängigkeiten zwischen Targets
deploy: pull restart @echo "Deploy abgeschlossen" pull: git -C $(APP_DIR) pull restart: systemctl restart php8.3-fpm
deploy führt erst pull dann restart aus und dann seinen eigenen Code.
Das Makefile ins Projekt-Root einzuchecken ist praktisch — jeder neue Kollege oder jeder neue Server kennt sofort die wichtigsten Befehle.
Einrückungen müssen zwingend mit Tabs gemacht werden, nicht Leerzeichen.