Diese Anleitung beschreibt die Einrichtung einer lokalen Web-Entwicklungsumgebung auf dem eigenen Mac. Sie beinhaltet auch die Installation von Komponenten, die für TYPO3 benötigt werden (z.B. Graphicsmagick).
Am Ende dieser Seite habe ich die verschiedenen Quellen für diese Sammlung notiert.
Das Programm selbst benötigt man möglicherweise nicht, aber es bringt einige nützliche Bibliotheken und Tools mit, z.B. git.
Xcode kann kostenlos im App Store heruntergeladen werden. Nach der Installation muss noch die Lizenz akzeptiert werden, wahlweise bei einem Programmstart oder über die Kommandozeile (xcodebuild -license
).
Homebrew ist eine praktische Paketverwaltung, mit der viele Programme einfach installiert und aktualisiert werden können.
Installation über das Terminal:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Mit diesem Domain Name System (DNS) können unsere localhost-Websites mit praktischen Domains aufgerufen werden, z.B. http://kunde1.test/.
Die folgenden Befehle installieren das Programm, erstellen benötigte Ordner und verweisen alle Anfragen zur .test Top Level Domain zu unserem localhost.
Terminal:
brew install dnsmasq cd $(brew --prefix) mkdir etc echo 'address=/.test/127.0.0.1' > etc/dnsmasq.conf sudo cp -v $(brew --prefix dnsmasq)/homebrew.mxcl.dnsmasq.plist /Library/LaunchDaemons sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist sudo mkdir /etc/resolver sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/test'
Früher habe ich hier noch die .dev Domain verwendet. Google erzwingt aber in Chrome seit kurzem HSTS für diese Domain, daher bin ich jetzt auf .test umgestiegen.
Wo die Websites lokal gespeichert werden, bleibt jedem selbst überlassen. Ich gehe hier von einem Ordner /www
direkt auf der Macintosh HD aus. Die Ordnerstruktur darin sieht folgendermaßen aus:
www/ sites/ kunde1/ assets/ *für Quelldateien und andere Dokumente* wwwroot/ *beinhaltet die eigentliche Website* kunde2/ assets/ wwwroot/ index.php typo3/ typo3_src/ [etc] phpmyadmin/ *wird weiter unten eingerichtet*
Wer es anders einrichtet muss daran denken, einige Pfade aus dieser Anleitung anzupassen, z.B. in der httpd-vhosts.conf
!
OS X beinhaltet bereits eine PHP-Version. Ich verwende aber lieber eine eigene Version, die ich über Homebrew installiere.
Terminal:
brew tap homebrew/dupes brew tap homebrew/versions brew tap homebrew/homebrew-php brew install php56
Im Anschluss installiere ich direkt GraphicsMagick, was von TYPO3 zur Bildbearbeitung benötigt wird:
brew install php56-gmagick
Speicherort: /usr/local/etc/php/5.6/php.ini
Zentrale Konfigurationsdatei für PHP. Folgende Anpassungen sind empfohlen, besonders in Hinblick auf die Verwendung von TYPO3:
max_execution_time = 240 always_populate_raw_post_data = -1 max_input_vars = 1500 upload_max_filesize = 10M post_max_size = 10M
OS X bringt auch schon einen Apache mit – dieser muss für unsere Zwecke nur noch etwas angepasst werden.
Apache starten (Terminal):
sudo apachectl start
Speicherort: /private/etc/apache2/httpd.conf
Die Apache-Konfigurationsdatei. Folgende Zeilen müssen mit #
auskommentiert werden:
<Directory /> AllowOverride none Require all denied </Directory>
Diese Zeilen müssen aktiviert bzw. hinzugefügt werden:
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so Include /private/etc/apache2/extra/httpd-vhosts.conf
Zudem wird mit dieser Zeile das eben installierte PHP-Modul geladen:
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
Der LoadModule-Eintrag für PHP kann nicht an das Ende der Datei geschrieben werden, sondern muss zu den anderen LoadModule-Einträgen. Sonst wird PHP nicht geladen!
Für die TYPO3-Extension realurl
aktivieren wir gleich noch das Modul für die Rewrite-Regeln:
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
Default-User und -Gruppe des Apache ist _www
. Um keine Probleme mit Zugriffsrechten zu bekommen, setzen wir uns stattdessen einfach selbst ein:
# User _www # Group _www User myusername Group staff
Speicherort: /private/etc/apache2/extra/httpd-vhosts.conf
Ergänzende Konfigurationsdatei. Der Inhalt der bereits vorhandenen Datei kann komplett auskommentiert oder gelöscht werden. Hinein gehört dies:
<Directory "/www"> Options Indexes MultiViews FollowSymLinks AllowOverride All Require all granted </Directory> <Virtualhost *:80> VirtualDocumentRoot "/www/sites/%1/wwwroot" ServerName sites.test ServerAlias *.test UseCanonicalName Off </Virtualhost>
Im Zusammenspiel mit dem weiter oben installierten dnsmasq sorgt diese Konfiguration dafür, dass jede Website, die im Ordner /www/sites/
liegt und die Struktur /kundenname/wwwroot
besitzt, mit der URL http://kundenname.test/ aufgerufen werden kann. Ergänzungen für neue Websites sind so unnötig.
Anschließend muss der Apache im Terminal neu gestartet werden:
sudo apachectl restart
Das access_log und error_log des Apache liegen in folgendem Ordner:
/private/var/log/apache2/
Zuerst wird MySQL per Homebrew installiert, danach der „MySQL 2002 (HY000) Socket Error“ behoben.
Terminal:
brew install mysql sudo mkdir /var/mysql sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
Nun werden mit diesem Befehl Sicherheitseinstellungen vorgenommen, z.B. indem ein Passwort für den Root-Account von MySQL vergeben wird.
Terminal:
mysql_secure_installation
Danach sorgen wir noch dafür, dass MySQL nach einem Neustart automatisch gestartet wird:
Terminal:
ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Anschließend wird die Default-Konfiguration von MySQL an neue Stelle kopiert und umbenannt.
Terminal:
sudo mkdir /etc/mysql sudo cp -v $(brew --prefix mysql)/support-files/my-default.cnf /etc/mysql/my.cnf
Speicherort: /etc/mysql/my.cnf
Die folgenden Einstellungen in der my.cnf sind z.B. für TYPO3 wichtig. Es darf kein sql_mode
gesetzt sein!
innodb_buffer_pool_size = 128M sql_mode=
phpMyAdmin kann von der offiziellen Website heruntergeladen werden; das englische ZIP-Archiv ist voll ausreichend. Das ZIP entpacken und die Inhalte in folgenden Ordner verschieben: /www/sites/phpmyadmin/wwwroot/
Anschließend wird ein Ordner für die Konfiguration erstellt und die nötigen Rechte zugewiesen.
Terminal:
mkdir /www/sites/phpmyadmin/wwwroot/config chmod o+w /www/sites/phpmyadmin/wwwroot/config
Im Browser nun http://phpmyadmin.test/setup/ öffnen.
root
eintragen, falls nicht schon vorhanden
Dies erstellt eine config.inc.php im config
-Ordner von phpMyAdmin. Diese Datei wird direkt in den Ordner wwwroot
von phpMyAdmin verschoben. Danach kann der config
-Ordner gelöscht werden.
Das wars schon. Nun ist phpMyAdmin unter http://phpmyadmin.test/ erreichbar; mit den hinterlegten Zugangsdaten kann man sich einloggen und seine Datenbanken anlegen und verwalten.
Mit Hilfe von Postfix wird es möglich, lokal E-Mails z.B. von Kontaktformularen versenden zu lassen. (eine Internetverbindung ist weiterhin erforderlich!). Postfix ist unter OS X bereits installiert und muss nur konfiguriert werden.
Die folgenden Einstellungen gelten für die Nutzung eines GMX-Accounts und können für andere Mail-Anbieter angepasst werden.
Speicherort: /etc/postfix/main.cf
Prüfe zuerst, ob die folgenden Zeilen so enthalten sind:
mail_owner = _postfix setgid_group = _postdrop
Anschließend müssen die folgenden Zeilen am Ende der Datei hinzugefügt werden:
# GMX SMTP: relayhost=mail.gmx.net:587 # SASL-Authentifizierung im Postfix SMTP-Client aktivieren: smtp_sasl_auth_enable=yes smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd smtp_sasl_security_options=noanonymous smtp_sasl_mechanism_filter=plain # TLS/SSL-Verschlüsselung aktivieren: smtp_use_tls=yes smtp_tls_security_level=encrypt tls_random_source=dev:/dev/urandom # Umschreiben der lokalen E-Mail-Adresse, damit der Provider sie akzeptiert: sender_canonical_maps = hash:/etc/postfix/sender_canonical # TLS-Verschlüsselung für den GMX-SMTP aktivieren: smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
Nun müssen die zuvor angegebenen Dateien natürlich auch erstellt werden.
mail.gmx.net:587 deineAdresse@gmx.de:DeinPasswort
myusername deineAdresse@gmx.net root deineAdresse@gmx.net staff deineAdresse@gmx.net
mail.gmx.net:587 encrypt
Diese neuen Dateien müssen nun noch in das Postfix-Datenbankformat gebracht werden.
Terminal:
sudo postmap /etc/postfix/sasl_passwd sudo postmap /etc/postfix/sender_canonical sudo postmap /etc/postfix/tls_policy
Zuletzt wird Postfix neu gestartet, damit die neuen Einstellungen übernommen werden.
Terminal:
sudo postfix reload // oder das erste Mal gestartet: sudo postfix start
Ob die Einstellungen erfolgreich waren, kann man mit diesem Befehl testen. Er versendet eine E-Mail an eine beliebige E-Mail-Adresse mit dem Betreff „Testversand“ und dem aktuellen Zeitstempel als Text.
Terminal:
date | mail -s Testversand beliebigeAdresse@example.org
Damit TYPO3 E-Mails versenden kann, muss im Install Tool unter [MAIL][defaultMailFromAddress]
die in Postfix eingerichtete Adresse hinterlegt werden.
Zuerst: Cron aktivieren. Ggf. muss anschließend der Rechner neugestartet werden.
Terminal:
sudo touch /etc/crontab
Um Cronjobs hinzuzufügen, wird die Datei .crontab
editiert. Wer auf den Standard-Editor vim verzichten mag, stellt vorher auf einen anderen Editor, z.B. nano, um.
Terminal:
export EDITOR=nano crontab -e
Der folgende Befehl führt z.B. den Scheduler von TYPO3 alle 5 Minuten aus:
*/5 * * * * /www/sites/kunde1/wwwroot/typo3/cli_dispatch.phpsh scheduler
Man kann Cronjobs deaktivieren, in dem man am Anfang der entsprechenden Zeile ein #
notiert.
Dies basiert zuallererst auf der Anleitung von Chris Mallinson, mit Ergänzungen von coolestguidesontheplanet.com.
Dazu kommt die Postfix-Anleitung von Ander Ustarroz sowie der Cronjob-Beitrag von wakatara.com.
Der Rest entstammt den Manuals der installierten Programme und diversen Stack Overflow-Topics.