Come distribuire Ghost v0.11 LTS su Debian 8

Ghost è una piattaforma di blog open source che sta guadagnando popolarità tra gli sviluppatori e gli utenti ordinari dalla sua versione del 2013. Si concentra su contenuti e blog. La cosa più interessante di Ghost è il suo design semplice, pulito e reattivo. Puoi scrivere i post del tuo blog da un telefono cellulare. Il contenuto per Ghost è scritto usando il linguaggio Markdown. Ghost è perfetto per singoli o piccoli gruppi di scrittori.

In questa guida, configureremo e distribuiremo un blog LTS Ghost v0.11.x sicuro su un VPS Debian 8 usando Let's Encrypt , Certbot , Node.js , NPM , NGINX e MySQL .

Requisiti

  • Registrare (acquistare) un nome di dominio.
  • Istanza del server Debian 8 con almeno 1 GB di RAM .
  • Utente Sudo.

Prima di iniziare

  1. Controlla la versione di Debian:

    lsb_release -ds
    # Debian GNU/Linux 8.9 (jessie)
    
  2. Crea un nuovo account utente non root :

    adduser johndoe --gecos "John Doe"
    
  3. Rendilo superutente aggiungendolo al sudogruppo:

    usermod -aG sudo johndoe
    
  4. Passa al nuovo utente:

    su - johndoe
    
  5. Aggiorna il software del tuo sistema operativo:

    sudo apt-get update && sudo apt-get upgrade -y
    
  6. Imposta il fuso orario:

    sudo dpkg-reconfigure tzdata
    
  7. Installa gli strumenti richiesti:

    sudo apt-get install -y build-essential zip unzip git apt-transport-https
    
  8. Riavviare il sistema se necessario:

    sudo shutdown -r now
    

Installa Certbot

NOTA : prima di iniziare questo passaggio, assicurarsi di aver impostato i record DNS per il proprio dominio.

