Drush

Příkazový řádek (terminál) a skriptovací rozhraní pro Drupal usnadňující práci zejména vývojářům. Drush je nezávislý na verzi Drupalu, proto použíjte vždy nejnovější verzi.

Tip: pear.drush.org (Drush upgrade)

  1. Rozbalte Drush 7.0-dev (github.com/drush-ops/drush) do libovolného umístění mimo web (např. do home/bin, opt/, usr/local/ atd.).
    • poznámky
      • poslední verze, která nevyžaduje Composer je Drush 6.1.0:
      • wget https://github.com/drush-ops/drush/archive/6.1.0.zip
      • pro nižší verzi PHP např. 5.2.17 použijte nižší verzi Drush např. 5.9.0
      • php -v
  2. Nastavte soubor drush jako spustitelný:
    chmod u+x ~/bin/drush/drush
  3. Vytvořte simlink do místa, kde je Drush:
    sudo ln -s ~/bin/drush/drush /usr/local/bin/drush
    • nebo v domovském adresáři upravte soubor .bash_profile (případně .profile), do kterého za text "# User specific environment and startup programs" doplňte cestu o "~/bin/drush" (oddělovačem cest je dvojtečka)
      • # User specific environment and startup programs
        PATH=$PATH:$HOME/bin:~/bin/drush
        export PATH
        • pokud výše uvedená cesta nefunguje (např. pro webhosting HostGator nebo GoDaddy) použijte:
        • export COLUMNS
          alias drush='/usr/local/bin/php ~/bin/drush/drush.php'
          alias php='/usr/local/bin/php'
        • (cestu k PHP "/usr/local/bin/php" je možné zjistit příkazem "whereis php")
        • vlastní příkazy enlightened
          • náhrada "drush dl" za "ddl"
          • alias ddl='~/bin/drush/drush dl'
      • pro aktivaci změn je třeba se odhlásit a přihlásit nebo spusit příkaz
      • source ~/.bash_profile
  4. Volitelně upravte PATH např. viz příložený skrytý soubor .bash_profile, který je možné nakopírovat do domovského adresáře.
  5. (Rozbalte Drush Make 6.x-2.3 do ~/bin/drush/commands/.)
  6. Composer (Installing Drush 8 using Composer):
    • stáhněte "composer"
    • curl -sS https://getcomposer.org/installer | php
      mv composer.phar ~/bin/composer/composer/
    • přejděte do adrasáře ~/bin/composer/composer
    • cd ~/bin/composer/composer/
    • spusťte příkaz
    • ./composer install
    • v ~/bin/composer/ vytvořte soubor "composer.json" obsahující:
    • {
          "require": {
              "monolog/monolog": "1.2.*"
          }
      }
    • nainstalujte composer do "drush" umístění:
    • cp -r vendor/ ~/bin/drush/
    • do ~/.bash_profile (Mac OS) nebo do ~/.bashrc (Linux) vložte nový řádek
    • export PATH="$HOME/.composer/vendor/bin:$PATH"
    • spusťte výše uvedný příkaz, nebo znovu načtěte uživatelský profil, nebo se odhlašte a přihlašte :)
  7. Instalace konkrétní verze Drush:
    • $ composer global require drush/drush:6.1.0
      $ composer global require drush/drush:7.*
      $ composer global require drush/drush:8.*
      $ composer global require drush/drush:dev-master
  8. Aktualizace
    • $ composer global update

Drupal 8 příkazy:

  • drush entup – entity update (Entity/field definitions : Mismatched entity and/or field definitions)

Základní příkazy:

  • drush help ... (drush help cc, drush help dl, drush help make) – základní nápověda
  • drush topic – podrobná nápověda
  • drush cc all – vymaže cache
  • drush cron – spustí cron
  • drush dl views – stáhne modul views
  • drush dl views --dev – stáhne vývojovou verzi modulu views
  • drush dl devel --destination=sites/all/modules/contrib – uloží modul Views do uvedené cesty
  • drush en views – povolí modul views
  • drush en views -y – povolí modul views a na všechny otázky odpoví ANO
  • drush dis views – zakáže modul views
  • drush dis views -y – zakáže modusl views a na všechny otázky odpoví ANO
  • drush -s up – simulace aktualizace modulů (neprovede žádné změny)
  • drush up – aktualizace systému a modulů
  • drush up --security-only --simulate – simulace bezpečnostních aktualizací
  • drush up --security-only – pouze bezpečnostní aktualizace
  • drush -s up pathauto – simulace aktualizace modulu Pathauto (neprovede žádné změny)
  • drush upc pathauto - aktualizace modulu Pathauto (poslední doporučená verze)
  • drush up pathauto - aktualizace modulu Pathauto
  • drush pm-uninstall ... – odinstaluje modul
  • drush pml --status=enabled – zobrazí povolené moduly a témata
  • drush updb – aplikuje požadované aktualizace v databázi (jako spuštění update.php)
  • drush status theme – zobrazí nastavená témata (výchozí a administrační)
  • drush pml --type=theme – zobrazí nainstalovaná témata
  • drush pml --type=theme --status=enabled – zobrazí povolená témata
  • drush vget theme_default - zobrazí výchozí téma (zobrazí proměnnou z tabuly variable)
  • drush vset theme_default omega – nastaví výchozí téma na Omega (nastaví proměnnou v tabulce variable)
  • drush vset admin_theme rubik – nastaví administrační téma na Rubik
  • drush make --force-complete d7rw_shop_distro.make ./ – stažení požadovaného instalačního profilu do aktuálního adresáře a vynucení dokončení i při případných chybách
  • drush uli – jednorázové přihlášení s možností změnit heslo (user 1)
  • drush uli username – jednorázové přihlášení s možností změnit heslo (účet "username")
  • drush dd files – vypsat cestu k adresáři files
  • drush dd omega/css – vypsat cestu k adresáři css u tématu vzhledu Omega
  • drush bb – zazálohuje databázi pomocí modulu Backup and Migrate
  • aplikovat jen bezpečnostní aktualizace:
    • drush upc -u 1 --pipe | grep 'SECURITY-UPDATE' | cut -d" " -f1 | xargs drush upc -u 1 -y; drush updatedb

Poznámky:

Oficiální moduly instalovat do adresáře modules/contrib, vlastní moduly do adresáře modules/custome.

Další moduly:

  • Drush CTools Export Bonus – export konfigurace a závislostí (typy obsahu, kategorie, menu, bloky atd.) do modulu. Tento export je výhodnější než Featurs.

Automatické aktualizace

  1. Vytvořte soubor (shell script) např. update.sh
    • Drupal 8
      • # Go to the site directory
        cd /home/examplesite/public_html
        
        # Rebuild site and clear all its caches
        drush cr
        
        # Enable update manager, update the site and disable update manager
        drush en update -y
        drush up --security-only -y
        drush pm-uninstall update -y #D8: does not allow disabling of modules :(
        
        # Update database
        drush updb -y
        
        # Remove CHANGELOG.txt
        rm -f core/CHANGELOG.txt
        
        # Run cron
        drush cron
    • Drupal 7
      • # Go to the site directory
        cd /home/examplesite/public_html
        
        # Clear all the cache
        drush cc all
        
        # Enable update manager, update the site and disable update manager
        drush en update -y
        drush up --security-only -y
        drush dis update -y
        
        # Update database
        drush updb -y
        
        # Remove CHANGELOG.txt
        rm -f CHANGELOG.txt
        
        # Run cron
        drush cron
  2. Do souboru etc/crontab přidejte nový řádek (čas spouštění a cestu k souboru update.sh upravte dle potřeb):
    • 0 4 * * * /home/examplesite/update.sh

Přesun webu

  1. Zazálohovat databázi
    • přejít "do" adresáře webu a spustit export databáze do souboru db.sql:
    • drush sql-dump > db.sql
  2. Sbalit celý web i s databázi:
    • přejít "nad" adresář webu
    • tar cvfz nazev-archivu.tgz web.cz/
  3. Přesun dat na server:
    • přihlásit se na server pomocí ssh
    • přesun dat (paramet n je jen pro otestování)
    • rsync -zvuna nazev-archivu.tgz user@server:/var/www/
      • příklad určení portu 2222
      • rsync -zvuna -e 'ssh -p 2222' folder/ user@server:~/path/folder/
      • příklad synchronizace obsahu adresáře test ze serveru na lokální počítač do adresáře backup
      • rsync -zvuna user@hostname_or_ipaddress:/tmp/test/ /user/backuup/
    • rozbalení archivu
    • tar xvfz n​azev-archivu.tgz
    • kontrola dat
    • rsync -zvuna web.cz/ server:/var/www/
  4. Kontrola nastavení:
    • upravit settings.php
  5. Kontrola funkčnosti
    • přejít do adresáře webu a zkontrolavat stav webu (je-li prázdná databáze zobrazí se chybové hlášení)
    • drush status
    • zobrazení údajů o připojení k databázi
    • drush sql-connect
    • import databáze
    • `drush sql-connect` < db.sql
      (Případně je možné se pomocí drush sql-connectpřihlásit přímo do klienta mysql a zadat provedení sql importu příkazem >mysql: source db.sql)
    • ukončit spojení
    • exit

Tipy

Jak zjistit, zda je možné přejít na novou verzi Drupalu (např. z 6 na 7):

  1. použit modul Upgrade status

nebo

  1. drush pml --type=module --status=enabled --no-core --pipezobrazit seznam povolených modulů
  2. seznam modulů vložit do textového editoru a odstranit řádkování (vytvořit jeden rádek na kterém budou názvy modulů odděleny mezerou).
  3. přejít do nové verze Drupalu (v našem případě 7), případně si ji stáhnout příkazem drush dl drupal
  4. vložit seznam modulů za příkaz drush rl ..., který mimo jiné zobrazí které moduly ještě nejsou k dispozici
  5. na konec je třeba zjistit, zda některé z nedostupných modulů nebyly přesunuty do jádra nebo sloučeny s jinými moduly

MAMP

Pro zprovoznění Drush společně s MAMP je vhodné spustit následující příkazy:

  • sudo mkdir /var/mysql
    sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

Tipy:

  • Top 10 Drush commands
  • cornel.co/article/stop-drupal-cron-process-once-it-has-started
  • linkedin.com/pulse/list-drupal-drush-commands-kumar-rahul-sankrit
PřílohaVelikost
bash_profile.zip502 bajtů