Как да разположите Ghost v0.11 LTS на Fedora 25

Ghost е платформа за блогове с отворен код, която набира популярност сред разработчиците и обикновените потребители след пускането си през 2013 г. Той поставя фокус върху съдържанието и блоговете. Най-привлекателното нещо при Ghost е неговият прост, изчистен и отзивчив дизайн. Можете да пишете публикациите си в блога от мобилен телефон. Съдържанието за Ghost е написано с помощта на езика Markdown. Ghost е идеално подходящ за отделни лица или малки групи писатели.

В това ръководство ще настроим и внедрим защитен блог Ghost v0.11.x LTS на Fedora 25 VPS, използвайки Let's Encrypt , Certbot , Node.js , NPM , NGINX и MySQL .

Изисквания

  • Регистрирайте (закупете) име на домейн.
  • Fedora 25 сървърен екземпляр с минимум 1GB RAM .
  • Потребител на Sudo.
  • Вероятно ще трябва да отворите порт 2368 с semanage port -a -t http_port_t -p tcp 2368.

Преди да започнеш

  1. Проверете версията на Fedora:

    cat /etc/fedora-release
    # Fedora release 25 (Twenty Five)
    
  2. Създайте нов потребител без root :

    useradd -c "John Doe" johndoe && passwd johndoe
    
  3. Направете го суперпотребител, като го добавите към wheelгрупата:

    usermod -aG wheel johndoe
    
  4. Превключете към нов потребител:

    su - johndoe
    
  5. Актуализирайте софтуера на вашата операционна система:

    sudo dnf check-update || sudo dnf upgrade -y
    
  6. Настройте часовата зона:

    timedatectl list-timezones
    sudo timedatectl set-timezone 'Region/City'
    
  7. Инсталирайте инструменти за разработка:

    sudo dnf install @development-tools -y
    
  8. Инсталирайте текстов редактор на Vim и Wget:

    sudo dnf install -y vim wget
    
  9. Рестартирайте системата, ако е необходимо:

    sudo shutdown -r now
    

Инсталирайте Certbot

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

