Přeskočit na obsah Přeskočit na hlavní menu Přeskočit na patičku

Blog / Drupal

Jak začít
s Drupalem 11.
Od prázdné složky k běžícímu webu.

Návod pro všechny, kdo chtějí s Drupalem začít správně, ne jen rychle. Připravíte si vývojové prostředí na Macu, krok za krokem nainstalujete Drupal 11 a naučíte se příkazy, které budete používat každý den.

Michael Urban

  • #drupal
  • #vývoj
Úvodní krok instalátoru Drupalu 11 s výběrem jazyka.

PŘÍPRAVA

Co budete potřebovat.

Drupal se dnes zakládá a aktualizuje přes Composer a vyvíjí se v Dockeru. Na Macu k tomu potřebujete čtyři nástroje.

Docker a OrbStack

Docker zabalí web i vše, co potřebuje, aby běžel všude stejně. Je to přenosná dílna: kdekoli ji rozložíte, pracuje se stejně.

Na macOS doporučujeme OrbStack. Podle dokumentace DDEV se instaluje nejsnáz a je nejrychlejší. Pro osobní použití je zdarma, firmy potřebují placenou verzi Pro. Zdarma a s otevřeným kódem jsou Colima a Rancher Desktop.

Apple nabízí také vlastní kontejnery, Apple Containers. DDEV je zatím nepodporuje, podpora je ve vývoji.

DDEV

DDEV pro vývojáře nastaví prostředí v Dockeru vždy stejně. Je to plán dílny: každé nářadí má své místo. Na Macu ho nainstalujete přes Homebrew:

Instalace DDEV přes Homebrew
brew install ddev/ddev/ddev
mkcert -install

Druhý příkaz spustíte jen jednou. Prohlížeč pak bude důvěřovat lokálním adresám s HTTPS.

Git a GitLab

Git zapisuje každou změnu kódu: kdo co změnil, s možností vrátit se. Funguje jako historie úprav ve sdíleném dokumentu. Na GitLabu repozitář sdílí celý tým a odtud se web také nasazuje na server. Poslouží i GitHub nebo Bitbucket, my používáme GitLab.

Editor

Doporučujeme Visual Studio Code nebo PhpStorm. Dobře poslouží i Sublime Text.

Orca není klasický editor. Vedle sebe v ní pracují AI agenti, každý ve vlastní kopii repozitáře.

HOSTING

Kde web poběží.

Na vašem počítači běží Drupal v DDEV. Na serveru potřebujete:

  • Webový server Nginx. Drupal podporuje i Apache, my doporučujeme Nginx. Ochrany, které na Apache zajišťuje soubor .htaccess, musí na Nginx nastavit správce serveru.
  • PHP 8.3 nebo novější. Drupal 11.4 běží na PHP 8.3, 8.4 i 8.5.
  • Databázi MySQL nebo MariaDB. Drupal 11 vyžaduje alespoň MySQL 8.0 nebo MariaDB 10.6. Obě už ale nemají podporu, proto zvolte MySQL 8.4 LTS nebo MariaDB 10.11, 11.4 či 11.8.
  • Přístup přes SSH a Composer.
  • Kořen webu nastavitelný na složku web.

Drush na server zvlášť neinstalujete. Je součástí projektu a spouští se z jeho složky.

Sdílený hosting bez SSH často nestačí. Drupal.org upozorňuje, že nastavit kořen webu do složky web bývá na sdíleném hostingu problém. Jak nasazujeme na vlastní server bez výpadku, popisuje stránka Nasazení webu bez výpadku.

PROJEKT

Nový projekt podle DDEV.

Postup vychází z oficiálního návodu DDEV pro Drupal. V jednom detailu se liší: verzi Drupalu uzamkneme na 11 (:^11). Bez toho Composer vždy vezme nejnovější hlavní verzi.

Založení projektu Drupal 11 v DDEV
mkdir muj-drupal && cd muj-drupal
ddev config --project-type=drupal11 --docroot=web
ddev start
ddev composer create-project 'drupal/recommended-project:^11'
ddev composer require drush/drush
ddev launch

Co jednotlivé příkazy dělají:

  • ddev config vytvoří složku .ddev s nastavením projektu. Výchozí je PHP 8.4, Nginx a MariaDB 11.8.
  • ddev start spustí kontejnery. Web poběží na adrese https://muj-drupal.ddev.site.
  • ddev composer create-project stáhne šablonu drupal/recommended-project a podle jejího composer.json nainstaluje Drupal se všemi závislostmi. Composer je správce závislostí pro PHP. Z omezení verzí spočítá sadu balíčků, které spolu fungují, stáhne je a přesné verze zapíše do composer.lock.
  • ddev composer require drush/drush přidá do projektu Drush. Drush je nástroj, kterým Drupal ovládáte z příkazové řádky: maže cache, spouští aktualizace a exportuje nastavení.
  • ddev launch otevře web v prohlížeči. Drupal ještě není nainstalovaný, takže se otevře instalátor.

Co Composer vytvořil

  • composer.json popisuje, co projekt potřebuje. Šablona do něj zapsala šest balíčků, mimo jiné drupal/core-recommended: ^11.4, drupal/core-composer-scaffold a drush/drush: ^13.8. Moduly a šablony z drupal.org se stahují z repozitáře https://packages.drupal.org/8.
  • drupal/core-recommended přidá k jádru 45 knihoven ve verzích, se kterými je jádro odzkoušené. Proto se v projektu požaduje místo samotného drupal/core.
  • composer.lock drží pro každý z 89 nainstalovaných balíčků přesnou verzi a adresu, odkud se stáhl. U nás je to drupal/core 11.4.11.
  • vendor/ obsahuje PHP knihovny, mezi nimi komponenty Symfony, a autoloader.
  • Kam se který balíček nainstaluje, určuje v composer.json sekce installer-paths. Jádro jde do web/core, moduly do web/modules/contrib, šablony do web/themes/contrib.
  • Soubory web/index.php, web/.htaccess nebo web/sites/default/default.settings.php vygeneroval plugin drupal/core-composer-scaffold. Při aktualizaci jádra je přepíše, proto je ručně neupravujte.

INSTALACE

Instalace krok za krokem.

Drupal jde nainstalovat jedním příkazem. Poprvé ale doporučujeme projít instalátor v prohlížeči, ať vidíte, co se nastavuje. Instalátor začíná anglicky. Jako jazyk zvolíme češtinu, takže bude výchozím jazykem webu.

Výběr jazyka

V kroku Choose language vyberte Čeština a klikněte na Save and continue. Drupal stáhne české překlady z localize.drupal.org a zbytek instalátoru už je česky. S češtinou má instalátor osm kroků místo šesti, přibude nastavení a dokončení překladů.

Krok Choose language v instalátoru Drupalu s vybranou češtinou.

Instalační profil

Profil určuje, s čím web začíná. Vyberte Standard. Přinese administraci, editor textu, role správce a redaktora a slovník Štítky. Minimální profil je pro pokročilé a Demo Umami je experimentální ukázkový web o vaření.

Výběr instalačního profilu v instalátoru Drupalu, označený profil Standard.

Požadavky a databáze

Kroky Kontrola požadavků a Nastavení databáze DDEV přeskočí. Databázi pro projekt připravil sám a přístup k ní zapsal do souboru settings.ddev.php. Na hostingu tady vyplníte název databáze, uživatele a heslo.

Instalace webu a import překladů pak proběhnou samy. U nás trvaly několik sekund a Drupal naimportoval 4 321 českých překladů.

Nastavení webu

Vyplňte název webu a e-mail, ze kterého bude web posílat zprávy. Použijte adresu ve stejné doméně jako web, jinak e-maily mohou končit ve spamu.

Formulář Nastavení webu s vyplněným názvem webu a e-mailovou adresou.

Účet pro správu webu má všechna oprávnění. Zvolte silné heslo. Pro běžnou práci redakce později založte vlastní účty s rolí redaktora.

Sekce Účet pro správu webu s uživatelským jménem, heslem a e-mailem správce.

Zkontrolujte časové pásmo, u nás Prague. Obě upozornění na aktualizace nechte zapnutá. Pak klikněte na Uložit a pokračovat.

Místní nastavení s časovým pásmem Prague, upozorněními na aktualizace a tlačítkem Uložit a pokračovat.

Po instalaci

Jste přihlášení jako správce a vidíte úvodní stránku s postranní navigací. Drupal upozorní, že u složky sites/default a souboru settings.php máte odebrat práva zápisu. Na vašem počítači v DDEV to řešit nemusíte, na serveru ano.

Některé texty zůstanou anglicky, třeba položka Announcements. Překlady připravuje komunita a ne všechny jsou hotové.

