Como instalar Ghost en tu hosting

29 de abril, 2014 @ 21:59 — 0 comentarios

Ghost es una plataforma de blogging minimalista que ofrece una interfaz moderna y una experiencia agradable.

En esta guía te explicamos como instalar Ghost 1.5.1  en tu cuenta de hosting, haciendo uso de MySql o MariaDB como base de datos. También podrás encontrar instrucciones para usar Sqlite en su lugar. Si has llegado a esta guía a través de un buscador, debes tener en cuenta que esta guía está pensada para ser usada en los servicios de guebs.com. Los pasos particulares son para un plan de alojamiento en guebs.com, aunque los conceptos generales sirven para cualquier aplicación.

1 - Crear la aplicación desde el Panel de Hosting

Accede al panel de Hosting y luego pincha sobre el icono Aplicaciones NodeJs. Una vez allí rellena y envía el formulario, tal y como se ve en la siguiente imagen. Es recomendable elegir la última versión de NodeJs disponible:

Crear aplicación NodeJS

2 - Ubicar los archivos de Ghost

Al completar el paso anterior sabremos cual es el directorio de nuestra aplicación NodeJS. Supongamos que es /home//nodejs/miapp.

Ahora tenemos que acceder vía SSH al hosting y descargar la última versión disponible de Ghost:

cd nodejs/miapp
wget https://github.com/TryGhost/Ghost/releases/download/1.5.1/Ghost-1.5.1.zip
unzip Ghost-1.5.1.zip

Ahora ya tendremos los archivos de Ghost dentro de la carpeta de nuestra aplicación.

3 - Adaptar Ghost a la estructura necesaria de las aplicaciones NodeJS

La versión actual de Ghost, la 1.5.1, usa un archivo llamado index.js como puerta de entrada. Nosotros necesitamos que este archivo se llame app.js, por lo que te recomendamos crear un enlace simbólico llamado app.js que apunte a index.js:

rm -f app.js
ln -s index.js app.js

 

4 - Instalar dependencias

Ghost viene con un archivo package.json que indica explicitamente todas sus dependencias. Por tanto, lo único que tienes que hacer es:

npm install --production

 

5.- Configurar la base de datos : mysql

Ghost viene configurado de serie para ser configurado con mysql. Para ello, sólo debemos crear el archivo de configuración y posteriormente actualizarlo con los datos de nuestra base de datos.

Para ello hacemos lo siguiente desde la raíz de la aplicación

cp -a core/server/config/env/config.production.json ./

Editamos el archivo con las credenciales de la base de datos mysql, de modo que quedará algo parecido a lo siguiente:

{
 "database": {
 "client": "mysql",
 "connection": {
 "host" : "localhost",
 "user" : "usernmae",
 "password" : "password",
 "database" : "databaseName"
 }
 },
 "auth": {
 "type": "password"
 },
 "paths": {
 "contentPath": "content/"
 },
 "logging": {
 "level": "info",
 "rotation": {
 "enabled": true
 },
 "transports": ["file", "stdout"]
 }
}

 

Ghost necesita que inicialicemos las tablas de la base de datos. Para ello usaremos la utilidad knex-migrator que tenemos instalada en nuestro sitio. En la raíz de la aplicación debemos crear un archivos llamado MigratorConfig.js con el siguiente contenido para mysql :

 

var config = require('./core/server/config'),
 ghostVersion = require('./core/server/utils/ghost-version');

require('./core/server/overrides');

module.exports = {
 database: {
 client: 'mysql',
 connection: {
 "host" : "localhost",
 "user" : "usernmae",
 "password" : "password",
 "database" : "databaseName",
 charset: 'utf8',
 }
 },
 currentVersion: ghostVersion.safe,
 database: config.get('database'),
 migrationPath: config.get('paths:migrationPath')
};

 

Así pues debemos ejecutar los  siguientes comandos desde la raíz de la aplicación:

 

NODE_ENV=production ./node_modules/knex-migrator/bin/knex-migrator init
[2017-08-10 11:39:34] INFO Creating table: posts 
[2017-08-10 11:39:35] INFO Creating table: users 
[2017-08-10 11:39:35] INFO Creating table: roles 
[2017-08-10 11:39:35] INFO Creating table: roles_users 
[2017-08-10 11:39:35] INFO Creating table: permissions 
[2017-08-10 11:39:35] INFO Creating table: permissions_users 
[2017-08-10 11:39:35] INFO Creating table: permissions_roles 
[2017-08-10 11:39:35] INFO Creating table: permissions_apps 
[2017-08-10 11:39:35] INFO Creating table: settings 
[2017-08-10 11:39:35] INFO Creating table: tags 
[2017-08-10 11:39:35] INFO Creating table: posts_tags 
[2017-08-10 11:39:35] INFO Creating table: apps 
[2017-08-10 11:39:35] INFO Creating table: app_settings 
[2017-08-10 11:39:35] INFO Creating table: app_fields 
[2017-08-10 11:39:35] INFO Creating table: clients 
[2017-08-10 11:39:35] INFO Creating table: client_trusted_domains 
[2017-08-10 11:39:35] INFO Creating table: accesstokens 
[2017-08-10 11:39:35] INFO Creating table: refreshtokens 
[2017-08-10 11:39:35] INFO Creating table: subscribers 
[2017-08-10 11:39:35] INFO Creating table: invites 
[2017-08-10 11:39:35] INFO Creating table: brute 
[2017-08-10 11:39:35] INFO Model: Post 
[2017-08-10 11:39:36] INFO Model: Tag 
[2017-08-10 11:39:36] INFO Model: Client 
[2017-08-10 11:39:36] INFO Model: Role 
[2017-08-10 11:39:36] INFO Model: Permission 
[2017-08-10 11:39:37] INFO Model: User 
[2017-08-10 11:39:38] INFO Relation: Role to Permission 
[2017-08-10 11:39:39] INFO Relation: Post to Tag 
[2017-08-10 11:39:39] INFO Relation: User to Role 
[2017-08-10 11:39:39] INFO Finished database init!
NODE_ENV=production ./node_modules/knex-migrator/bin/knex-migrator migrate
[2017-08-16 15:38:12] INFO Finished database migration!

 

 

6 - Usar Sqlite  con Ghost como alternativa.

 

También es posible usar Sqlite en lugar  de Mysql. Si tu plan de alojamiento está aquí en guebs.com, te lo recomendamos. Para ello, sólo debes crear los archivos config.production.js y MigratorConfig.js tal y como los has creado en el paso 5. Entonces debes dejarlos configurados con la cadena correspondiente a la dirección donde se archivará la base de datos sqlite:

config.production.js

{



"database": {
 "client": "sqlite3",
 "connection": {
 "filename": "content/data/miblog.db"
 }
 },

"paths": {
 "contentPath": "content/"
 },
 "logging": {
 "level": "info",
 "rotation": {
 "enabled": true
 },
 "transports": ["file", "stdout"]
 }
}

 

MigratorConfig.js

 

 

var config = require('./core/server/config'),
 ghostVersion = require('./core/server/utils/ghost-version');

require('./core/server/overrides');

module.exports = {

database: {
 client: 'sqlite3',
 connection: {
 filename: 'content/data/miblog.db'
 }
 },

currentVersion: ghostVersion.safe,
 database: config.get('database'),
 migrationPath: config.get('paths:migrationPath')
};

 

 

Hecho esto sólo hay que ejecutar los comandos init y migrate que hemos visto en el punto 5 y ya tendremos el blog funcionando con Sqlite.

 

7 - ¡Listo!

Ya está hecho. No tienes más que abrir tu navegador y dirigirte al dominio que has seleccionado en el paso 1.

 

Problemas comunes

En nuestros servicios es necesario que el directorio public exista en la aplicación, por lo tanto debes ejecutar este comando

cd nodejs/miapp/ ; mkdir public

Etiquetas: