A Ghost v0.11 LTS telepítése Fedora 25 rendszeren

A Ghost egy nyílt forráskódú blogplatform, amely 2013-as megjelenése óta egyre népszerűbb a fejlesztők és a hétköznapi felhasználók körében. A tartalomra és a blogírásra helyezi a hangsúlyt. A Ghost legvonzóbb tulajdonsága az egyszerű, letisztult és érzékeny kialakítás. Blogbejegyzéseit mobiltelefonról is írhatja. A Ghost tartalma a Markdown nyelven íródott. A Ghost tökéletesen illeszkedik egyénekhez vagy kisebb írócsoportokhoz.

Ebben az útmutatóban egy biztonságos Ghost v0.11.x LTS blogot állítunk be és telepítünk egy Fedora 25 VPS-en a Let's Encrypt , Certbot , Node.js , NPM , NGINX és MySQL használatával .

Követelmények

  • Regisztráljon (vásároljon) egy domain nevet.
  • Fedora 25 szerverpéldány minimum 1 GB RAM-mal .
  • Sudo felhasználó.
  • Valószínűleg meg kell nyitnia a 2368-as portot a -val semanage port -a -t http_port_t -p tcp 2368.

Mielőtt elkezded

  1. Fedora verzió ellenőrzése:

    cat /etc/fedora-release
    # Fedora release 25 (Twenty Five)
    
  2. Hozzon létre egy új, nem root felhasználót:

    useradd -c "John Doe" johndoe && passwd johndoe
    
  3. Tedd szuperfelhasználóvá, ha hozzáadod a wheelcsoporthoz:

    usermod -aG wheel johndoe
    
  4. Váltás új felhasználóra:

    su - johndoe
    
  5. Frissítse operációs rendszere szoftverét:

    sudo dnf check-update || sudo dnf upgrade -y
    
  6. Állítsa be az időzónát:

    timedatectl list-timezones
    sudo timedatectl set-timezone 'Region/City'
    
  7. Fejlesztőeszközök telepítése:

    sudo dnf install @development-tools -y
    
  8. Telepítse a Vim szövegszerkesztőt és a Wget-et:

    sudo dnf install -y vim wget
    
  9. Szükség esetén indítsa újra a rendszert:

    sudo shutdown -r now
    

Telepítse a Certbotot

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

