Бесплатный хостинг для Ghost на Heroku
Использование Heroku как хостинга для вашего Ghost блога имеет ряд недостатков, с которыми придется мириться:
- вы не сможете загружать изображения, нужно будет использовать сервис imgur или ему подобные, DropBox, тоже сойдет;
- лучше не использовать Heroku для популярных блогов, так как бесплатная его версия (и его компонентов) имеет значительные ограничения, будь то коннекты к базе или сам размер БД.
Регистрация на Heroku
Первое, что нужно сделать это зарегистрироваться на heroku и ознакомиться с туториалом.
Скачать Ghost
Мы не сможем ничего написать в нашем блоге, без самого блога! Нужно скачать свежую версию Ghost с официального сайта, последняя на момент написания этой статьи 0.4.2.
После этого нужно распоковать архив, например в папку blog:
$ unzip ghost-0.4.2.zip -d blog && blogСоздание репозитария
Если вы прочитали руководство по Heroku, вам уже известно, что он тесно связан с Git-репозитариями, поэтому надеюсь, что git у вас уже установлен.
Создадим репозитарий:
$ git initДобавим в исключения папку node_modules, это важно, иначе ваш блог не запуститься:
$ echo "node_modules/" > .gitignoreЗафиксируем изменения:
$ git add -A
$ git commit -m 'Init commit'Создание Heroku-приложения
Войдем и создадим приложение:
$ heroku login
$ heroku create my-blog-nameБаза даных
По-умолчанию Ghost в качестве базы данных использует SQLite, нам она не подходит, так как она хранится локально, а Heroku, при каждом пуше, удаляет все что не храниться в репозитарии.
Самый подходящий вариант это PostgreSQL или MySQL. Со вторым сложнее так что будем использовать PostgreSQL:
$ heroku addons:add heroku-postgresql:dev
Adding heroku-postgresql:dev on my-blog... done, v3 (free)  
Attached as HEROKU_POSTGRESQL_RED_URL  
Database has been created and is availableВ ответе heroku вернет идентификатор базы HEROKU_POSTGRESQL_RED_URL (у вас он возможно будет другим), чтобы не использовать его на прямую добавим его в глобальные переменные:
$ heroku pg:promote HEROKU_POSTGRESQL_RED_URL  
Promoting HEROKU_POSTGRESQL_RED_URL to DATABASE_URL... doneПочта
Для обсужевания почты установим нам понадобится еще один компонент - Mandrill:
$ heroku addons:add mandrillКонфигурация и настройка
Зависимости
Использование PostgreSQL в качестве базы для Ghost требует установки node-postgres:
$ npm install pg --savenpm все поставит и изменит ваш package.json добавив новую зависимость, нужно зафиксировать это:
$ git add package.json
$ git commit -m 'Add node-postgres'Настройки
Создадим файл настройки из приложенного примера:
$ cp config.example.js config.jsВнесем изменения в Production раздел:
// ### Production
production: {
    url: 'http://my-blog-name.herokuapp.com/',
        mail: {
          transport: 'SMTP',
          host: 'smtp.mandrillapp.com',
          options: {
            service: 'Mandrill',
            auth: {
              user: process.env.MANDRILL_USERNAME,
              pass: process.env.MANDRILL_APIKEY
            }
          }
        },
        database: {
          client: 'postgres',
          connection: process.env.DATABASE_URL,
          debug: false
        },
        server: {
          host: '0.0.0.0',
          port: process.env.PORT
        }
    },Зафиксируем изменения:
$ git add config.js
$ git commit -m 'Configured'Deploy!
Установка блога
Для начала укажем heroku, что он должен использовать production конфигурацию:
$ heroku config:set NODE_ENV=productionВсе готово! Для размещения и запуска приложения выполните:
$ git push heroku masterЧерез некоторые время ваш блог станет доступен по адресу: my-blog-name.herokuapp.com
Настройка блога
Чтобы настроить свой блог просто перейдите my-blog-name.herokuapp.com/ghost/ и укажите требуемые данные.
Еще раз про картинки
Важно отметить, что если вы хотите установить логотип для своего блога - то сделать это через админку не получиться! Так как после очередного $ git push heroku master все локальные изменения удалятся, включая ваш логотип. Так что самым безопасным вариантом будет добавить его в репозитарий и «зашить» в код шаблона.