Kako namestiti Ghost v0.11 LTS na Debian 8

Ghost je odprtokodna platforma za bloganje, ki postaja vse bolj priljubljena med razvijalci in navadnimi uporabniki od izdaje leta 2013. Osredotoča se na vsebino in bloganje. Najbolj privlačna stvar pri Ghostu je preprost, čist in odziven dizajn. Svoje objave v blogu lahko pišete iz mobilnega telefona. Vsebina za Ghost je napisana z jezikom Markdown. Ghost je kot nalašč za posameznike ali majhne skupine piscev.

V tem priročniku bomo postavili in umestili varen blog Ghost v0.11.x LTS na Debian 8 VPS z uporabo Let's Encrypt , Certbot , Node.js , NPM , NGINX in MySQL .

Zahteve

  • Registrirajte (nakupite) ime domene.
  • Primerek strežnika Debian 8 z najmanj 1 GB RAM-a .
  • Uporabnik Sudo.

Preden začneš

  1. Preverite različico Debiana:

    lsb_release -ds
    # Debian GNU/Linux 8.9 (jessie)
    
  2. Ustvarite nov nekorenski uporabniški račun:

    adduser johndoe --gecos "John Doe"
    
  3. Naj bo superuporabnik tako, da ga dodate v sudoskupino:

    usermod -aG sudo johndoe
    
  4. Preklopi na novega uporabnika:

    su - johndoe
    
  5. Posodobite programsko opremo svojega operacijskega sistema:

    sudo apt-get update && sudo apt-get upgrade -y
    
  6. Nastavite časovni pas:

    sudo dpkg-reconfigure tzdata
    
  7. Namestite potrebna orodja:

    sudo apt-get install -y build-essential zip unzip git apt-transport-https
    
  8. Po potrebi znova zaženite sistem:

    sudo shutdown -r now
    

Namestite Certbot

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