Úvodní stránka nového webu po instalaci s postranní navigací a zprávou o úspěšné instalaci.

Od verze 11.4 nevytvoří profil Standard žádný typ obsahu. Přehled Typy obsahu v menu Struktura je prázdný. Typ obsahu si založíte sami a právě tím začíná další díl.

Prázdný přehled Typy obsahu v menu Struktura.

Jedním příkazem

Když instalátor znáte, stačí jeden příkaz:

Instalace Drupalu jedním příkazem
ddev drush site:install standard --locale=cs --site-name="Můj Drupal" --account-name=spravce -y

Heslo správce Drush vygeneruje a vypíše. Pak se přihlásíte přes ddev drush uli.

EXISTUJÍCÍ PROJEKT

Připojení k existujícímu projektu.

Častěji než nový web dostanete existující projekt. Postup je pak kratší:

Převzetí existujícího projektu
git clone git@gitlab.com:tym/projekt.git
cd projekt
ddev start
ddev composer install
ddev import-db --file=zaloha.sql.gz
ddev drush deploy
ddev drush uli
  • ddev start načte nastavení ze složky .ddev, kterou projekt má v Gitu.
  • ddev composer install nainstaluje přesně ty verze, které jsou zapsané v composer.lock.
  • ddev import-db nahraje databázi ze zálohy od kolegy.
  • ddev drush deploy srovná databázi s kódem a konfigurací v Gitu.
  • ddev drush uli vypíše jednorázový přihlašovací odkaz, heslo nepotřebujete.

Záloha z ostrého webu obsahuje osobní údaje. Pracujte s ní podle pravidel projektu.

PŘÍKAZY

Příkazy na každý den.

V DDEV píšete před Composer a Drush slovo ddev, třeba ddev drush cr.

DDEV

  • ddev start a ddev stop spustí a zastaví projekt. ddev poweroff zastaví všechny projekty najednou.
  • ddev launch otevře web v prohlížeči.
  • ddev import-db --file=zaloha.sql.gz nahraje databázi ze souboru.
  • ddev export-db --file=zaloha.sql.gz uloží databázi do souboru.
  • ddev snapshot udělá rychlý snímek databáze, ddev snapshot restore --latest se k němu vrátí. Hodí se před riskantní změnou.

Composer

  • composer install přečte composer.lock a nainstaluje přesně zapsané verze. Nic nepřepočítává, takže u vás, u kolegy i na serveru vznikne stejný vendor/ a web/core. Spouští se po git clone, po změně locku a při nasazení, na serveru s volbou --no-dev.
  • composer update znovu vyhodnotí omezení v composer.json, stáhne nejnovější vyhovující verze a přepíše composer.lock. Omezení ^11.4 povolí jakoukoli verzi 11 od 11.4.0 výš, novou hlavní verzi ne. Spouštíte ho vědomě na svém počítači, výsledek otestujete a commitnete. Na serveru nikdy.
  • composer require drupal/pathauto zapíše modul do composer.json, stáhne ho do web/modules/contrib/pathauto a aktualizuje lock. Modul je tím jen stažený. Zapnete ho přes drush en pathauto a zapnutí uložíte do konfigurace přes drush cex.

composer.json i composer.lock patří do Gitu. Lock zaručí, že celý tým pracuje se stejnými verzemi.

Jádro aktualizujete podle postupu drupal.org:

Aktualizace jádra Drupalu
ddev composer update "drupal/core-*" --with-all-dependencies
ddev drush updatedb
ddev drush cr
ddev drush cex

Poslední příkaz uloží změny konfigurace, které aktualizace přinesla.

Drush

  • drush cr smaže a znovu sestaví cache. První pomoc, když se změna neprojevila.
  • drush updb spustí čekající aktualizace databáze, třeba po aktualizaci modulů.
  • drush cex uloží konfiguraci z databáze do souborů.
  • drush cim načte konfiguraci ze souborů do databáze.
  • drush deploy spustí v jednom kroku aktualizace databáze, import konfigurace, smazání cache a nasazovací kroky modulů. Tímhle příkazem končí každé nasazení.
  • drush uli vypíše jednorázový přihlašovací odkaz.

KONFIGURACE

Konfigurace patří do Gitu.

Drupal odděluje obsah od konfigurace. Obsah jsou nody, termíny taxonomie, uživatelé a soubory. Konfigurace určuje, jak web funguje: typy obsahu, pole, Views, role a oprávnění, zapnuté moduly a nastavení šablon.

Obojí je v databázi, konfigurace v tabulce config. Po instalaci profilu Standard v ní je 145 konfiguračních objektů.

drush cex zapíše každý objekt do vlastního souboru YAML. Soubor se jmenuje podle objektu, slovník Štítky je v taxonomy.vocabulary.tags.yml:

taxonomy.vocabulary.tags.yml
uuid: e9a02613-bf4c-421c-8ecb-05ca8cde5d49
langcode: cs
status: true
dependencies: {  }
_core:
  default_config_hash: PWTsHiwkIfp5TW-iTBc9AhBtvbYY6wrp3MopazQ-95o
name: Štítky
vid: tags
description: 'Use tags to group content on similar topics into categories.'
weight: 0
new_revision: false

Zapnuté moduly najdete v core.extension.yml. drush cim udělá z konfigurace v databázi přesnou kopii souborů: objekty přidá, změní i smaže. Rozdíly mezi databází a soubory vypíše drush config:status.

Import funguje jen mezi instancemi stejného webu. Každá instalace dostane vlastní UUID v objektu system.site. Import s jiným UUID Drupal odmítne hláškou „Site UUID in source storage does not match the target storage.“ Nový kolega proto web neinstaluje znovu. Nahraje databázi přes ddev import-db, nebo web nainstaluje z exportu přes drush site:install --existing-config.

Změna konfigurace jde vždy stejnou cestou:

  1. Změnu uděláte v administraci na svém počítači.
  2. ddev drush cex zapíše změněné soubory do config/sync. Co se změnilo, ukáže git diff.
  3. Soubory commitnete a pošlete do GitLabu.
  4. Nasazení na serveru spustí drush deploy: updatedb, config:import, cache:rebuild a deploy:hook.

Konfiguraci proto neměňte přímo na ostrém webu. Import při dalším nasazení vrátí databázi do stavu souborů v Gitu a ruční změnu přepíše.

Hodnoty, které se liší podle prostředí, nastavte v settings.php nebo settings.local.php přes $config. Přepis platí jen za běhu, do tabulky config se nezapíše a drush cex ho neexportuje. Na svém počítači takhle třeba vypnete agregaci CSS:

web/sites/default/settings.local.php
$config['system.performance']['css']['preprocess'] = FALSE;

DDEV ukládá export do sites/default/files/sync, tedy do veřejné složky souborů. Drupal.org doporučuje mít konfiguraci mimo kořen webu. Před prvním exportem proto přidejte do web/sites/default/settings.php:

web/sites/default/settings.php
$settings['config_sync_directory'] = '../config/sync';

Šablona projektu nemá vlastní .gitignore. Do Gitu patří composer.json, composer.lock, složka .ddev, config/sync a váš vlastní kód. Nepatří tam nic, co Composer umí stáhnout znovu, ani nic s daty a hesly:

.gitignore
/vendor/
/web/core/
/web/modules/contrib/
/web/themes/contrib/
/web/profiles/contrib/
/web/libraries/
/web/sites/*/files/
/web/sites/*/settings.local.php
*.sql
*.sql.gz

Vzor najdete i v souboru web/example.gitignore, který přibalí jádro. Přístupové údaje k databázi na serveru patří do settings.local.php, který v Gitu není.

MIGRACE

Upgrade a migrace.

Na nový web patří Drupal 11. Drupal 10 má podporu do 9. 12. 2026 a přechod z něj na 11 je upgrade na stejném základu.

Drupal 7 podporu nemá od 5. 1. 2025. Přechod z něj je migrace do nově vyvinutého webu. Obojí nabízíme jako službu Upgrade a migrace Drupalu.

DÁLE

Co bude dál.

V dalším díle založíme na tomto webu první typ obsahu. Vysvětlíme entity, pole, taxonomii, výpisy přes Views a bloky. Jak vytvořit multijazyčný Drupal s libovolným počtem jazyků se dozvíte v dalším článku, který připravujeme.

Chcete s Drupalem pracovat každý den? Podívejte se na volné pozice.

KONZULTACE

Řešíte Drupal ve firmě?

Napište nám, co právě řešíte. Ozveme se do jednoho pracovního dne.

Domluvit konzultaci zdarma

Napište nám, co právě řešíte. Ozveme se do jednoho pracovního dne.

Přidejte odkaz na současný web, pokud ho máte.