Clicky

Cómo instalar la plataforma de bloggin Ghost en CentOS Linux

Ghost blog en producción

En este artículo vamos a mostrar cómo instalar la plataforma de blogs Ghost en CentOS 6.4 Linux.

Ghost es una plataforma de blogs minimalista de código abierto que fue lanzada recientemente. Es muy sencillo crear contenido y está escrito en NodeJS.

Los siguientes pasos suponen que estás trabajando directamente en el servidor CentOS, están instaladas las development tools y has corrido todas sus actualizaciones.

Este tutorial requiere de paquetes RPM adicionales. Antes de continuar, por favor activa primero el repositorio EPEL:

CentOS 6 "“ 32-bit

# rpm -Uvh http://mirror.overthewire.com.au/pub/epel/6/i386/epel-release-6-8.noarch.rpm

CentOS 6 "“ 64-bit

# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Después de ejecutar los comandos anteriores para tu versión correspondiente de CentOS, se crea el siguiente archivo:

/etc/yum.repos.d/epel.repo

El archivo de arriba se puede editar directamente para activar o desactivar la repo EPEL.

1. Instalación de los pre requisitos para Ghost

Instala unzip, Apache, NodeJS y NPM:

# yum install unzip httpd nodejs npm

2. Crea un directorio Ghost

En este ejemplo, vamos a crearlo en /home/usuario/public_html/ghost

# mkdir /home/usuario/public_html/ghost

3. Descarga y descomprime Ghost

Cambia al directorio de Ghost y descarga el archivo .zip del código fuente de Ghost:

# cd /home/usuario/public_html/ghost

# curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip

# unzip -uo ghost.zip -d ghost

En este caso, hemos recuperado un enlace directo para la descarga, pero por favor asegúrate de que siempre estás usando la última versión. La última versión se puede obtener a través de tu cuenta de Ghost.

4. Usar NPM para descargar requisitos adicionales para Ghost

# npm install --production

5. Cambiar a la URL de Ghost y arranca Ghost con NPM

Renombra /ghost/config.example.js a /ghost/config.js y cambia la IP 127.0.0.1: a tu IP pública

Ahora arrancaremos Ghost con NPM. Vamos a utilizar screen para poner este proceso en segundo plano, que permanecerá vivo incluso después de cerrar la sesión (la mejor manera de hacerlo sería con un script):

# screen npm start --production

Esto permitirá iniciar Ghost en una sesión de pantalla para que se puede ejecutar en segundo plano. Sin utilizar el primer comando screen, si la sesión SSL se cerrara, tu sitio también caería. Una vez introducido este comando, se puede separar la sesión de screen manteniendo pulsada la tecla Ctrl, al pulsar A, a continuación presiona D. La pantalla se debe mostrar como desapegada para que puedas salir de Ghost ejecutándose en segundo plano.

Hacer que Ghost se ejecute para siempre

El método descrito anteriormente para iniciar Ghost es npm start. Esta es una buena manera de hacerlo en desarrollo y en pruebas locales pero si, como decía más arriba, inicias Ghost utilizando la línea de comandos se detendrá cada vez que se cierre la ventana de terminal o sesión de SSH. Para evitar que Ghost se detenga tienes que ejecutar Ghost como un servicio. Hay dos maneras de lograr esto .

Forever (https://npmjs.org/package/forever)

Puedes usar forever para ejecutar Ghost como una tarea en segundo plano. forever también se encargará de la instalación de Ghost y reiniciará el proceso de node si se bloquea.

•  Para instalar forever escribe: npm install forever -g
•  Para iniciar Ghost utilizando forever desde el directorio de instalación de Ghost escribe: NODE_ENV=production forever start index.js
•  Para detener Ghost escribe: forever stop index.js
•  Para comprobar si se está ejecutando Ghost escribe: forever list

Supervisor (http://supervisord.org/)

Distribuciones de Linux más populares, tales como Fedora, Debian y Ubuntu, mantienen un paquete para Supervisor: Un sistema de control de proceso que permite ejecutar Ghost en el arranque sin necesidad de utilizar scripts de inicio. A diferencia de un script de inicio, Supervisor es portátil entre las distribuciones y versiones de Linux.

•  Instala Supervisor según sea necesario para tu distribución Linux. Por lo general, esto será:

â—¦ Debian/Ubuntu: apt-get install supervisor
â—¦ Fedora/CentOS: yum install supervisor
â—¦ La mayoría de las otras distribuciones: easy_install supervisor

•  Asegúrate de que Supervisor está en marcha mediante la ejecución de: service supervisor start
•  Crea el script de inicio para la instalación de Ghost. Normalmente, esto irá en /etc/supervisor/conf.d/ghost.conf Por ejemplo :

[program:ghost]
command = node /path/to/ghost/index.js
directory = /path/to/ghost
user = ghost
autostart = true
autorestart = true
stdout_logfile = /var/log/supervisor/ghost.log
stderr_logfile = /var/log/supervisor/ghost_err.log
environment = NODE_ENV="production"

•  Inicia Ghost utilizando: supervisorctl start ghost
•  Para detener Ghost: supervisorctl stop ghost

Puedes ver la documentación de Supervisor para más información.

Ghost ahora debe estar en ejecución en 127.0.0.1:2368 (o la IP que hayamos puesto en el archivo /ghost/config.js - en mi caso 46.105.123.120)

Ghost corriendo en una consola

Para que Ghost corra en un dominio lo veremos en otra ocasión.

Mi archivo config.js completo es el siguiente:

// # Ghost Configuration
// Setup your Ghost install for various environments

var path = require('path'),
    config;

config = {
    // ### Development **(default)**
    development: {
        // The url to use when providing links to the site, E.g. in RSS and email.
        url: 'http://my-ebook.es/ghost',

        // Example mail config
        // Visit http://docs.ghost.org/mail for instructions
        // ```
        //  mail: {
        //      transport: 'SMTP',
        //      options: {
        //          service: 'Mailgun',
        //          auth: {
        //              user: '', // mailgun username
        //              pass: ''  // mailgun password
        //          }
        //      }
        //  },
        // ```

        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(__dirname, '/content/data/ghost-dev.db')
            },
            debug: false
        },
        server: {
            // Host to be passed to node's `net.Server#listen()`
            host: '46.105.123.120',
            // Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
            port: '2368'
        }
    },

    // ### Production
    // When running Ghost in the wild, use the production environment
    // Configure your URL and mail settings here
    production: {
        url: 'http://my-ebook.es/ghost',
        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: '46.105.123.120',
            // Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
            port: '2368'
        }
    },

    // **Developers only need to edit below here**

    // ### Testing
    // Used when developing Ghost to run tests and check the health of Ghost
    // Uses a different port number
    testing: {
        url: 'http://my-ebook.es/ghost:2369',
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(__dirname, '/content/data/ghost-test.db')
            }
        },
        server: {
            host: '46.105.123.120',
            port: '2369'
        }
    },

    // ### Travis
    // Automated testing run through Github
    travis: {
        url: 'http://my-ebook.es/ghost:2368',
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(__dirname, '/content/data/ghost-travis.db')
            }
        },
        server: {
            host: '46.105.123.120',
            port: '2368'
        }
    }
};

// Export config
module.exports = config;

Ve a la IP que hayas configurado y deberías ver Ghost (si no has configurado los DNS, utiliza tu archivo hosts para probar!).

Ahora deberías ser capaz de ver la instancia Ghost corriendo desde la dirección IP de tu servidor (ver la imagen de más arriba). Para empezar, simplemente ve a:

http://XXXXX:2368/admin

o

http://XXXXX:2368/ghost

Donde XXXXX es la dirección IP pública y 2368 el puerto en que escucha Ghost.

Se te pedirá configurar una cuenta de administrador para que puedas iniciar el blog de inmediato.

Ghost alta de usuario

La pantalla de arriba cambiará una vez quieras iniciar una nueva sesión:

Ghost pantalla de login

El primer post de bienvenida se puede ver aquí: http://46.105.123.120:2368/welcome-to-ghost/

La página principal del blog de Ghost se llama Ghost apañados

Como vemos en todas las pantallas nos aparece un mensaje en azul:

Ghost is attempting to use your server's sendmail to send e-mail. It is recommended that you explicitly configure an e-mail service, See http://docs.ghost.org/mail for instructions

que nos indica que debemos configurar el servicio de email para Ghost, pero esto en el próximo artículo.

Ghost, pantalla de edición de post

Para obtener más información acerca de Ghost, y cómo utilizar Ghost, consulta el sitio oficial.

Puedes encontrar las instrucciones de instalación completas para todos los sistemas operativos en http://docs.ghost.org/installation/ .

Nota rápida: Aunque este tutorial está para ayudar en la instalación de Ghost en CentOS, no podemos ofrecer el desarrollo o la configuración del soporte. Si tienes alguna pregunta acerca de Ghost, recomendamos los foros de Ghost.

Jesus_Caceres