Das Problem
Momentan arbeite ich gerade an der Migration unseres Immobilienprojekts von D7 auf D8. Ich habe mich -wieder einmal- für das Acquia Lightning Profil entschieden. Und das obwohl man immer wider Steine aus dem Weg räumen muss, wenn man mit Lightning arbeitet.
Das letzte große Ärgernis betraf das Updaten von Lightning. Da haben sie mal eben so einges geändert und das updaten ging nicht - VOR ALLEM ging das Updaten nicht mit einer Acquia-Installation von Drupal. Daher bin ich nun dazu übergegangen, eine Standard-Lightning Installation auf Acquia zu schieben. Aber wer weiss - dachte ich- vielleicht sind die Dateien mittlerweile ja gleich bei einer Installation über Acquia und ich versuchte spasseshalber den "Install Drupal" Button in meiner DEV Umgebung.
A: Die Dateien sind nicht gleich
B: Drupal lässt sich nicht installieren.
Das liegt daran, dass kein vendor Verzeichnis erstellt wird... Hallo WSOD. Acquia hat dazu natürlich etwas zu sagen, nämlich A: Dass Sie davon abraten, das life development anzuschalten und composer install auszuführen und B:dass man das lokal machen soll und das vendor Verzeichnis pusht. fein, nun arbeite ich allerdings mit dem Dev Desktop und wenn Du eine Drupal distri über Acquia installierst, löscht er die DB und du kannst erst deine Site über das DEV Desktop importieren, wenn die Seite installiert ist, was (siehe B) nicht funktioniert.
Die Lösung
Nun hat man zwei Möglichkeiten, nämlich A: man cloned das GIT repo oder B: man installiert irgendetwas, das sich installieren lässt und zieht sich die Site mit dem Dev Desktop.
Da ich noch ein Repository mit einer 2 irgendetwasversion von lightning im git hatte, habe ich kurzerhand diese installiert und mir die site über das DD gezogen. Lokal habe ich die Installation von Lightning 3.1.5 (die Acquiaversion, die als Tag angelegt wurde) als branch ausgecheckt. Dann habe ich Lightning lokal in einem anderen ordner installiert. Das geht wie folgt (taken from Lightning gitHub):
$ composer create-project acquia/lightning-project MY_PROJECT
Falls Du das bei einem Provider installieren magst, der es nicht erlaubt, das vendor Verzeichnis ausserhalb des docroots zu haben, musst Du wie folgt installieren:
$ composer create-project acquia/lightning-project MY_PROJECT --no-install $ composer config vendor-dir docroot/vendor $ cd MY_PROJECT $ composer install
So -nun haben wir eine -hoffentlich funktionierende, lokale Lightning Distri. Diese Dateien kopieren wir nun in das Repository von Acquia. Aber langsam, denn man stellt fest, dass der Code, den das composer create generiert nicht dem von Acquia entspricht. Daher habe ich mich entschieden, zuerst einmal zu diffen.
Zum Beispiel sind die -auch eigentlich eher unwichtigen- Dateien, wie LICENSE.txt, README.txt etc. weggelassen worden. Ebenfalls gibt es in der lokalen Distri keine composer.json im docroot Verzeichnis. Weiterhin sind noch einige Files anders. Nun habe ich meine lightning-acquia branch gesplittet in eine branch, die ich lightning-locally nannte. In diese habe ich dann die lokale distri kopiert und die files geaddet/committed. Beim Kopieren habe ich den Ordner sites wegen dem Dev Desktop nicht überschrieben (das bedeutet: nicht einfach "docroot" rüberkopieren, sondern in docroot die lokalen distri files kopieren und sites auslassen, oder die settings.php anpassen für Acquia). Nicht vergessen, die versteckte Datei .travis.yml mitzukopieren. die .gitignore habe ich nicht kopiert.
In der Zwischenzeit habe ich auf meiner STAGE das "install Drupal" Knöpfchen gedrückt, um eine leere DB zu bekommen. Auf DEV durfte ich nach einigen Versuchen, Ligthning über Acquia zu installieren schon nicht mehr installieren :-D
Diese DB habe ich dann in DEV kopiert, welche ich für meine weiteren Installationstests nutze.
Soweit, so gut, ich habe dann mal meine DEV Environment auf die composer-locally branch gesetzt und einen Installationsversuch gestartet. Siehe da: es funktioniert.
Grüße,
Lars
Meine .gitignore im root
Tataa:
# Ignore binaries. /bin # Ignore PHPStorm .idea/* # Ignore paths that contain user-generated content. docroot/files docroot/sites/*/files docroot/sites/*/private # Ignore Composer-managed dependencies. # vendor brauche ich auch auf Acquia #######vendor/ /console /drush npm-debug.log # Ignore configuration files that may contain sensitive information. docroot/sites/*/settings.local.php docroot/sites/sites.local.php docroot/sites/development.services.yml docroot/sites/default/sync