A Let's Encrypt CA és az EFF Certbot kliensét fogjuk használni , hogy SSL/TLS tanúsítványt szerezzünk Ghost blogunkhoz . Ne felejtse el a(z) összes példányát lecserélni blog.domain.tlda domain nevére.

  1. Telepítse a Certbot (korábban Let's Encrypt kliens ) tanúsítványkezelő szoftverét, amely Pythonnal készült:

    sudo dnf install -y certbot
    
  2. Ellenőrizze a Certbot verzióját:

    certbot --version
    # certbot 0.14.1
    
  3. Szerezzen be RSA- tanúsítványt önálló hitelesítési módszerrel (bővítmény):

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

    Az előző lépések elvégzése után a tanúsítvány és a privát kulcs a /etc/letsencrypt/live/blog.domain.tldkönyvtárban lesz.

Telepítse a Node.js-t és az NPM-et

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

A Ghost a Node.js-re épül. Telepíteni fogjuk a Ghost ajánlott verzióját, amely v6 Boron LTSaz írás idején van.

  1. Töltse le és telepítse a Node.js v6 LTS-t:

    curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
    sudo dnf install -y nodejs
    
  2. Ellenőrizze a Node.js és az NPM verzióját:

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

Telepítse a MySQL-t

Alapértelmezés szerint a Ghost SQLite adatbázis használatára van beállítva, amely nem igényel konfigurációt.

Alternatív megoldásként a Ghost MySQL adatbázissal is használható az adatbázis konfigurációjának megváltoztatásával. Először létre kell hoznia egy adatbázist és egy felhasználót, majd módosíthatja a meglévő sqlite3 konfigurációt.

  1. Töltse le és telepítse a MySQL legújabb verzióját (jelenleg 5.7 ) a hivatalos MySQL Dnf-tárból:

    cd /tmp
    
    # Adding the MySQL dnf Repository
    wget https://dev.mysql.com/get/mysql57-community-release-fc25-10.noarch.rpm
    sudo dnf install -y mysql57-community-release-fc25-10.noarch.rpm
    
    # Installing MySQL
    sudo dnf install -y mysql-community-server
    
  2. Ellenőrizze a MySQL verzióját:

    mysql --version
    # mysql  Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using  EditLine wrapper
    
  3. Indítsa el a MySQL Servert, és ellenőrizze az állapotát:

    sudo systemctl start mysqld.service
    sudo systemctl status mysqld.service
    
  4. A MySQL 5.7-es vagy újabb verziója ideiglenes véletlenszerű jelszót generál a MySQL- rootfelhasználó számára a telepítés után, és a jelszót a MySQL hibanaplófájlban tárolja, amely a következő címen található: /var/log/mysqld.log. Felfedéséhez használja a következő parancsot:

    sudo grep 'temporary password' /var/log/mysqld.log
    
  5. Futtassa a mysql_secure_installationszkriptet, hogy egy kicsit biztonságossá tegye az adatbázist:

    NOTE: Password Validation Plugin is installed and enabled, so your new password for root user needs to be strong (one upper case letter, one lower case letter, one digit, and one special character, and that the total password length is at least 8 characters). If you want to relax that or disable plugin completely (not recommended) consult the official MySQL documentation for how to do that.

    sudo mysql_secure_installation
    
  6. Jelentkezzen be a MySQL-be ​​root felhasználóként:

    mysql -u root -p
    # Enter password:
    
  7. Hozzon létre egy új MySQL adatbázist és felhasználót:

    create database dbname;
    grant all on dbname.* to 'user' identified by 'password';
    
  8. Kilépés a MySQL-ből:

    exit
    

Telepítse az NGINX-et

  1. Töltse le és telepítse az NGINX-et:

    sudo dnf install -y nginx
    
  2. Verify that it is installed by checking the NGINX version:

    sudo nginx -v
    # nginx version: nginx/1.10.2
    
  3. Check status, enable and start NGINX service (daemon):

    sudo systemctl status nginx.service # inactive (dead)
    sudo systemctl enable nginx.service
    sudo systemctl start nginx.service
    
  4. Create /etc/nginx/ssl directory and generate a new Diffie-Hellman (DH) parameters:

    sudo mkdir -p /etc/nginx/ssl
    sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
    
  5. Create log directory for blog.domain.tld virtual host:

    sudo mkdir -p /var/log/nginx/blog.domain.tld
    
  6. Configure NGINX as a HTTP(S) reverse proxy server:

    sudo vim /etc/nginx/conf.d/ghost.conf
    
  7. Paste the following in /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;
        listen 80;
        listen [::]:443 ssl http2;
        listen 443 ssl http2;
    
        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;
        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. Save and test NGINX configuration for syntax errors:

    sudo nginx -t
    
  9. Reload NGINX configuration:

    sudo systemctl reload nginx.service
    

Install Ghost

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

  1. Create document root directory:

    sudo mkdir -p /var/www/
    
  2. Create a new ghost user:

    sudo useradd -c 'Ghost application' ghost
    
  3. Download Ghost:

    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.11/Ghost-0.11.11.zip -o ghost.zip
    
  4. Unzip Ghost into the /var/www/ghost directory (recommended install location):

    sudo unzip -uo ghost.zip -d /var/www/ghost
    rm ghost.zip
    
  5. Move to the new ghost directory:

    cd /var/www/ghost
    
  6. Change the ownership of the /var/www/ghost directory:

    sudo chown -R ghost:ghost .
    
  7. Switch to new ghost user:

    sudo su - ghost
    
  8. Navigáljon a dokumentum gyökeréhez /var/www/ghost:

    cd /var/www/ghost
    
  9. Telepítse a Ghost-ot csak termelési függőségekkel. Amikor ez befejeződött, a Ghost telepítve lesz:

    npm install --production
    
  10. Konfigurálása Ghost megváltoztatásával url, mailés databasetulajdon gyártási objektum belsejében config.jsfile:

    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. Indítsa el a Ghost-ot éles környezetben:

    npm start --production
    

    A Ghost most futni fog. Mind a blog front-end, mind az adminisztrációs felület HTTPS-sel védett, és a HTTP/2 is működik. Megnyithatja böngészőjét, és felkeresheti a webhelyet a címen https://blog.domain.tld. Ne felejtse el lecserélni blog.domain.tlda domain nevét.

  12. Zárja le a Ghost folyamatot a CTRL+ megnyomásával, Cés lépjen vissza a ghost felhasználóról a nem root felhasználóra, amelyet az elején létrehozott:

    exit
    

A Ghost futtatása rendszerszolgáltatásként

Ha bezárja a terminál-munkamenetet a VPS-szel, a blogod is megszűnik. Ez nem jó. Ennek elkerülése érdekében a systemd-t fogjuk használni. Ez a nap 24 órájában fenn fogja tartani a blogunkat.

  1. Hozzon létre ghost.servicesystemd unit fájlt. Futtassa a sudo-t, sudo vim /etc/systemd/system/ghost.serviceés másolja/illessze be az alábbi tartalmat:

    [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. Engedélyezze és indítsa el ghost.service:

    sudo systemctl enable ghost.service && sudo systemctl start ghost.service
    
  3. Állapot ellenőrzése ghost.service:

    sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service
    
  4. Keresse meg https://blog.domain.tld/ghost/és hozzon létre egy Ghost adminisztrátori felhasználót. Tedd meg ezt mielőbb!

Következtetés

Ez az. Most már van egy teljesen működőképes Ghost blogunk. A szerver HTTP/2-n keresztül szállít tartalmat, ha az ügyfél támogatja. Ha meg szeretné változtatni az alapértelmezett Casper nevű Ghost témát egy egyénire , egyszerűen töltse le és csomagolja ki a témát a /var/www/ghost/content/themesmappába, és válassza ki a Ghost adminisztrációs felületén, amely a címen található https://blog.domain.tld/ghost.

Hagyj kommentárt

Egyéni Windows ISO létrehozása frissítésekkel az NTLite használatával

Egyéni Windows ISO létrehozása frissítésekkel az NTLite használatával

Ez az oktatóanyag végigvezeti Önt a Vultrs rendszerekkel kompatibilis Windows ISO létrehozásának folyamatán. Itt megtanulhatja az <>Windows ISO<> előállításának lépéseit az NTLite segítségével.

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A mesterséges intelligencia nem a jövőben, hanem itt a jelenben. Ebben a blogban Olvassa el, hogyan hatott a mesterséges intelligencia alkalmazások különböző ágazatokra.

DDOS támadások: Rövid áttekintés

DDOS támadások: Rövid áttekintés

Ön is DDOS támadások áldozata, és tanácstalan a megelőzési módszereket illetően? Olvassa el ezt a cikket a kérdések megoldásához.

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Talán hallottál már arról, hogy a hackerek sok pénzt keresnek, de elgondolkodtál már azon, hogyan kereshetnek ennyi pénzt? beszéljük meg.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

Szeretné látni a Google forradalmi találmányait, és azt, hogy ezek a találmányok hogyan változtatták meg minden mai ember életét? Ezután olvassa el a blogot, és nézze meg a Google találmányait.

Essential péntek: Mi történt az AI-vezérelt autókkal?

Essential péntek: Mi történt az AI-vezérelt autókkal?

Az önvezető autók koncepciója, hogy mesterséges intelligencia segítségével kerüljenek az utakra, már egy ideje álmunk. De számos ígéret ellenére sehol sem látszanak. Olvassa el ezt a blogot, hogy többet megtudjon…

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Ahogy a tudomány gyors ütemben fejlődik, átveszi erőfeszítéseink nagy részét, megnő annak a kockázata is, hogy alávetjük magunkat egy megmagyarázhatatlan szingularitásnak. Olvassa el, mit jelenthet számunkra a szingularitás.

A Big Data Reference Architecture Layerek funkciói

A Big Data Reference Architecture Layerek funkciói

Olvassa el a blogot, hogy a legegyszerűbb módon ismerje meg a Big Data Architecture különböző rétegeit és azok funkcióit.

Az adattárolás fejlődése – Infografika

Az adattárolás fejlődése – Infografika

Az adatok tárolási módjai az Adatok születése óta alakulhatnak. Ez a blog egy infografika alapján mutatja be az adattárolás fejlődését.

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Ebben a digitálisan vezérelt világban az intelligens otthoni eszközök az élet döntő részévé váltak. Íme az intelligens otthoni eszközök néhány elképesztő előnye, hogyan teszik életünket érdemessé és egyszerűbbé.