Ние ще използваме Encrypt Нека Калифорния и EFF е Certbot клиент да получи SSL / TLS сертификат за нашия Ghost блог. Не забравяйте да замените всички екземпляри на blog.domain.tldс името на вашия домейн.

  1. Инсталирайте Certbot (по-рано Let's Encrypt client ) софтуер за управление на сертификати, направен с Python:

    sudo dnf install -y certbot
    
  2. Проверете версията на Certbot:

    certbot --version
    # certbot 0.14.1
    
  3. Получете RSA сертификат, като използвате самостоятелен метод за удостоверяване (плъгин):

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

    След като преминете през предишни стъпки, вашият сертификат и частният ключ ще бъдат в /etc/letsencrypt/live/blog.domain.tldдиректорията.

Инсталирайте Node.js и NPM

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

Ghost е изграден на Node.js. Ще инсталираме препоръчителната версия за Ghost, която е v6 Boron LTSкъм момента на писане.

  1. Изтеглете и инсталирайте Node.js v6 LTS:

    curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
    sudo dnf install -y nodejs
    
  2. Проверете версията на Node.js и NPM:

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

Инсталирайте MySQL

По подразбиране Ghost е конфигуриран да използва SQLite база данни, която не изисква конфигурация.

Алтернативно Ghost може да се използва и с MySQL база данни чрез промяна на конфигурацията на базата данни. Първо трябва да създадете база данни и потребител, след което можете да промените съществуващата конфигурация на sqlite3.

  1. Изтеглете и инсталирайте най-новата версия на MySQL (в момента 5.7 ) от официалното хранилище на MySQL Dnf:

    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. Проверете версията на MySQL:

    mysql --version
    # mysql  Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using  EditLine wrapper
    
  3. Стартирайте MySQL Server и проверете състоянието му:

    sudo systemctl start mysqld.service
    sudo systemctl status mysqld.service
    
  4. MySQL версия 5.7 или по-нова генерира временна произволна парола за rootпотребител на MySQL след инсталиране и паролата се съхранява в MySQL регистрационен файл за грешки, намиращ се на /var/log/mysqld.log. За да го разкриете, използвайте следната команда:

    sudo grep 'temporary password' /var/log/mysqld.log
    
  5. Изпълнете mysql_secure_installationскрипта, за да защитите малко вашата база данни:

    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. Влезте в MySQL като root потребител:

    mysql -u root -p
    # Enter password:
    
  7. Създайте нова MySQL база данни и потребител:

    create database dbname;
    grant all on dbname.* to 'user' identified by 'password';
    
  8. Излезте от MySQL:

    exit
    

Инсталирайте NGINX

  1. Изтеглете и инсталирайте NGINX:

    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. Придвижете се до корена на документа /var/www/ghost:

    cd /var/www/ghost
    
  9. Инсталирайте Ghost само с производствени зависимости. Когато това приключи, Ghost се инсталира:

    npm install --production
    
  10. Конфигурирайте Ghost, като промените url, mailи databaseсвойството на производствения обект вътре във config.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. Стартирайте Ghost в производствена среда:

    npm start --production
    

    Ghost сега ще бяга. И предния край на блога, и интерфейсът на администратора са защитени с HTTPS и HTTP/2 също работи. Можете да отворите браузъра си и да посетите сайта на адрес https://blog.domain.tld. Не забравяйте да замените blog.domain.tldс името на вашия домейн.

  12. Изключете процеса на Ghost, като натиснете CTRL+ Cи излезте от ghost потребител обратно към потребител без root , който сте създали в началото:

    exit
    

Изпълнение на Ghost като системна услуга

Ако затворите терминалната си сесия с вашия VPS, вашият блог също ще падне. Това не е добре. За да избегнем това, ще използваме systemd. Това ще поддържа блога ни 24/7.

  1. Създайте ghost.serviceфайл systemd unit. Стартирайте sudo sudo vim /etc/systemd/system/ghost.serviceи копирайте/поставете съдържанието по-долу:

    [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. Активирайте и стартирайте ghost.service:

    sudo systemctl enable ghost.service && sudo systemctl start ghost.service
    
  3. Проверете ghost.serviceсъстоянието:

    sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service
    
  4. Отидете до https://blog.domain.tld/ghost/и създайте потребител на Ghost администратор. Направете това възможно най-скоро!

Заключение

Това е. Вече имаме напълно функционален Ghost блог. Вашият сървър доставя съдържание чрез HTTP/2, когато се поддържа от клиента. Ако искате да промените темата на Ghost по подразбиране, наречена Casper, на персонализирана, можете просто да изтеглите и разархивирате темата в /var/www/ghost/content/themesпапката и да я изберете чрез администраторски интерфейс на Ghost, намиращ се на https://blog.domain.tld/ghost.


Създаване на блог на Jekyll в Ubuntu 16.04

Създаване на блог на Jekyll в Ubuntu 16.04

Използване на различна система? Jekyll е чудесна алтернатива на WordPress за блогове или споделяне на съдържание. Не изисква никакви бази данни и е много лесно i

Как да инсталирате MODX Revolution на Ubuntu 16.04 LAMP VPS

Как да инсталирате MODX Revolution на Ubuntu 16.04 LAMP VPS

Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема, безплатна и отворена система за управление на съдържанието (CMS) от корпоративен клас, написана i

Как да инсталирате MODX Revolution на FreeBSD 11 FAMP VPS

Как да инсталирате MODX Revolution на FreeBSD 11 FAMP VPS

Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема система за управление на съдържанието (CMS) от корпоративен клас, написана на PHP. То и

Инсталирайте WordPress на OpenBSD 6.2

Инсталирайте WordPress на OpenBSD 6.2

Въведение WordPress е доминиращата система за управление на съдържанието в интернет. Той захранва всичко от блогове до сложни уебсайтове с динамично съдържание

Създаване на блог на Jekyll на CentOS 7

Създаване на блог на Jekyll на CentOS 7

Използване на различна система? Jekyll е добра алтернатива на WordPress. Не изисква никакви бази данни и работи с език, който мнозина познават

Как да инсталирате MODX Revolution на CentOS 7 LAMP VPS

Как да инсталирате MODX Revolution на CentOS 7 LAMP VPS

Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема, безплатна и отворена система за управление на съдържанието (CMS) от корпоративен клас, написана i

Инсталиране на Fork CMS на CentOS 7

Инсталиране на Fork CMS на CentOS 7

Използване на различна система? Fork е CMS с отворен код, написан на PHP. Изходният код на Forks се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате Fork CM

Как да инсталирате Neos CMS на CentOS 7

Как да инсталирате Neos CMS на CentOS 7

Neos е иновативна система за управление на съдържанието с отворен код, която е чудесна за създаване и редактиране на онлайн съдържание. Имайки предвид авторите и редакторите, Neo

Как да разположите Ghost v0.11 LTS на CentOS 7.3

Как да разположите Ghost v0.11 LTS на CentOS 7.3

Използване на различна система? Ghost е платформа за блогове с отворен код, която набира популярност сред разработчиците и обикновените потребители от 201 г.

Как да инсталирате SilverStripe CMS на FreeBSD 11 FAMP VPS

Как да инсталирате SilverStripe CMS на FreeBSD 11 FAMP VPS

Използване на различна система? SilverStripe е гъвкава и разширяема система за управление на съдържанието (CMS) с отворен код, написана на PHP. Това е лесно

Как да разположите Ghost v0.11 LTS на Fedora 25

Как да разположите Ghost v0.11 LTS на Fedora 25

Използване на различна система? Ghost е платформа за блогове с отворен код, която набира популярност сред разработчиците и обикновените потребители от 201 г.

Как да разположите множество сайтове на Wordpress с помощта на Virtualmin и Ansible в Ubuntu 16.04

Как да разположите множество сайтове на Wordpress с помощта на Virtualmin и Ansible в Ubuntu 16.04

Често срещано използване на виртуален сървър Vultr е за хостване на уебсайтове на Wordpress. Това ръководство ви показва как да автоматизирате конфигурацията на виртуален сървър от нулата

Настройване на Ghost Professional Publishing Platform на OpenBSD 6

Настройване на Ghost Professional Publishing Platform на OpenBSD 6

Ghost е най-новата и най-добрата нова, която да съперничи на WordPress. Разработването на теми е бързо и лесно за научаване, защото разработчиците на Ghost решиха да използват и двете

Инсталирайте и конфигурирайте блог Ghost v1.0.0 в Ubuntu 16.04

Инсталирайте и конфигурирайте блог Ghost v1.0.0 в Ubuntu 16.04

Ghost е модерна платформа за публикуване с отворен код, изградена на Node.js с администраторски клиент Ember.js, JSON API и API за тема, задвижван от Handlebars.js. Ghos

Как да инсталирате MODX Revolution на Fedora 26 LAMP VPS

Как да инсталирате MODX Revolution на Fedora 26 LAMP VPS

Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема, безплатна и отворена система за управление на съдържанието (CMS) от корпоративен клас, написана i

Как да инсталирате Dotclear на Debian 9 (разтягане)

Как да инсталирате Dotclear на Debian 9 (разтягане)

Използване на различна система? Dotclear е много прост двигател за блогове. Той е с отворен код и лесен за използване. Този урок ще премине през инсталацията

Инсталиране на Fork CMS на Ubuntu 16.04 LTS

Инсталиране на Fork CMS на Ubuntu 16.04 LTS

Използване на различна система? Fork е CMS с отворен код, написан на PHP. Изходният код на Forks се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате Fork CM

Как да разположите Ghost на Debian 8.7

Как да разположите Ghost на Debian 8.7

Използване на различна система? Ghost е платформа за блогове с отворен код, която набира популярност сред разработчиците и обикновените потребители след пускането си през 2013 г. аз

Инсталиране на Fork CMS на Debian 9

Инсталиране на Fork CMS на Debian 9

Използване на различна система? Fork е CMS с отворен код, написан на PHP. Изходният код на Forks се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате Fork CM

Как да инсталирате Typesetter CMS на CentOS 7

Как да инсталирате Typesetter CMS на CentOS 7

Typesetter е CMS с отворен код, написан на PHP, фокусиран върху лекотата на използване с True WYSIWYG редактиране и съхранение на плосък файл. В тази статия ще инсталираме

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече