Как создать блог с Ghost и Nginx в Ubuntu 14.04

Вступление

Ghost - это легкая (~ 7,5 МБ) открытая платформа для блогов, которая действительно проста в использовании. Призрак полностью настраиваемый. В интернете для Ghost доступно множество тем, как платных, так и бесплатных.

В этом уроке мы пройдем шаги по установке и запуску Ghost в вашей системе Ubuntu 14.04. Мы также установим Nginx на порты прокси и установимforever, пакет узла, чтобы Ghost работал в фоновом режиме.

Предпосылки

Не существует минимального требования к размеру сервера для запуска Ghost. Учитывайте, сколько посетителей получит ваш блог и сколько контента вы планируете поделиться, решая, какой размер создать Droplet. Этот учебник был протестирован на самой маленькой по размеру программе DigitalOcean Droplet под управлением Ubuntu 14.04.

Прежде чем начать, вам необходимо следующее:

  • Ubuntu 14.04 Droplet

  • Зарегистрированное доменное имя указывает на IP-адрес вашей капли

  • Пользователь без полномочий root с правами sudo

This tutorial поможет вам настроить ваше доменное имя так, чтобы оно указывало на вашу дроплет.

Все команды в этом руководстве должны выполняться от имени пользователя без полномочий root. Если для команды требуется root-доступ, ему будет предшествоватьsudo. Initial Server Setup with Ubuntu 14.04 объясняет, как добавлять пользователей и предоставлять им доступ к sudo.

[[step-1 -—- install-node-js-and-npm]] == Шаг 1. Установите Node.js и Npm

Вам необходимо обновить локальный индекс пакета и установить пакетыzip иwget. Мы будем использовать их позже в этом уроке.

sudo apt-get update
sudo apt-get install zip wget

Ghost требует Node.js v0.10.x (последняя стабильная версия). Нестабильные версии Node, такие как v0.12.x, поддерживаютсяnot. Node.js v0.10.36 and npm v2.5.0 are recommended by Ghost.org.

Установите Node.js с помощью метода PPA изthis tutorial.

После установки Node.js проверьте установленную версию, выполнив:

node -v

Вывод должен быть похож на это:

v0.10.38

Проверьте, установлен лиnpm:

npm -v

Он должен вывести установленную версию npm, если она установлена:

1.4.28

Если выдает ошибку, что npm не установлен, установите его с помощью этой команды:

sudo apt-get install npm

Обновитеnpm до версии 2.5.0, выполнив следующую команду:

sudo npm install [email protected] -g

Проверьте установленную версиюnpm:

npm -v

Выход должен быть:

2.5.0

[[step-2 -—- install-ghost]] == Шаг 2 - Установите Ghost

Далее нам нужно установить Ghost. Ghost.org recommends to install Ghost in var/www/ghost, so that is where we will install it.

Сначала мы создадим каталог/var/www/, а затем загрузим последнюю версию Ghost из репозитория Ghost на GitHub:

sudo mkdir -p /var/www/
cd /var/www/
sudo wget https://ghost.org/zip/ghost-latest.zip

Теперь, когда мы получили последнюю версию Ghost, мы должны распаковать ее. Мы также изменим наш каталог на/var/www/ghost/:

sudo unzip -d ghost ghost-latest.zip
cd ghost/

Теперь мы можем установить зависимости Ghost и модули узлов (только производственные зависимости):

sudo npm install --production

Призрак установлен, когда это завершается. Нам нужно настроить Ghost, прежде чем мы сможем его запустить.

[[step-3-— setting-up-ghost]] == Шаг 3. Настройка Ghost

Файл конфигурации Ghost должен находиться в/var/www/ghost/config.js. Однако с Ghost такой файл не устанавливается. Вместо этого установка включаетconfig.example.js.

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

sudo cp config.example.js config.js

Настройки вашего URL и почты, которые находятся в разделеproduction, являются ключевыми областями информации, которые необходимо изменить. URL необходим. В противном случае ссылки переместят вас на страницуhttp://my-ghost-blog.com по умолчанию. Ghost может работать без настроек почты, но рекомендуется их добавить. На момент написания этой статьи Ghost требовал, чтобы почта работала только в том случае, если пользователь забыл пароль своей учетной записи, поэтому он не принесет большого вреда, если не настроит почту.

Откройте файл для редактирования:

sudo nano config.js

Вам необходимо изменить значениеurl на то, что является вашим доменом (или вы можете использовать IP-адрес своего сервера, если вы не хотите использовать домен прямо сейчас). Это значение должно быть в форме URL. Например,http://example.com/ илиhttp://45.55.76.126/. Если это значение не отформатировано правильно, Ghost не запустится.

Также измените значениеhost в разделеserver на0.0.0.0.

Ниже показаны значения, которые необходимо изменить красным цветом:

/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: 'http://my-ghost-blog.com',
        mail: {
            // Your mail settings
        },
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(__dirname, '/content/data/ghost.db')
            },
            debug: false
        },

        server: {
            // Host to be passed to node's `net.Server#listen()`
            host: '127.0.0.1',
            // Port to be passed to node's `net.Server#listen()`, for iisnode s$
            port: '2368'
        }
    },

