Drupal Installieren
Als erstes muss man sich entscheiden, ob man nur Drupal Core installiert und alle Module selber zusammenstellt, oder ob man eine fixfertig vorkonfigurierte Distribution verwendet.
Für mein aktuelles Projekt hab ich mich für den Drupal Core entschieden.
Vorbereitungen
- PHP register globals muss ausgeschaltet sein (register_globals = Off).
- Die PHP Extension pdo und pdo-mysql (sofern du MySQL benutzt – sonst die entsprechende Extension wählen) muss installiert sein.
Installation
Gewünschte Distribution oder Drupal Core runterladen und Installationsprozess ausführen.
Multisite Installation
Man kann für verschiedene Projekte eine einzige Drupal Installation benutzen. Das hat den Vorteil, dass man bei Updates nur 1x den Update Prozess durchlaufen muss – und nicht 10x wenn man 10 verschiedene Drupal Installationen hat.
Wichtig dabei zu beachten ist, dass man dies nur machen sollte, wenn die Projekte dieselben Module benötigen. Spezialprojekte sollten weiterhin separat installiert werden.
Die Original und Detailierte Anleitung von Drupal für Multisite Installationen ist hier zu finden.
Vorgehen
- Drupal ganz normal installieren
- Sites einrichten:
cd sites/ mkdir example.com cp default/default.settings.php example.com/settings.php
Die Site-Spezifischen Files gehören dann hier hin:
sites/example.com/settings.php sites/example.com/themes/custom_theme sites/example.com/modules/custom_module
Danach einfach die entsprechenden Domains aufrufen (example1.com, example2.com, etc) und jede Installation einzeln ausführen.
Die Module, die man für alle Domains zur Verfügung stellen möchte, kommen in das Verzeichnis:
sites/all/modules
Updates
Auch wenn man Multisites hat, müsste man nach einem Modul Update (also einfach das aktualisieren des einzelnen Module – Folders) für jede einzelne Seite das update.php ausführen.
Die Updates lassen sich aber auch einfacher und schneller über die Command Line durchführen. Dazu einfach das Tool drush verwenden.
Installation unter Freebsd:
cd /usr/ports/www/drush make install clean
Mehrsprachige Seite gestalten
Hier die Anleitung für mehrsprachigen Content auf einer Drupal Seite.
Weitere Infos: https://drupal-translation.com/content/setup-multilingual-site
Module
Diese Module sollten in keiner Installation fehlen:
- Views
eins der wichtigsten Module überhaupt – denn Listen braucht man eigentlich immer. Weitere Infos… - Chaos tool suite (ctools)
wird für Views (ab Drupal 7) benötigt. - Token
Damit kann man im Text mit Placeholders arbeiten (wie z.b. [user] etc.) Dieses Modul wird jedoch auch für Pathauto benötigt. - Pathauto
ermöglicht, dass die URLs sinnvoll aussehen: /category/my-node-title statt /node/123 - Wysiwyg
(optional) ist selber kein Editor. Bei diesem Modul handelt es sich um eine Schnittstelle, damit man den gewünschten Editor benutzen kann. - Google Analytics
Fügt die nötigen Codes für Google Analytics zur Seite hinzu. - XML sitemap
Notwendig für SEO Optimierungen. - Page Title
Ebenfalls ein sinnvolles SEO Tool - Meta tags quick
SEO Optimierungen - Meta Tag
SEO Optimierungen - Administration Menu
Einfach sehr hilfreich & übersichtlicher als die default Navigation. - Backup and Migrate
Sagt bereits alles aus 🙂 - CKEditor – WYSIWYG HTML editor
Ist einfach angenehmer mit einem WYSISYG Editor zu arbeiten.
Eine Liste von Modulen, die ich mir noch genauer anschauen möchte:
Weitere Infos zu unverzichtbaren Modulen…
Themes
Themes entweder selber gestalten oder eines von vielen fertigen Designs wählen.
Konfiguration
TinyMCE
Man kann TinyMCE so konfigurieren, dass im Editor der Inhalt so dargestellt wird, wie es am Ende auch aussehen muss.
Admin > Konfiguration > Inhaltserstellung > WYSIWYG Profiles
Hier nun das gewünschte Format auswählen. Ich hab hier nur „Full HTML“ wo WYSIWYG Sinn macht.
Full HTML > Bearbeitenadmin/config/content/wysiwyg
Hier gibt es zwei Varianten:
- Site CSS & Admin CSS sind identisch
Hier unter
CSS > Editor CSS > Use Theme CSS auswählen - Site CSS & Admin CSS sind unterschiedlich
Hier unter
CSS > Editor CSS > Define CSS auswählen.
Dann unter
CSS path > Die URL zum css File des Site Themes eingeben.
Drupal Upgraden
Bei Minor Version Upgrades:
- Backup von Drupal machen (DB & Files)
- Aktuellste Version Downloaden
- Archiv extracten und UPDATE.TXT durchlesen (falls bei diesem Release spezielle Handlungen durchzuführen wären).
- Das /sites Verzeichnis bei dem soeben extracteten Archiv löschen.
- Seite in Maintenance Mode setzen (Konfiguration -> Entwicklung -> Wartungsmodus)
- Alle Dateien und Verzeichnisse der bisherigen Drupal Installtion löschen (ja, wirklich!) AUSSER dem /sites Verzeichnis sowie eventuellen Custom Dateien, die Du sonst noch hinzugefügt hast.
- Nun alle Files der aktuellsten Version (ausser dem gelöschten /sites Verzeichnis) auf den Server laden.
- Jetzt auf der Seite einloggen
- update.php ausführen (example.com/update.php)
- Maintenance Modus wieder deaktivieren.
Für weitere Infos:
Eigene Distribution erstellen
Hat man Drupal einmal wie gewünscht installiert & konfiguriert, kann man sich für zukünftige Installationen viel Arbeit ersparen, indem man entweder eine eigene Distribution erstellt, oder z.B. Module wie Features verwendet.
Diverses Tipps
Login Formular wird nicht angezeigt.
Wenn man sich unter domain.ch/admin einloggen möchte, kommt lediglich „Zugriff verweigert“ aber man kann sich nicht einloggen. Um Loginformular sichtbar zu machen, folgende URL aufrufen:
https://domain.ch/?q=user
Man kann das Login Formular auch dauerhaft zusammen mit der „Zugriff verweigert“ Seite anzeigen lassen. Dazu einfach wie folgt vorgehen:
- Erstelle eine „Zugriff verweigert“ Seite.
node/add/page
- Nun folgenden Text einfügen: „Sie haben keine Zugriffsberechtigung für diese Seite. Bitte nutzen Sie das Login Formular. Falls Sie das Login Formular nicht sehen können, sind Sie bereits eingeloggt, haben jedoch keine ausreichende Berechtigung, diese Seite zu öffnen.“
- Speichere nun diese Seite
- Kopiere nun die URL der Seite. In meinem Fall ist dies
content/zugriff-verweigert
- Gehe nun Struktur > Blöcke (
admin/structure/block
) und verschiebe den Block „Benutzeranmeldung“ zum „Inhalt“. Danach speichern. - Nun den Block „Benutzeranmeldung“ Konfigurieren. Bei den Sichtbarkeitseinstellungen unter „Diesen Block nur auf den aufgelisteten Seiten anzeigen “ > „Nur die aufgelisteten Seiten“ auswählen. Und hier die URL einfügen, die wir vorher kopiert haben. In meinem Beispiel ist es
content/zugriff-verweigert
- Nun gehen wir nach Konfiguration > System > Website-Informationen (
admin/config/system/site-information
) und dort bei der 403 Fehlerseite geben wir nun wieder den Pfad zur Seite ein.content/zugriff-verweigert
und speichern. - Nun testen ob’s klappt. Also ausloggen und z.B. Admin Seite aufrufen. Nun sollte das Loginformular erscheinen. domain.com/admin
Registry Rebuild
Nach Updates, manuellen Folder Umbenennungen etc. kann es manchmal zu solchen Fehlermeldungen kommen, dass man nicht einmal mehr update.php ausführen kann. Das ist oft der Fall, wenn man z.B. bei Multidomain Sites einen Subdomain wechselt/umbenannt hat und dann die Pfade nicht mehr mit denen überein stimmen, die in der Datenbank gespeichert sind.
Hier hilft das Tool Registry Rebuild. Weitere Infos dazu auf der Projekt Page.
Wenn man noch die Upload Verzeichnisse geändert hat, hilft noch diese Mysql Query:
UPDATE files SET filepath = REPLACE(filepath,'path/to/search','path/to/replace');
Fehler nach dem Ändern von DOCUMENT ROOT
Wenn man Drupal in ein neues Verzeichnis auf dem Server verschiebt, kommt es zu Problemen und Fehlermeldungen. Wie z.B.
Fatal error: require_once(): Failed opening required '/www/sitename.com/doc/includes/database/query.inc' (include_path='.:/www/server/SH_includes/_PEAR/share/pear:/www/server/SH_includes') in /www/sitename.com/doc/includes/database/select.inc on line 8
Nachdem das Web am neuen Ort ist, ist es wichtig, folgende Schritte durchzuführen:
1) PHP restart – das ist sehr wichtig, denn PHP scheint die alten Verzeichnisstrukturen in gewissen Fällen zu cachen
/usr/local/etc/rc.d/php-fpm restart
2) Cache löschen (mit drush)
drush -l https://www.sitename.com -r /www/sitename.com/drupal cache-clear
3) Registry Rebuild – am besten ebenfalls über die Shell ausführen.
cd sites/all/modules/registry_rebuild php registry_rebuild.php
Nun sollte die Site wieder fehlerfrei laufen.
Fehler: Trying to get property of non-object in locale_language_url_fallback()
Nach einem Settings Import kann es zu diesem Fehler kommen:
Notice: Trying to get property of non-object in locale_language_url_fallback() (line 347 of /www/sitename.com/drupal/includes/locale.inc).
Das betrifft vorallem Sites mit mehrsprachigem Inhalt. Wenn man im File locale.inc auf Zeile 347 nachschaut, sieht man, dass er versucht die default Language auszugeben:
return $default->language;
anscheinend wurde diese jedoch nicht gesetzt.
Lösung
Im Admin unter
admin/config/regional/language
muss eine „Standard“ Sprache ausgewählt sein!
Und nach dem Ändern der Standard Sprache dran denken, den Cache zu löschen!
PHP Notice Meldungen abschalten
Entweder im php.ini
error_reporting = E_ALL & ~E_NOTICE
Oder im File sites/default/settings.php folgende Zeile einfügen
ini_set('error_reporting', E_ALL & ~E_NOTICE);
Alternativ auch per .htaccess
php_value error_reporting 6135