Kuidas juurutada Ghost v0.11 LTS Debian 8-s

Ghost on avatud lähtekoodiga ajaveebiplatvorm, mis on arendajate ja tavakasutajate seas populaarsust kogunud alates 2013. aasta väljalaskmisest. See keskendub sisule ja ajaveebi pidamisele. Ghosti juures on kõige atraktiivsem selle lihtne, puhas ja tundlik disain. Saate kirjutada oma ajaveebi postitusi mobiiltelefonist. Ghosti sisu on kirjutatud Markdowni keeles. Ghost sobib suurepäraselt üksikisikutele või väikestele kirjanike rühmadele.

Selles juhendis seadistame ja juurutame turvalise Ghost v0.11.x LTS ajaveebi Debian 8 VPS-is, kasutades Let's Encrypt , Certbot , Node.js , NPM , NGINX ja MySQL .

Nõuded

  • Registreerige (ostke) domeeninimi.
  • Debian 8 serveri eksemplar vähemalt 1 GB muutmäluga .
  • Sudo kasutaja.

Enne alustamist

  1. Kontrollige Debiani versiooni:

    lsb_release -ds
    # Debian GNU/Linux 8.9 (jessie)
    
  2. Looge uus mitte-root kasutajakonto:

    adduser johndoe --gecos "John Doe"
    
  3. Muutke see superkasutajaks, lisades selle sudorühma:

    usermod -aG sudo johndoe
    
  4. Lülitumine uuele kasutajale:

    su - johndoe
    
  5. Värskendage oma operatsioonisüsteemi tarkvara:

    sudo apt-get update && sudo apt-get upgrade -y
    
  6. Seadistage ajavöönd:

    sudo dpkg-reconfigure tzdata
    
  7. Paigaldage vajalikud tööriistad:

    sudo apt-get install -y build-essential zip unzip git apt-transport-https
    
  8. Vajadusel taaskäivitage süsteem:

    sudo shutdown -r now
    

Installige Certbot

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