(...)

Сохраните файл и выйдите из текстового редактора nano, нажавCTRL+X, затемY и, наконец,ENTER.

Находясь в каталоге/var/www/ghost, запустите Ghost с помощью следующей команды:

sudo npm start --production

Вывод должен быть похож на это:

> [email protected] start /var/www/ghost
> node index

Migrations: Database initialisation required for version 003
Migrations: Creating tables...
Migrations: Creating table: posts

[...]

Если все пойдет хорошо, вы сможете получить доступ к своему блогу через порт 2368:http://your_domain._name:2368 (илиhttp://your_servers_ip:2368).

НажмитеCTRL+C в терминале, чтобы выключить экземпляр Ghost.

[.note] #Note: Призрак можно настроить дополнительно. Ghost.org подробно объясняет каждый параметр конфигурации.
#

[[step-4-— install-nginx]] == Шаг 4. Установите Nginx

Следующим шагом является установка Nginx. По сути, это позволит подключаться через порт 80 к порту, на котором запущен Ghost. Проще говоря, вы сможете получить доступ к своему блогу Ghost без добавления:2368.

Установите его с помощью следующей команды:

sudo apt-get install nginx

Затем нам нужно будет настроить Nginx, изменив наш каталог на/etc/nginx и удалив файл по умолчанию в/etc/nginx/sites-enabled:

cd /etc/nginx/
sudo rm sites-enabled/default

Мы создадим новый файл в/etc/nginx/sites-available/ с именемghost и откроем его с помощьюnano для редактирования:

sudo touch /etc/nginx/sites-available/ghost
sudo nano /etc/nginx/sites-available/ghost

Вставьте следующий код в файл и изменитеhighlighted code in red на свое доменное имя или IP-адрес вашего сервера, если вы не хотите добавлять домен сейчас:

server {
    listen 80;
    server_name your_domain.tld;
    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

Теперь мы создадим символическую ссылку на нашу конфигурацию вsites-enabled:

sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost

Мы перезапустим Nginx:

sudo service nginx restart

Далее мы создадим нового пользователя. Этому пользователю будут предоставлены только права делать что-либо в каталоге/var/www/ghost. Это мера безопасности. Если Ghost скомпрометирован, ваша система будет в безопасности. Это можно сделать с помощью этой команды:

sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost

Мы предоставим привилегии:

sudo chown -R ghost:ghost /var/www/ghost/

Теперь вы можете войти в систему как пользовательghost:

su - ghost

Теперь нам нужно запустить Ghost:

cd /var/www/ghost
npm start --production

Вы должны иметь доступ к своему блогу через порт 80 какhttp://<your_server_ip>/ илиhttp://<your_domain_name>/.

[[step-5 -—- keep-ghost-running-with-forever]] == Шаг 5. Продолжайте работу Ghost с помощьюforever

Следующий шаг - оставить Ghost на заднем плане. forever - это модуль узла, который можно использовать для запуска Ghost в фоновом режиме и отслеживания, чтобы убедиться, что он не работает. Если Ghost падает, навсегда автоматически запустится еще один экземпляр Ghost.

Установитеforever с помощью следующей команды из каталога Ghost, т.е. /var/www/ghost. Но перед запуском команды выйдите из пользователяghost и войдите в систему под своим пользователем без полномочий root:

exit
sudo npm install -g forever

Запустите Ghost как пользовательghost. Он также должен быть запущен из каталога Ghost:

su - ghost
cd /var/www/ghost
forever start index.js

Вывод должен быть похож на это:

warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: index.js

По умолчанию загружается в среде разработки. Это можно изменить, выполнив следующую команду:

NODE_ENV=production forever start index.js

forever можно остановить, запустив это из каталога Ghost:

forever stop index.js

Возможные ошибки

Для следующего сообщения об ошибке:

Error: SQLITE_READONLY: attempt to write a readonly database

Запуститеforever как пользовательroot (введитеexit, чтобы выйти из системы текущего пользователя):

sudo forever start index.js

Если последняя команда говорит, что не может найти «навсегда», используйте полный путь к команде:

sudo /usr/local/bin/forever start index.js

Если вы видите следующую ошибку:

error:   Cannot start forever
error:   script /home/ghost/index.js does not exist.

Вы не находитесь в каталоге/var/www/ghost. Перейдите в этот каталог и повторите команду.

Заключение

Поздравляем! Вы установили Ghost и узнали, как прокси-порты с Nginx. Вы также узнали, как поддерживать выполнение задач с помощью пакета узлаforever.

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

Ознакомьтесь с другими учебниками по DigitalOcean на Ghost:

Также посетите следующее, чтобы узнать больше:

  • Ghost.org - сайт-призрак

  • Ghost Documentation - Официальная документация Ghost

  • Ghost Slack Page - страница Ghost в Slack, чтобы получить помощь от реальных людей из сообщества Ghost

Related