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.