Krav
Før du begynner
Installer Certbot
Installer Node.js og NPM
Installer MySQL
Installer NGINX
Installer Ghost
Kjører Ghost som en systemtjeneste
Konklusjon
Ghost er en bloggplattform med åpen kildekode som har blitt populær blant utviklere og vanlige brukere siden utgivelsen i 2013. Det setter fokus på innhold og blogging. Det mest attraktive med Ghost er dens enkle, rene og responsive design. Du kan skrive blogginnleggene dine fra en mobiltelefon. Innhold for Ghost er skrevet med Markdown-språket. Ghost passer perfekt for enkeltpersoner eller små grupper av forfattere.
I denne guiden skal vi sette opp og distribuere en sikker Ghost v0.11.x LTS- blogg på en Ubuntu 16.04 LTS VPS ved å bruke Let's Encrypt , Certbot , Node.js , NPM , NGINX og MySQL .
Krav
- Registrer (kjøp) et domenenavn.
- Ubuntu server 16.04 serverforekomst med minimum 1 GB RAM .
- Sudo bruker.
Før du begynner
Opprett en ny ikke-root brukerkonto:
adduser johndoe --gecos "John Doe"
Gjør den til superbruker ved å legge den til i sudogruppen:
usermod -aG sudo johndoe
Bytt til ny bruker:
su - johndoe
Oppdater operativsystemets programvare:
sudo apt update && sudo apt upgrade -y
Sett opp tidssonen:
sudo dpkg-reconfigure tzdata
Installer nødvendige verktøy:
sudo apt install -y build-essential zip unzip vim nano openssl wget curl git apt-transport-https
Start systemet på nytt om nødvendig:
sudo shutdown -r now
Installer Certbot
NOTE: Before starting this step, ensure that you have set DNS records for your domain.
Vi skal bruke Let's Encrypt CA og EFF sin Certbot-klient for å få SSL/TLS- sertifikat for Ghost-bloggen vår. Ikke glem å erstatte alle forekomster av blog.domain.tldmed ditt domenenavn.
Installer Certbot (tidligere Let's Encrypt Client ) programvare for sertifikatbehandling laget med Python:
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
Sjekk Certbot-versjonen:
certbot --version
# certbot 0.14.2
Skaff RSA- sertifikat ved å bruke frittstående autentiseringsmetode (plugin):
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. . . .
# . . .
Etter å ha gått gjennom tidligere trinn, vil sertifikatet og den private nøkkelen din være i /etc/letsencrypt/live/blog.domain.tldkatalogen.
Installer Node.js og NPM
NOTE: Ghost currently supports Node.js versions 4.5+ and 6.9+ only.
Ghost er bygget på Node.js. Vi skal installere den anbefalte versjonen for Ghost som er v6 Boron LTSi skrivende stund.
Last ned og installer Node.js v6 LTS:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt install -y nodejs
Sjekk Node.js og NPM-versjonen:
node -v && npm -v
# v6.11.1
# 3.10.10
Installer MySQL
Som standard kommer Ghost konfigurert til å bruke en SQLite-database, som ikke krever noen konfigurasjon.
Alternativt kan Ghost også brukes med en MySQL-database ved å endre databasekonfigurasjonen. Du må opprette en database og bruker først, du kan deretter endre den eksisterende sqlite3-konfigurasjonen.
Last ned og installer 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.
Sjekk MySQL-versjonen:
mysql --version
# mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrapper
Sjekk om MySQL-demonen har startet og kjører:
sudo systemctl status mysql.service
sudo systemctl is-enabled mysql.service
Kjør mysql_secure_installationskriptet for å sikre databasen din litt:
sudo mysql_secure_installation
Logg på MySQL som root-bruker:
mysql -u root -p
# Enter password:
Opprett en ny MySQL-database og bruker:
create database dbname;
grant all on dbname.* to 'user' identified by 'password';
Avslutt MySQL:
exit
Installer NGINX
Last ned og installer den nyeste hovedlinjeversjonen av NGINX fra det offisielle NGINX-depotet:
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
Bekreft at den er installert ved å sjekke NGINX-versjonen:
sudo nginx -v
# nginx version: nginx/1.13.3
Sjekk status, aktiver og start NGINX-tjenesten (demon):
sudo systemctl status nginx.service # inactive (dead)
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Opprett /etc/nginx/sslkatalog og generer en ny Diffie-Hellman ( DH ) gruppe:
sudo mkdir -p /etc/nginx/ssl
sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
Opprett loggkatalog for blog.domain.tldvirtuell vert:
sudo mkdir -p /var/log/nginx/blog.domain.tld
Konfigurer NGINX som en HTTP ( S ) omvendt proxy-server:
sudo vim /etc/nginx/conf.d/ghost.conf
Lim inn følgende i /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 "";
}
}
Lagre og test NGINX-konfigurasjonen for syntaksfeil:
sudo nginx -t
Last inn NGINX-konfigurasjonen på nytt:
sudo systemctl reload nginx.service
Installer Ghost
NOTE: If you want to host multiple Ghost blogs on same VPS, each Ghost instance must be running on a separate port.
Opprett dokumentrotkatalog:
sudo mkdir -p /var/www/
Opprett en ny ghostbruker:
sudo adduser --shell /bin/bash --gecos 'Ghost application' --disabled-password ghost
Last ned Ghost:
curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.10/Ghost-0.11.10.zip -o ghost.zip
Pakk ut Ghost i /var/www/ghostkatalogen (anbefalt installasjonssted):
sudo unzip -uo ghost.zip -d /var/www/ghost
rm ghost.zip
Flytt til den nye ghostkatalogen:
cd /var/www/ghost
Endre eierskapet til /var/www/ghostkatalogen:
sudo chown -R ghost:ghost .
Bytt til ny ghostbruker:
sudo su - ghost
Naviger til dokumentroten /var/www/ghost:
cd /var/www/ghost
Installer Ghost kun med produksjonsavhengigheter. Når dette er fullført, er Ghost installert:
npm install --production
Konfigurer Ghost ved å endre url, mailog databaseegenskapen til productionobjektet inne i config.jsfilen:
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.
Start Ghost i produksjonsmiljø:
npm start --production
Ghost vil nå kjøre. Både blogggrensesnitt og administrasjonsgrensesnitt er sikret med HTTPS og HTTP/2 fungerer også. Du kan åpne nettleseren og besøke nettstedet på https://blog.domain.tld. Ikke glem å erstatte blog.domain.tldmed ditt domenenavn.
Slå av Ghost-prosessen ved å trykke på CTRL+ Cog gå ut fra Ghost-bruker tilbake til root-bruker:
exit
Kjører Ghost som en systemtjeneste
Hvis du lukker terminaløkten med VPS-en din, vil også bloggen din gå ned. Det er ikke bra. For å unngå dette skal vi bruke systemd. Det vil holde bloggen vår oppe 24/7.
Opprett ghost.servicesystemd enhetsfil. Kjør sudo vim /etc/systemd/system/ghost.serviceog kopier/lim inn innholdet nedenfor:
[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
Aktiver og start ghost.service:
sudo systemctl enable ghost.service && sudo systemctl start ghost.service
Sjekk ghost.servicestatus:
sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service
Naviger til https://blog.domain.tld/ghost/og opprett en Ghost-administratorbruker. Gjør dette så snart som mulig!
Konklusjon
Det er det. Vi har nå en fullt funksjonell Ghost-blogg. Serveren din leverer innhold via HTTP/2 når den støttes av klienten. Hvis du vil endre standard Ghost-tema kalt Casper til et tilpasset, kan du bare laste ned og pakke ut temaet inn i /var/www/ghost/content/themesmappen og velge det via Ghost admin-grensesnitt, som ligger på https://blog.domain.tld/ghost.