Introduzione

Se il vostro intento è installare Ghost Blog su di un server in remoto continuate a leggere, altrimenti se volete installare Ghost Blog sul vostro computer locale saltate il primo paragrafo "Connessione al Server" e leggere il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno della password per l'autenticazione.

Per connettersi al server come utente root digitare questo comando:
ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare anche il primo parametro:
ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

Siete ora connessi al vostro server, siete pronti per iniziare l'installazione di Ghost Blog.

Prerequisiti

L'installazione ufficiale di Ghost richiede il seguente stack:

  • Ubuntu 18.04
  • Apache - consigliato Nginx.
  • Node.js - Versione 6.x / 8.x / 10.x raccomandata
  • MySQL 5.5, 5.6 o 5.7 ( non > = 8.0)
  • systemd
  • Un server con almeno 1 GB di memoria
  • Un nome di dominio registrato

Configurazione Server

Aggiungere un nuovo utente:
adduser nome_utente

Nota: l'utilizzo del nome utente ghost causa conflitti con Ghost-CLI, quindi è importante utilizzare un nome alternativo.

Per impostazione predefinita, un nuovo utente è solo nel proprio gruppo, che viene creato al momento della creazione dell'account. Per aggiungere l'utente a un nuovo gruppo, possiamo usare il comando usermod.

Assegnare i privilegi di sudo all'utente appena creato:
usermod -aG sudo nome_utente

Effettuare il login con il nuovo utente:
su - nome_utente

Assicurarsi che gli elenchi di pacchetti e i pacchetti installati siano aggiornati:
sudo apt-get update

sudo apt-get upgrade

Installare Apache2

Per installare Apache:
sudo apt-get install apache2

Installare alcuni pacchetti consigliati:
sudo apt-get install libxml2-dev

Se è ufw è attivo, abilitare le porte utilizzate da Apache:
sudo ufw allow 'Apache Full'

Attivare i moduli di apache2 consigliati:
sudo a2enmod

Dovreste ricevere un messaggio di output simile al seguente:

Your choices are: access_compat actions alias allowmethods asis auth_basic auth_digest auth_form authn_anon authn_core authn_dbd authn_dbm authn_file authn_socache authnz_fcgi authnz_ldap authz_core authz_dbd authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex buffer cache cache_disk cache_socache cgi cgid charset_lite data dav dav_fs dav_lock dbd deflate dialup dir dump_io echo env expires ext_filter file_cache filter headers heartbeat heartmonitor ident include info lbmethod_bybusyness lbmethod_byrequests lbmethod_bytraffic lbmethod_heartbeat ldap log_debug log_forensic lua macro mime mime_magic mpm_event mpm_prefork mpm_worker negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_express proxy_fcgi proxy_fdpass proxy_ftp proxy_html proxy_http proxy_scgi proxy_wstunnel ratelimit reflector remoteip reqtimeout request rewrite sed session session_cookie session_crypto session_dbd setenvif slotmem_plain slotmem_shm socache_dbm socache_memcache socache_shmcb speling ssl status substitute suexec unique_id userdir usertrack vhost_alias xml2enc

**Which module(s) do you want to enable (wildcards ok)?**

Abilitare i seguenti moduli:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_ajp
sudo a2enmod rewrite
sudo a2enmod deflate
sudo a2enmod headers
sudo a2enmod proxy_balancer
sudo a2enmod proxy_connect
sudo a2enmod proxy_html
sudo a2enmod ssl

Riavviare Apache:
sudo service apache2 restart

Disabilitare il file di configurazione di default di Apache:
sudo a2dissite 000-default

Creare un nuovo file di configurazione dell'host virtuale per la nostra installazione di Ghost:
sudo nano /etc/apache2/sites-available/ghost.conf

Aggiungere le seguenti righe di codice:

<VirtualHost *:80>
  ServerAdmin [email protected]
  DocumentRoot /var/www/
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
  ProxyPreserveHost On
  # Servers to proxy the connection, or
  # List of application servers Usage
  ProxyPass / http://localhost:2368/
  ProxyPassReverse / http://localhost:2368/
  ServerName tuodominio.it
  ServerAlias www.tuodominio.it
</VirtualHost>

Attivare l' host virtuale:
sudo a2ensite ghost

Riavviare Apache:
sudo service apache2 restart

Se installato, fermare Nginx:
service nginx stop

Installare MySQL

Successivamente, è necessario installare MySQL per essere utilizzato come database di produzione.
sudo apt-get install mysql-server

Su Ubuntu 18.04 LTS è necessaria una password per garantire che MySQL sia compatibile con Ghost-CLI.

Accedere a MySQL:
sudo mysql

Impostare la password per l'utente root:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'TUA_PASSWORD';

Uscire da MySQL:
quit

Se necessario effettuare nuovamente il login con l'utente creato precedentemente:
su - nome_utente

Installare Node.js

Sarà necessario installare una delle versioni di Node supportate da Ghost, aggiungere il repository NodeSource per Node 8:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash

Adesso installare Node.js:
sudo apt-get install -y nodejs

Installare Ghost-CLI

Ghost-CLI è uno strumento a riga di comando che consente di installare e configurare Ghost in modo rapido e semplice. Il modulo npm può essere installato con npm o yarn:
sudo npm install [email protected] -g

Installare Ghost

Una volta che il server è stato configurato e ghost-cli è stato installato, è possibile installare Ghost. I seguenti passaggi sono la configurazione consigliata:

Creare una directory:
sudo mkdir -p /var/www/ghost

Impostare il proprietario della cartella:
sudo chown nome_utente:nome_utente /var/www/ghost

Impostare i permessi corretti:
sudo chmod 775 /var/www/ghost

Spostarsi di cartella:
cd /var/www/ghost

Eseguire il comando di installazione di Ghost:
ghost install

Dovreste ricevere un messaggio di avviso riguardo Nginx che non risulta installato, simile al seguente:

✔ Checking system Node.js version
✔ Checking logged in user
✔ Checking current folder permissions
System checks failed with message: 'Missing package(s): nginx'
Some features of Ghost-CLI may not work without additional configuration.
For local installs we recommend using `ghost install local` instead.
? Continue anyway? Yes

Ignorare il messaggio e continuare l'installazione digitando y o yes.

Se si vuole installare Ghost sul proprio pc in localhost, dare il seguente comando:
ghost install local

Per installare i certificati SSL per l'https con Let's Encrypt continuare a leggere

Durante l'installazione, la CLI richiederà una serie di domande per configurare il sito.

URL del blog
Inserisci l'URL esatto in cui la pubblicazione sarà disponibile e includi il protocollo HTTP o HTTPS. Ad esempio https://esempio.com. Ghost-CLI ti guiderà per configurare l'SSL.

Nome host MySQL
Se MySQL è installato sullo stesso server, utilizzare localhost(premere Enter per utilizzare il valore predefinito). Se MySQL è installato su un altro server, inserire il nome manualmente.

Nome utente / password MySQL
Se hai già un database MySQL esistente, inserisci il nome utente. Altrimenti, inserisci root. Quindi fornire la password per il tuo utente.

Nome del database Ghost
Inserisci il nome del tuo database. Verrà configurato automaticamente per te, a meno che tu non stia utilizzando un utente/password MySQL non root. In tal caso il database deve già esistere e disporre delle autorizzazioni corrette.

Configurare un utente "Ghost" per MySQL? (Consigliato)
Se hai fornito l'utente MySQL di root, Ghost-CLI può creare un utente MySQL personalizzato che può solo accedere / modificare il tuo nuovo database Ghost e nient'altro.

Configurare NGINX? NO (abbiamo installato Apache precedentemente)
Imposta automaticamente NGINX per consentire al tuo sito di essere visualizzato dal mondo esterno.

Configurare SSL? (In questo caso Nginx non è installato, la configurazione verrà saltata)
Se hai utilizzato un URL con https per il blog e hai già indirizzato il tuo dominio, Ghost-CLI può impostare automaticamente SSL per te utilizzando Let's Encrypt . In alternativa, puoi farlo con il comando ghost setup ssl in un secondo momento.

Inserisci la tua e-mail (In questo caso Nginx non è installato, la configurazione verrà saltata)
Per la configurazione della certificazione SSL è richiesto un indirizzo e-mail in modo da poter essere informato in caso di problemi con il certificato, anche durante il rinnovo.

Configurare systemd? (Consigliato)
systemd è lo strumento di gestione dei processi consigliato per mantenere Ghost senza problemi. Ti consigliamo di scegliere yes.

Avviare Ghost?
Scegliere yes per avviare Ghost.

Installare i certificati SSL per l'https

Aggiungiamo il repository ufficiale di Cerbot per ottenere i pacchetti più aggiornati:
sudo add-apt-repository ppa:certbot/certbot

Installare il pacchetto Certbot per Apache:
sudo apt install python-certbot-apache

Certbot utilizza il plugin di Apache per ottenere certificati SSL:
sudo certbot --apache

Spostarsi di cartella:
cd /etc/apache2/sites-available

Dovreste avere un nuovo file generato in automatico da Let's Encrypt, con scritto all'interno del nome -ssl. In questo caso ghost-le-ssl.conf.

Aprire il file:
sudo nano ghost-le-ssl.conf

Aggiungere le seguenti righe prima dell'inclusione dei file di Let's Encrypt:

RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
RequestHeader set "X-Forwarded-SSL" expr=%{HTTPS}

Quindi:

<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerAdmin [email protected]
  DocumentRoot /var/www/
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
  ProxyPreserveHost On
  # Servers to proxy the connection, or
  # List of application servers Usage
  ProxyPass / http://localhost:2368/
  ProxyPassReverse / http://localhost:2368/
  ServerName TUODOMINIO.it
  ServerAlias www.TUODOMINIO.it

RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
RequestHeader set "X-Forwarded-SSL" expr=%{HTTPS}

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/TUODOMINIO.it/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/TUODOMINIO.it/privkey.pem
</VirtualHost>
</IfModule>

Salvare e chiudere il file

Riavviare Apache:
sudo service apache2 restart

Configurare Ghost con SSL

È necessario modificare l'url primario di Ghost nel suo file di configurazione principale.

Spostarsi di cartella:
cd /var/www/ghost
Aprire il seguente file:
sudo nano config.production.json
Modificare il primo parametro url assicurandosi che sia impostato con l'https:

“url”: "https://TUODOMINIO.it"

Salvare e chiudere il file.

Riavviare Ghost:
ghost restart

Manutenzione futura

Una volta che Ghost è stato configurato, è importante mantenerlo correttamente aggiornato e aggiornato. Fortunatamente, questo è relativamente facile da fare con Ghost-CLI. Esegui ghost help per un elenco di comandi disponibili o esplora la documentazione completa di Ghost-CLI.

L'installazione e la configurazione di Ghost Blog con Apache2 su Ubuntu 18.04 LTS è terminata.