Symlinks für TYPO3 nutzen 
Irgendwie scheint es, dass das Thema Symlinks und TYPO3 zwar oft angesprochen und wohl auch benutzt wird, jedoch rar dokumentiert ist. So kam es, dass sich Rico, der Apache- und Symlink-Gott (
), und ich uns rangesetzt haben, und aus unserem wachsenden Wissen bzw. diversen Ressourcen es geschafft haben, mehrere TYPO3-Installation mit nur einer TYPO3-Source laufen zu lassen.
Folgend nun eine kleine Anleitung, wie man Symlinks nutzt, und was es zu beachten gilt.
I. Der TYPO3-Source
Der TYPO3-Source soll ja für jede einzelne TYPO3-Installation nutzbar sein, muss also an einem zentralen Ort gespeichert werden, auf den alle Vhosts zugreifen können. In unserem Fall ist das /typosource/ direkt im root des Apache-Servers, in dem sich das Verzeichnis der jeweils aktuellen TYPO3-Version befindet, in dem Fall /typo3_src-4.1.3/. Später wird von allen TYPO3-Instanzen dorthin ge”symlinkt”, um den Source zu nutzen.
In diesem Verzeichnis sind keine weiteren Anpassungen notwendig, daher lassen wir das Verzeichnis nun ruhen.
II. Den VHost mit der TYPO3-(Dummy-)Instanz aufsetzen
Das TYPO3-Dummypaket wird nun in den erstellten neuen VHost kopiert (welcher Pfad das ist, hängt vom Provider ab). Die Dateien, die wir hochladen bzw. auf dem Server entpacken und nutzen werden, sind folgende:
- fileadmin
- typo3conf
- typo3temp
- uploads
- _.htaccess
- clear.gif
III. Die Symlinks setzen
Jetzt setzen wir die Symlinks vom typosource-Verzeichnis in das Vhost httpdocs-Verzeichnis. Mit Putty und Midnight Commander ist das mit einer grafischen Oberfläche recht einfach. Wer die Kommandozeile bevorzugt, nutzt den Befehl ln -s.
Folgende Symlinks werden im typosource-Verzeichnis gesetzt (das Symlink-Ziel (=>) befindet sich im httpdocs-Verzeichnis im Vhost):
/typosource/typo3_src-4.1.3/index.php => index.php
1 | ln -s /typosource/typo3_src-4.1.3/index.php index.php |
/typosource/typo3_src-4.1.3 => typo3_src
1 | ln -s /typosource/typo3_src-4.1.3 typo3_src |
Folgende Symlinks werden im httpdocs-Verzeichnis gesetzt (das Symlink-Ziel (=>) befindet sich im typosource-Verzeichnis):
typo3_src/t3lib => t3lib
1 | ln -s typo3_src/t3lib t3lib |
typo3_src/typo3 => typo3
1 | ln -s typo3_src/typo3 typo3 |
III. Rechte und Gruppen zuweisen
Gemäß einer normalen TYPO3-Installation setzen wir nun die Rechte einiger Ordner, damit sie von TYPO3 beschreibbar sind.
1 | chmod -R 777 fileadmin typo3conf uploads typo3temp |
Symlinks benötigen zudem bestimmte Gruppen-Rechte und -zugehörigkeitten, um zu funktionieren bzw. aufgelöst werden zu können. Dazu setzen wir die Gruppenzugehörigkeit auf wwwrun, das ist der Apache, der schließlich den Symlinks folgen soll. Die Gruppen-Rechte im httpdocs-Verzeichnis setzen wir mit:
1 | chown -R wwwrun:psacln * |
IV. Nachbetrachtung: open_basedir und vhost.conf Skeletons
Damit die Symlinks auch Zugriff auf alle benötigten Verzeichnisse haben (die Symlinks linken schließlich fast über den gesamten Server), ist es mitunter nötig, für jeden Vhost die open_basedir Variable neu zu setzen (abhängig vom open_basedir Wert in der php.ini). Dazu empfiehlt sich eine vhost.conf im conf-Verzeichnis /srv/www/vhosts/domain.de/conf/. Damit man diese nicht jedes Mal neu erstellen muss, wenn man einen Vhost anlegt, gibt es die Möglichkeiten der Skeletons, womit man eine Art vhost.conf-Maske nutzen kann, die automatisch gefüllt wird, sobald ein neuer Vhost erstellt wird.
Eine solche Datei erstellt man im Verzeichnis /srv/www/vhosts/.skel/0/conf/. Der Name der Datei ist identisch mit der, die wir automatisch für jeden Vhost erstellen lassen wollen, also vhost.conf. Als Inhalt kommt hinein:
1 2 3 | <Directory /srv/www/vhosts/@domain_name@/httpdocs> php_admin_value open_basedir "/srv/www/vhosts/@domain_name@/httpdocs:/tmp:/typosource" </Directory> |
Der Platzhalter @domain_name@ wird automatisch mit der Adresse des neu angelegten Vhosts ersetzt, womit wir darin also nicht mehr Hand anlegen müssen.
Bei jedem Anlegen eines neuen Vhosts sucht dann der Apache, ob eine vhost.conf vorhanden ist, und inkludiert diese automatisch in die httpd.include. So müssen wir die Änderungen nicht global für den ganzen Server durchführen, sondern können für jeden Vhost seperat Einstellungen und Werte ändern.
Damit die Änderungen übernommen werden, starten wir den Apache neu:
1 | rcapache2 restart |
V. Nachbetrachtung: Mögliche Probleme beim Datei-Upload im TYPO3-BE
Nachdem auf Symlinks umgestellt wurde, kann es u.U. sein, dass der Dateiupload im TYPO3-Backend nicht mehr funktioniert. Als Resultat erscheint dann die Fehlermeldung:
The uploaded file did not exist
Das liegt vermutlich daran, dass die Variable upload_tmp_dir leer ist, obwohl es vorher funktionierte. Dann einfach der Variable in der php.ini den Wert /tmp zuweisen, und den Apache neu starten.
Über den Autor
Dieser Beitrag wurde von Oliver Schlöbe verfasst. Er arbeitet als Web- und (TYPO3-)-Entwickler, schreibt redaktionell über Windows Vista/ Windows 7, ist aktives Mitglied bzw. Administrator oder Moderator in diversen Webforen, darunter die TYPO3- und WordPress-Communities, und sammelt seine bisherigen Erweiterungen für diverse Systeme unter http://extend.schloebe.de/Bei Fragen nutzen Sie die Kommentare oder wenden Sie sich an info@typo3.schloebe.de.
Weitere Beiträge von Oliver Schlöbe.
Über diesen Eintrag
Sie lesen gerade “Symlinks für TYPO3 nutzen,” einen Eintrag auf typo3.schloebe.de
- Veröffentlicht:
- 27.11.07
- Angesehen:
- 10.524 mal
- Drucken:
- Diesen Eintrag drucken



6 Kommentare
Zu den Kommentaren springen | Kommentare RSS | Trackback URL