Kā izvietot Ghost v0.11 LTS Ubuntu 16.04

Ghost ir atvērtā koda emuāru veidošanas platforma, kas kopš 2013. gada izlaišanas ir guvusi popularitāti izstrādātāju un parasto lietotāju vidū. Tas koncentrējas uz saturu un emuāru veidošanu. Vispievilcīgākais Ghost ir tā vienkāršais, tīrais un atsaucīgais dizains. Varat rakstīt savus emuāra ierakstus no mobilā tālruņa. Ghost saturs ir rakstīts, izmantojot Markdown valodu. Ghost ir lieliski piemērots indivīdiem vai nelielām rakstnieku grupām.

Šajā rokasgrāmatā mēs iestatīsim un izvietosim drošu Ghost v0.11.x LTS emuāru Ubuntu 16.04 LTS VPS, izmantojot Let's Encrypt , Certbot , Node.js , NPM , NGINX un MySQL .

Prasības

  • Reģistrēt (iegādāties) domēna vārdu.
  • Ubuntu servera 16.04 servera gadījums ar vismaz 1 GB RAM .
  • Sudo lietotājs.

Pirms tu sāc

  1. Izveidojiet jaunu lietotāja kontu, kas nav saknes lietotājs:

    adduser johndoe --gecos "John Doe"
    
  2. Padariet to par superlietotāju, pievienojot to sudogrupai:

    usermod -aG sudo johndoe
    
  3. Pārslēgties uz jaunu lietotāju:

    su - johndoe
    
  4. Atjauniniet operētājsistēmas programmatūru:

    sudo apt update && sudo apt upgrade -y
    
  5. Iestatiet laika joslu:

    sudo dpkg-reconfigure tzdata
    
  6. Instalējiet nepieciešamos rīkus:

    sudo apt install -y build-essential zip unzip vim nano openssl wget curl git apt-transport-https
    
  7. Ja nepieciešams, restartējiet sistēmu:

    sudo shutdown -r now
    

Instalējiet Certbot

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

