Benutzer-Werkzeuge

Webseiten-Werkzeuge


tools:local-dev-yosemite

Lokale Entwicklungsumgebung unter Mac OS X Yosemite (10.10)

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.

1. Xcode

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).


2. Homebrew

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)"

3. dnsmasq

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.


4. Root-Verzeichnis

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!


5. PHP

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

GraphicsMagick

Im Anschluss installiere ich direkt GraphicsMagick, was von TYPO3 zur Bildbearbeitung benötigt wird:

brew install php56-gmagick

PHP.ini

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

6. Apache HTTP Server

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

httpd.conf

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

httpd-vhosts.conf

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

Logfiles

Das access_log und error_log des Apache liegen in folgendem Ordner:
/private/var/log/apache2/


7. MySQL

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

my.cnf

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=

8. phpMyAdmin

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.

  • Den Button „New server“ anklicken
  • Direkt in den Reiter „Authentication“ wechseln
    • dort als User for config auth root eintragen, falls nicht schon vorhanden
    • als Password for config auth das Passwort eingeben, welches bei der Installation von MySQL vergeben wurde
    • Unten auf „Apply“ klicken
  • Zurück im Overview, muss auch hier noch einmal der Button „Save“ betätigt werden.

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.


9. E-Mail-Versand

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.

main.cf

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.

sasl_passwd

mail.gmx.net:587 deineAdresse@gmx.de:DeinPasswort

sender_canonical

myusername deineAdresse@gmx.net
root deineAdresse@gmx.net
staff deineAdresse@gmx.net

tls_policy

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

Testversand

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

TYPO3

Damit TYPO3 E-Mails versenden kann, muss im Install Tool unter [MAIL][defaultMailFromAddress] die in Postfix eingerichtete Adresse hinterlegt werden.


10. Cronjobs

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.


Quellen

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.

tools/local-dev-yosemite.txt · Zuletzt geändert: 2017/12/16 14:32 von admin