Kako implementirati Ghost v0.11 LTS na Ubuntu 16.04

Ghost je platforma za blogove otvorenog koda koja postaje sve popularnija među programerima i običnim korisnicima od svog izdanja 2013. godine. Usredotočuje se na sadržaj i bloganje. Najprivlačnija stvar kod Ghost-a je njegov jednostavan, čist i prilagodljiv dizajn. Svoje postove na blogu možete pisati s mobilnog telefona. Sadržaj za Ghost je napisan korištenjem Markdown jezika. Ghost je savršeno prikladan za pojedince ili male grupe pisaca.

U ovom vodiču ćemo postaviti i implementirati siguran Ghost v0.11.x LTS blog na Ubuntu 16.04 LTS VPS koristeći Let's Encrypt , Certbot , Node.js , NPM , NGINX i MySQL .

Zahtjevi

  • Registrirajte (kupite) naziv domene.
  • Instanca poslužitelja Ubuntu 16.04 s najmanje 1 GB RAM-a .
  • Sudo korisnik.

Prije nego što počneš

  1. Napravite novi nekorijenski korisnički račun:

    adduser johndoe --gecos "John Doe"
    
  2. Učinite ga superkorisnikom dodavanjem u sudogrupu:

    usermod -aG sudo johndoe
    
  3. Prijeđi na novog korisnika:

    su - johndoe
    
  4. Ažurirajte softver svog operativnog sustava:

    sudo apt update && sudo apt upgrade -y
    
  5. Postavite vremensku zonu:

    sudo dpkg-reconfigure tzdata
    
  6. Instalirajte potrebne alate:

    sudo apt install -y build-essential zip unzip vim nano openssl wget curl git apt-transport-https
    
  7. Ponovno pokrenite sustav ako je potrebno:

    sudo shutdown -r now
    

Instalirajte Certbot

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

