Jak nasadit Ghost v0.11 LTS na Ubuntu 16.04

Ghost je open source platforma pro blogování, která si od svého vydání v roce 2013 získává na popularitě mezi vývojáři i běžnými uživateli. Klade důraz na obsah a blogování. Nejatraktivnější věcí na Ghost je jeho jednoduchý, čistý a citlivý design. Příspěvky na svůj blog můžete psát z mobilního telefonu. Obsah pro Ghost je napsán pomocí jazyka Markdown. Ghost se perfektně hodí pro jednotlivce nebo malé skupiny spisovatelů.

V této příručce se chystáme nastavit a nasadit zabezpečený blog Ghost v0.11.x LTS na Ubuntu 16.04 LTS VPS pomocí Let's Encrypt , Certbot , Node.js , NPM , NGINX a MySQL .

Požadavky

  • Zaregistrujte (zakupte) název domény.
  • Instance serveru Ubuntu 16.04 s minimálně 1 GB RAM .
  • Uživatel Sudo.

Než začnete

  1. Vytvořte nový uživatelský účet bez oprávnění root :

    adduser johndoe --gecos "John Doe"
    
  2. Udělejte z něj superuživatele přidáním do sudoskupiny:

    usermod -aG sudo johndoe
    
  3. Přepnout na nového uživatele:

    su - johndoe
    
  4. Aktualizujte software svého operačního systému:

    sudo apt update && sudo apt upgrade -y
    
  5. Nastavte časové pásmo:

    sudo dpkg-reconfigure tzdata
    
  6. Nainstalujte požadované nástroje:

    sudo apt install -y build-essential zip unzip vim nano openssl wget curl git apt-transport-https
    
  7. V případě potřeby restartujte systém:

    sudo shutdown -r now
    

Nainstalujte Certbot

NOTE: Before starting this step, ensure that you have set DNS records for your domain.