Mēs izmantosim Let's Encrypt CA un EFF Certbot klientu, lai iegūtu SSL/TLS sertifikātu mūsu Ghost emuāram. Neaizmirstiet aizstāt visus gadījumus blog.domain.tldar savu domēna nosaukumu.

  1. Instalējiet Certbot (iepriekš Let's Encrypt client ) sertifikātu pārvaldības programmatūru, kas izveidota ar 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
    
  2. Pārbaudiet Certbot versiju:

    certbot --version
    # certbot 0.14.2
    
  3. Iegūstiet RSA sertifikātu, izmantojot atsevišķu autentifikācijas metodi (spraudni):

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

    Pēc iepriekšējo darbību veikšanas jūsu sertifikāts un privātā atslēga būs /etc/letsencrypt/live/blog.domain.tlddirektorijā.

Instalējiet Node.js un NPM

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

Ghost ir veidots uz Node.js. Mēs instalēsim ieteicamo Ghost versiju, kas ir v6 Boron LTSšīs rakstīšanas laikā.

  1. Lejupielādējiet un instalējiet Node.js v6 LTS:

    curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
    sudo apt install -y nodejs
    
  2. Pārbaudiet Node.js un NPM versiju:

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

Instalējiet MySQL

Pēc noklusējuma Ghost ir konfigurēts, lai izmantotu SQLite datu bāzi, kurai nav nepieciešama konfigurācija.

Alternatīvi Ghost var izmantot arī ar MySQL datu bāzi, mainot datu bāzes konfigurāciju. Vispirms ir jāizveido datu bāze un lietotājs, pēc tam varat mainīt esošo sqlite3 konfigurāciju.

  1. Lejupielādējiet un instalējiet 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. Pārbaudiet MySQL versiju:

    mysql --version
    # mysql  Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using  EditLine wrapper
    
  3. Pārbaudiet, vai MySQL dēmons ir palaists un darbojas:

    sudo systemctl status mysql.service
    sudo systemctl is-enabled mysql.service
    
  4. Palaidiet mysql_secure_installationskriptu, lai mazliet aizsargātu datu bāzi:

    sudo mysql_secure_installation
    
  5. Piesakieties MySQL kā root lietotājs:

    mysql -u root -p
    # Enter password:
    
  6. Izveidojiet jaunu MySQL datu bāzi un lietotāju:

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

    exit
    

Instalējiet NGINX

  1. Lejupielādējiet un instalējiet jaunāko NGINX galveno versiju no oficiālās NGINX krātuves:

    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. Pārbaudiet, vai tā ir instalēta, pārbaudot NGINX versiju:

    sudo nginx -v
    # nginx version: nginx/1.13.3
    
  3. Pārbaudiet statusu, iespējojiet un palaidiet NGINX pakalpojumu (dēmonu):

    sudo systemctl status nginx.service # inactive (dead)
    sudo systemctl enable nginx.service
    sudo systemctl start nginx.service
    
  4. Izveidojiet /etc/nginx/ssldirektoriju un ģenerējiet jaunu Diffie-Hellman ( DH ) grupu:

    sudo mkdir -p /etc/nginx/ssl
    sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
    
  5. Izveidojiet žurnāla direktoriju blog.domain.tldvirtuālajam saimniekdatoram:

    sudo mkdir -p /var/log/nginx/blog.domain.tld
    
  6. Konfigurējiet NGINX kā HTTP ( S ) reverso starpniekserveri:

    sudo vim /etc/nginx/conf.d/ghost.conf
    
  7. Ielīmējiet tālāk norādīto /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. Saglabājiet un pārbaudiet NGINX konfigurāciju sintakses kļūdām:

    sudo nginx -t
    
  9. Pārlādēt NGINX konfigurāciju:

    sudo systemctl reload nginx.service
    

Instalējiet Ghost

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

  1. Izveidojiet dokumenta saknes direktoriju:

    sudo mkdir -p /var/www/
    
  2. Izveidot jaunu ghostlietotāju:

    sudo adduser --shell /bin/bash --gecos 'Ghost application' --disabled-password ghost
    
  3. Lejupielādēt Ghost:

    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.10/Ghost-0.11.10.zip -o ghost.zip
    
  4. Izsaiņojiet Ghost /var/www/ghostdirektorijā (ieteicamā instalēšanas vieta):

    sudo unzip -uo ghost.zip -d /var/www/ghost
    rm ghost.zip
    
  5. Pāriet uz jauno ghostdirektoriju:

    cd /var/www/ghost
    
  6. Mainiet /var/www/ghostdirektorija īpašumtiesības :

    sudo chown -R ghost:ghost .
    
  7. Pārslēgties uz jaunu ghostlietotāju:

    sudo su - ghost
    
  8. Pārejiet uz dokumenta sakni /var/www/ghost:

    cd /var/www/ghost
    
  9. Instalējiet Ghost tikai ar ražošanas atkarību. Kad tas ir pabeigts, Ghost tiek instalēts:

    npm install --production
    
  10. Konfigurējiet Ghost, mainot url, mailun objekta databaserekvizītu failā:productionconfig.js

    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. Startēt Ghost ražošanas vidē:

    npm start --production
    

    Spoks tagad darbosies. Gan emuāra priekšgals, gan administratora interfeiss ir aizsargāti ar HTTPS, un darbojas arī HTTP/2. Varat atvērt savu pārlūkprogrammu un apmeklēt vietni https://blog.domain.tld. Neaizmirstiet aizstāt blog.domain.tldar savu domēna nosaukumu.

  12. Izslēdziet Ghost procesu, nospiežot CTRL+ Cun izejiet no Ghost lietotāja atpakaļ uz root lietotāju:

    exit
    

Ghost palaišana kā sistēmas pakalpojums

Ja aizvērsit termināļa sesiju ar savu VPS, arī jūsu emuārs tiks pārtraukts. Tas nav labi. Lai no tā izvairītos, mēs izmantosim systemd. Tas nodrošinās mūsu emuāra darbību 24/7.

  1. Izveidojiet ghost.servicesistēmas vienības failu. Palaidiet sudo vim /etc/systemd/system/ghost.serviceun kopējiet/ielīmējiet tālāk norādīto saturu:

    [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. Iespējot un sākt ghost.service:

    sudo systemctl enable ghost.service && sudo systemctl start ghost.service
    
  3. Pārbaudiet ghost.servicestatusu:

    sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service
    
  4. Dodieties uz https://blog.domain.tld/ghost/un izveidojiet Ghost administratora lietotāju. Dariet to pēc iespējas ātrāk!

Secinājums

Tieši tā. Tagad mums ir pilnībā funkcionējošs Ghost emuārs. Jūsu serveris piegādā saturu, izmantojot HTTP/2, ja to atbalsta klients. Ja vēlaties mainīt noklusējuma Ghost motīvu Casper uz pielāgotu, varat vienkārši lejupielādēt un izpakot motīvu /var/www/ghost/content/themesmapē un atlasīt to, izmantojot Ghost administratora saskarni, kas atrodas https://blog.domain.tld/ghost.

Atstājiet komentāru

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mākslīgais intelekts nav nākotnē, tas ir šeit, tagadnē. Šajā emuārā lasiet, kā mākslīgā intelekta lietojumprogrammas ir ietekmējušas dažādas nozares.

DDOS uzbrukumi: īss pārskats

DDOS uzbrukumi: īss pārskats

Vai arī jūs esat DDOS uzbrukumu upuris un esat neizpratnē par profilakses metodēm? Izlasiet šo rakstu, lai atrisinātu savus jautājumus.

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Iespējams, esat dzirdējuši, ka hakeri pelna daudz naudas, bet vai esat kādreiz domājuši, kā viņi nopelna šādu naudu? pārrunāsim.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Vai vēlaties redzēt revolucionārus Google izgudrojumus un to, kā šie izgudrojumi mainīja katra cilvēka dzīvi mūsdienās? Pēc tam lasiet emuārā, lai redzētu Google izgudrojumus.

Piektdiena: kas notika ar AI vadītām automašīnām?

Piektdiena: kas notika ar AI vadītām automašīnām?

Pašpiedziņas automobiļu koncepcija izbraukt uz ceļiem ar mākslīgā intelekta palīdzību ir mūsu sapnis jau kādu laiku. Bet, neskatoties uz vairākiem solījumiem, tie nekur nav redzami. Lasiet šo emuāru, lai uzzinātu vairāk…

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Zinātnei strauji attīstoties, pārņemot lielu daļu mūsu pūļu, palielinās arī risks pakļaut sevi neizskaidrojamai singularitātei. Izlasiet, ko singularitāte varētu nozīmēt mums.

Lielo datu atsauces arhitektūras slāņu funkcijas

Lielo datu atsauces arhitektūras slāņu funkcijas

Lasiet emuāru, lai vienkāršākā veidā uzzinātu dažādus lielo datu arhitektūras slāņus un to funkcijas.

Datu glabāšanas evolūcija – infografika

Datu glabāšanas evolūcija – infografika

Datu uzglabāšanas metodes ir attīstījušās kopš datu dzimšanas. Šajā emuārā ir aprakstīta datu uzglabāšanas attīstība, pamatojoties uz infografiku.

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

Šajā digitālajā pasaulē viedās mājas ierīces ir kļuvušas par būtisku dzīves sastāvdaļu. Šeit ir daži pārsteidzoši viedo mājas ierīču ieguvumi, lai padarītu mūsu dzīvi dzīves vērtu un vienkāršāku.

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

Nesen Apple izlaida macOS Catalina 10.15.4 papildinājuma atjauninājumu, lai novērstu problēmas, taču šķiet, ka atjauninājums rada vairāk problēmu, kas izraisa Mac datoru bloķēšanu. Izlasiet šo rakstu, lai uzzinātu vairāk