Как развернуть Ghost v0.11 LTS в Ubuntu 16.04

Ghost - это платформа для ведения блогов с открытым исходным кодом, которая завоевывает популярность среди разработчиков и обычных пользователей с момента ее выпуска в 2013 году. Это делает акцент на контент и блоги. Самое привлекательное в Ghost - это простой, чистый и отзывчивый дизайн. Вы можете написать свои сообщения в блоге с мобильного телефона. Контент для Ghost написан с использованием языка Markdown. Призрак идеально подходит для отдельных людей или небольших групп писателей.

В этом руководстве мы собираемся настроить и развернуть безопасный блог Ghost v0.11.x LTS на VPS Ubuntu 16.04 LTS, используя Let's Encrypt , Certbot , Node.js , NPM , NGINX и MySQL .

Требования

  • Зарегистрируйте (купите) доменное имя.
  • Сервер Ubuntu 16.04 экземпляр сервера с минимум 1 ГБ ОЗУ .
  • Пользователь Sudo.

Прежде чем вы начнете

  1. Создайте новую учетную запись пользователя без полномочий root :

    adduser johndoe --gecos "John Doe"
    
  2. Сделайте его суперпользователем, добавив его в sudoгруппу:

    usermod -aG sudo johndoe
    
  3. Переключиться на нового пользователя:

    su - johndoe
    
  4. Обновите программное обеспечение вашей операционной системы:

    sudo apt update && sudo apt upgrade -y
    
  5. Установите часовой пояс:

    sudo dpkg-reconfigure tzdata
    
  6. Установите необходимые инструменты:

    sudo apt install -y build-essential zip unzip vim nano openssl wget curl git apt-transport-https
    
  7. Перезагрузите систему, если требуется:

    sudo shutdown -r now
    

Установить Certbot