Utilizzeremo Let's Encrypt CA e il client Certbot di EFF per ottenere il certificato SSL / TLS per il nostro blog Ghost. Non dimenticare di sostituire tutte le istanze di blog.domain.tldcon il tuo nome di dominio.

  1. Installa il software di gestione certificati Certbot (precedentemente Let's Encrypt client ) realizzato con Python:

    sudo -s
    printf "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list.d/jessie-backports.list
    exit        
    sudo apt-get update
    sudo apt-get install -y certbot -t jessie-backports
    
  2. Controlla la versione di Certbot:

    certbot --version
    # certbot 0.10.2
    
  3. Ottieni il certificato RSA usando il metodo di autenticazione autonomo (plugin):

    sudo certbot certonly --standalone --domains blog.domain.tld --rsa-key-size 2048 --must-staple --email [email protected] --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. . . .
    #  . . .
    

    Dopo aver eseguito i passaggi precedenti, il certificato e la chiave privata saranno nella /etc/letsencrypt/live/blog.domain.tlddirectory.

Installa Node.js e NPM

NOTA : Ghost supporta attualmente solo le versioni 4.5+ e 6.9+ di Node.js.

Ghost è basato su Node.js. Installeremo la versione consigliata per Ghost che è v6 Boron LTSal momento in cui scrivo.

  1. Scarica e installa Node.js v6 LTS:

    curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
  2. Controlla la versione di Node.js e NPM:

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

Installa MySQL

Per impostazione predefinita, Ghost viene configurato per utilizzare un database SQLite, che non richiede alcuna configurazione.

In alternativa, Ghost può essere utilizzato anche con un database MySQL modificando la configurazione del database. È necessario creare prima un database e un utente, quindi è possibile modificare la configurazione sqlite3 esistente.

  1. Scarica e installa MySQL:

    sudo apt-get install -y mysql-server
    

    NOTA : Durante l'installazione, verrà richiesta la password utente "root" di MySQL. È necessario impostare una password sicura per l'utente "root" di MySQL.

  2. Controlla la versione di MySQL:

    mysql --version
    # mysql  Ver 14.14 Distrib 5.5.57, for debian-linux-gnu (x86_64) using readline 6.3
    
  3. Controlla se il demone MySQL è stato avviato ed è in esecuzione:

    sudo systemctl status mysql.service
    sudo systemctl is-enabled mysql.service
    
  4. Esegui lo mysql_secure_installationscript per proteggere un po 'il tuo database:

    sudo mysql_secure_installation
    
  5. Accedi a MySQL come utente root:

    mysql -u root -p
    # Enter password:
    
  6. Crea un nuovo database e utente MySQL:

    create database dbname;
    grant all on dbname.* to 'user' identified by 'password';
    
  7. Esci da MySQL:

    exit
    

Installa NGINX

  1. Scarica e installa l'ultima versione mainline di NGINX dal repository ufficiale 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/debian/ `lsb_release -sc` nginx \ndeb-src https://nginx.org/packages/mainline/debian/ `lsb_release -sc` nginx \n" >> /etc/apt/sources.list.d/nginx_mainline.list
    exit
    sudo apt-get update
    sudo apt-get install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt nginx-nr-agent
    
  2. Verifica che sia installato controllando la versione NGINX:

    sudo nginx -v
    # nginx version: nginx/1.13.4
    
  3. Controlla lo stato, abilita e avvia il servizio NGINX (demone):

    sudo systemctl status nginx.service # inactive (dead)
    sudo systemctl enable nginx.service
    sudo systemctl start nginx.service
    
  4. Crea /etc/nginx/ssldirectory e genera un nuovo gruppo Diffie-Hellman ( DH ):

    sudo mkdir -p /etc/nginx/ssl
    sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
    
  5. Creare una directory di registro per blog.domain.tldl'host virtuale:

    sudo mkdir -p /var/log/nginx/blog.domain.tld
    
  6. Configurare NGINX come server proxy inverso HTTP ( S ):

    sudo vim /etc/nginx/conf.d/ghost.conf
    
  7. Incolla quanto segue in /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; # Change to your domain/hostname
        root /var/www/ghost; # Change to the path where Ghost is
    
        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. Salvare e testare la configurazione NGINX per errori di sintassi:

    sudo nginx -t
    
  9. Ricarica la configurazione NGINX:

    sudo systemctl reload nginx.service
    

Installa Ghost

NOTA : se si desidera ospitare più blog Ghost sullo stesso VPS, ciascuna istanza Ghost deve essere in esecuzione su una porta separata.

  1. Creare la directory principale del documento:

    sudo mkdir -p /var/www/
    
  2. Crea un nuovo ghostutente:

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

    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.11/Ghost-0.11.11.zip -o ghost.zip
    
  4. Decomprimi Ghost nella /var/www/ghostdirectory (posizione di installazione consigliata):

    sudo unzip -uo ghost.zip -d /var/www/ghost
    rm ghost.zip
    
  5. Passa alla nuova ghostdirectory:

    cd /var/www/ghost
    
  6. Modifica la proprietà della /var/www/ghostdirectory:

    sudo chown -R ghost:ghost .
    
  7. Passa al nuovo ghostutente:

    sudo su - ghost
    
  8. Passa alla radice del documento /var/www/ghost:

    cd /var/www/ghost
    
  9. Installa Ghost con dipendenze di produzione. Al termine, Ghost è installato:

    npm install --production
    
  10. Configurare fantasma cambiando url, maile databasedi proprietà della produzione oggetto all'interno di config.jsfile di:

    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
        },
        // . . .
        // . . .
    

    NOTA : è necessario configurare anche le impostazioni di posta. Consulta la documentazione ufficiale di Ghost su come farlo.

  11. Avvia Ghost nell'ambiente di produzione:

    npm start --production
    

    Ghost ora funzionerà. Sia il front-end del blog che l'interfaccia di amministrazione sono protetti con HTTPS e anche HTTP / 2 funziona. È possibile aprire il browser e visitare il sito all'indirizzo https://blog.domain.tld. Non dimenticare di sostituire blog.domain.tldcon il tuo nome di dominio.

  12. Chiudi il processo Ghost premendo CTRL+ Ced esci di ghostnuovo dall'utente root:

    exit
    

Esecuzione di Ghost come servizio di sistema

