Як розгорнути Ghost v0.11 LTS на CentOS 7.3

Ghost — це платформа для ведення блогів з відкритим кодом, яка набирає популярності серед розробників і звичайних користувачів з моменту її випуску в 2013 році. Він акцентує увагу на контенті та веденні блогів. Найпривабливішим у Ghost є його простий, чистий та чуйний дизайн. Ви можете писати свої дописи в блозі з мобільного телефону. Вміст для Ghost написаний мовою Markdown. Ghost ідеально підходить для окремих осіб або невеликих груп письменників.

У цьому посібнику ми збираємося налаштувати та розгорнути захищений блог Ghost v0.11.x LTS на CentOS 7.3 VPS за допомогою Let's Encrypt , Certbot , Node.js , NPM , NGINX і MySQL .

Вимоги

  • Зареєструвати (придбати) доменне ім'я.
  • Серверний екземпляр CentOS 7.3 з мінімум 1 ГБ оперативної пам'яті .
  • Користувач Sudo.

Перед тим як ти почнеш

  1. Перевірте версію CentOS:

    cat /etc/centos-release
    # CentOS Linux release 7.3.1611 (Core)
    
  2. Створіть нового користувача без права root :

    useradd -c "John Doe" johndoe && passwd johndoe
    
  3. Зробіть його суперкористувачем, додавши його до wheelгрупи:

    usermod -aG wheel johndoe
    
  4. Перейти до нового користувача:

    su - johndoe
    
  5. Оновіть програмне забезпечення операційної системи:

    sudo yum check-update || sudo yum update -y
    
  6. Налаштуйте часовий пояс:

    timedatectl list-timezones
    sudo timedatectl set-timezone 'Region/City'
    
  7. Встановіть інструменти розробки:

    sudo yum groupinstall -y 'Development Tools'
    
  8. Встановіть текстовий редактор Vim:

    sudo yum install -y vim
    
  9. Перезавантажте систему, якщо потрібно:

    sudo shutdown -r now
    

Встановіть Certbot

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

Ми збираємося використовувати Let's Encrypt CA і клієнт Certbot EFF , щоб отримати сертифікат SSL/TLS для нашого блогу Ghost. Не забудьте замінити всі екземпляри на blog.domain.tldім’я вашого домену.

  1. Увімкніть репозиторій додаткових пакетів для Enterprise Linux (EPEL):

    # Certbot is packaged in Extra Packages for Enterprise Linux (EPEL) repository. To use Certbot, you must first enable the EPEL repository.
    sudo yum install -y epel-release
    
  2. Встановіть програмне забезпечення для керування сертифікатами Certbot (раніше Let's Encrypt client ), створене за допомогою Python:

    sudo yum install -y certbot
    
  3. Перевірте версію Certbot:

    certbot --version
    # certbot 0.14.1
    
  4. Отримати сертифікат 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:

    sudo curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
    sudo yum 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 Yum:

    cd /tmp
    
    # Adding the MySQL Yum Repository
    wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    sudo yum localinstall -y mysql57-community-release-el7-11.noarch.rpm
    
    # Installing MySQL
    sudo yum 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. Download and install the latest mainline version of NGINX from the official NGINX repository:

    # Add the NGINX Yum Repository
    sudo vim /etc/yum.repos.d/nginx_mainline.repo
    
    
    # Copy/paste the following into /etc/yum.repos.d/nginx_mainline.repo
    [nginx]
    name=nginx repo
    baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/
    gpgcheck=1
    enabled=1
    
    
    wget https://nginx.org/keys/nginx_signing.key
    sudo rpm --import nginx_signing.key
    rm nginx_signing.key
    
    sudo yum install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt nginx-nr-agent
    
  2. Verify that it is installed by checking the NGINX version:

    sudo nginx -v
    # nginx version: nginx/1.13.3
    
  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 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. 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. Змінити власника /var/www/ghostкаталогу:

    sudo chown -R ghost:ghost .
    
  7. Перейти до нового ghostкористувача:

    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
    

    Тепер привид буде бігати. І інтерфейс блогу, і інтерфейс адміністратора захищені HTTPS, а також працює HTTP/2. Ви можете відкрити свій браузер і відвідати сайт за адресою https://blog.domain.tld. Не забудьте замінити blog.domain.tldна своє доменне ім’я.

  12. Вимкніть процес Ghost, натиснувши CTRL+, Cі вийдіть із користувача ghost назад до користувача без root, якого ви створили на початку:

    exit
    

Запуск Ghost як системної служби

Якщо ви закриєте термінальний сеанс за допомогою VPS, ваш блог також зникне. Це не добре. Щоб уникнути цього, ми збираємося використовувати systemd. Завдяки цьому наш блог буде працювати цілодобово.

  1. Створіть ghost.serviceфайл модуля systemd. Запустіть 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=/bin/npm start --production
    ExecStop=/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) корпоративного рівня з відкритим кодом.

