Composer je určen pro správu závislostí v PHP, tzn., udržuje aktuální kód nejen jádra Dupalu a rozšiřujících modulů, ale i externí knihovny třetích stran. Drupal 8 užívá komponenty PHP frameworku Symfony, nově doporučený postup instalace je pomocí Composeru s použitím šablony pro projekty Drupal 8 s přemístěným kořenem dokumentu.
Instalace a administrace Drupalu pomocí Composeru sice není nutná, manuální údržba přes FTP se však stává náročnější. Některé rozšiřující moduly s externími knihovnami snad bez Composeru ani nelze snadno nainstalovat. Řešením je správa projektu s Drupalem pomocí Composeru. Po překonání počátečních obtíží je údržba webu s Composerem docela snadná.
Přístup k serveru pomocí SSH není u většiny českých webhostingů samozřejmostí, spíše se setkáte s paměťovým a časovým omezením běhu PHP skriptů, nepovolenými direktivy v .htaccess apod. Rozumným řešením je používat vlastní vývojový server s root přístupem a možností změny v konfiguraci serveru. Nyní používám pro vývoj server s Debianem 10 (viz např. The Perfect Server - Debian 10 with Apache, BIND, Dovecot, PureFTPD and ISPConfig 3.1). Na vlastní server nainstalujete kromě Composeru i Node.js se správcem javascriptových balíčků NPM. S NPM si můžete stáhnout do projektu různé užitečné nástroje a aplikace jako např. Gulp pro komilaci souborů SASS.
Instalace Drupalu
Máte-li osvědčený vlastní lokální server s nastavenými přístupovými právy, je instalace nového webu s Drupalem snadná. Nejprve je třeba stáhnout Composer (viz Download Composer) do bin v rootu /var/www/clients/client3/web3/web/bin
. Do stejného adresáře lze instalovat i spustitelný drush. Pak se přesunete do rootu a vytvoříte projekt v adresáři "www" z doporučené šablony Drupalu:
composer create-project drupal/recommended-project:~8.9 www --stability dev --no-interaction
Instalace Drupalu je hotová:
web3@server1:/var/www/clients/client3/web3/web$
composer create-project drupal/recommended-project:~8.9 www
Creating a "drupal/recommended-project:~8.9" project at "./www"
Installing drupal/recommended-project (8.9.1)
- Installing drupal/recommended-project (8.9.1): Downloading (100%)
....
Congratulations, you’ve installed the Drupal codebase
from the drupal/recommended-project template!
Next steps:
* Install the site: https://www.drupal.org/docs/8/install
* Read the user guide: https://www.drupal.org/docs/user_guide/en/index.html
* Get support: https://www.drupal.org/support
* Get involved with the Drupal community:
https://www.drupal.org/getting-involved
* Remove the plugin that prints this message:
composer remove drupal/core-project-message
* Homepage: https://www.drupal.org/project/drupal
* Support:
* docs: https://www.drupal.org/docs/user_guide/en/index.html
* chat: https://www.drupal.org/node/314178
web3@server1:/var/www/clients/client3/web3/web$
Composer stáhne z Gitu Drupal do nové struktury adresářů a automaticky vytvoří 2 soubory composer.json
a composer.lock
, uspořádání adresářů vypadá následovně:
/var/www/clients/client3/web3/web/ ├── bin │ ├── composer │ └── drush ├── tmp └── www ├── vendor ├── web <- DocumentRoot │ ├── core │ ├── modules │ │ ├── contrib │ │ └── custom │ ├── profiles │ ├── sites . . └── default . . . ├── settings.php . . . └── files . . . ├── php/twig . . . ├── js/ . . . ├── styles/ . . . ├── css/ . . │ ├── themes │ │ ├── contrib │ │ └── custom │ ├── .htaccess │ └── web.config ├── composer.json └── composer.lock
Před spuštěním webu je potřeba ještě aktualizovat konfiguraci webového serveru tak, aby ukazovala na nový docroot. V uvedeném příkladu:
DocumentRoot /var/www/clients/client3/web3/web/www/web
.
Existující web a Composer
Použitá Composeru ke správě Drupalu a všech závislostí (moduly, témata, knihovny) pro weby vytvořené dříve tradičním postupem je trochu složitější než instalace nového webu popsaná výše. Mimo vlastní instalaci Composeru je zásadní rozdíl v uspořádání adresářů. Soubory composer.json
a composer.lock
(je nutné je upravit) a adresář vendor
jsou o úroveň výš než docroot, adresáře modules a themes obsahují podadresáře contrib a custom, jako je ilustrováno výše.
Úprava instalace Drupalu 8 na novou šablonu je doporučená, i když byl web nainstalován prostřednictvím Composeru ze zastaralé šablony. Migrace webu na nově doporučenou šablonu zjednoduší budoucí aktualizace jádra Drupalu, rozšiřujících modulů a témat. Před převodem webu je samozřejmostí mít zálohu produkčního webu včetně databáze. Všechny úpravy provádím na lokálním vývojovém webu a po důkladném prověření výsledný projekt přesunu na produkční server.
Některé pomocné nástroje se pokouší automatizovat proces převodu starých webů na projekty Composeru, postup však není dokonalý a vždy zbývá dokončit práci ručními zásahy. Zkoušel jsem např. plugin pro Composer Composerize Drupal. S úspěchem jsem však již několikrát použil postup popsaný na portálu Drupalu: Add Composer to an existing site. Na stránce je podrobný průvodce manuálního postupu přidání podpory Composeru na existující web, který byl dříve nainstalován bez Composeru.
Manuální převod je docela přímý i pro rozsáhlé weby a nevyžaduje mnoho času.
Základní postup v několika krocích
- Nainstalujte nový web Drupalu pomocí aktuální šablony Composeru do nového adresáře tak, jak je uvedeno výše.
- Zkopírujte všechna vlastní témata (themes/custom) , moduly (modules/custom) a soubory v adresáři files do nového projektu.
- Upravte a přeneste nastavení settings.php do nového projektu.
- Přidejte všechny rozšiřující moduly do nového souboru
composer.json
a spusťtecomposer install
. K přidání/instalaci modulů lze použít:composer require drupal/module-name-1 drupal/module-name-2 drupal/module-name-i
. - Aktualizujte databázi a vymažte mezipaměť (
drush updb; drush cr
). - Aktualizujte konfiguraci webového serveru, viz výše
DocumentRoot
.
Podrobné instrukce k migraci webu jsou popsány ve zmíněném článku.