GNU/Linux >> Znalost Linux >  >> Panels >> Docker

7 užitečných tipů pro vlastní hostování instance Ghost pomocí Dockeru

Ghost je platforma CMS s otevřeným zdrojovým kódem, která je lehká, rychlá a zaměřuje se na vytváření webových stránek pro členství.

Vždy se můžete rozhodnout pro spravovaný hosting od samotného Ghostu. Ale protože se jedná o software s otevřeným zdrojovým kódem, můžete jej také hostovat na svém vlastním serveru a spravovat jej sami.

Díky cloudovým službám jako Linode a DigitalOcean je nasazení nového linuxového serveru s nainstalovaným Ghostem otázkou několika kliknutí.

Linode | Nezávislý otevřený cloud pro vývojáře Naším posláním je urychlit inovace tím, že bude cloud computing jednoduchý, cenově dostupný a dostupný pro všechny. Linode

Zatímco nasazení Ghost na cloudové servery je relativně jednodušší úkol, správa Ghost nemusí být vždy tak snadná.

Již několik měsíců spravujeme naši instanci Ghost pro hostování Linux Handbook. A tato zkušenost nás naučila několik věcí, které pravděpodobně nenajdete v oficiální dokumentaci Ghost.

V tomto článku budu hovořit o některých zásadních faktorech, které je třeba zvážit před nasazením vašeho blogu s Ghostem na produkční servery.

Mějte na paměti, že tento článek se týká obrazu Docker Ghost, vytvořeného a spravovaného komunitou vývojářů.

V DevOps Community se vždy snažíme přiblížit se co nejblíže stavu zvanému NoOps. Ale v praktickém smyslu to vždy zůstane paradoxem.

Zde se snažíme dosáhnout stejného cíle jako NoOps, ale s hybridním výhledem s lidským zásahem, kdykoli je to nutné.

Dovolte mi tedy bez dalšího prodlení získat a popsat základní věci, které zajistí stabilní a minimální údržbu instance Ghost.

1. Nastavte správně konfiguraci pošty

Prostřednictvím instance Ghost budete svým členům a odběratelům zasílat druhy e-mailů:

  • Transakční e-maily:pro přihlášení členů, potvrzení registrace atd.
  • Hromadné e-maily:pro zasílání e-mailových zpravodajů prostřednictvím Ghost

Pokud nechcete doručovat newslettery prostřednictvím Ghost, můžete použít jakoukoli službu SMTP. V opačném případě musíte použít Mailgun.

Nastavení SMTP pro transakční e-maily

Teoreticky by vaše instance Ghost měla být schopna používat službu přímé pošty díky Nodemailer.

To však může vést k tomu, že některé registrace selžou a zobrazí se chybová zpráva „Zadejte platnou e-mailovou adresu“.

To je důvod, proč musíte nastavit nastavení SMTP pomocí Mailgun nebo Amazon SES. Můžete také vyzkoušet další služby přenosu e-mailů, jako je SendGrid nebo Mailchimp.

Typické nastavení SMTP konfigurované pomocí Mailgun vypadá následovně (nastavené prostřednictvím souboru config.production.json ):

  "mail": {
    "transport": "SMTP",
    "options": {
        "service": "Mailgun",
        "host": "smtp.eu.mailgun.org",
        "port": 465,
        "secureConnection": true,
        "auth": {
            "user": "replace-me-with-a-mailgun-configured-email-address",
            "pass": "replace-me-with-the-relevant-mailgun-apikey"
        }
    }
  },

Sledujte číslo portu SMTP . Někdy e-maily selžou kvůli číslu portu. V našem případě některé e-maily selhaly s portem 587 a začaly pracovat s portem 465.

Úplné informace o ověření vaší domény a aktualizaci nezbytných záznamů DNS, které jsou také nutné pro odesílání e-mailů, naleznete v této dokumentaci od společnosti Mailgun zde.

Obecně musíte aktualizovat záznamy MX, CNAME a TXT získané z Mailgun v nastavení záznamu DNS na panelu názvu vaší domény. Na Linode vypadají takto:

Hromadné e-maily pro zasílání zpravodajů

Pro hromadné rozesílání newsletterů vašim členům je Mailgun jedinou dostupnou službou, která je dostupná pro implementaci do vaší konfigurace Ghost. Hromadné e-mailové služby jsou zcela odlišné od běžných služeb SMTP.

Chcete-li správně nakonfigurovat hromadný e-mail na Ghost pro vaše členy, musíte se nejprve ujistit, že je povoleno členství. To je jasný požadavek.

Nyní přejděte dolů do sekce e-mailu a rozbalte „Nastavení e-mailového zpravodaje“.

Zadejte název domény nakonfigurovaný Mailgun a klíč API. Oblast Mailgun by byla buď „EU“ nebo „USA“. Vyberte prosím vhodné.

Pokud si pamatujete výše v příkladu nastavení SMTP, název regionu „EU“ lze vnímat společně s názvem hostitele, což je smtp.eu.mailgun.org .

Přečtěte si zde další informace o názvu domény nakonfigurované Mailgun a klíči API. Chcete-li vybrat názvy domén, podívejte se sem.