Створення блогу Jekyll на CentOS 7

Створення блогу Jekyll на CentOS 7

Використання іншої системи? Jekyll — хороша альтернатива WordPress. Він не вимагає жодних баз даних і працює з мовою, знайомою багатьом

Як встановити MODX Revolution на VPS CentOS 7 LAMP

Як встановити MODX Revolution на VPS CentOS 7 LAMP

Використання іншої системи? MODX Revolution — це швидка, гнучка, масштабована, безкоштовна система керування вмістом (CMS) корпоративного рівня з відкритим кодом.

Встановлення 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 року.

Як розгорнути 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 на OpenBSD 6

Налаштування платформи професійної публікації Ghost на OpenBSD 6

Ghost — найновіша і найкраща вискочка, яка конкурує з WordPress. Розробка теми швидка та проста в освоєнні, тому що розробники Ghost вирішили використовувати обидва

Встановіть та налаштуйте блог Ghost v1.0.0 в Ubuntu 16.04

Встановіть та налаштуйте блог Ghost v1.0.0 в Ubuntu 16.04

Ghost — це сучасна видавнича платформа з відкритим вихідним кодом, побудована на Node.js з клієнтом адміністратора Ember.js, API JSON та API тем, що працює на основі Handlebars.js. Ghos

Як встановити MODX Revolution на Fedora 26 LAMP VPS

Як встановити MODX Revolution на Fedora 26 LAMP VPS

Використання іншої системи? MODX Revolution — це швидка, гнучка, масштабована, безкоштовна система керування вмістом (CMS) корпоративного рівня з відкритим кодом.

Встановлення 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 і зберіганням плоских файлів. У цій статті ми будемо встановлювати

Налаштування WordPress за допомогою WooCommerce на CentOS 6

Налаштування WordPress за допомогою WooCommerce на CentOS 6

Примірники Vultr – це чудовий спосіб вести свій блог WordPress, але більш помітним розширенням WordPress є WooCommerce, плагін електронної комерції, який розширює

Встановлення Fork CMS на Fedora 28

Встановлення Fork CMS на Fedora 28

Використання іншої системи? Fork — це CMS з відкритим кодом, написана на PHP. Вихідний код Forks розміщено на GitHub. Цей посібник покаже вам, як встановити Fork CM

Як встановити MODX Revolution на Debian 9 LAMP VPS

Як встановити MODX Revolution на Debian 9 LAMP VPS

Використання іншої системи? MODX Revolution — це швидка, гнучка, масштабована, безкоштовна система керування вмістом (CMS) корпоративного рівня з відкритим кодом.

Як встановити SilverStripe CMS на Ubuntu 16.04 LAMP VPS

Як встановити SilverStripe CMS на Ubuntu 16.04 LAMP VPS

Використання іншої системи? SilverStripe — це гнучка та розширювана безкоштовна система керування вмістом (CMS) корпоративного рівня з відкритим кодом, написана на PHP. я

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.

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. Прочитайте цю статтю, щоб дізнатися більше