ПРИМЕЧАНИЕ . Перед началом этого шага убедитесь, что вы установили записи DNS для своего домена.

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

  1. Установите программу управления сертификатами Certbot (ранее - Let's Encrypt ), сделанную на 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. Проверьте версию Certbot:

    certbot --version
    # certbot 0.14.2
    
  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

ПРИМЕЧАНИЕ . В настоящее время Ghost поддерживает только версии Node.js 4.5+ и 6.9+ .

Призрак построен на Node.js. Мы собираемся установить рекомендуемую версию для Ghost, которая была v6 Boron LTSна момент написания этой статьи.

  1. Загрузите и установите Node.js v6 LTS:

    curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
    sudo apt install -y nodejs
    
  2. Проверьте Node.js и версию NPM:

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

Установите MySQL

По умолчанию Ghost настроен на использование базы данных SQLite, которая не требует настройки.

В качестве альтернативы Ghost также можно использовать с базой данных MySQL, изменив конфигурацию базы данных. Сначала вы должны создать базу данных и пользователя, затем вы можете изменить существующую конфигурацию sqlite3.

  1. Загрузите и установите MySQL:

    sudo apt install -y mysql-server
    

    ПРИМЕЧАНИЕ . Во время установки вам будет предложено ввести пароль пользователя root «MySQL». Вы должны установить безопасный пароль для пользователя «root» MySQL.

  2. Проверьте версию MySQL:

    mysql --version
    # mysql  Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using  EditLine wrapper
    
  3. Проверьте, запущен ли демон MySQL и работает ли он:

    sudo systemctl status mysql.service
    sudo systemctl is-enabled mysql.service
    
  4. Запустите mysql_secure_installationскрипт, чтобы немного защитить свою базу данных:

    sudo mysql_secure_installation
    
  5. Войдите в MySQL как пользователь root:

    mysql -u root -p
    # Enter password:
    
  6. Создайте новую базу данных MySQL и пользователя:

    create database dbname;
    grant all on dbname.* to 'user' identified by 'password';
    
  7. Выход из MySQL:

    exit
    

Установить NGINX

  1. Загрузите и установите последнюю основную версию NGINX из официального репозитория NGINX:

    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. Убедитесь, что он установлен, проверив версию NGINX:

    sudo nginx -v
    # nginx version: nginx/1.13.3
    
  3. Проверьте состояние, включите и запустите службу NGINX (демон):

    sudo systemctl status nginx.service # inactive (dead)
    sudo systemctl enable nginx.service
    sudo systemctl start nginx.service
    
  4. Создайте /etc/nginx/sslкаталог и сгенерируйте новую группу Диффи-Хеллмана ( DH ):

    sudo mkdir -p /etc/nginx/ssl
    sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
    
  5. Создайте каталог журналов для blog.domain.tldвиртуального хоста:

    sudo mkdir -p /var/log/nginx/blog.domain.tld
    
  6. Настройте NGINX как обратный прокси-сервер HTTP ( S ):

    sudo vim /etc/nginx/conf.d/ghost.conf
    
  7. Вставьте следующее в /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. Сохраните и проверьте конфигурацию NGINX на наличие синтаксических ошибок:

    sudo nginx -t
    
  9. Перезагрузите конфигурацию NGINX:

    sudo systemctl reload nginx.service
    

Установить призрак

ПРИМЕЧАНИЕ . Если вы хотите разместить несколько блогов Ghost на одном VPS, каждый экземпляр Ghost должен работать на отдельном порту.

  1. Создать корневой каталог документов:

    sudo mkdir -p /var/www/
    
  2. Создать нового ghostпользователя:

    sudo adduser --shell /bin/bash --gecos 'Ghost application' --disabled-password ghost
    
  3. Скачать Ghost:

    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.10/Ghost-0.11.10.zip -o ghost.zip
    
  4. Разархивируйте Ghost в /var/www/ghostкаталог (рекомендуемое место установки):

    sudo unzip -uo ghost.zip -d /var/www/ghost
    rm ghost.zip
    
  5. Перейдите в новый ghostкаталог:

    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. Настройка Призрачный путем изменения url, mailи databaseсвойство productionобъекта внутри 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
            },
            // . . .
            // . . .
    

    ПРИМЕЧАНИЕ . Необходимо также настроить mailпараметры. Обратитесь к официальной документации Ghost о том, как это сделать.

  11. Запустите Ghost в производственной среде:

    npm start --production
    

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

  12. Завершите процесс Ghost, нажав CTRL+, Cи выйдите из пользователя-призрака обратно пользователю root:

    exit
    

Запуск Ghost в качестве системного сервиса