K získání certifikátu SSL/TLS pro náš blog Ghost použijeme Let's Encrypt CA a EFF 's Certbot . Nezapomeňte nahradit všechny instance názvem vaší domény.blog.domain.tld

  1. Nainstalujte software pro správu certifikátů Certbot (dříve klienta Let's Encrypt ) vytvořený v Pythonu:

    sudo apt update
    sudo apt install -y software-properties-common
    sudo add-apt-repository -y ppa:certbot/certbot
    sudo apt update
    sudo apt install -y certbot
    
  2. Zkontrolujte verzi Certbot:

    certbot --version
    # certbot 0.14.2
    
  3. Získejte certifikát RSA pomocí samostatné autentizační metody (pluginu):

    sudo certbot certonly --standalone --domains blog.domain.tld --rsa-key-size 2048 --must-staple --email [email protected] --no-eff-email --agree-tos
    
    # IMPORTANT NOTES:
    #  - Congratulations! Your certificate and chain have been saved at 
       /etc/letsencrypt/live/blog.domain.tld/fullchain.pem. 
    #  Your cert will expire on YYYY-MM-DD. . . .
    #  . . .
    

    Po provedení předchozích kroků bude váš certifikát a soukromý klíč v /etc/letsencrypt/live/blog.domain.tldadresáři.

Nainstalujte Node.js a NPM

NOTE: Ghost currently supports Node.js versions 4.5+ and 6.9+ only.

Ghost je postaven na Node.js. Chystáme se nainstalovat doporučenou verzi pro Ghost, která je v6 Boron LTSv době psaní tohoto článku.

  1. Stáhněte a nainstalujte Node.js v6 LTS:

    curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
    sudo apt install -y nodejs
    
  2. Zkontrolujte verzi Node.js a NPM:

    node -v && npm -v
    # v6.11.1
    # 3.10.10
    

Nainstalujte MySQL

Ve výchozím nastavení je Ghost nakonfigurován pro použití databáze SQLite, která nevyžaduje žádnou konfiguraci.

Alternativně lze Ghost použít také s databází MySQL změnou konfigurace databáze. Nejprve musíte vytvořit databázi a uživatele, poté můžete změnit stávající konfiguraci sqlite3.

  1. Stáhněte a nainstalujte MySQL:

    sudo apt install -y mysql-server
    

    NOTE: During the installation, you will be prompted for MySQL "root" user password. You should set a secure password for the MySQL "root" user.

  2. Zkontrolujte verzi MySQL:

    mysql --version
    # mysql  Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using  EditLine wrapper
    
  3. Zkontrolujte, zda se spustil a běží démon MySQL:

    sudo systemctl status mysql.service
    sudo systemctl is-enabled mysql.service
    
  4. Spusťte mysql_secure_installationskript, abyste trochu zabezpečili databázi:

    sudo mysql_secure_installation
    
  5. Přihlaste se do MySQL jako uživatel root:

    mysql -u root -p
    # Enter password:
    
  6. Vytvořte novou databázi MySQL a uživatele:

    create database dbname;
    grant all on dbname.* to 'user' identified by 'password';
    
  7. Ukončete MySQL:

    exit
    

Nainstalujte NGINX

  1. Stáhněte si a nainstalujte nejnovější hlavní verzi NGINX z oficiálního úložiště NGINX:

    wget https://nginx.org/keys/nginx_signing.key
    sudo apt-key add nginx_signing.key
    rm nginx_signing.key
    sudo -s
    printf "deb https://nginx.org/packages/mainline/ubuntu/ `lsb_release -sc` nginx \ndeb-src https://nginx.org/packages/mainline/ubuntu/ `lsb_release -sc` nginx \n" >> /etc/apt/sources.list.d/nginx_mainline.list
    exit
    sudo apt update
    sudo apt install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt nginx-nr-agent
    
  2. Ověřte, zda je nainstalován, zkontrolováním verze NGINX:

    sudo nginx -v
    # nginx version: nginx/1.13.3
    
  3. Zkontrolujte stav, povolte a spusťte službu NGINX (démon):

    sudo systemctl status nginx.service # inactive (dead)
    sudo systemctl enable nginx.service
    sudo systemctl start nginx.service
    
  4. Vytvořte /etc/nginx/ssladresář a vygenerujte novou skupinu Diffie-Hellman ( DH ):

    sudo mkdir -p /etc/nginx/ssl
    sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
    
  5. Vytvořte adresář protokolu pro blog.domain.tldvirtuálního hostitele:

    sudo mkdir -p /var/log/nginx/blog.domain.tld
    
  6. Nakonfigurujte NGINX jako HTTP ( S ) reverzní proxy server:

    sudo vim /etc/nginx/conf.d/ghost.conf
    
  7. Vložte následující /etc/nginx/conf.d/ghost.conf:

    # domain: blog.domain.tld
    # public: /var/www/ghost
    
    upstream ghost_app {
        server 127.0.0.1:2368;
        keepalive 32;
    }
    
    server {
        listen [::]:80 default_server;
        listen 80 default_server;
        listen [::]:443 ssl http2 default_server;
        listen 443 ssl http2 default_server;
    
        server_name blog.domain.tld;
        root /var/www/ghost;
    
        error_log /var/log/nginx/blog.domain.tld/error.log;
        access_log /var/log/nginx/blog.domain.tld/access.log;
    
        client_max_body_size 100M;
    
        ssl_certificate /etc/letsencrypt/live/blog.domain.tld/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/blog.domain.tld/privkey.pem;
        ssl_dhparam ssl/dhparams-2048.pem;
    
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
        ssl_prefer_server_ciphers on;
    
        ssl_buffer_size 4K;
    
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50M;
        ssl_session_tickets off;
    
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_trusted_certificate /etc/letsencrypt/live/blog.domain.tld/chain.pem;
    
        resolver 8.8.8.8 8.8.4.4 valid=300s;
    
        location / {
            proxy_pass http://ghost_app;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_hide_header X-Powered-By;
    
            proxy_http_version 1.1;
            proxy_set_header Connection "";
    
        }
    }
    
  8. Uložte a otestujte konfiguraci NGINX na chyby syntaxe:

    sudo nginx -t
    
  9. Znovu načíst konfiguraci NGINX:

    sudo systemctl reload nginx.service
    

Nainstalujte Ghost

NOTE: If you want to host multiple Ghost blogs on same VPS, each Ghost instance must be running on a separate port.

  1. Vytvořte kořenový adresář dokumentu:

    sudo mkdir -p /var/www/
    
  2. Vytvořit nového ghostuživatele:

    sudo adduser --shell /bin/bash --gecos 'Ghost application' --disabled-password ghost
    
  3. Stáhnout Ghost:

    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.10/Ghost-0.11.10.zip -o ghost.zip
    
  4. Rozbalte Ghost do /var/www/ghostadresáře (doporučené umístění instalace):

    sudo unzip -uo ghost.zip -d /var/www/ghost
    rm ghost.zip
    
  5. Přesunout do nového ghostadresáře:

    cd /var/www/ghost
    
  6. Změňte vlastnictví /var/www/ghostadresáře:

    sudo chown -R ghost:ghost .
    
  7. Přepnout na nového ghostuživatele:

    sudo su - ghost
    
  8. Přejděte do kořenového adresáře dokumentu /var/www/ghost:

    cd /var/www/ghost
    
  9. Nainstalujte Ghost pouze s produkčními závislostmi. Po dokončení se Ghost nainstaluje:

    npm install --production
    
  10. Konfigurace Duch změnou url, maila databasevlastnost productionobjektu dovnitř config.jssouboru:

    cp config.example.js config.js
    vim /var/www/ghost/config.js
    
    
    var path = require('path'),
        config;
    
    config = {
        // ### Production
        // When running Ghost in the wild, use the production environment.
        // Configure your URL and mail settings here
        production: {
            url: 'https://blog.domain.tld',
            mail: {
                transport: 'SMTP',
                options: {
                    service: 'Mailgun',
                    auth: {
                        user: '',
                        pass: ''
                    }
                }
            },
            database: {
                client: 'mysql',
                connection: {
                    host: '127.0.0.1',
                    user: 'your_database_user',
                    password: 'your_database_password',
                    database: 'your_database_name',
                    charset: 'utf8'
                },
                debug: false
            },
            // . . .
            // . . .
    

    NOTE: You should configure mail settings also. Consult the official Ghost documentation on how to do that.

  11. Spusťte Ghost v produkčním prostředí:

    npm start --production
    

    Ghost nyní poběží. Front-end blogu i administrátorské rozhraní jsou zabezpečeny HTTPS a HTTP/2 funguje také. Můžete otevřít svůj prohlížeč a navštívit stránky na adrese https://blog.domain.tld. Nezapomeňte nahradit blog.domain.tldnázvem vaší domény.

  12. Vypněte proces Ghost stisknutím CTRL+ Ca ukončete z ghost uživatele zpět na uživatele root:

    exit
    

Spuštění Ghost jako systémové služby

Pokud zavřete relaci terminálu se svým VPS, váš blog také skončí. To není dobré. Abychom tomu zabránili, použijeme systemd. Náš blog bude fungovat 24/7.

  1. Vytvořte ghost.servicesoubor systemd unit. Spusťte sudo vim /etc/systemd/system/ghost.servicea zkopírujte/vložte níže uvedený obsah:

    [Unit]
    Description=Ghost - the professional publishing platform
    Documentation=https://docs.ghost.org/v0.11.9
    After=network.target
    
    [Service]
    Type=simple
    # Edit WorkingDirectory, User and Group as needed
    WorkingDirectory=/var/www/ghost
    User=ghost
    Group=ghost
    ExecStart=/usr/bin/npm start --production
    ExecStop=/usr/bin/npm stop --production
    Restart=always
    SyslogIdentifier=Ghost
    
    [Install]
    WantedBy=multi-user.target
    
  2. Povolit a spustit ghost.service:

    sudo systemctl enable ghost.service && sudo systemctl start ghost.service
    
  3. Zkontrolujte ghost.servicestav:

    sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service
    
  4. Přejděte https://blog.domain.tld/ghost/a vytvořte uživatele Ghost admin. Udělejte to co nejdříve!

Závěr

A je to. Nyní máme plně funkční blog Ghost. Váš server doručuje obsah prostřednictvím HTTP/2, pokud to klient podporuje. Pokud chcete změnit výchozí téma Ghost s názvem Casper na vlastní, stačí si stáhnout a rozbalit motiv do /var/www/ghost/content/themessložky a vybrat jej prostřednictvím administrátorského rozhraní Ghost na adrese https://blog.domain.tld/ghost.


Vytvoření blogu Jekyll na Ubuntu 16.04

Vytvoření blogu Jekyll na Ubuntu 16.04

Používáte jiný systém? Jekyll je skvělá alternativa k WordPressu pro blogování nebo sdílení obsahu. Nevyžaduje žádné databáze a je velmi snadné i

Jak nainstalovat MODX Revolution na Ubuntu 16.04 LAMP VPS

Jak nainstalovat MODX Revolution na Ubuntu 16.04 LAMP VPS

Používáte jiný systém? MODX Revolution je rychlý, flexibilní, škálovatelný, bezplatný a open source podnikový systém správy obsahu (CMS) napsaný i

Jak nainstalovat MODX Revolution na FreeBSD 11 FAMP VPS

Jak nainstalovat MODX Revolution na FreeBSD 11 FAMP VPS

Používáte jiný systém? MODX Revolution je rychlý, flexibilní, škálovatelný, open source podnikový systém správy obsahu (CMS) napsaný v PHP. To i

Nainstalujte WordPress na OpenBSD 6.2

Nainstalujte WordPress na OpenBSD 6.2

Úvod WordPress je dominantním redakčním systémem na internetu. Pohání vše od blogů po složité webové stránky s dynamickým obsahem

Vytvoření blogu Jekyll na CentOS 7

Vytvoření blogu Jekyll na CentOS 7

Používáte jiný systém? Jekyll je dobrou alternativou k WordPressu. Nevyžaduje žádné databáze a pracuje s jazykem, který mnozí zná

Jak nainstalovat MODX Revolution na CentOS 7 LAMP VPS

Jak nainstalovat MODX Revolution na CentOS 7 LAMP VPS

Používáte jiný systém? MODX Revolution je rychlý, flexibilní, škálovatelný, bezplatný a open source podnikový systém správy obsahu (CMS) napsaný i

Instalace Fork CMS na CentOS 7

Instalace Fork CMS na CentOS 7

Používáte jiný systém? Fork je open source CMS napsaný v PHP. Zdrojový kód Forks je hostován na GitHubu. Tato příručka vám ukáže, jak nainstalovat Fork CM

Jak nainstalovat Neos CMS na CentOS 7

Jak nainstalovat Neos CMS na CentOS 7

Neos je inovativní open source systém pro správu obsahu, který je skvělý pro vytváření a úpravy online obsahu. S ohledem na autory a editory, Neo

Jak nasadit Ghost v0.11 LTS na CentOS 7.3

Jak nasadit Ghost v0.11 LTS na CentOS 7.3

Používáte jiný systém? Ghost je open source platforma pro blogování, která si od roku 201 získává oblibu mezi vývojáři i běžnými uživateli.

Jak nainstalovat SilverStripe CMS na FreeBSD 11 FAMP VPS

Jak nainstalovat SilverStripe CMS na FreeBSD 11 FAMP VPS

Používáte jiný systém? SilverStripe je flexibilní a rozšiřitelný, open source, podnikový systém správy obsahu (CMS) napsaný v PHP. Je to snadné

Jak nasadit Ghost v0.11 LTS na Fedoře 25

Jak nasadit Ghost v0.11 LTS na Fedoře 25

Používáte jiný systém? Ghost je open source platforma pro blogování, která si od roku 201 získává oblibu mezi vývojáři i běžnými uživateli.

Jak nasadit více webů Wordpress pomocí Virtualmin a Ansible na Ubuntu 16.04

Jak nasadit více webů Wordpress pomocí Virtualmin a Ansible na Ubuntu 16.04

Běžným využitím virtuálního serveru Vultr je hostování webových stránek Wordpress. Tato příručka vám ukáže, jak automatizovat konfiguraci virtuálního serveru od nuly

Nastavení Ghost Professional Publishing Platform na OpenBSD 6

Nastavení Ghost Professional Publishing Platform na OpenBSD 6

Ghost je nejnovější a největší nováček konkurenčního WordPressu. Vývoj tématu je rychlý a snadno se učí, protože vývojáři Ghost se rozhodli použít oba th

Nainstalujte a nakonfigurujte blog Ghost v1.0.0 na Ubuntu 16.04

Nainstalujte a nakonfigurujte blog Ghost v1.0.0 na Ubuntu 16.04

Ghost je moderní platforma pro publikování s otevřeným zdrojovým kódem postavená na Node.js s administračním klientem Ember.js, rozhraním JSON API a tematickým API založeným na Handlebars.js. Ghos

Jak nainstalovat MODX Revolution na Fedora 26 LAMP VPS

Jak nainstalovat MODX Revolution na Fedora 26 LAMP VPS

Používáte jiný systém? MODX Revolution je rychlý, flexibilní, škálovatelný, bezplatný a open source podnikový systém správy obsahu (CMS) napsaný i

Jak nainstalovat Dotclear na Debian 9 (Stretch)

Jak nainstalovat Dotclear na Debian 9 (Stretch)

Používáte jiný systém? Dotclear je velmi jednoduchý blogovací engine. Je to open source a snadno se používá. Tento tutoriál projde instalací na

Jak nainstalovat SilverStripe CMS na Fedora 26 LAMP VPS

Jak nainstalovat SilverStripe CMS na Fedora 26 LAMP VPS

Používáte jiný systém? SilverStripe je flexibilní a rozšiřitelný bezplatný a open source podnikový systém správy obsahu (CMS) napsaný v PHP. já

Instalace Fork CMS na Ubuntu 16.04 LTS

Instalace Fork CMS na Ubuntu 16.04 LTS

Používáte jiný systém? Fork je open source CMS napsaný v PHP. Zdrojový kód Forks je hostován na GitHubu. Tato příručka vám ukáže, jak nainstalovat Fork CM

Jak nasadit Ghost na Debianu 8.7

Jak nasadit Ghost na Debianu 8.7

Používáte jiný systém? Ghost je open source platforma pro blogování, která si od svého vydání v roce 2013 získává na popularitě mezi vývojáři i běžnými uživateli. já

Instalace Fork CMS na Debian 9

Instalace Fork CMS na Debian 9

Používáte jiný systém? Fork je open source CMS napsaný v PHP. Zdrojový kód Forks je hostován na GitHubu. Tato příručka vám ukáže, jak nainstalovat Fork CM

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Umělá inteligence není v budoucnosti, je zde přímo v současnosti V tomto blogu si přečtěte, jak aplikace umělé inteligence ovlivnily různé sektory.

Útoky DDOS: Stručný přehled

Útoky DDOS: Stručný přehled

Jste také obětí DDOS útoků a nemáte jasno v metodách prevence? Chcete-li vyřešit své dotazy, přečtěte si tento článek.

Přemýšleli jste někdy, jak hackeři vydělávají peníze?

Přemýšleli jste někdy, jak hackeři vydělávají peníze?

Možná jste slyšeli, že hackeři vydělávají spoustu peněz, ale napadlo vás někdy, jak takové peníze vydělávají? Pojďme diskutovat.

Revoluční vynálezy od Googlu, které vám usnadní život.

Revoluční vynálezy od Googlu, které vám usnadní život.

Chcete vidět revoluční vynálezy Google a jak tyto vynálezy změnily život každého dnešního člověka? Pak si přečtěte na blogu a podívejte se na vynálezy od Googlu.

Friday Essential: Co se stalo s auty řízenými umělou inteligencí?

Friday Essential: Co se stalo s auty řízenými umělou inteligencí?

Koncept aut s vlastním pohonem, která vyrazí na silnice s pomocí umělé inteligence, je snem, který už nějakou dobu máme. Ale přes několik slibů nejsou nikde vidět. Přečtěte si tento blog a dozvíte se více…

Technologická singularita: vzdálená budoucnost lidské civilizace?

Technologická singularita: vzdálená budoucnost lidské civilizace?

Jak se věda vyvíjí rychlým tempem a přebírá mnoho našeho úsilí, stoupá také riziko, že se vystavíme nevysvětlitelné singularitě. Přečtěte si, co pro nás může znamenat singularita.

Evoluce ukládání dat – Infografika

Evoluce ukládání dat – Infografika

Způsoby ukládání dat se mohou vyvíjet od narození dat. Tento blog se zabývá vývojem ukládání dat na základě infografiky.

Funkcionality vrstev referenční architektury velkých dat

Funkcionality vrstev referenční architektury velkých dat

Přečtěte si blog, abyste co nejjednodušším způsobem poznali různé vrstvy v architektuře velkých dat a jejich funkce.

6 úžasných výhod toho, že máme v životě zařízení pro chytrou domácnost

6 úžasných výhod toho, že máme v životě zařízení pro chytrou domácnost

V tomto digitálním světě se chytrá domácí zařízení stala klíčovou součástí života. Zde je několik úžasných výhod chytrých domácích zařízení o tom, jak náš život stojí za to žít a zjednodušit jej.

Aktualizace doplňku macOS Catalina 10.15.4 způsobuje více problémů než řešení

Aktualizace doplňku macOS Catalina 10.15.4 způsobuje více problémů než řešení

Apple nedávno vydal doplňkovou aktualizaci macOS Catalina 10.15.4, která opravuje problémy, ale zdá se, že aktualizace způsobuje další problémy, které vedou k zablokování počítačů mac. Přečtěte si tento článek a dozvíte se více