Kasutame Let's Encrypt CA ja EFF- i Certbot klienti, et hankida oma Ghost ajaveebi SSL/TLS sertifikaat. Ärge unustage asendada kõiki eksemplare blog.domain.tldoma domeeninimega.

  1. Installige Pythoniga tehtud Certboti (endine Let's Encrypt client ) sertifikaadihaldustarkvara:

    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. Kontrollige Certboti versiooni:

    certbot --version
    # certbot 0.10.2
    
  3. Hankige RSA sertifikaat, kasutades eraldiseisvat autentimismeetodit (pluginat):

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

    Pärast läbimas eelnevaid samme, oma tunnistuse ja privaatvõti saab olema /etc/letsencrypt/live/blog.domain.tldkataloogis.

Installige Node.js ja NPM

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

Ghost on üles ehitatud Node.js-ile. Me installime Ghosti jaoks soovitatud versiooni, mis on v6 Boron LTSselle kirjutamise ajal.

  1. Laadige alla ja installige Node.js v6 LTS:

    curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
  2. Kontrollige Node.js ja NPM versiooni:

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

Installige MySQL

Vaikimisi on Ghost konfigureeritud kasutama SQLite'i andmebaasi, mis ei vaja konfigureerimist.

Teise võimalusena saab Ghosti kasutada ka MySQL-i andmebaasiga, muutes andmebaasi konfiguratsiooni. Esmalt peate looma andmebaasi ja kasutaja, seejärel saate muuta olemasolevat sqlite3 konfiguratsiooni.

  1. Laadige alla ja installige 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. Kontrollige MySQL-i versiooni:

    mysql --version
    # mysql  Ver 14.14 Distrib 5.5.57, for debian-linux-gnu (x86_64) using readline 6.3
    
  3. Kontrollige, kas MySQL-i deemon on käivitunud ja töötab:

    sudo systemctl status mysql.service
    sudo systemctl is-enabled mysql.service
    
  4. Käivitage mysql_secure_installationskript, et oma andmebaasi veidi kaitsta:

    sudo mysql_secure_installation
    
  5. Logige MySQL-i sisse juurkasutajana:

    mysql -u root -p
    # Enter password:
    
  6. Looge uus MySQL-i andmebaas ja kasutaja:

    create database dbname;
    grant all on dbname.* to 'user' identified by 'password';
    
  7. Välju MySQL-ist:

    exit
    

Installige NGINX

  1. Laadige alla ja installige NGINX-i uusim põhiversioon ametlikust NGINX-i hoidlast:

    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. Kontrollige, kas see on installitud, kontrollides NGINX-i versiooni:

    sudo nginx -v
    # nginx version: nginx/1.13.4
    
  3. Kontrollige olekut, lubage ja käivitage NGINX-teenus (deemon):

    sudo systemctl status nginx.service # inactive (dead)
    sudo systemctl enable nginx.service
    sudo systemctl start nginx.service
    
  4. Looge /etc/nginx/sslkataloog ja looge uus Diffie-Hellmani ( DH ) rühm:

    sudo mkdir -p /etc/nginx/ssl
    sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
    
  5. Loo blog.domain.tldvirtuaalse hosti logikataloog :

    sudo mkdir -p /var/log/nginx/blog.domain.tld
    
  6. Konfigureerige NGINX HTTP ( S ) pöördpuhverserverina :

    sudo vim /etc/nginx/conf.d/ghost.conf
    
  7. Kleepige sisse järgmine /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. Salvestage ja testige NGINX-i konfiguratsiooni süntaksivigade suhtes:

    sudo nginx -t
    
  9. Laadige uuesti NGINX-i konfiguratsioon:

    sudo systemctl reload nginx.service
    

Installige Ghost

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

  1. Looge dokumendi juurkataloog:

    sudo mkdir -p /var/www/
    
  2. Loo uus ghostkasutaja:

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

    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.11/Ghost-0.11.11.zip -o ghost.zip
    
  4. Pakkige Ghost lahti /var/www/ghostkataloogi (soovitatav installikoht):

    sudo unzip -uo ghost.zip -d /var/www/ghost
    rm ghost.zip
    
  5. Liikuge uude ghostkataloogi:

    cd /var/www/ghost
    
  6. /var/www/ghostKataloogi omandiõiguse muutmine :

    sudo chown -R ghost:ghost .
    
  7. Lülitu uuele ghostkasutajale:

    sudo su - ghost
    
  8. Navigeerige dokumendi juure /var/www/ghost:

    cd /var/www/ghost
    
  9. Installige Ghost ainult tootmissõltuvustega. Kui see on lõppenud, installitakse Ghost:

    npm install --production
    
  10. Seadistamine Ghost muutes url, mailja databasevara tootmise objekti sees config.jsfaili:

    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. Käivitage Ghost tootmiskeskkonnas:

    npm start --production
    

    Ghost hakkab nüüd jooksma. Nii ajaveebi esiosa kui ka administraatoriliides on kaitstud HTTPS-iga ja HTTP/2 töötab ka. Saate avada brauseri ja külastada saiti aadressil https://blog.domain.tld. Ärge unustage asendada blog.domain.tldoma domeeninimega.

  12. Lülitage Ghost-protsess välja, vajutades CTRL+ Cja väljuge ghostkasutajalt tagasi juurkasutaja juurde:

    exit
    

Ghosti käitamine süsteemiteenusena

Kui sulgete terminaliseansi oma VPS-iga, suletakse ka teie ajaveeb. See ei ole hea. Selle vältimiseks kasutame Systemd. See hoiab meie ajaveebi üleval 24/7.

  1. Looge ghost.serviceSystemd-üksuse fail. Käivitage sudo vim /etc/systemd/system/ghost.serviceja kopeerige/kleepige järgmine sisu:

    [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. Lubage ja käivitage ghost.service:

    sudo systemctl enable ghost.service && sudo systemctl start ghost.service
    
  3. Kontrolli ghost.serviceolekut:

    sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service
    
  4. Navigeerige https://blog.domain.tld/ghost/ja looge Ghosti administraatori kasutaja. Tehke seda esimesel võimalusel!

Järeldus

See on kõik. Meil on nüüd täielikult toimiv Ghosti ajaveeb. Teie server edastab sisu HTTP/2 kaudu, kui klient seda toetab. Kui soovite muuta Ghosti vaiketeema nimega Casper kohandatud teemaks , saate selle lihtsalt alla laadida ja /var/www/ghost/content/themeskausta lahti pakkida ning valida selle Ghosti administraatoriliidese kaudu, mis asub aadressil https://blog.domain.tld/ghost.

Blogimine, Debian, Linuxi juhendid, serverirakendused

Jäta kommentaar

Masinate tõus: AI tegelikud rakendused

Masinate tõus: AI tegelikud rakendused

Tehisintellekt ei ole tulevik, see on siin, olevikus. Sellest blogist loe, kuidas tehisintellekti rakendused on mõjutanud erinevaid sektoreid.

DDOS-i rünnakud: lühike ülevaade

DDOS-i rünnakud: lühike ülevaade

Kas olete ka DDOS-i rünnakute ohver ja olete segaduses ennetusmeetodite osas? Oma päringute lahendamiseks lugege seda artiklit.

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Võib-olla olete kuulnud, et häkkerid teenivad palju raha, kuid kas olete kunagi mõelnud, kuidas nad sellist raha teenivad? arutleme.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Kas soovite näha Google'i revolutsioonilisi leiutisi ja seda, kuidas need leiutised muutsid iga inimese elu tänapäeval? Seejärel lugege ajaveebi, et näha Google'i leiutisi.

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Isejuhtivate autode kontseptsioon tehisintellekti abil teedele jõudmiseks on meil juba mõnda aega unistus. Kuid vaatamata mitmele lubadusele pole neid kusagil näha. Lisateabe saamiseks lugege seda ajaveebi…

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Kuna teadus areneb kiiresti, võttes üle suure osa meie jõupingutustest, suureneb ka oht, et allume seletamatule singulaarsusele. Loe, mida singulaarsus meie jaoks tähendada võiks.

Suurandmete viitearhitektuuri kihtide funktsioonid

Suurandmete viitearhitektuuri kihtide funktsioonid

Lugege ajaveebi, et kõige lihtsamal viisil teada saada Big Data Architecture'i erinevaid kihte ja nende funktsioone.

Andmesalvestuse areng – infograafik

Andmesalvestuse areng – infograafik

Andmete säilitamise meetodid on arenenud alates andmete sünnist. See ajaveeb käsitleb infograafiku alusel andmete salvestamise arengut.

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

Selles digipõhises maailmas on nutikad koduseadmed muutunud elu oluliseks osaks. Siin on mõned nutikate koduseadmete hämmastavad eelised, mis muudavad meie elu elamisväärseks ja lihtsamaks.

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

Hiljuti andis Apple välja macOS Catalina 10.15.4 täiendusvärskenduse probleemide lahendamiseks, kuid tundub, et värskendus põhjustab rohkem probleeme, mille tulemuseks on Maci masinate tellimine. Lisateabe saamiseks lugege seda artiklit