Se chiudi la sessione terminale con il tuo VPS, anche il tuo blog diminuirà. Questo non è buono. Per evitare ciò, useremo Systemd. Manterrà il nostro blog attivo 24/7.

  1. Crea ghost.servicefile unità Systemd. Esegui sudo vim /etc/systemd/system/ghost.servicee copia / incolla il seguente contenuto:

    [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=/usr/bin/npm start --production
    ExecStop=/usr/bin/npm stop --production
    Restart=always
    SyslogIdentifier=Ghost
    
    [Install]
    WantedBy=multi-user.target
    
  2. Abilita e avvia ghost.service:

    sudo systemctl enable ghost.service && sudo systemctl start ghost.service
    
  3. Verifica lo ghost.servicestato:

    sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service
    
  4. Passare a https://blog.domain.tld/ghost/e creare un utente amministratore Ghost. Fallo il prima possibile!

Conclusione

Questo è tutto. Ora abbiamo un blog Ghost completamente funzionale. Il tuo server fornisce contenuti tramite HTTP / 2 quando supportato dal client. Se vuoi cambiare il tema Ghost predefinito chiamato Casper in uno personalizzato, puoi semplicemente scaricare e decomprimere il tema nella /var/www/ghost/content/themescartella e selezionarlo tramite l'interfaccia di amministrazione Ghost, situata in https://blog.domain.tld/ghost.



Installazione di Fork CMS su Fedora 28

Installazione di Fork CMS su Fedora 28

Usi un sistema diverso? Fork è un CMS open source scritto in PHP. Il codice sorgente di Forks è ospitato su GitHub. Questa guida ti mostrerà come installare Fork CM

Come distribuire Ghost v0.11 LTS su CentOS 7.3

Come distribuire Ghost v0.11 LTS su CentOS 7.3

Usi un sistema diverso? Ghost è una piattaforma di blog open source che sta guadagnando popolarità tra gli sviluppatori e gli utenti ordinari dal suo 201

Come installare MODX Revolution su un Fedora 26 LAMP VPS

Come installare MODX Revolution su un Fedora 26 LAMP VPS

Usi un sistema diverso? MODX Revolution è un sistema di gestione dei contenuti (CMS) rapido, flessibile, scalabile, gratuito e open source di livello aziendale scritto i

Come installare MODX Revolution su un FPS VPS di FreeBSD 11

Come installare MODX Revolution su un FPS VPS di FreeBSD 11

Usi un sistema diverso? MODX Revolution è un sistema di gestione dei contenuti (CMS) rapido, flessibile, scalabile, di livello aziendale scritto in PHP. Io

Come installare MODX Revolution su un Debian 9 LAMP VPS

Come installare MODX Revolution su un Debian 9 LAMP VPS

Usi un sistema diverso? MODX Revolution è un sistema di gestione dei contenuti (CMS) rapido, flessibile, scalabile, gratuito e open source di livello aziendale scritto i

Esecuzione di WordPress su OpenBSD 6.5 con HTTPD OpenBSD

Esecuzione di WordPress su OpenBSD 6.5 con HTTPD OpenBSD

Introduzione Più vicino manterrai linstallazione di OpenBSD al valore predefinito e senza altrettanti pacchetti aggiunti, più sicura sarà. Mentre più commo

Installa WordPress su OpenBSD 6.2

Installa WordPress su OpenBSD 6.2

Introduzione WordPress è il sistema di gestione dei contenuti dominante su Internet. Alimenta tutto, dai blog ai siti Web complessi con contenuti dinamici

Come distribuire Ghost su Debian 8.7

Come distribuire Ghost su Debian 8.7

Usi un sistema diverso? Ghost è una piattaforma di blog open source che sta guadagnando popolarità tra gli sviluppatori e gli utenti ordinari dalla sua versione del 2013. io

Come installare Dotclear su Debian 9 (Stretch)

Come installare Dotclear su Debian 9 (Stretch)

Usi un sistema diverso? Dotclear è un motore di blogging molto semplice. È open-source e facile da usare. Questo tutorial eseguirà linstallazione su

Come distribuire più siti Wordpress usando Virtualmin e Ansible su Ubuntu 16.04

Come distribuire più siti Wordpress usando Virtualmin e Ansible su Ubuntu 16.04

Un uso comune di un server virtuale Vultr è lhosting di siti Web Wordpress. Questa guida mostra come automatizzare la configurazione di un server virtuale da Scratc

Come installare Neos CMS su CentOS 7

Come installare Neos CMS su CentOS 7

Neos è un innovativo sistema di gestione dei contenuti open source che è ottimo per creare e modificare contenuti online. Con in mente autori ed editori, Neo

Configurare WordPress con WooCommerce su CentOS 6

Configurare WordPress con WooCommerce su CentOS 6

Le istanze Vultr sono un ottimo modo per eseguire il tuo blog WordPress, ma unestensione più notevole di WordPress è WooCommerce, un plug-in e-commerce che estende

Configurare Ghost Professional Publishing Platform su OpenBSD 6

Configurare Ghost Professional Publishing Platform su OpenBSD 6

Ghost è lultimo e il migliore in assoluto per competere con WordPress. Lo sviluppo del tema è rapido e facile da imparare perché gli sviluppatori Ghost hanno deciso di utilizzare entrambi

Installa e configura un blog Ghost v1.0.0 su Ubuntu 16.04

Installa e configura un blog Ghost v1.0.0 su Ubuntu 16.04

Ghost è una moderna piattaforma di pubblicazione open source costruita su Node.js con un client di amministrazione Ember.js, unAPI JSON e unAPI tematica basata su Handlebars.js. ghos

Come distribuire Ghost v0.11 LTS su Ubuntu 16.04

Come distribuire Ghost v0.11 LTS su Ubuntu 16.04

Usi un sistema diverso? Ghost è una piattaforma di blog open source che sta guadagnando popolarità tra gli sviluppatori e gli utenti ordinari dal suo 201

Installazione di Fork CMS su CentOS 7

Installazione di Fork CMS su CentOS 7

Usi un sistema diverso? Fork è un CMS open source scritto in PHP. Il codice sorgente di Forks è ospitato su GitHub. Questa guida ti mostrerà come installare Fork CM

Come installare il tipografo CMS su CentOS 7

Come installare il tipografo CMS su CentOS 7

Typesetter è un CMS open source scritto in PHP incentrato sulla facilità duso con lediting True WYSIWYG e larchiviazione di file flat. In questo articolo, verremo installati

Come installare MODX Revolution su un Ubuntu 16.04 LAMP VPS

Come installare MODX Revolution su un Ubuntu 16.04 LAMP VPS

Usi un sistema diverso? MODX Revolution è un sistema di gestione dei contenuti (CMS) rapido, flessibile, scalabile, gratuito e open source di livello aziendale scritto i

Come distribuire Ghost v0.11 LTS su Fedora 25

Come distribuire Ghost v0.11 LTS su Fedora 25

Usi un sistema diverso? Ghost è una piattaforma di blog open source che sta guadagnando popolarità tra gli sviluppatori e gli utenti ordinari dal suo 201

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Gli attacchi ransomware sono in aumento, ma l'intelligenza artificiale può aiutare ad affrontare l'ultimo virus informatico? L'intelligenza artificiale è la risposta? Leggi qui sai è AI boone o bane

ReactOS: è questo il futuro di Windows?

ReactOS: è questo il futuro di Windows?

ReactOS, un sistema operativo open source e gratuito è qui con l'ultima versione. Può essere sufficiente alle esigenze degli utenti Windows moderni e abbattere Microsoft? Scopriamo di più su questo vecchio stile, ma un'esperienza del sistema operativo più recente.

Rimani connesso tramite lapp desktop WhatsApp 24*7

Rimani connesso tramite lapp desktop WhatsApp 24*7

Whatsapp ha finalmente lanciato l'app desktop per utenti Mac e Windows. Ora puoi accedere facilmente a Whatsapp da Windows o Mac. Disponibile per Windows 8+ e Mac OS 10.9+

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

Leggi questo per sapere come l'intelligenza artificiale sta diventando popolare tra le aziende di piccole dimensioni e come sta aumentando le probabilità di farle crescere e dare un vantaggio ai loro concorrenti.

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Recentemente Apple ha rilasciato macOS Catalina 10.15.4 un aggiornamento supplementare per risolvere i problemi, ma sembra che l'aggiornamento stia causando più problemi che portano al bricking delle macchine mac. Leggi questo articolo per saperne di più

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per l'estrazione dei dati dai Big Data

Che cosè un file system di journaling e come funziona?

Che cosè un file system di journaling e come funziona?

Il nostro computer memorizza tutti i dati in un modo organizzato noto come file system di journaling. È un metodo efficiente che consente al computer di cercare e visualizzare i file non appena si preme search.https://wethegeek.com/?p=94116&preview=true

Singolarità tecnologica: un lontano futuro della civiltà umana?

Singolarità tecnologica: un lontano futuro della civiltà umana?

Man mano che la scienza si evolve a un ritmo rapido, assumendo gran parte dei nostri sforzi, aumentano anche i rischi di sottoporci a una singolarità inspiegabile. Leggi, cosa potrebbe significare per noi la singolarità.

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Limpatto dellintelligenza artificiale nella sanità 2021

Limpatto dellintelligenza artificiale nella sanità 2021

L'intelligenza artificiale nell'assistenza sanitaria ha compiuto grandi passi avanti negli ultimi decenni. Pertanto, il futuro dell'IA in sanità continua a crescere giorno dopo giorno.