Бесплатный хостинг для 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 --save
npm все поставит и изменит ваш 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
все локальные изменения удалятся, включая ваш логотип. Так что самым безопасным вариантом будет добавить его в репозитарий и «зашить» в код шаблона.