Za pridobitev potrdila SSL/TLS za naš blog Ghost bomo uporabili Let's Encrypt CA in odjemalca Certbot EFF . Ne pozabite zamenjati vseh primerov z imenom vaše domene.blog.domain.tld

  1. Namestite programsko opremo za upravljanje potrdil Certbot (prej Let's Encrypt client ), izdelano s Pythonom:

    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. Preverite različico Certbota:

    certbot --version
    # certbot 0.10.2
    
  3. Pridobite potrdilo RSA z uporabo samostojne metode preverjanja pristnosti (vtičnika):

    sudo certbot certonly --standalone --domains blog.domain.tld --rsa-key-size 2048 --must-staple --email admin@domain.tld --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 prejšnjih korakih bosta vaše potrdilo in zasebni ključ v /etc/letsencrypt/live/blog.domain.tldimeniku.

Namestite Node.js in NPM

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

Ghost je zgrajen na Node.js. Namestili bomo priporočeno različico za Ghost, ki je v6 Boron LTSv času tega pisanja.

  1. Prenesite in namestite Node.js v6 LTS:

    curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
  2. Preverite različico Node.js in NPM:

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

Namestite MySQL

Ghost je privzeto konfiguriran za uporabo baze podatkov SQLite, ki ne zahteva konfiguracije.

Druga možnost je, da se Ghost uporablja tudi z bazo podatkov MySQL, tako da spremenite konfiguracijo baze podatkov. Najprej morate ustvariti bazo podatkov in uporabnika, nato pa lahko spremenite obstoječo konfiguracijo sqlite3.

  1. Prenesite in namestite MySQL:

    sudo apt-get 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. Preverite različico MySQL:

    mysql --version
    # mysql  Ver 14.14 Distrib 5.5.57, for debian-linux-gnu (x86_64) using readline 6.3
    
  3. Preverite, ali se je demon MySQL zagnal in izvaja:

    sudo systemctl status mysql.service
    sudo systemctl is-enabled mysql.service
    
  4. Zaženite mysql_secure_installationskript, da nekoliko zaščitite svojo bazo podatkov:

    sudo mysql_secure_installation
    
  5. Prijavite se v MySQL kot root uporabnik:

    mysql -u root -p
    # Enter password:
    
  6. Ustvarite novo bazo podatkov MySQL in uporabnika:

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

    exit
    

Namestite NGINX

  1. Prenesite in namestite najnovejšo glavno različico NGINX iz uradnega repozitorija 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. Preverite, ali je nameščen, tako da preverite različico NGINX:

    sudo nginx -v
    # nginx version: nginx/1.13.4
    
  3. Preverite stanje, omogočite in zaženite storitev NGINX (demon):

    sudo systemctl status nginx.service # inactive (dead)
    sudo systemctl enable nginx.service
    sudo systemctl start nginx.service
    
  4. Ustvarite /etc/nginx/sslimenik in ustvarite novo skupino Diffie-Hellman ( DH ):

    sudo mkdir -p /etc/nginx/ssl
    sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
    
  5. Ustvarite imenik dnevnika za blog.domain.tldnavideznega gostitelja:

    sudo mkdir -p /var/log/nginx/blog.domain.tld
    
  6. Konfigurirajte NGINX kot povratni proxy strežnik HTTP ( S ):

    sudo vim /etc/nginx/conf.d/ghost.conf
    
  7. Prilepite naslednje v /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. Shranite in preizkusite konfiguracijo NGINX za sintaksične napake:

    sudo nginx -t
    
  9. Ponovno naložite konfiguracijo NGINX:

    sudo systemctl reload nginx.service
    

Namestite Ghost

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

  1. Ustvarite korenski imenik dokumenta:

    sudo mkdir -p /var/www/
    
  2. Ustvarite novega ghostuporabnika:

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

    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.11/Ghost-0.11.11.zip -o ghost.zip
    
  4. Razpakirajte Ghost v /var/www/ghostimenik (priporočeno mesto za namestitev):

    sudo unzip -uo ghost.zip -d /var/www/ghost
    rm ghost.zip
    
  5. Pomaknite se do novega ghostimenika:

    cd /var/www/ghost
    
  6. Spremenite lastništvo /var/www/ghostimenika:

    sudo chown -R ghost:ghost .
    
  7. Preklopi na novega ghostuporabnika:

    sudo su - ghost
    
  8. Pomaknite se do korena dokumenta /var/www/ghost:

    cd /var/www/ghost
    
  9. Namestite Ghost samo s produkcijskimi odvisnostmi. Ko je to končano, je nameščen Ghost:

    npm install --production
    
  10. Konfigurirajte Ghost tako, da spremenite url, mailin databaselastnost produkcijskega predmeta znotraj 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. Zaženite Ghost v produkcijskem okolju:

    npm start --production
    

    Ghost bo zdaj tekel. Oba blog front-end in admin vmesnik so zavarovane s HTTPS in HTTP / 2 deluje tudi. Odprete lahko brskalnik in obiščete spletno mesto na naslovu https://blog.domain.tld. Ne pozabite zamenjati blog.domain.tldz imenom vaše domene.

  12. Zaustavite postopek Ghost s pritiskom na CTRL+ Cin zapustite ghostuporabnika nazaj do korenskega uporabnika:

    exit
    

Zagon Ghost kot sistemska storitev

Če zaprete svojo terminalsko sejo s svojim VPS, se bo tudi vaš blog zmanjšal. To ni dobro. Da bi se temu izognili, bomo uporabili Systemd. Tako bo naš blog aktiven 24 ur na dan.

  1. Ustvarite ghost.servicedatoteko enote Systemd. Zaženite sudo vim /etc/systemd/system/ghost.servicein kopirajte/prilepite naslednjo vsebino:

    [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. Omogoči in zaženi ghost.service:

    sudo systemctl enable ghost.service && sudo systemctl start ghost.service
    
  3. Preverite ghost.servicestanje:

    sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service
    
  4. Pomaknite se do https://blog.domain.tld/ghost/in ustvarite skrbniškega uporabnika Ghost. Naredite to čim prej!

Zaključek

To je to. Zdaj imamo popolnoma delujoč blog Ghost. Vaš strežnik dostavlja vsebino prek HTTP/2, če to podpira odjemalec. Če želite spremeniti privzeto temo Ghost, imenovano Casper, v temo po meri, lahko temo preprosto prenesete in razpakirate v /var/www/ghost/content/themesmapo ter jo izberete prek skrbniškega vmesnika Ghost, ki se nahaja na https://blog.domain.tld/ghost.

Bloganje, Debian, vodniki za Linux, strežniške aplikacije

Pusti komentar

Vzpon strojev: aplikacije AI v resničnem svetu

Vzpon strojev: aplikacije AI v resničnem svetu

Umetna inteligenca ni v prihodnosti, tukaj je prav v sedanjosti. V tem blogu preberite, kako so aplikacije umetne inteligence vplivale na različne sektorje.

DDOS napadi: kratek pregled

DDOS napadi: kratek pregled

Ste tudi vi žrtev DDOS napadov in ste zmedeni glede načinov preprečevanja? Preberite ta članek, če želite rešiti svoja vprašanja.

Ste se kdaj vprašali, kako hekerji zaslužijo denar?

Ste se kdaj vprašali, kako hekerji zaslužijo denar?

Morda ste že slišali, da hekerji zaslužijo veliko denarja, a ste se kdaj vprašali, kako zaslužijo takšen denar? razpravljajmo.

Revolucionarni Googlovi izumi, ki vam bodo olajšali življenje.

Revolucionarni Googlovi izumi, ki vam bodo olajšali življenje.

Ali želite videti revolucionarne izume Googla in kako so ti izumi danes spremenili življenje vsakega človeka? Nato preberite v blogu in si oglejte Googlove izume.

Friday Essential: Kaj se je zgodilo z avtomobili, ki jih poganja umetna inteligenca?

Friday Essential: Kaj se je zgodilo z avtomobili, ki jih poganja umetna inteligenca?

Koncept samovozečih avtomobilov, ki zapeljejo na ceste s pomočjo umetne inteligence, so sanje, ki jih imamo že nekaj časa. A kljub številnim obljubam jih ni nikjer. Preberite ta blog, če želite izvedeti več…

Tehnološka singularnost: oddaljena prihodnost človeške civilizacije?

Tehnološka singularnost: oddaljena prihodnost človeške civilizacije?

Ker se znanost hitro razvija in prevzame veliko naših prizadevanj, se povečuje tudi tveganje, da se podvržemo nerazložljivi singularnosti. Preberite, kaj bi za nas lahko pomenila singularnost.

Funkcionalnosti slojev referenčne arhitekture velikih podatkov

Funkcionalnosti slojev referenčne arhitekture velikih podatkov

Preberite blog, če želite na najpreprostejši način spoznati različne plasti v arhitekturi velikih podatkov in njihove funkcionalnosti.

Razvoj shranjevanja podatkov – Infografika

Razvoj shranjevanja podatkov – Infografika

Metode shranjevanja podatkov so se lahko razvijale od rojstva podatkov. Ta blog pokriva razvoj shranjevanja podatkov na podlagi infografike.

6 neverjetnih prednosti pametnih naprav za dom v našem življenju

6 neverjetnih prednosti pametnih naprav za dom v našem življenju

V tem digitalno vodenem svetu so pametne naprave za dom postale ključni del življenja. Tukaj je nekaj neverjetnih prednosti pametnih naprav za dom o tem, kako naredijo naše življenje vredno življenja in poenostavijo.

Posodobitev dodatka macOS Catalina 10.15.4 povzroča več težav kot jih rešuje

Posodobitev dodatka macOS Catalina 10.15.4 povzroča več težav kot jih rešuje

Pred kratkim je Apple izdal macOS Catalina 10.15.4 dopolnilno posodobitev za odpravo težav, vendar se zdi, da posodobitev povzroča več težav, ki vodijo do opečenja računalnikov Mac. Preberite ta članek, če želite izvedeti več