2. Místo SQLite

zvolte pro databázi MySQL nebo MariaDB

Pokud je váš blog Ghost plánován pro produkční použití, doporučuji nepoužívat databázi SQLite, která je standardně poskytována v rámci kontejneru Ghost.

Důvod pro použití doporučené databáze jako MySQL nebo MariaDB je extrémně zásadní, když máte značný počet členů a chcete jim posílat e-mailové zpravodaje od samotného Ghostu.

Naučili jsme se to tvrdě. Zpočátku jsme pro vytváření a zasílání newsletteru používali MailerLite. Pak jsme se rozhodli využít vestavěnou funkci newsletteru Ghost.

V tuto chvíli máme kolem 1100 členů. A to vytvořilo problém, protože SQLite nemohl zpracovat tolik dotazů najednou. Nově vytvořený příspěvek se nepodařilo odeslat. Protokoly ukázaly tuto chybu:

Processed job threw an unhandled error
"The email service was unable to send an email batch."

Error ID:
    24bf8000-4f50-11eb-adf5-73dcc562a630

Error Code: 
    SQLITE_ERROR

To nebylo ono. Dokonce odmítlo vyvézt 1100 členů. Stahování se prostě nespustí. Stáhli jsme celou zálohu ve formátu JSON a extrahovali odtud informace o členech.

Chcete-li to vyřešit, migrujte z SQLite na MySQL nebo MariaDB, což by se stalo zbytečnou režií a vedlo by to k potenciálně nechtěným prostojům během migrace, které by mohly trvat i neomezeně dlouhou dobu. Proto je vždy lepší zpočátku nasadit Ghost s MySQL nebo MariaDB jako preventivní postup.

Následuje příklad typické konfigurace databázové služby MariaDB pro Ghost on Docker Compose:

    db:
        image: mariadb:10.5.3
        volumes:
            - ghostdb:/var/lib/mysql
        restart: on-failure
        environment:
            MYSQL_RANDOM_ROOT_PASSWORD: 1
            MYSQL_USER: rename-me
            MYSQL_PASSWORD: replace-me
            MYSQL_DATABASE: rename-me

3. Povolit rotaci protokolu

