Блог Георгия Могелашвили

Установка Ghost в Windows Azure

Установка Ghost в Windows Azure

Сегодня многие блоггеры считают, что WordPress стал слишком перегружен лишним функционалом и превращается из платформы для блогов в полноценную и сложную CMS. Это вовсе не плохо – разнообразие плагинов, модулей и тем, доступных сейчас в сети, позволяет использовать возможности платформы практически для любых целей. Однако у этого разнообразия есть и обратная сторона медали. Нагромождение модулей негативно сказывается на производительности сайта, при том, что даже “чистый″ вордпресс не может похвастаться выскокой скоростью работы.

Ghost

Некоторое время назад на сайта стартапов Kickstarter был запущен проект под названием Ghost, слоган которого был “just a blogging platform” (платформа только для блогов). Идея пришлась многим по вкусу и проект собрал почти $200.000, вместо изначальных $25.000. Сейчас проект активно развивается и на официальном сайте уже доступна для скачивания версия 0.3.3.

Меня, как и многих других, очень заинтересовал этот проект. Во-первых, мне нравится минималистичный дизайн. Во-вторых, WordPress и правда немного избыточен для моих нужд и слегка туповат в работе. А в-третьих, меня завлекло то, что Ghost разрабатывается на Node.js – технология, о которой очень много говорят в последнее время. Я решил попробовать в действии, что же это за “just a blogging platform”, и установить его себе в Microsoft Azure как дополнение к основному блогу. Кстати, эту статью я полностью написал и опубликовал в новом блоге на этой платформе.

Создание сайта в Microsoft Azure

Перед тем, как перейти непосредственно к работе с Ghost, нам сперва потребуется создать службу Web Sites, где мы будем хоститься. Делается это как обычно через портал управления Microsoft Azure. В меню New (плюсик внизу страницы) выбираем Compute -> Web Site -> Quick Create. На текущем этапе нам нужен пустой сайт без каких-либо предустановленных компонентов. Все, что нам потребуется, мы доставим далее.

Create Microsoft Azure Web Site

После того, как сайт будет создан, нам необходимо произвести пару настроек. Во-первых, нужно сделать определенный финт ушами для того, чтобы Ghost правильно работал (подробнее – ниже). Перейдите на вкладку Configure и найдите там раздел app settings. В нем надо создать такую строку: KEY=NODE_ENV, VALUE=production.

App Settings

Во-вторых, нам надо настроить способ, как передать данные с рабочего компьютера в облако. Для этого в Microsoft Azure есть поддержка систем контроля версий, таких как TFS или Git. Поскольку проект Ghost является Open Source и сам поставялется через GitHub, то мы тоже настроим на своем сайте Git-репозиторий и будем работать с ним. Делается это просто: на вкладке Quick Access (которая с облачком и молнией) есть пункт Integrate source control:

Integrate source control

Нажимаем на Set up deployment from source control и выбираем Local Git repository:

Стоит упомянуть, что среди доступных вариантов есть еще и TFS и прочие системы контроля версии (даже Dropbox), но для нашего случая мы выберем Git.

На этом настройка облака Microsoft Azure завершена и можно переходить к наиболее интересной части – установке и настройке Ghost.

Настройка рабочего окружения

Установить Ghost можно двумя способами. Первый и самый простой – это скачать уже скомпилированные файлы напрямую с официального сайта проекта. Этот метод хорош тем, что не требует никаких дополнительных действий со стороны пользователя. Однако, поскольку проект находится в активной фазе развития, у вас есть риск, что вы скачаете не самую последнюю версию проекта, которая не будет содержать важных исправлений. Так было в моем случае. Скачав архив с сайта проекта, я получил набор файлов, который отлично устанавливался и запускался локально, однако совершенно не хотел работать в облаке.

Поэтому я считаю, что на данный момент лучше сначала пойти более долгим путем, чтобы не иметь проблем в дальнейшем. Долгий путь заключается в самостоятельной сборке готового пакета из исходников Ghost. И это только сначала звучит слишком сложно, а на деле вам нужно будет потратить лишних 10-15 минут на все.

Итак, что нам в итоге нужно сделать:

  1. Установить Node.js. Дистрибутив берется на официальном сайте Node.js. Устанавливается как обычная программа Windows. Главное следите за тем, чтобы он прописался в PATH, чтобы потом можно было пользоваться командами node, не указывая их полный путь в системе.
  2. Установить клиент для Git. Консольный клиент для Windows можно скачать на оф. сайте. Также посмотрите, чтобы он прописал вне нужные пути в PATH, или же вам придется работать из специальной командной строки Git Bash, как это делаю я.
  3. Установить Grunt. Это утилита для компиляции JavaScript проектов. Она нужна нам для того, чтобы из исходников Ghost сформировать готовый пакет для публикации. Для установки Grunt вам достаточно из командной строки выполнить команду npm install grunt-cli --g. Программа npm идет вместе с nodejs и является по сути менеджером пакетов наподобие apt-get в Debian Linux. Удобная штука, с помощью которой можно скачать и установить все необходимые для работы расширения.
  4. Для того, чтобы Grunt заработал, нам надо дополнительно установить Ruby. Скачать его можно тоже на официально сайте.
  5. Также для работы Grunt необходимы два расширения для Runy под названием Bourbon и Sass. Установить их оба можно одной командой gem install bourbon.

На этом настройка рабочего окружения завершена.

Подготовка Ghost

Подготовка Ghost разбивается на два этапа. Первый – получение файлов из официального репозитория на GitHub и последующая их компиляция. Второй – финишная настройка конфигов и прочих вещей, чтобы запустить блог в Microsoft Azure. Приступим!

Репозиторий Ghost на GitHub находится по этому адресу. Чтобы получить файлы проекта на свой компьютер, откройте Git Bash (его вы установили на предыдцщем этапе в п.2), перейдите в папку, где хотите сохранить этот проект и выполните команду:

git clone https://github.com/TryGhost/Ghost.git

Через какое-то время на вашей машине появится локальная копия репозитория Ghost со всеми файлами, которые вам будут нужны. Далее наши действия такие (то, что иде после # считается комментарием и выполнению не подлежит):

# перейдите в папку, где непосредственно лежат файлы проекта
npm install
# эта команда скачает и установит все пакеты node.js, которые нужны Ghost
grunt init
grunt prod
# эти команды "скомпилируют" проект и сформируют пакет для установки

Теперь надо сделать еще один финт. Дело в том, что по умолчанию сайт Node.js, работающий в Azure, считает стартовой страницей файл с названием server.js. В Ghost же стартовой страницей является index.js, поэтому нам надо самостоятельно убрать эти разногласия. Делается это очень просто. Создаемв блокноте файл server.js в корневой директории Ghost и пишем там одну единственную строку:

var GhostServer = require('./index');

Сохраняем изменения. Все, теперь Microsoft Azure корректно найдет настроящий стартовый файл Ghost’а.

Итак, мы уже почти готовы опубликовать свой новый блог в Azure. Осталось лишь настроить конфиги. Тут все довольно просто. В корневой директории Ghost есть файл под названием config.example.js. Переименовываем его в config.js и открываем на редактирование.

Далее ищем такой блок:

production: {
    // must not contain a path suffix after the hostname - "subdirs" are not (yet) supported! 
    url: 'http://my-ghost-blog.com',
    mail: {},
    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 set this to `process.env.PORT`
        port: '2368'
    }
},

Тут нас интересует две вещи, а именно параметр url в самом начале блока и параметр port в самом конце. Первый надо изменить на тот url, на котором будет жить ваш блог. В случае Microsoft Azure по умолчанию этот URL выглядит примерно так: .azurewebsites.net. Вы можете изменить его, если вручную пропишете домен для веб-сайта, но это уже тема отдельной истории. Ну а значение port меняем на строку process.env.PORT (без кавычек). Итого, должно получиться следующее:

production: {
    // must not contain a path suffix after the hostname - "subdirs" are not (yet) supported! 
    url: 'http://<YOUR-SITE>.azurewebsites.net',
    mail: {},
    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 set this to `process.env.PORT`
        port: process.env.PORT
    }
},

Ну и последний шаг – открываем файл .gitignore в корневой папке проекта, находим там строки ниже и комментируем их:

# /core/client/assets/css
# /core/built
# config.js

Если бы мы этого не сделали, то при установке блога в Microsoft Azure Git просто бы не стал их копировать, проигнорировав.

Публикация сайта в Microsoft Azure

Теперь у нас все готово к финальному действию – публикации сайта. Для этого надо выполнить несколько команд в Git Bash:

git add .
git commit -m "first ghost publish"
git remote add azure https://glamcoder@ghost-test-glamcoder.scm.azurewebsites.net:443/ghost-test-glamcoder.git
git push azure master

Сперва мы сохранили все изменения с репозиторием, которые мы сделали. Затем мы закоммитили их с определенным комментарием. На третьей строке мы создали ссылку на удаленный Git-репозиторий. Адрес этого репозитория создается специально на каждый Web Site в Microsoft Azure (это мы сделали в самом начале) и его можно узнать на вкладке Deployments. Последняя команда отправит все файлы на сервере Microsoft Azure. Вы можете увидеть, как в процессе публикации выполняются различные команды на сервере. После того, как все закончится, вы должны будете увидеть свой сайт, работающий уже в облаке, а на вкладке Deployments будет красоваться что-то вроде этого:

Active Deployment

Для первичной настройки блога зайдите по ссылке <ВАШ-ПУТЬ-К-БЛОГУ>/ghost, где вам будет предложено ввести имя пользователя и пароль администратора. После чего вы полностью закончите устанавливать и настраивать свой новый блог и сможете приступить к творчеству!

Удачи!

P.S. Статья была подготовлена с использованием материалов из блога Скотта Хансельмана. Там все то же самое, только более технически.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>