Если вы закроете сеанс терминала с вашим VPS, ваш блог также будет закрыт. Это не хорошо. Чтобы избежать этого, мы будем использовать systemd. Это будет держать наш блог вверх 24/7.

  1. Создать ghost.serviceсистемный файл модуля. Запустите sudo vim /etc/systemd/system/ghost.serviceи скопируйте / вставьте содержимое ниже:

    [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. Включить и запустить 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.



Leave a Comment

Установите WordPress на OpenBSD 6.2

Установите WordPress на OpenBSD 6.2

Введение WordPress является доминирующей системой управления контентом в Интернете. Он поддерживает все, от блогов до сложных сайтов с динамическим контентом

Как установить MODX Revolution на FreeBSD 11 FAMP VPS

Как установить MODX Revolution на FreeBSD 11 FAMP VPS

Используете другую систему? MODX Revolution - это быстрая, гибкая, масштабируемая система управления контентом (CMS) корпоративного уровня с открытым исходным кодом, написанная на PHP. Это я

Как установить MODX Revolution на Debian 9 LAMP VPS

Как установить MODX Revolution на Debian 9 LAMP VPS

Используете другую систему? MODX Revolution - это быстрая, гибкая, масштабируемая, бесплатная и с открытым исходным кодом корпоративная система управления контентом (CMS), написанная i

Как развернуть Ghost на Debian 8.7

Как развернуть Ghost на Debian 8.7

Используете другую систему? Ghost - это платформа для блогов с открытым исходным кодом, которая завоевывает популярность среди разработчиков и обычных пользователей с момента ее выпуска в 2013 году. я

Как установить Dotclear на Debian 9 (Stretch)

Как установить Dotclear на Debian 9 (Stretch)

Используете другую систему? Dotclear - очень простой движок для блогов. Это с открытым исходным кодом и прост в использовании. Этот учебник будет проходить установку на

Установка Fork CMS на CentOS 7

Установка Fork CMS на CentOS 7

Используете другую систему? Fork - это CMS с открытым исходным кодом, написанная на PHP. Исходный код Forks размещен на GitHub. Это руководство покажет вам, как установить Fork CM

Как установить Typesetter CMS на CentOS 7

Как установить Typesetter CMS на CentOS 7

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

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

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

Ghost - новейшая и самая лучшая выскочка для конкурента WordPress. Разработка тем быстро и легко изучается, потому что разработчики Ghost решили использовать оба

Как развернуть Ghost v0.11 LTS на Fedora 25

Как развернуть Ghost v0.11 LTS на Fedora 25

Используете другую систему? Ghost - это блог-платформа с открытым исходным кодом, которая завоевывает популярность среди разработчиков и обычных пользователей с 201 года.

Как установить MODX Revolution на CentOS 7 LAMP VPS

Как установить MODX Revolution на CentOS 7 LAMP VPS

Используете другую систему? MODX Revolution - это быстрая, гибкая, масштабируемая, бесплатная и с открытым исходным кодом корпоративная система управления контентом (CMS), написанная i

Установка Fork CMS на Debian 9

Установка Fork CMS на Debian 9

Используете другую систему? Fork - это CMS с открытым исходным кодом, написанная на PHP. Исходный код Forks размещен на GitHub. Это руководство покажет вам, как установить Fork CM

Как развернуть Ghost на Ubuntu 16.04

Как развернуть Ghost на Ubuntu 16.04

Используете другую систему? Ghost - это платформа для блогов с открытым исходным кодом, которая завоевывает популярность среди разработчиков и обычных пользователей с момента ее выпуска в 2013 году. я

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

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

Используете другую систему? Jekyll - хорошая альтернатива WordPress. Он не требует каких-либо баз данных и работает с языком, знакомым многим

Как развернуть Ghost v0.11 LTS на CentOS 7.3

Как развернуть Ghost v0.11 LTS на CentOS 7.3

Используете другую систему? Ghost - это блог-платформа с открытым исходным кодом, которая завоевывает популярность среди разработчиков и обычных пользователей с 201 года.

Запуск WordPress на OpenBSD 6.5 с использованием OpenBSDs HTTPD

Запуск WordPress на OpenBSD 6.5 с использованием OpenBSDs HTTPD

Введение Чем ближе вы устанавливаете вашу OpenBSD к установке по умолчанию и без того, чтобы было добавлено столько пакетов, тем безопаснее она будет. Пока более комм

Как установить MODX Revolution на Fedora 26 LAMP VPS

Как установить MODX Revolution на Fedora 26 LAMP VPS

Используете другую систему? MODX Revolution - это быстрая, гибкая, масштабируемая, бесплатная и с открытым исходным кодом корпоративная система управления контентом (CMS), написанная i

Установка Fork CMS на Fedora 28

Установка Fork CMS на Fedora 28

Используете другую систему? Fork - это CMS с открытым исходным кодом, написанная на PHP. Исходный код Forks размещен на GitHub. Это руководство покажет вам, как установить Fork CM

Как установить Dotclear на Ubuntu 16.04

Как установить Dotclear на Ubuntu 16.04

Используете другую систему? Dotclear - это очень простой движок для блогов, который построен на основе PHP. В этом уроке мы установим Dotclear на Ubunt

Как развернуть несколько сайтов Wordpress с использованием VirtualMin и Ansible в Ubuntu 16.04

Как развернуть несколько сайтов Wordpress с использованием VirtualMin и Ansible в Ubuntu 16.04

Обычно виртуальный сервер Vultr используется для размещения веб-сайтов Wordpress. В этом руководстве показано, как автоматизировать настройку виртуального сервера с нуля.

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

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

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

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

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

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

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше