drupal 8, thunder, commerce
am 05.01.2019 - 18:33 Uhr in
Hallo Drupalis,
kann mir mal jemand auf die Sprünge helfen?
Ich blick da nicht mehr durch...
Ich möchte die aktuelle Drupal 8 Version installieren, sowie Commerce 2 und Thunder.
Es gibt da ein komplettes Paket, das aber auf Drupal 7 abgestimmt ist.
Meine Schritte auf Windows 10:
1. Git installiert
2. XAMPP installiert
3. XAMPP C:\xampp\php\php.ini angepasst
; drupal8
zend_extension=php_opcache.dll
opcache.enable=1
opcache.memory_consumption=64
opcache.max_wasted_percentage=5
opcache.use_cwd=1
4. Composer installiert
Verweis auf: C:\xampp\php\php.exe
5. Windows Eingabeaufforderung (Installation nach C:\xampp\htdocs):
//================================//
//========== drupal 8 ==============//
//==============================//
composer create-project drupal-composer/drupal-project:8.x-dev myProjectFolder --stability dev --no-interaction
//==================================//
//========== commerce 2 =============//
//================================//
composer create-project drupalcommerce/project-base myProjectFolder --stability dev
//==============================//
//========== thunder =============//
//=============================//
composer create-project burdamagazinorg/thunder-project myProjectFolder
//=================================//
//========== thunder: update ==========//
//===============================//
cd thunder
composer require drupal/devel:1.*
//=================================//
//========== update all ==============//
//===============================//
cd myProjectFolder
composer update
//===============================//
Ich verstehe nicht so ganz, we das jetzt funktionieren soll.
Drupal 8 läßt sich mit composer herunterladen und installieren (Ordner "web").
Die anderen Ordner im Root scheinen zu composer zu gehören:
- config
- drush
- scripts
- vendor
- web
Wenn ich jetzt z.B. Commerce 2 installieren möchte, kann ich nicht in den selben Ordner installieren wie Drupal 8.
Auch Thunder hat sehr viele dependencies (Abhängigkeiten von anderen Erweiterungen) und sollte daher mit Composer installiert werden.
Thunder scheint einige Einstellungen vornehmen zu müssen, damit es läuft...
Welche Einstellungen und wie/wo werden diese geändert?
Wo kann ich eine passende Anleitung finden?
Sollen wir nicht verstehen, wie man das installiert?
Acquia hat seine eigene Lösung zum installieren.
Nicht probiert und möchte ich auch nicht.
Mit dem Befehl "composer update" soll ja alles in Abhängigkeit auf die neuste Version geprüft werden.
Dann gibt es noch einen eigenen Befehl für die Datenbank (update).
Mal ehrlich...wieso gibt es den ganzen BUMS nicht in Drupal 8 core?
Würde mich über Hilfe freuen...
- Anmelden oder Registrieren um Kommentare zu schreiben
Drupal 8 + Composer for
am 05.01.2019 - 20:08 Uhr
Drupal 8 + Composer for Absolute Beginners
https://www.youtube.com/watch?v=oWzGJQMB23I
mal ein Anfang...
Gott war das ein
am 05.01.2019 - 21:50 Uhr
Gott war das ein Akt...
WINDWOS 10
- local install of drupal 8 + commerce 2 + thunder
- you will call most of your composer commands inside your project folder
- therefore, once xampp is installed, in windows command prompt navigate to C:\xampp\htdocs\project before running the command
//================================================//
//========== download & install xampp ===========//
//==============================================//
source: https://www.apachefriends.org/de/index.html
- make sure to install to C:\xampp
- ad the following with C:\xampp\php\php.ini
; drupal8
zend_extension=php_opcache.dll
opcache.enable=1
opcache.memory_consumption=64
opcache.max_wasted_percentage=5
opcache.use_cwd=1
-make sure this line is commented in php.ini or you might get timeout with drupal admin backend install of extensions
; max_execution_time=30
- restart xampp
//===================================================//
//========== download & install composer ===========//
//=================================================//
source: https://getcomposer.org/
//==============================================//
//========== download & install git ===========//
//============================================//
source: https://git-scm.com/downloads
//==============================================================//
//========== download drupal 8, commerce 2, thunder ===========//
//============================================================//
source: https://www.commercekickstart.com/
- unzip to: C:\xampp\htdocs\project
- use windows command prompt and...
cd C:\xampp\htdocs\project
$ composer install
- this will check the composer.json file and download everything to folder "docroot", where your drupal 8 install is hosted.
- when xampp is running, you can call url http://localhost/project/docroot
- create a database with xampp mysql in order to install
- install drupal 8 now with your new database inside your browser
- enable (install) your extensions
//============================================//
//========== thunder: admin theme ===========//
//==========================================//
- just in case...should come with download drupal 8, commerce 2, thunder
source: https://www.drupal.org/project/thunder_admin/releases/8.x-2.3
- use windows command prompt and...
$ composer require 'drupal/thunder_admin:^2.3'
- clear drupal 8 cache, in order to use the thunder admin theme for extensions
//===================================================//
//========== thunder: update dependencies ==========//
//=================================================//
- use windows command prompt and...
composer require drupal/devel:1.*
//==================================//
//========== update all ===========//
//================================//
- to update thunder, drupal or any module to the newest version, constrained by the specified version in composer.json, we will...
- use windows command prompt and...
$ composer update --with-dependencies
- do this where your project root is
- this command will check every dependency for a new version, downloads it and updates the composer.lock accordingly.
- after that you can run...
$ drush updb
- do this in the "docroot" folder to update the database of your site.
//===========================================================//
//========== drupal 8 only but managed by composer =========//
//=========================================================//
- in case you just want to install drupal 8, make sure to use a drupal version that fits composer
- windows command prompt...
$ composer create-project drupal-composer/drupal-project:8.x-dev project --stability dev --no-interaction
Ich mag es, wenn mit
am 05.01.2019 - 22:09 Uhr
Ich mag es, wenn mit Kommandozeilenbefehlen gezeigt wird, was du versucht hast. Aber ohne dir zu nahe treten zu wollen: weißt du was du da machst? Wenn du ein Composer-basiertes Projekt einrichten möchtest, kannst du nicht einfach mehrere
composer create-project
ausführen. Diesen Befehl führt man ein einziges Mal zu Beginn des Projektes aus. Zum Beispiel zum Installieren von Drupal ODER zum Installieren von Thunder.Thunder ist eine Distribution, die auf dem Drupal Core aufsetzt. Wenn du also mit Thunder ein Projekt startest ist automatisch der aktuelle Drupal Core dabei.
Wenn du zusätzlich noch Drupal Commerce für Drupal 8 dabei haben möchtest fügst du einfach das Modul und seine Abhängigkeiten mit Composer hinzu, genau wie jedes andere Modul von nun an z. B. :
composer require 'drupal/commerce:^2.11'
Danach aktivierst du einfach noch die Module die du nutzen willst und du hast Thunder und Commerce auf Drupal 8 Basis am Laufen.
Hallo, ich freue mich doch
am 06.01.2019 - 10:04 Uhr
Hallo,
ich freue mich doch über Feedback, egal ob positiv oder negativ ;) Wie sonst soll man von der Community etwas lernen.
Ich hatte vor 2 bis 3 Jahren mal den Versuch mit Drupal 8 (drush) etc. gewagt, es war aber noch alles in den Kinderschuhen (D8 templates etc.).
Also:
Ich denke, ich habe nun verstanden, wie Composer die Verwaltung der Updates übernimmt. Kurz gesagt...
Composer nutzt 2 Dateien, um die Struktur der Updates aufzubauen, damit jede Erweiterung auf ihre Abhängigkeit zu anderen Erweiterungen über die Windows Eingabeaufforderung + Composer + Git geprüft werden kann.
Da Drupal selber schon mit diesen Dateien kommt, die wir aber nicht nutzen, wird die eigentliche Drupal Installation eine Ebene Tiefer angelegt
Die Composer Befehle werde also überwiegend im root ausgeführt.
root: C:\xampp\htdocs\project
- project
- - composer.json
- - composer.lock
- - - myDrupalSite
Was ich jetzt nicht verstehe.
Wenn ich mit Commerce Kickstart eine komplette composer.json Struktur zum installieren herunterlade (Drupal 8, Commerce 2 und Thunder), dann passt alles.
Nun muss ich selber entscheiden, welche Module ich aktiviert haben möchte. ein falscher Haken kann die Seite zerschießen.
Wenn ich weitere Erweiterungen benötige, dann wird mit...
$ composer require
diese Erweiterung einfach composer.json hinzugefügt.
Wie werden denn Erweiterungen eingebunden, die sich nicht über Composer (require) installieren lassen?
Was, wenn ich eine Übersetzung für ein Modul oder eine andere Erweiterung installieren möchte?
Manuell installieren und manuell auf Updates überwachen?
Gestern habe ich einfach mal die meisten Erweiterungen im Backend aktiviert, u.a. auch die experimentellen Dinger (ich meine diese Blocks/Layout Erweiterungen waren es).
Das hat direkt mal die Seite abgeschossen. Xampp war aber durchgehend am laufen:
Additional uncaught exception thrown while handling exception.
Original
Drupal\Core\Database\DatabaseExceptionWrapper: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away: CREATE TABLE {cache_default} ( `cid` VARCHAR(255) CHARACTER SET ascii BINARY NOT NULL DEFAULT '' COMMENT 'Primary Key: Unique cache ID.', `data` LONGBLOB NULL DEFAULT NULL COMMENT 'A collection of data to cache.', `expire` INT NOT NULL DEFAULT 0 COMMENT 'A Unix timestamp indicating when the cache entry should expire, or -1 for never.', `created` DECIMAL(14, 3) NOT NULL DEFAULT 0 COMMENT 'A timestamp with millisecond precision indicating when the cache entry was created.', `serialized` SMALLINT NOT NULL DEFAULT 0 COMMENT 'A flag to indicate whether content is serialized (1) or not (0).', `tags` LONGTEXT NULL DEFAULT NULL COMMENT 'Space-separated list of cache tags for this entry.', `checksum` VARCHAR(255) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL COMMENT 'The tag invalidation checksum when this entry was saved.', PRIMARY KEY (`cid`), INDEX `expire` (`expire`), INDEX `created` (`created`) ) ENGINE = InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT 'Storage for the cache API.'; Array ( ) in Drupal\views\ViewsData->cacheSet() (line 209 of C:\xampp\htdocs\project\docroot\core\modules\views\src\ViewsData.php).
Drupal\views\ViewsData->cacheSet('views_data', Array) (Line: 257)
Drupal\views\ViewsData->getData() (Line: 160)
Drupal\views\ViewsData->get('access_token') (Line: 91)
Drupal\views\Plugin\Derivative\ViewsEntityRow->getDerivativeDefinitions(Array) (Line: 101)
Drupal\Component\Plugin\Discovery\DerivativeDiscoveryDecorator->getDerivatives(Array) (Line: 87)
Drupal\Component\Plugin\Discovery\DerivativeDiscoveryDecorator->getDefinitions() (Line: 284)
Drupal\Core\Plugin\DefaultPluginManager->findDefinitions() (Line: 175)
Drupal\Core\Plugin\DefaultPluginManager->getDefinitions() (Line: 147)
views_theme(Array, 'module', 'views', 'core/modules/views') (Line: 447)
Drupal\Core\Theme\Registry->processExtension(Array, 'views', 'module', 'views', 'core/modules/views') (Line: 334)
Drupal\Core\Theme\Registry->build() (Line: 233)
Drupal\Core\Theme\Registry->get() (Line: 86)
Drupal\Core\Utility\ThemeRegistry->initializeRegistry() (Line: 67)
Drupal\Core\Utility\ThemeRegistry->__construct('theme_registry:runtime:seven', Object, Object, Array, 1) (Line: 253)
Drupal\Core\Theme\Registry->getRuntime() (Line: 142)
Drupal\Core\Theme\ThemeManager->render('html', Array) (Line: 437)
Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 195)
Drupal\Core\Render\Renderer->render(Array, 1) (Line: 139)
Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 582)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 140)
Drupal\Core\Render\Renderer->renderRoot(Array) (Line: 66)
Drupal\Core\Render\BareHtmlPageRenderer->renderBarePage(Array, Object, 'install_page', Array) (Line: 76)
Drupal\Core\ProxyClass\Render\BareHtmlPageRenderer->renderBarePage(Array, Object, 'install_page', Array) (Line: 1067)
install_display_output(Array, Array) (Line: 167)
install_drupal(Object) (Line: 44)
Additional
Drupal\Core\Database\DatabaseExceptionWrapper: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away: CREATE TABLE {cache_default} ( `cid` VARCHAR(255) CHARACTER SET ascii BINARY NOT NULL DEFAULT '' COMMENT 'Primary Key: Unique cache ID.', `data` LONGBLOB NULL DEFAULT NULL COMMENT 'A collection of data to cache.', `expire` INT NOT NULL DEFAULT 0 COMMENT 'A Unix timestamp indicating when the cache entry should expire, or -1 for never.', `created` DECIMAL(14, 3) NOT NULL DEFAULT 0 COMMENT 'A timestamp with millisecond precision indicating when the cache entry was created.', `serialized` SMALLINT NOT NULL DEFAULT 0 COMMENT 'A flag to indicate whether content is serialized (1) or not (0).', `tags` LONGTEXT NULL DEFAULT NULL COMMENT 'Space-separated list of cache tags for this entry.', `checksum` VARCHAR(255) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL COMMENT 'The tag invalidation checksum when this entry was saved.', PRIMARY KEY (`cid`), INDEX `expire` (`expire`), INDEX `created` (`created`) ) ENGINE = InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT 'Storage for the cache API.'; Array ( ) in Drupal\views\ViewsData->cacheSet() (line 209 of C:\xampp\htdocs\project\docroot\core\modules\views\src\ViewsData.php).
Drupal\views\ViewsData->cacheSet('views_data:access_token', Array) (Line: 176)
Drupal\views\ViewsData->get('access_token') (Line: 91)
Drupal\views\Plugin\Derivative\ViewsEntityRow->getDerivativeDefinitions(Array) (Line: 101)
Drupal\Component\Plugin\Discovery\DerivativeDiscoveryDecorator->getDerivatives(Array) (Line: 87)
Drupal\Component\Plugin\Discovery\DerivativeDiscoveryDecorator->getDefinitions() (Line: 284)
Drupal\Core\Plugin\DefaultPluginManager->findDefinitions() (Line: 175)
Drupal\Core\Plugin\DefaultPluginManager->getDefinitions() (Line: 147)
views_theme(Array, 'module', 'views', 'core/modules/views') (Line: 447)
Drupal\Core\Theme\Registry->processExtension(Array, 'views', 'module', 'views', 'core/modules/views') (Line: 334)
Drupal\Core\Theme\Registry->build() (Line: 233)
Drupal\Core\Theme\Registry->get() (Line: 86)
Drupal\Core\Utility\ThemeRegistry->initializeRegistry() (Line: 67)
Drupal\Core\Utility\ThemeRegistry->__construct('theme_registry:runtime:seven', Object, Object, Array, 1) (Line: 253)
Drupal\Core\Theme\Registry->getRuntime() (Line: 142)
Drupal\Core\Theme\ThemeManager->render('html', Array) (Line: 437)
Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 195)
Drupal\Core\Render\Renderer->render(Array, 1) (Line: 139)
Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 582)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 140)
Drupal\Core\Render\Renderer->renderRoot(Array) (Line: 66)
Drupal\Core\Render\BareHtmlPageRenderer->renderBarePage(Array, 'Error', 'install_page', Array) (Line: 76)
Drupal\Core\ProxyClass\Render\BareHtmlPageRenderer->renderBarePage(Array, 'Error', 'install_page', Array) (Line: 1067)
install_display_output(Array, Array, Array) (Line: 260)
_drupal_log_error(Array, 1) (Line: 602)
_drupal_exception_handler(Object)
Ist jetzt nicht so schlimm, da ich diese heute neu aufsetze.
Nur finde ich es etwas seltsam, daß man sich die Seite derart zerschießen kann.
Hat sich die Drupal Community nie darüber unterhalten, wie man die Versionsabhängigkeiten für sichere Updates in D8 einbauen kann?
Ergänzung:Wenn Drupal Core 2
am 06.01.2019 - 12:12 Uhr
Ergänzung:
Wenn Drupal Core 2 Sprache installiert hat, dann sollten die Erweiterungen automatisch auch beide Sprache ziehen.
Wenn Du mit einer Composer
am 06.01.2019 - 12:20 Uhr
Wenn Du mit einer Composer Installation anfängst, solltest Du danach alles über Composer erledigen. Mit composer require drupal/[MODULNAME] läßt sich jedes Modul installieren. Aber: Composer holt nur die Software. Aktivieren mußt Du sie entweder über Drush oder in der Admin-Umgebung (Backend). Erst beim Aktivieren werden Sprachdateien geladen.
Composer legt im composer.lock-File ab, welche Versionen von allen Paketen, die Composer geholt hat, vorhanden sind. Wenn jetzt eine neue Drupal-Version geholt werden soll, kann es passieren, das Versionen von Teilen im vendor-Verzeichnis nicht dazu passen. Dann gibt es Fehlermeldungen oder die neue Drupal-Version wird einfach nicht geladen. In so einem Fall hilft es, die Datei composer.lock zu löschen. Da Composer jetzt nicht nehr weiß, welche Teile da sind, holt er alles entsprechend den neuen Bedingungen herunter. Bei mir hat das immer gereicht. In manchen Forenbeiträgen wurde sogar empfohlen, auch das vendor-Verzeichnis in so einem Fall zu löschen.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Vielen Dank. Toller Tip.
am 06.01.2019 - 15:01 Uhr
Vielen Dank. Toller Tip.
Eine Verständnißfrage zur
am 06.01.2019 - 15:39 Uhr
Eine Verständnißfrage zur lokalen Entwicklung vs live Seite.
Wenn ich lokal Veränderungen vornehme (z.B. ein Update), dann werden ja auch Änderungen an der Datenbank vorgnommen.
Jetzt läuft lokal alles gut nach dem Update.
Also die live Seite Sichern (MySQL + Dateien) und dort das Update einspielen.
Ich nehme an, die Änderungen können nicht von der lokalen Umgebung in die live Seite gespielt werden?
Ich meine, die DB Aktualisierung würde ja fehlen.
Zudem müssen live Seite und lokale Umgebung ja nicht sync sein, da in der live Seite zwischenzeitlich neue Artikel entstanden sind bzw. laufend neue Inhalte erstellt werden.
Gibt es da einen best practice Anzatz, oder lokal Aktualisierungen testen und dann live erneut die Arbeitsschritte ausführen?
Genau ein Datenbank zu
am 06.01.2019 - 16:28 Uhr
Genau ein Datenbank zu kopieren von lokal nach live ist im Livebetrieb nur noch bei sehr ruhigen Webseiten oder Produktionsstopp möglich; nicht zu empfehlen.
oder lokal Aktualisierungen testen und dann live erneut die Arbeitsschritte ausführen?
Imgrunde ja. Am besten zu holst dir erste die Produktionsdatenbank nach lokal, um die Updates möglichst realitätsnah zu testen.
Dann aktualisiert du Module mit Composer und führst das Update der Datenbank mittels drush oder update.php aus. Wenn das funktioniert, müsste das Update auch im Live fehlerfrei von statten gehen.
Zur Sicherheit unbedingt ein Backup der Livedatenbank bevor du die Updatebefehle ausführt. Dann kannst du im Zweifelsfall nochmal zurückgehen und herausfinden was schief gelaufen ist.
Dann würde ich ein backup in
am 06.01.2019 - 17:02 Uhr
Dann würde ich ein backup in Form einer Shadow Seite sichern, auf die zur Not umgeschaltet werden kann, sofern die DB sehr groß ist.
1TB Datenbank...da geht Zeit ins Land.
Danke ersteinmal für den Input.
Schön, daß man sich hier austauschen kann.
Wenn die Datenbank zu groß
am 06.01.2019 - 19:06 Uhr
Wenn die Datenbank zu groß wird, kannst Du sie nur noch über die Kommandozeile einspielen. Im Bowser gibt es zwei kritische Größen max_file_upload und max_execution_time. Beim direkten Aufruf von mysql in der Kommandozeile hast Du diese Beschränkungen nicht. Es kann allerdings etwas dauern eine größere Datenbank zurückzuspielen, wie Du schon richtig bemerkt hast.
Ich mache automatisiert mit Backup&Migrate regelmäßige Datenbank Dumps über cron, die dann im Private-Files-Verzeichnis der Seite aufgehoben werden. Dann habe ich immer eine Notfall-Lösung zur Hand, wenn mal was schief geht. Außerdem habe ich von jeder Live-Seite eine Kopie lokal. Das ist bei Seiten, auf denen viele neue Inhalte erstellt werden, nur bedingt möglich. Da dient die lokale Kopie im wesentlichen als Backup der Konfiguration. CSS-Änderungen teste ich immer erst lokal und spiele sie danach auf.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *