Nahrávání webu pomocí nástroje FTP Deployment

(publikováno 03.04.2018) 1 PHP, Windows, Linux

V hodně případech je stále FTP jediná možnost, jak nahrát soubory na web. I toto se ale dá v dnešní době zautomatizovat. A FTP-Deployment napsaný v PHP je jedna z možností.

Nahrávání webu pomocí nástroje FTP Deployment

Autora nejznámějšího českého frameworku, Davida Grudla, asi není potřeba představovat. Každý znalý PHP o něm určitě slyšel. I když jsem osobně Nette nikdy neviděl a nemůžu soudit, nástroj FTP Deployment je rozhodně povedený a schopný.

Je podobný, jako Michalem dříve zmíněný git-ftp, jen ke svému fungování nepotřebuje git. Změny v souborech porovnává pomocí MD5 hashů všech souborů, které jsou poté v jediném komprimovaném souboru .htdeployment nahrané na FTP server. Při příštím deployi se tedy nahrají pouze změněné soubory a bude tak probíhat mnohem rychleji.

Nastavení, hooky, vzdálené i lokální příkazy

Konfigurační soubor umožňuje základní nastavení připojení k serveru, kde podporované protokoly jsou FTP, SFTP a FTPS. Nastavení je dost přímočaré a okomentované v ukázce.

; Sekcí lze mít více, každá se svým remotem a nastavením
[server1]
; Jediný povinný atribut je remote
remote = ftp://uzivatel:heslo@example.com/path/on/server/
; Pasivní mód je v defaultu zapnutý
passiveMode = no
; Ignorování souborů a složek, které nenahrávat
ignore = "
    .git*
    /config
    wp-config.php
    wp-content/uploads/*
"
; Libovolné hooky před nahráváním souborů
before[] = http://example.com/deployment.php?before
before[] = local: grunt build
; Vymazat obsah složky cache po nahrání souborů
purge[] = cache/template
purge[] = cache/database
; Hooky po skončení nahrávání
after[] = remote: chmod 0777 cache/template
after[] = upload: config/server1.php wp-config.php
after[] = http://example.com/deployment.php?after
; Zakázání minifikaci css a js souborů, což je defaultní chování
preprocess = no

Konfigurační soubory

V nástroji DeployHQ, který je bohužel placený, lze specifikovat konfigurační soubory, které se nahrávají pokaždé. Stejné chování je možné i s tímto nástrojem. Stačí je vložit do složky, v případě výše config, která se dá do ignore aby se nenahrávala. Poté pomocí hooku upload: lze nahrát soubory i z ignorovaných složek.

Instalace a použití

Z Githubu lze stáhnout jeden PHAR soubor, který stačí spouštět z příkazové řádky. Pro nejnovější změny před oficiálním releasem je ale možné stáhnout z gitu zdrojáky.

Použití je velmi jednoduché, protože se vše nastavuje v konfiguračním souboru, umožňuje FTP Deployment pouze minimum parametrů a přepínačů.

# Spustí deploy
deployment deployment.ini
# Spustí deploy v testovacím režimu, nic na server nenahrává
deployment deployment.ini --test
# Pouze vygeneruje soubor s hashi souborů a nahraje na FTP
deployment deployment.ini --generate

Vlastní úpravy

Někdy bych rád využil i jiné funkce, než které FTP Deployment nabízí. Jednu takovou jsem již přidal pomocí pull-requestu. Jiné ale podle historie issues přidané nikdy nebudou.

Proto jsem vytvořil custom branch, do které přidávám další vlastní rozšíření.


Používáte FTP Deployment, nebo jiný nástroj? Podělte se v komentářích.

K tomuto článku již není možné přidávat další komentáře

Komentáře

Ahoj,
tento deploy jsem používal taktéž. Dlouhou dobu fungoval bezproblému. Pak jsem delší dobu na projekty, které jej používaly nesáhl, a nyní se mi děje to, že mi v průběhu uploadu nebo i během testu soubor .ini přes který se deploy provádí smaže.

Asi to bude něco u mě, ale fakt nevím co za tím může vězet.

Windows 10 -> https://github.com/dg/ftp-deployment/issues/161

Nenapadá tě, co by za tím mohlo být?