Hosting, který umí jen FTP

Díl 5 ze 5 — ./blog.sh v1.9

Sdílený hosting často přichází s adresářem, přihlášením přes FTP a ničím dalším – bez SSH, bez rsync, bez gitu. Pro blog.sh to stačilo odjakživa; dokumentace to jen do 1.9 neříkala. Cesta vede přes backend rclone, protože rclone umí FTP jako jeden ze svých mnoha vzdálených cílů.

Vzdálený cíl nastavíš jednou

rclone config se zeptá jednou a odpovědi si pamatuje – server, uživatel i heslo zůstávají ve vlastní konfiguraci rclone, nikdy v env.sh. Založ nový cíl, zvol typ ftp a zadej ty tři údaje, které uvádí uvítací e-mail hostingu. Pak dva řádky v env.sh:

export DEPLOY_BACKEND=rclone
export RCLONE_TARGET=myftp:public_html   # jméno cíle : adresář, který hosting servíruje

Za dvojtečkou je adresář, který hosting servíruje jako tvůj web – podle hostingu public_html, www nebo htdocs.

Proč víc není potřeba

FTP nikomu neřekne, co soubor na serveru obsahuje; kontrolní součet se od něj získat nedá. Nasazení, které by muselo porovnat kopii na serveru se sestavením, by nejdřív muselo všechno stáhnout. Nemusí nikdy: engine si vede vlastní záznam o každém souboru, který odeslal – manifest, pro každý backend zvlášť – a rclone řekne přesně, které soubory poslat a které smazat. První nasazení nahraje celý web, každé další jen to, co se změnilo.

Dvě věci, které sdílený hosting dělá

Může nabízet FTPS. Obyčejné FTP posílá heslo v otevřené podobě. Když hosting FTPS podporuje, zapni ho v rclone config (explicit_tls) a v enginu se nic nemění.

Může povolit jen pár spojení na účet. rclone jich ve výchozím nastavení otevírá několik naráz a hosting s nízkým limitem uprostřed nasazení odpoví „too many connections“. Jeden řádek navíc přiměje rclone brát je po jednom:

export RCLONE_ARGS="--checkers 1 --transfers 1"

rclone má i --ftp-concurrency, ale jeho vlastní dokumentace varuje, že se velmi pravděpodobně zablokuje, pokud není nastavené o jedna výš než oba přepínače výše dohromady. Ty dva přepínače jsou jednodušší cesta ke stejnému limitu.

Před prvním nahráním

./blog.sh doctor ověří, že je rclone nainstalovaný – a že to není snap, který smí číst jen v tvém domovském adresáři a u webu uloženého kdekoli jinde selže při každém nasazení. ./blog.sh doctor --online pak vyjmenuje, co už v public_html leží, aniž by to tam dal web: na hostingu to bývá zástupná stránka hostingu nebo starý web, a co s tím, říká příspěvek Před prvním nasazením.

Komentáře