Instalación Ghost 1.x en Heroku y development en local.
Instalando Ghost 1.x en Heroku
Descargando ghost.
$ git clone https://github.com/TryGhost/Ghost.git
Iniciando repositorio de git
$ git init
$ git add -A
$ git commit -m 'Initialize repository'
Creando app en heroku
$ heroku create my-blog
Instalando ClearDB MySQL y configurando conexión a la base de datos (Importante no mas soporte para Postgresql en la version 1.x)
ClearDB MySQL en su version Free es mas que suficiente para el uso que voy a dar, 5mb y un pool de 10 conexiones.
Configurando conexion a la base de datos.
Debemos tener un fichero config.production.json en el directorio raiz, podemos crearlo nosotros mismos o bien usar el de ejemplo para editar los datos. Echa un vistazo a la documentación oficial sobre la configuración de entornos
Copiando ejemplo al directorio raiz (En la version 1.2 los ficheros de configuracion los tienes en core/server/config/env si quieres usar tu propio config en la raiz, recuerda eliminar la regla que lo impide in gitignore)
$ cp core/server/config/env/config.production.json config.production.json
Editando config
"database": {
"client": "mysql",
"connection": {
"host" : "127.0.0.1",
"user" : "<DB_USER>",
"password" : "<DB_PASSWORD>",
"database" : "<DB_NAME>"
}
},
Iniciando base de datos
$ heroku run "knex-migrator init"
Editando host binding en core/server/config/index.js
Sobre la linea 74 encontraremos debug('config end')justo debajo he añadido un if para cuando ghost esta ejecutandose en producción:
debug('config end');
if (env === 'production') {
var server = nconf.get('server');
server.host = "0.0.0.0";
server.port = process.env.PORT;
nconf.set('server', server);
}
return nconf;
Creando Procfile en root directoy:
web: NODE_ENV=production node index.js
Por ultimo comiteamos los cambios y hacemos un push en heroku master
Instalación en local con SQLite3
He decidido hacer una instalación en local ya que quería editar el template Casper que trae por defecto, para ello el mejor metodo es correr Ghost en modo development y compilar cada cambio del codigo usando Gulp:
$ git clone https://github.com/TryGhost/Ghost.git
$ npm install
Configuración development
cp core/server/config/env/config.development.json config.development.json
Ghost usa la herramienta Knex migrator para realizar las migraciones vamos a instalar esta:
$ npm install -g knex-migrator
Instalando modulo sqlite3
$ npm install -g sqlite3
Iniciando la base de datos:
$ NODE_ENV=development knex-migrator init
Despues de esto deberíamos poder ejecutar Ghost sin ningun problema con simplemente escribir $npm start pero nosotros queremos editar nuestro css y vamos a necesitar Gulp para tal tarea:
$ npm install graceful-fs
$ npm install -g gulp
vamos al directorio content/themes/casper y ejecutamos:
$ gulp
deberiamos ver como Gulp compila nuevamente nuestro assets y queda a la espera de cualquier cambio para compilar cada edicion de código que hagamos.
Notas o problemas encontrados:
En la última version de ghost se ha dejado de dar soporte para Postgresql motivos que puedes encontrar aqui.
Downgrade to NODE 6.11 ya que con la versíon 8 tenía problemas con require-dir module el cual me dío muchos quebraderos de cabeza. "require.extensions.hasOwnProperty"
Instalando NVM Node version manager para downgradear
Limpiando cualquier instalación de node
$ brew uninstall --force node
Uninstalling node...
$ brew update
$ brew install nvm
Añadiendo algunas líneas en ~/.Bash_profile
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh
Descargando y compilando node 6
$ nvm install 6
$ nvm use 6
Usando node 6 por defecto en la consola
$ nvm alias default 6
Eliminando cache
$ rm -Rf /usr/local/lib/node_modules/npm-check-updates