Rotace protokolu je proces automatického resetování souborů protokolu po požadovaném časovém období. To pomáhá vyhnout se vytváření velkých souborů protokolu, které se hromadí a zbytečně zabírají místo na disku serveru. Obecně platí, že pokud do konfigurace Ghost nezahrnete následující úryvek, bude to mít za následek nahromadění souborů protokolu do obrovských velikostí mezi 15–20 GB!:

  "logging": {
    "path": "content/logs/",
    "level": "info",
    "rotation": {
      "enabled": true,
      "count": 15,
      "period": "1d"
  },

Chcete-li získat podrobný přehled o přihlašování do Ghost, můžete navštívit příslušnou stránku dokumentace.

3. Použijte reverzní proxy

Vždy je další výhodou používat reverzní proxy od samého začátku, před nasazením Ghost. To výrazně usnadňuje správu vašich webových aplikací z krátkodobého i dlouhodobého hlediska.

Jak používat Nginx Reverse Proxy s více Docker AppsZjistěte, jak můžete nasadit více webových služeb na stejném serveru pomocí Nginx reverzního proxy a kontejnerů dockeru. Linux HandbookDebdut Chakraborty

4. Aktualizujte Ghost bez prostojů

Pokud používáte revers proxy, aktualizace instance Ghost bez výpadků bude snadný úkol.

Zde je to, co doporučuji. Nastavte Docker Notify, abyste byli informováni o novém obrazu Dockeru instance Ghost (s nejnovější verzí Ghost).

Pak můžete podle tohoto návodu aktualizovat svůj kontejner Docker.

Aktualizace kontejnerů Docker s nulovou dobou výpadku Metodika krok za krokem, která může být velmi užitečná ve vašich každodenních aktivitách DevOps, aniž by byla obětována neocenitelná doba provozuschopnosti. Příručka pro LinuxAvimanyu Bandyopadhyay

Naštěstí při provádění aktualizace nedochází k žádnému výpadku. Pokud jste již přihlášeni do administračního panelu (řekněme při psaní článku), nezaznamenali byste žádné anomálie.

Pokud však nejste přihlášeni, dokud starší kontejner po aktualizaci neodstraníte, panel administrátora se bude pokoušet o načtení, pokud se pokusíte znovu přihlásit.

Ale v produkčním smyslu bude samotný blog Ghost nadále dostupný na front-endu, i když provedete upgrade.

6. Vždy nastavte zásady restartování

Vzhledem k tomu, že používáte kontejner Ghost Docker, je zásada restartování vždy velmi důležitá a je nutné ji specifikovat ve vaší konfiguraci. To zajišťuje, že se váš kontejner Ghost vždy restartuje, kdykoli byl váš fyzický server restartován kvůli jakékoli události údržby.

Pokud má vaše obecná konfigurace Dockeru povoleno živé obnovení, doporučuje se použít on-failure zásady restartování. Chcete-li lépe porozumět zásadám restartování, podívejte se prosím do oficiální dokumentace, kde najdete úplný odkaz na tyto zásady.

Obvykle nastavujete takovou zásadu restartování v rámci služby souboru Docker Compose jako:

restart: on-failure
Zásady restartování Dockeru [vysvětleno s příklady]Použití zásady restartování může být velmi užitečné při automatickém restartování kontejnerů při určitých událostech nebo selháních. Linux HandbookAbhishek Prakash

7. Použít externí svazky dockeru

Pokud používáte svazky, které byly ručně vytvořeny před nasazením Ghost, usnadňuje to migraci obsahu (v rámci stejného nebo jiného serveru), pokud to bude v budoucnu potřeba. Poskytuje vám větší kontrolu nad vašimi daty, protože jste to vy, kdo vytváří a určuje svazek pro použití kontejnerem Ghost. V opačném případě byste jej museli nechat na Docker Compose, aby jej vytvořil lokálně.

Chcete-li vytvořit externí svazek Docker pro kontejner Ghost, použijte následující příkaz:

docker volume create ghost

Kde ghost je název vašeho externího svazku Docker Ghost.

Vzhledem k tomu, že jsem se již zmínil o výběru databáze MySQL nebo MariaDB pro zajištění lepšího výkonu u tisíců uživatelů, její objem musí být také vytvořen stejným způsobem:

docker volume create ghostdb

Kde ghostdb je název vašeho externího svazku Docker Ghost Database.

Chcete-li dát Docker Compose pokyn k použití těchto konkrétních svazků, které jste právě vytvořili výše, naše sekce svazků v souboru Docker Compose musí vypadat takto:

volumes:
  ghost:
    external: true
  ghostdb:
    external: true

Všimněte si, jak jsem uvedl, že tyto svazky Docker jsou externí povahy.

Bonusový tip:Naplánujte si pravidelné zálohování

Pokud používáte Linode, Digital Ocean nebo jiného podobného poskytovatele cloudových serverů, důrazně se doporučuje vždy povolit zálohování, když vytváříte server pro nasazení Ghost.

Když například vytvoříte server s 1 GB RAM (nazývaný nanode) na Linode, najdete zaškrtávací políčko s dotazem na povolení zálohování. Kdykoli nasazujete produkční server, vždy bych vám doporučil jej povolit, než přistoupíte ke skutečnému spuštění serveru pro první spuštění.

Také můžete na server nasadit skript založený na crontab a ručně pořídit snímek vašich externích svazků Docker pro Ghost.

Technicky vzato, objemová data, jak je diskutováno v předchozím ukazateli 7, zejména ghost a ghostdb , místně umístěn na adrese /var/lib/docker/volumes/ghost/_data a /var/lib/docker/volumes/ghostdb/_data resp. Chcete-li je efektivně archivovat, můžete tyto dva adresáře pravidelně zálohovat pomocí tar.

Protože byste nyní věděli, kdy tyto tar archivy by byly po archivaci snadno dostupné, můžete také nasadit další skript na svůj místní systém (předpokládá se, že bude spuštěn živě v určitou dobu na denní bázi u vás doma/v kanceláři), aby ssh na server Ghost a načetl tyto archivy. Tímto způsobem budete mít vždy místně aktualizovanou kopii svého blogu Ghost k dispozici bez ohledu na jakýkoli přístup k internetu.

Alternativně můžete také použít přístup logického zálohování pro zálohování databáze MySQL pomocí databázového příkazu mysqldump. Na MariaDB se příkaz nazývá mariadb-dump což není nic jiného než symbolický odkaz na stejný mysqldump příkaz.

Vynikající srovnání mezi fyzickými a logickými zálohami lze nalézt zde.

Zkroťte ducha

Jednalo se o kompilaci několika různých přístupů k minimalizaci a zabránění případným problémům s údržbou po nasazení instance Ghost. Doufám, že to pro vás bude užitečné, kdykoli spustíte nebo použijete svůj vlastní blog na Ghost.

V naší cestě s Ghostem budeme pokračovat a pokud narazíme na nějaký další problém, kterému by se dalo předejít jinou konfigurací při nasazení, aktualizujeme tento článek.

Pokud máte nějaké návrhy týkající se výše diskutovaných ukazatelů nebo máte nějaké nové, sdílejte je s námi v sekci konverzace níže. Rádi si přečteme a dozvíme se od vás více.


Docker
  1. 4 tipy, jak získat starší příbuzné online s Linuxem

  2. Kompletní průvodce k samohostování Rocket.Chat s Dockerem

  3. Jak aktualizovat kontejner Docker s nulovým výpadkem

  1. Udělejte z historie Bash užitečnější pomocí těchto tipů

  2. 5 tipů, jak začít se zabezpečením serveru Linux

  3. Další tipy pro balení vašeho linuxového softwaru pomocí RPM

  1. 3 tipy pro tisk s Linuxem

  2. Jak nainstalovat Jenkins pomocí Docker

  3. 3 strategie pro automatizované produkční nasazení s Dockerem