Ako nasadiť Ghost Blog s Nginx na Debian 12
Na tejto stránke
- Predpoklady
- Krok 1 – Nakonfigurujte bránu firewall UFW
- Krok 2 - Nainštalujte Nginx
- Krok 3 – Nainštalujte Node.js
- Krok 4 - Nainštalujte MySQL pomocou Docker
Krok 5 - Nainštalujte Ghost
- Nainštalujte Ghost-CLI
- Pripravte Ghost Directory
- Nainštalujte Ghost
Ghost je platforma na blogovanie s otvoreným zdrojom, ktorá vám pomôže vytvoriť profesionálne vyzerajúci blog. Bol spustený v roku 2013 ako alternatíva k WordPress. Je napísaný v jazyku JavaScript a využíva ho knižnica Node.js.
V tomto návode preskúmame, ako nainštalovať Ghost CMS pomocou Nginx a MySQL na server poháňaný Debianom 12. Na zabezpečenie našej inštalácie použijeme certifikát Let's Encrypt SSL.
Predpoklady
Server so systémom Debian 12 s minimálne 2 GB RAM.
Používateľ bez oprávnenia root s oprávneniami sudo.
Plne kvalifikovaný názov domény (FQDN) ako example.com smerujúci na váš server.
Uistite sa, že je všetko aktualizované.
$ sudo apt update
$ sudo apt upgrade
Niekoľko balíkov, ktoré váš systém potrebuje.
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y
Niektoré z týchto balíkov už môžu byť vo vašom systéme nainštalované.
Krok 1 – Nakonfigurujte bránu firewall UFW
Prvým krokom je konfigurácia brány firewall. Debian sa štandardne dodáva s ufw (Uncomplicated Firewall).
Skontrolujte, či je spustený firewall.
$ sudo ufw status
Mali by ste dostať nasledujúci výstup.
Status: inactive
Povoľte port SSH, aby firewall pri jeho povolení neprerušil aktuálne pripojenie.
$ sudo ufw allow OpenSSH
Povoliť aj porty HTTP a HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Povoľte bránu firewall
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Znova skontrolujte stav brány firewall.
$ sudo ufw status
Mali by ste vidieť podobný výstup.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Krok 2 - Nainštalujte Nginx
Debian 12 sa dodáva so staršou verziou Nginx. Ak chcete nainštalovať najnovšiu verziu, musíte si stiahnuť oficiálne úložisko Nginx.
Importujte podpisový kľúč Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Pridajte úložisko pre stabilnú verziu Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Aktualizujte systémové úložiská.
$ sudo apt update
Nainštalujte Nginx.
$ sudo apt install nginx
Overte inštaláciu. Na spustenie príkazu v Debiane sa vyžaduje sudo.
$ sudo nginx -v
nginx version: nginx/1.24.0
Spustite server Nginx.
$ sudo systemctl start nginx
Krok 3 – Nainštalujte Node.js
Ghost Installer potrebuje na fungovanie Nodejs. Prvým krokom je import kľúča Nodesource GPG.
$ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg
Ďalej vytvorte súbor úložiska Nodesource. Nainštalujeme Node 18x, čo je aktuálna verzia LTS (Long Term Support), čo odporúča Ghost.
$ NODE_MAJOR=18
$ echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
Aktualizujte zoznam systémového úložiska.
$ sudo apt update
Nainštalujte Node.
$ sudo apt install nodejs -y
Potvrďte inštaláciu uzla.
$ node --version
v18.18.2
Krok 4 - Nainštalujte MySQL pomocou Docker
Debian sa už nedodáva s MySQL. Namiesto toho sa dodáva s MariaDB. Ghost podporuje iba MySQL. Ghost môžete vyladiť tak, aby fungoval s MariaDB, ale neodporúča sa to. Keďže oficiálne úložiská MySQL neboli v čase písania tohto návodu aktualizované pre Debian 12, nainštalujeme ho pomocou Dockera.
Importujte kľúč GPG Docker.
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
Vytvorte súbor úložiska Docker.
$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Aktualizujte zoznam systémového úložiska.
$ sudo apt update
Nainštalujte Docker a Docker Compose.
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
V predvolenom nastavení Docker vyžaduje oprávnenia root. Ak sa chcete vyhnúť používaniu sudo pri každom spustení príkazu docker, pridajte svoje používateľské meno do skupiny docker.
$ sudo usermod -aG docker $(whoami)
Ak chcete povoliť túto zmenu, budete sa musieť odhlásiť zo servera a znova sa prihlásiť ako rovnaký používateľ alebo použiť nasledujúci príkaz.
$ su - ${USER}
Potvrďte, že váš používateľ je pridaný do skupiny Docker.
$ groups
navjot wheel docker
Teraz, keď je nainštalovaný Docker, musíme vytvoriť súbor na zostavenie Docker pre MySQL. Vytvorte adresár pre MySQL docker.
$ mkdir ~/mysql
Vytvorte a otvorte súbor docker-compose.yml na úpravu.
$ nano docker-compose.yml
Vložte do nej nasledujúci kód.
services:
database:
image: container-registry.oracle.com/mysql/community-server:latest
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_USER: ghost
MYSQL_PASSWORD: ghostpassword
MYSQL_DATABASE: ghostdb
ports:
- "3306:3306"
volumes:
- ./mysql:/var/lib/mysql
Uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y.
Tu sme nastavili heslo root a poverenia MySQL pre databázu Ghost. Tie sa vytvoria pri spustení kontajnera.
Spustite kontajner MySQL.
$ docker compose up -d
Skontrolujte stav kontajnera Docker.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ec42fb205f1e container-registry.oracle.com/mysql/community-server:latest "/entrypoint.sh mysq…" 4 seconds ago Up 2 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060-33061/tcp mysql
Ghost sa môže pripojiť ku kontajneru MySQL pomocou portu 3306 a vykonávať na ňom operácie.
Krok 5 - Nainštalujte Ghost
Ghost môžeme nainštalovať aj pomocou Dockera, čo môže veci zjednodušiť, ale tu to robiť nebudeme.
Inštalácia Ghost bude pozostávať z troch komponentov – nástroja príkazového riadka Ghost-CLI, ktorý inštaluje a spravuje aktualizácie blogu Ghost a samotného balíka blogu.
Nainštalujte Ghost-CLI
Spustite nasledujúci príkaz a nainštalujte nástroj Ghost-CLI.
$ sudo npm install ghost-cli@latest -g
Pripravte Ghost Directory
Vytvorte koreňový adresár Ghost.
$ sudo mkdir -p /var/www/html/ghost
Nastavte vlastníctvo adresára na aktuálneho používateľa.
$ sudo chown $USER:$USER /var/www/html/ghost
Nastavte správne povolenia adresára.
$ sudo chmod 755 /var/www/html/ghost
Prepnite sa do adresára Ghost.
$ cd /var/www/html/ghost
Nainštalujte Ghost
Inštalácia Ghost je proces s jedným príkazom.
$ ghost install
Počas inštalácie vám nástroj CLI položí niekoľko otázok na konfiguráciu blogu.
- Adresa URL blogu: Zadajte úplnú adresu URL blogu spolu s protokolom https. (
https://example.com) - Názov hostiteľa MySQL: Stlačením klávesu Enter použijete predvolenú hodnotu
localhost, pretože naša inštalácia Ghost a MySQL sú na rovnakom serveri. - Používateľské meno MySQL: Ako používateľské meno MySQL zadajte
ghost. - Heslo MySQL: Zadajte heslo používateľa root, ktoré ste predtým vytvorili do súboru docker.
- Názov databázy duchov: Zadajte názov databázy (
ghostdb) nakonfigurovaný v súbore doku. - Heslo sudo: pri vykonávaní administratívnych úloh bude vyžadovať vaše heslo sudo.
- Nastaviť Nginx? Ghost-CLI zvyčajne zistí vašu inštaláciu Nginx a automaticky ju nakonfiguruje pre váš blog. Ale to funguje iba pre Nginx nainštalovaný pomocou balíka OS. Keďže sme ho nainštalovali pomocou úložiska Nginx, Ghost ho nedokáže zistiť a automaticky ho preskočí.
- Nastaviť SSL?: Keďže sa preskočila konfigurácia Nginx, nástroj CLI preskočí aj nastavenie SSL.
- Nastaviť systemd?: Ghost sa vás opýta, či chcete nastaviť systémovú službu pre Ghost. Pokračujte stlačením Y.
- Spustiť Ghost?: Stlačením Y spustíte inštaláciu Ghost. Nebude to však fungovať, pretože Nginx a SSL ešte nie sú nakonfigurované.
Krok 6 – Nainštalujte SSL
Než budeme pokračovať, musíme si nainštalovať nástroj Certbot a nainštalovať SSL certifikát pre našu doménu.
Na inštaláciu Certbotu použijeme inštalačný program balíkov Snapd. Snapd vždy obsahuje najnovšiu stabilnú verziu Certbotu. Debian sa však nedodáva s nainštalovaným Snapd. Najprv ho nainštalujte.
$ sudo apt install snapd
Uistite sa, že vaša verzia snapdu je aktuálna.
$ sudo snap install core
$ sudo snap refresh core
Nainštalujte Certbot.
$ sudo snap install --classic certbot
Pomocou nasledujúceho príkazu zaistite spustenie príkazu Certbot vytvorením symbolického odkazu na adresár /usr/bin.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Overte inštaláciu.
$ certbot --version
certbot 2.7.1
Vygenerujte certifikát SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email -d example.com
Vyššie uvedený príkaz stiahne certifikát do adresára /etc/letsencrypt/live/example.com na vašom serveri.
Vygenerujte certifikát Diffie-Hellman group.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Skontrolujte službu plánovača obnovy Certbot.
$ sudo systemctl list-timers
Ako jednu zo služieb naplánovaných na spustenie nájdete snap.certbot.renew.service.
NEXT LEFT LAST PASSED UNIT ACTIVATES
Tue 2023-10-17 00:00:00 UTC 14h left Mon 2023-10-16 00:00:18 UTC 9h ago dpkg-db-backup.timer dpkg-db-backup.service
Mon 2023-10-16 19:12:00 UTC 9h left Mon 2023-10-16 07:27:11 UTC 2h 17min ago snap.certbot.renew.timer snap.certbot.renew.service
Mon 2023-10-16 20:49:14 UTC 11h left Mon 2023-10-16 07:48:12 UTC 1h 56min ago apt-daily.timer apt-daily.service
Vykonajte suchý chod procesu a skontrolujte, či obnovenie SSL funguje správne.
$ sudo certbot renew --dry-run
Ak nevidíte žiadne chyby, všetko je nastavené. Váš certifikát sa automaticky obnoví.
Krok 7 - Nakonfigurujte Nginx
Vytvorte a otvorte súbor /etc/nginx/conf.d/ghost.conf na úpravu.
$ sudo nano /etc/nginx/conf.d/ghost.conf
Vložte nasledujúci kód do súboru ghost.conf. Nahraďte všetky výskyty example.com svojou doménou.
server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
access_log /var/log/nginx/ghost.access.log;
error_log /var/log/nginx/ghost.error.log;
client_max_body_size 20m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
resolver_timeout 2s;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:2368;
}
}
Vyššie uvedená konfigurácia presmeruje všetky HTTP požiadavky na HTTPS a bude slúžiť ako proxy pre službu Ghost, ktorá ju bude obsluhovať prostredníctvom vašej domény.
Uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y.
Otvorte súbor /etc/nginx/nginx.conf na úpravu.
$ sudo nano /etc/nginx/nginx.conf
Pridajte nasledujúci riadok pred riadok include /etc/nginx/conf.d/*.conf;.
server_names_hash_bucket_size 64;
Uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y.
Overte svoju konfiguráciu Nginx.
$ sudo nginx -t
Ak nevidíte žiadne chyby, znamená to, že môžete začať. Ak chcete použiť konfiguráciu, reštartujte server Nginx.
$ sudo systemctl restart nginx
Krok 9 – Spustite stránku
Teraz môžete svoju inštaláciu overiť otvorením https://example.com vo svojom webovom prehliadači. Zobrazí sa nasledujúca stránka označujúca úspešnú inštaláciu.
Krok 10 – Dokončite nastavenie
Ak chcete dokončiť nastavenie svojho blogu Ghost, navštívte v prehliadači https://example.com/ghost. Extra /ghost na konci domény vášho blogu vás presmeruje na administrátorský panel Ghost alebo v tomto prípade na nastavenie, pretože k nemu pristupujete prvýkrát.
Tu budete musieť vytvoriť svoj účet správcu a zvoliť názov blogu.
Zadajte svoje údaje a pokračujte kliknutím na tlačidlo Vytvoriť účet a začať publikovať.
Ďalej sa dostanete na nasledujúcu obrazovku, kde máte k dispozícii možnosti, ako je napísanie prvého príspevku, prispôsobenie stránky a import členov.
Na preskúmanie vyberieme správcu Explore Ghost a prejdeme priamo na panel. Na konci nastavenia vás privíta panel Ghost's Administration.
Ak chcete prepnúť do tmavého režimu, môžete tak urobiť kliknutím na prepínač vedľa tlačidla ozubeného kolieska nastavení v spodnej časti stránky nastavení.
Uvidíte predvolený príspevok. Zverejnenie môžete zrušiť alebo odstrániť a začať uverejňovať.
Krok 11 - Nakonfigurujte Mailer
Ghost pôsobí nielen ako blogovacia platforma, ale aj ako správca newsletterov. Pre každodenné operácie môžete použiť akúkoľvek transakčnú poštovú službu na prácu s Ghostom na odosielanie pošty. Ak však chcete posielať bulletiny cez Ghost, jediným podporovaným oficiálnym hromadným odosielateľom je Mailgun. Môžete použiť aj inú službu bulletinu, ale na to budete musieť použiť integračnú funkciu Zapier Ghost.
Najprv nakonfigurujeme službu SMTP pre transakčné e-maily. Na úpravu otvorte súbor /var/www/html/ghost/config.production.json.
$ nano /var/www/html/ghost/config.production.json
Nájdite nasledujúce riadky.
"mail": {
"transport": "Direct"
},
Nahraďte ich nasledujúcim kódom.
"mail": {
"from": "'HowtoForge Support' [email ",
"transport": "SMTP",
"options": {
"host": "YOUR-SES-SERVER-NAME",
"port": 465,
"service": "SES",
"auth": {
"user": "YOUR-SES-SMTP-ACCESS-KEY-ID",
"pass": "YOUR-SES-SMTP-SECRET-ACCESS-KEY"
}
}
},
Tu používame službu Amazon SES Mail, pretože je cenovo dostupná a nevyžaduje mesačné poplatky.
Uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y. Po dokončení reštartujte aplikáciu Ghost, aby sa zmeny prejavili.
$ ghost restart
Ak chcete nakonfigurovať nastavenia bulletinu, navštívte časť Nastavenia >> E-mailový bulletin.
Kliknutím na odkaz Konfigurácia pošty rozbaľte.
Vyplňte svoju oblasť Mailgun, doménu a kľúč API.
Nastavenia uložíte kliknutím na tlačidlo Uložiť vpravo hore.
Ak chcete otestovať doručovanie bulletinu, vytvorte nový testovací príspevok, stlačte tlačidlo publikovať a vyberte možnosť Iba e-mail. Ak chcete zverejniť aj príspevok, vyberte možnosť Zverejniť a poslať e-mailom.
Pokračujte kliknutím na tlačidlo Pokračovať, posledná kontrola. Na ďalšej stránke sa znova zobrazí výzva na konečné potvrdenie.
Kliknutím na tlačidlo Odoslať e-mail hneď teraz odošlete bulletin. Po odoslaní pošty dostanete nasledujúcu správu.
Skontrolujte svoj e-mail pre príspevok.
Krok 12 - Aktualizujte Ghost
Existujú dva typy aktualizácií Ghost – menšie aktualizácie a veľké aktualizácie.
Najprv urobte úplnú zálohu, ak chcete spustiť menšiu aktualizáciu. Vytvára zálohu všetkých príspevkov, členov, tém, obrázkov, súborov a súborov s presmerovaním.
$ cd /var/www/html/ghost
$ ghost backup
Spustite príkaz update na vykonanie menšej aktualizácie.
$ ghost update
Ak chcete vykonať veľkú aktualizáciu, mali by ste postupovať podľa oficiálneho podrobného sprievodcu aktualizáciou na stránke Ghost. V závislosti od aktuálnej verzie a hlavnej verzie, na ktorú chcete aktualizovať, sa kroky budú líšiť.
Záver
Toto uzatvára náš návod, ako nastaviť Ghost CMS na vašom serveri Debian 12 pomocou Nginx. Ak máte nejaké otázky alebo spätnú väzbu, podeľte sa o ne v komentároch nižšie.