Koristit ćemo Let's Encrypt CA i EFF- ov Certbot klijent za dobivanje SSL/TLS certifikata za naš blog Ghost. Ne zaboravite zamijeniti sve instance blog.domain.tlds imenom svoje domene.

  1. Instalirajte Certbot (bivši Let's Encrypt client ) softver za upravljanje certifikatima napravljen s Pythonom:

    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. Provjerite verziju Certbota:

    certbot --version
    # certbot 0.14.2
    
  3. Dobivanje RSA certifikata korištenjem samostalne metode provjere autentičnosti (dodatak):

    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. . . .
    #  . . .
    

    Nakon prolaska kroz prethodne korake, vaš certifikat i privatni ključ bit će u /etc/letsencrypt/live/blog.domain.tldimeniku.

Instalirajte Node.js i NPM

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

Ghost je izgrađen na Node.js. Instalirat ćemo preporučenu verziju za Ghost koja je v6 Boron LTSu trenutku pisanja ovog teksta.

  1. Preuzmite i instalirajte Node.js v6 LTS:

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

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

Instalirajte MySQL

Prema zadanim postavkama, Ghost dolazi konfiguriran za korištenje SQLite baze podataka, koja ne zahtijeva nikakvu konfiguraciju.

Alternativno, Ghost se također može koristiti s MySQL bazom podataka promjenom konfiguracije baze podataka. Prvo morate stvoriti bazu podataka i korisnika, a zatim možete promijeniti postojeću sqlite3 konfiguraciju.

  1. Preuzmite i instalirajte 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. Provjerite verziju MySQL:

    mysql --version
    # mysql  Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using  EditLine wrapper
    
  3. Provjerite je li MySQL demon pokrenut i radi li:

    sudo systemctl status mysql.service
    sudo systemctl is-enabled mysql.service
    
  4. Pokrenite mysql_secure_installationskriptu da malo zaštitite svoju bazu podataka:

    sudo mysql_secure_installation
    
  5. Prijavite se na MySQL kao root korisnik:

    mysql -u root -p
    # Enter password:
    
  6. Napravite novu MySQL bazu podataka i korisnika:

    create database dbname;
    grant all on dbname.* to 'user' identified by 'password';
    
  7. Izađi iz MySQL-a:

    exit
    

Instalirajte NGINX

  1. Preuzmite i instalirajte najnoviju glavnu verziju NGINX-a iz službenog NGINX spremišta:

    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. Provjerite je li instaliran provjerom verzije NGINX-a:

    sudo nginx -v
    # nginx version: nginx/1.13.3
    
  3. Provjerite status, omogućite i pokrenite NGINX uslugu (daemon):

    sudo systemctl status nginx.service # inactive (dead)
    sudo systemctl enable nginx.service
    sudo systemctl start nginx.service
    
  4. Kreirajte /etc/nginx/ssldirektorij i generirajte novu Diffie-Hellman ( DH ) grupu:

    sudo mkdir -p /etc/nginx/ssl
    sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
    
  5. Napravite direktorij dnevnika za blog.domain.tldvirtualni host:

    sudo mkdir -p /var/log/nginx/blog.domain.tld
    
  6. Konfigurirajte NGINX kao HTTP ( S ) obrnuti proxy poslužitelj:

    sudo vim /etc/nginx/conf.d/ghost.conf
    
  7. Zalijepite sljedeće u /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. Spremite i testirajte NGINX konfiguraciju za sintaktičke pogreške:

    sudo nginx -t
    
  9. Ponovno učitaj NGINX konfiguraciju:

    sudo systemctl reload nginx.service
    

Instalirajte Ghost

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

  1. Napravite korijenski direktorij dokumenta:

    sudo mkdir -p /var/www/
    
  2. Napravite novog ghostkorisnika:

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

    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.10/Ghost-0.11.10.zip -o ghost.zip
    
  4. Raspakirajte Ghost u /var/www/ghostdirektorij (preporučeno mjesto za instalaciju):

    sudo unzip -uo ghost.zip -d /var/www/ghost
    rm ghost.zip
    
  5. Premjesti u novi ghostdirektorij:

    cd /var/www/ghost
    
  6. Promjena vlasništva /var/www/ghostimenika:

    sudo chown -R ghost:ghost .
    
  7. Prijeđi na novog ghostkorisnika:

    sudo su - ghost
    
  8. Idite na korijen dokumenta /var/www/ghost:

    cd /var/www/ghost
    
  9. Instalirajte Ghost samo s proizvodnim ovisnostima. Kada se ovo završi, instalira se Ghost:

    npm install --production
    
  10. Konfigurirajte Ghost promjenom url, maili databasesvojstva productionobjekta unutar config.jsdatoteke:

    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. Pokrenite Ghost u proizvodnom okruženju:

    npm start --production
    

    Duh će sada trčati. I front-end bloga i admin sučelje su osigurani HTTPS-om, a HTTP/2 također radi. Možete otvoriti svoj preglednik i posjetiti stranicu na https://blog.domain.tld. Ne zaboravite zamijeniti blog.domain.tldsvojim imenom domene.

  12. Isključite Ghost proces pritiskom na CTRL+ Ci izađite iz ghost korisnika natrag na root korisnika:

    exit
    

Pokretanje Ghost-a kao usluge sustava

Ako zatvorite svoju terminalsku sesiju sa svojim VPS-om, vaš blog će se također pokvariti. To nije dobro. Da bismo to izbjegli, koristit ćemo systemd. Održat će naš blog aktivan 24 sata dnevno.

  1. Napravite ghost.servicesystemd jediničnu datoteku. Pokrenite sudo vim /etc/systemd/system/ghost.servicei kopirajte/zalijepite sadržaj u nastavku:

    [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. Omogućite i pokrenite ghost.service:

    sudo systemctl enable ghost.service && sudo systemctl start ghost.service
    
  3. Provjerite ghost.servicestatus:

    sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service
    
  4. Idite do https://blog.domain.tld/ghost/i stvorite Ghost administratorskog korisnika. Učinite to što je prije moguće!

Zaključak

To je to. Sada imamo potpuno funkcionalan Ghost blog. Vaš poslužitelj isporučuje sadržaj putem HTTP/2 kada ga klijent podržava. Ako želite promijeniti zadanu Ghost temu pod nazivom Casper u prilagođenu, možete jednostavno preuzeti i raspakirati temu u /var/www/ghost/content/themesmapu i odabrati je putem Ghost administratorskog sučelja, koji se nalazi na https://blog.domain.tld/ghost.


Izrada Jekyll bloga na Ubuntu 16.04

Izrada Jekyll bloga na Ubuntu 16.04

Korištenje drugog sustava? Jekyll je izvrsna alternativa WordPressu za bloganje ili dijeljenje sadržaja. Ne zahtijeva nikakve baze podataka i vrlo je jednostavan i

Kako instalirati MODX Revolution na Ubuntu 16.04 LAMP VPS

Kako instalirati MODX Revolution na Ubuntu 16.04 LAMP VPS

Korištenje drugog sustava? MODX Revolution je brz, fleksibilan, skalabilan, besplatan i otvorenog koda, Enterprise-grade Content Management System (CMS) napisan i

Kako instalirati MODX Revolution na FreeBSD 11 FAMP VPS

Kako instalirati MODX Revolution na FreeBSD 11 FAMP VPS

Korištenje drugog sustava? MODX Revolution je brz, fleksibilan, skalabilan, open source, Enterprise-grade Content Management System (CMS) napisan u PHP-u. To i

Instalirajte WordPress na OpenBSD 6.2

Instalirajte WordPress na OpenBSD 6.2

Uvod WordPress je dominantni sustav za upravljanje sadržajem na internetu. Pokreće sve, od blogova do složenih web stranica s dinamičkim sadržajem

Izrada Jekyll bloga na CentOS 7

Izrada Jekyll bloga na CentOS 7

Korištenje drugog sustava? Jekyll je dobra alternativa WordPressu. Ne zahtijeva nikakve baze podataka i radi s jezikom koji je mnogima poznat

Kako instalirati MODX Revolution na CentOS 7 LAMP VPS

Kako instalirati MODX Revolution na CentOS 7 LAMP VPS

Korištenje drugog sustava? MODX Revolution je brz, fleksibilan, skalabilan, besplatan i otvorenog koda, Enterprise-grade Content Management System (CMS) napisan i

Instalacija Fork CMS-a na CentOS 7

Instalacija Fork CMS-a na CentOS 7

Korištenje drugog sustava? Fork je CMS otvorenog koda napisan u PHP-u. Izvorni kod Forks nalazi se na GitHubu. Ovaj vodič će vam pokazati kako instalirati Fork CM

Kako instalirati Neos CMS na CentOS 7

Kako instalirati Neos CMS na CentOS 7

Neos je inovativni sustav upravljanja sadržajem otvorenog koda koji je izvrstan za stvaranje i uređivanje online sadržaja. Imajući na umu autore i urednike, Neo

Kako implementirati Ghost v0.11 LTS na CentOS 7.3

Kako implementirati Ghost v0.11 LTS na CentOS 7.3

Korištenje drugog sustava? Ghost je platforma za blogove otvorenog koda koja postaje sve popularnija među programerima i običnim korisnicima od 201.

Kako instalirati SilverStripe CMS na FreeBSD 11 FAMP VPS

Kako instalirati SilverStripe CMS na FreeBSD 11 FAMP VPS

Korištenje drugog sustava? SilverStripe je fleksibilan i proširiv, otvorenog koda, Enterprise-grade Content Management System (CMS) napisan u PHP-u. To je lako

Kako implementirati Ghost v0.11 LTS na Fedora 25

Kako implementirati Ghost v0.11 LTS na Fedora 25

Korištenje drugog sustava? Ghost je platforma za blogove otvorenog koda koja postaje sve popularnija među programerima i običnim korisnicima od 201.

Kako implementirati više Wordpress web-mjesta koristeći Virtualmin i Ansible na Ubuntu 16.04

Kako implementirati više Wordpress web-mjesta koristeći Virtualmin i Ansible na Ubuntu 16.04

Uobičajena upotreba Vultr virtualnog poslužitelja je hostiranje Wordpress web stranica. Ovaj vodič pokazuje kako automatizirati konfiguraciju virtualnog poslužitelja ispočetka

Postavljanje Ghost Professional Publishing Platforme na OpenBSD 6

Postavljanje Ghost Professional Publishing Platforme na OpenBSD 6

Ghost je najnoviji i najveći početnik u konkurenciji WordPressu. Razvoj teme je brz i jednostavan za učenje jer su programeri Ghost odlučili koristiti oba

Instalirajte i konfigurirajte blog Ghost v1.0.0 na Ubuntu 16.04

Instalirajte i konfigurirajte blog Ghost v1.0.0 na Ubuntu 16.04

Ghost je moderna platforma za objavljivanje otvorenog koda izgrađena na Node.js s administratorskim klijentom Ember.js, JSON API-jem i API-jem za temu koji pokreće Handlebars.js. Ghos

Kako instalirati MODX Revolution na Fedora 26 LAMP VPS

Kako instalirati MODX Revolution na Fedora 26 LAMP VPS

Korištenje drugog sustava? MODX Revolution je brz, fleksibilan, skalabilan, besplatan i otvorenog koda, Enterprise-grade Content Management System (CMS) napisan i

Kako instalirati Dotclear na Debian 9 (Razvući)

Kako instalirati Dotclear na Debian 9 (Razvući)

Korištenje drugog sustava? Dotclear je vrlo jednostavan motor za bloganje. Otvoren je kod i jednostavan za korištenje. Ovaj vodič će proći kroz instalaciju

Instalacija Fork CMS-a na Ubuntu 16.04 LTS

Instalacija Fork CMS-a na Ubuntu 16.04 LTS

Korištenje drugog sustava? Fork je CMS otvorenog koda napisan u PHP-u. Izvorni kod Forks nalazi se na GitHubu. Ovaj vodič će vam pokazati kako instalirati Fork CM

Kako implementirati Ghost na Debian 8.7

Kako implementirati Ghost na Debian 8.7

Korištenje drugog sustava? Ghost je platforma za blogove otvorenog koda koja postaje sve popularnija među programerima i običnim korisnicima od svog izdanja 2013. godine. ja

Instalacija Fork CMS-a na Debian 9

Instalacija Fork CMS-a na Debian 9

Korištenje drugog sustava? Fork je CMS otvorenog koda napisan u PHP-u. Izvorni kod Forks nalazi se na GitHubu. Ovaj vodič će vam pokazati kako instalirati Fork CM

Kako instalirati Typesetter CMS na CentOS 7

Kako instalirati Typesetter CMS na CentOS 7

Typesetter je CMS otvorenog koda napisan u PHP-u usmjeren na jednostavnost korištenja s True WYSIWYG uređivanjem i pohranom ravnih datoteka. U ovom članku ćemo instalirati

Uspon strojeva: primjene AI u stvarnom svijetu

Uspon strojeva: primjene AI u stvarnom svijetu

Umjetna inteligencija nije u budućnosti, ovdje je upravo u sadašnjosti. U ovom blogu Pročitajte kako su aplikacije umjetne inteligencije utjecale na različite sektore.

DDOS napadi: kratak pregled

DDOS napadi: kratak pregled

Jeste li i vi žrtva DDOS napada i zbunjeni ste metodama prevencije? Pročitajte ovaj članak kako biste riješili svoje upite.

Jeste li se ikada zapitali kako hakeri zarađuju novac?

Jeste li se ikada zapitali kako hakeri zarađuju novac?

Možda ste čuli da hakeri zarađuju mnogo novca, ali jeste li se ikada zapitali kako zarađuju toliki novac? raspravimo.

Revolucionarni Googleovi izumi koji će vam olakšati život.

Revolucionarni Googleovi izumi koji će vam olakšati život.

Želite li vidjeti revolucionarne izume Googlea i kako su ti izumi promijenili život svakog čovjeka danas? Zatim čitajte na blogu kako biste vidjeli Googleove izume.

Friday Essential: Što se dogodilo s automobilima s umjetnom inteligencijom?

Friday Essential: Što se dogodilo s automobilima s umjetnom inteligencijom?

Koncept samovozećih automobila koji će krenuti na ceste uz pomoć umjetne inteligencije san je koji već neko vrijeme imamo. No, unatoč nekoliko obećanja, nigdje ih nema. Pročitajte ovaj blog kako biste saznali više…

Tehnološka singularnost: daleka budućnost ljudske civilizacije?

Tehnološka singularnost: daleka budućnost ljudske civilizacije?

Kako se znanost razvija velikom brzinom, preuzimajući mnoge naše napore, raste i rizik da se podvrgnemo neobjašnjivoj Singularnosti. Pročitajte što bi za nas mogla značiti singularnost.

Evolucija pohrane podataka – Infografika

Evolucija pohrane podataka – Infografika

Metode pohrane podataka su se razvijale možda od rođenja podataka. Ovaj blog pokriva evoluciju pohrane podataka na temelju infografike.

Funkcionalnosti slojeva referentne arhitekture velikih podataka

Funkcionalnosti slojeva referentne arhitekture velikih podataka

Pročitajte blog kako biste na najjednostavniji način upoznali različite slojeve u arhitekturi velikih podataka i njihove funkcionalnosti.

6 nevjerojatnih prednosti posjedovanja pametnih kućnih uređaja u našim životima

6 nevjerojatnih prednosti posjedovanja pametnih kućnih uređaja u našim životima

U ovom digitalnom svijetu, pametni kućni uređaji postali su ključni dio života. Evo nekoliko nevjerojatnih prednosti pametnih kućnih uređaja o tome kako naš život čine vrijednim življenja i jednostavnijim.

Ažuriranje dodataka macOS Catalina 10.15.4 uzrokuje više problema nego što ih rješava

Ažuriranje dodataka macOS Catalina 10.15.4 uzrokuje više problema nego što ih rješava

Nedavno je Apple izdao macOS Catalina 10.15.4 dodatak ažuriranju kako bi riješio probleme, ali čini se da ažuriranje uzrokuje više problema koji dovode do zalijevanja mac strojeva. Pročitajte ovaj članak da biste saznali više