{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreif2sc6uzubrczpmzrp72lzq2225u4jefin7bc42ebwbvnhawhlhvi",
"uri": "at://did:plc:gebrjai724nigboonkb4mmd5/app.bsky.feed.post/3mncvr3m3hmjs"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreiebkiiavt4xeqvyf5hrfroiaxwfsqu4sk5gzu2zsqmatto2p2dg3a"
},
"mimeType": "image/png",
"size": 58800
},
"description": "Ich möchte ich euch eine Lösung Vorstellen die ich mir zusammengestellt habe um auf einem Raspberry Pi einen alten Server mit PHP5.4 und MySQL5.6 (kompatible) Datenbank in Docker zu installieren. Der Stand dieser beiden Programme ist natürlich komplett veraltet und sollte deshalb mit bedacht eingesetzt werden. Bei mir läuft so ein System im Heimnetzwerk, weil...",
"path": "/2025/08/03/server-mit-php5-4-und-mysql5-6-auf-dem-raspberry-pi/",
"publishedAt": "2025-08-03T11:33:55.000Z",
"site": "at://did:plc:gebrjai724nigboonkb4mmd5/site.standard.publication/3mmc6qisz6tep",
"tags": [
"alter webserver",
"anleitung",
"blog",
"cgi-bin",
"debian",
"docker",
"docker-compose",
"FediBlog"
],
"textContent": "Ich möchte ich euch eine Lösung Vorstellen die ich mir zusammengestellt habe um auf einem Raspberry Pi einen alten Server mit PHP5.4 und MySQL5.6 (kompatible) Datenbank in Docker zu installieren. Der Stand dieser beiden Programme ist natürlich komplett veraltet und sollte deshalb mit bedacht eingesetzt werden. Bei mir läuft so ein System im Heimnetzwerk, weil ich eine alte Webanwendung habe die auf aktuellen PHP & MySQL Versionen nicht läuft. Bei mir liegt alles unter /volume1/docker – als erstes brauchen wir folgende Unterordner: sudo mkdir /volume1/docker/altewebseite1 sudo mkdir /volume1/docker/altewebseite1/php sudo mkdir /volume1/docker/altewebseite1/php/cert sudo mkdir /volume1/docker/altewebseite1/www sudo mkdir /volume1/docker/altewebseite1/cgi-bin Dann wechseln wir in das Hauptverzeichnis und ordnen die Ordnern www und cgi-bin noch dem www-data Benutzer zu cd /volume1/docker/altewebseite1 sudo chown -R www-data:www-data www sudo chown -R www-data:www-data cgi-bin Jetzt erstellen wir die docker-compose.yml Datei sudo nano docker-compose.yml version: '2' services: # PHP & Apache Service web: build: context: ./php container_name: php54_1_web ports: - \"8580:80\" - \"5443:443\" volumes: - /volume1/docker/altewebseite1/www:/var/www/html/ - /volume1/docker/altewebseite1/cgi-bin:/var/www/cgi-bin - /volume1/docker/altewebseite1/php/certs/apache-selfsigned.crt:/etc/ssl/certs/apache-selfsigned.crt - /volume1/docker/altewebseite1/php/certs/apache-selfsigned.key:/etc/ssl/private/apache-selfsigned.key depends_on: - db networks: - app-network # MariaDB Service db: image: mariadb:10.3 container_name: php54_1_mysql restart: always ports: - \"3306:3306\" volumes: - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: \"ROOT_PASSWORT_AENDERN\" MYSQL_DATABASE: \"altewebseite1_db\" MYSQL_USER: \"altewebseite1\" MYSQL_PASSWORD: \"MYSQL_PASSWORT_AENDERN\" # Diese Zeile anfügen, um die \"Regeln\" zu lockern: command: --sql_mode='NO_ENGINE_SUBSTITUTION' networks: - app-network # phpMyAdmin Service phpmyadmin: image: phpmyadmin:5.2.1-apache container_name: php54_1_phpmyadmin restart: always ports: - \"8581:80\" environment: PMA_HOST: db UPLOAD_LIMIT: 256M depends_on: - db networks: - app-network ftp: image: delfer/alpine-ftp-server container_name: php54_ftp ports: - \"21:21\" - \"30000-30009:30000-30009\" volumes: # Passe die Pfade an das neue Home-Verzeichnis an - /volume1/docker/altewebseite1/www:/home/altserver1/www - /volume1/docker/altewebseite1/cgi-bin:/home/altserver1/cgi-bin environment: # Die Konfiguration ist hier etwas anders USERS: \"altserver1|bg8dQnhU!xsMWjvc!c7hyb|/home/altserver1\" # Ändere das Passwort hier ADDRESS: \"0.0.0.0\" # Auf allen Netzwerkinterfaces lauschen PASV_ADDRESS: \"localhost\" # Wichtig für den passiven Modus PASV_MIN_PORT: \"30000\" PASV_MAX_PORT: \"30009\" restart: always networks: - app-network networks: app-network: driver: bridge volumes: db_data: Beachtet, dass der Host für die MySQL Datenbank nicht localhost sondern db ist. Das müsst ihr in euren Scripten dann anpassen. Als nächstes den Apache konfigurieren sudo nano php/000-default.conf ServerAdmin webmaster@localhost DocumentRoot /var/www/html ScriptAlias /cgi-bin/ /var/www/cgi-bin/ AllowOverride None Options +ExecCGI -Indexes Require all granted AddHandler cgi-script .cgi .pl Options Indexes FollowSymLinks AllowOverride All Require all granted ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key ScriptAlias /cgi-bin/ /var/www/cgi-bin/ AllowOverride None Options +ExecCGI -Indexes Require all granted AddHandler cgi-script .cgi .pl Options Indexes FollowSymLinks AllowOverride All Require all granted ErrorLog ${APACHE_LOG_DIR}/error_ssl.log CustomLog ${APACHE_LOG_DIR}/access_ssl.log combined sudo nano php/apache-servername.conf ServerName localhost Ich habe in den PHP Option die einstellung short_open_tag auf an gestellt – das bewirkt, dass im code auch funktioniert statt nur – ich habe gemerkt, dass einige alte Scripte oft nur",
"title": "Server mit PHP5.4 und MySQL5.6 auf dem Raspberry Pi",
"updatedAt": "2026-06-02T07:20:38.000Z"
}