Jak nasadit Ghost v0.11 LTS na CentOS 7.3

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 CentOS 7.3 VPS pomocí Let's Encrypt , Certbot , Node.js , NPM , NGINX a MySQL .

Požadavky

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

Než začnete

  1. Zkontrolujte verzi CentOS:

    cat /etc/centos-release
    # CentOS Linux release 7.3.1611 (Core)
    
  2. Vytvořte nového uživatele bez oprávnění root :

    useradd -c "John Doe" johndoe && passwd johndoe
    
  3. Udělejte z něj superuživatele přidáním do wheelskupiny:

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

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

    sudo yum check-update || sudo yum update -y
    
  6. Nastavte časové pásmo:

    timedatectl list-timezones
    sudo timedatectl set-timezone 'Region/City'
    
  7. Nainstalujte vývojové nástroje:

    sudo yum groupinstall -y 'Development Tools'
    
  8. Nainstalujte textový editor Vim:

    sudo yum install -y vim
    
  9. 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. Povolte úložiště Extra Packages for Enterprise Linux (EPEL):

    # Certbot is packaged in Extra Packages for Enterprise Linux (EPEL) repository. To use Certbot, you must first enable the EPEL repository.
    sudo yum install -y epel-release
    
  2. Nainstalujte software pro správu certifikátů Certbot (dříve klienta Let's Encrypt ) vytvořený v Pythonu:

    sudo yum install -y certbot
    
  3. Zkontrolujte verzi Certbot:

    certbot --version
    # certbot 0.14.1
    
  4. 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 admin@domain.tld --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:

    sudo curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
    sudo yum install -y nodejs
    
  2. Zkontrolujte verzi Node.js a NPM:

    node -v && npm -v
    # v6.11.2
    # 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 nejnovější verzi MySQL (aktuálně 5.7 ) z oficiálního úložiště MySQL Yum:

    cd /tmp
    
    # Adding the MySQL Yum Repository
    wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    sudo yum localinstall -y mysql57-community-release-el7-11.noarch.rpm
    
    # Installing MySQL
    sudo yum install -y mysql-community-server
    
  2. Zkontrolujte verzi MySQL:

    mysql --version
    # mysql  Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using  EditLine wrapper
    
  3. Spusťte MySQL Server a zkontrolujte jeho stav:

    sudo systemctl start mysqld.service
    sudo systemctl status mysqld.service
    
  4. MySQL verze 5.7 nebo vyšší generuje dočasné náhodné heslo pro rootuživatele MySQL po instalaci a heslo je uloženo v souboru protokolu chyb MySQL, který se nachází na adrese /var/log/mysqld.log. Chcete-li jej odhalit, použijte následující příkaz:

    sudo grep 'temporary password' /var/log/mysqld.log
    
  5. Spusťte mysql_secure_installationskript, abyste trochu zabezpečili databázi:

    NOTE: Password Validation Plugin is installed and enabled, so your new password for root user needs to be strong (one upper case letter, one lower case letter, one digit, and one special character, and that the total password length is at least 8 characters). If you want to relax that or disable plugin completely (not recommended) consult the official MySQL documentation for how to do that.

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

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

    create database dbname;
    grant all on dbname.* to 'user' identified by 'password';
    
  8. 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:

    # Add the NGINX Yum Repository
    sudo vim /etc/yum.repos.d/nginx_mainline.repo
    
    
    # Copy/paste the following into /etc/yum.repos.d/nginx_mainline.repo
    [nginx]
    name=nginx repo
    baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/
    gpgcheck=1
    enabled=1
    
    
    wget https://nginx.org/keys/nginx_signing.key
    sudo rpm --import nginx_signing.key
    rm nginx_signing.key
    
    sudo yum 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 nové parametry 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řte nového uživatele ducha:

    sudo useradd -c 'Ghost application' ghost
    
  3. Stáhnout Ghost:

    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.11/Ghost-0.11.11.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řesuňte se do nového adresáře duchů:

    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 databasevlastnictví výrobních objektů 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 bez oprávnění root, kterého jste vytvořili na začátku:

    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 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.11/docs
    After=network.target
    
    [Service]
    Type=simple
    # Edit WorkingDirectory, User and Group as needed
    WorkingDirectory=/var/www/ghost
    User=ghost
    Group=ghost
    ExecStart=/bin/npm start --production
    ExecStop=/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.

Zanechat komentář

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.

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.

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.

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