Cómo instalar Ghost

¿Por qué Ghost?

Antes que nada para el que no sepa Ghost es una plataforma de blogging, bajo mi punto de vista una buena alternativa a Wordpress.

¿Que nos ofrece?

Como sabemos Wordpress es un gran CMS pero si realmente no necesitamos usar todas sus características para que vamos a saturar los recursos de nuestro server.

Ghost es mucho más ligero y rápido.

¿Cómo empezamos?

Antes que nada necesitamos un server, para este caso voy a usar DigitalOcean y aunque ya tiene una opción para instalarlo automáticamente, voy a ir por el camino más largo, así soy (Quererme :3)

Podéis usar este enlace para obtener un cupón de 10$ en DigitalOcean que os servirá para dos meses de servicio :D

https://m.do.co/c/474bf272f3c9

Instalamos las dependencias

Instalar node desde el repositorio

Ejecuta los siguientes comandos para instalar Node.js

curl -sL https://rpm.nodesource.com/setup_6.x | bash -  
yum install -y nodejs  

En mi caso estoy usando CentOS, si usáis otra distribución podéis ver exactamente como instalarlo en el siguiente enlace

Descargar e instalar Ghost

Descarga y descomprime Ghost con los siguientes comandos:

mkdir -p /var/www  
cd /var/www  
curl -L -O https://ghost.org/zip/ghost-latest.zip  
unzip -d ghost ghost-latest.zip  

Instalar las dependencias

cd ghost  
sudo npm install --production  

Podemos tener problemas con este último comando ya que consume mucha RAM y si el servidor tiene los suficientes recursos no acaba la instalación.

Crear usuario

Por motivos de seguridad vamos a crear un usuario que será el responsable de ejecutar node, ya que si tenemos una vulnerabilidad en nuestro server que el usuario no tenga los permisos de root, si ya tienes un usuario puedes omitir este paso.

useradd ghost  
chown -R ghost:ghost /var/www/ghost/  

Sólo nos queda editar la configuración para ello
nano config.example.js

En el bloque de producción buscamos la linea
host: '127.0.0.1' y la cambiamos por host: '0.0.0.0'

Ahora nos logeamos con este usuario

su - ghost  
cd /var/www/ghost/  

Y Ya podemos iniciar Ghost!

npm start --production  

Visita http://dirección-ip:2368

¿Cómo mantenemos este proceso siempre activo?

Pues para esto vamos a usar PM2, que es un gestor de procesos para Node.js y se encargará de mantener nuestro servidor activo hasta que lo paremos manualmente.
Para instalarlo ejecutamos estos comandos

cd /var/www/ghost  
sudo npm install -g pm2  

Una vez tenemos instalado vamos a modificar la variable de entorno del sistema para que node se ejecute siempre en modo producción

echo "export NODE_ENV=production" >> ~/.profile  
source ~/.profile  

Ahora podemos arrancar el proceso con el siguiente comando

pm2 start index.js --name ghost  

En este caso le pasamos “ghost” como alias para el proceso
Podemos ver información más información del proceso que está en ejecución, con el siguiente comando.

pm2 show ghost  

¡Importante! Si queremos que cuando se inicie el servidor también se inicie pm2 con los procesos abiertos en este instante, tenemos que ejecutar los siguientes comandos.

pm2 startup centos  
pm2 save  

En el primer comando tenemos que indicarle el sistema operativo, en mi caso estoy corriendo CentOS, algun ejemplo más sería con < centos, redhat, gentoo, systemd, darwin, amazon, ... >

Como redirigir el puerto 80 a nuestro blog en el puerto 2368

Si solo vamos a querer instalar ghost en este server podemos omitir este paso, ya que podemos configurar el puerto en la configuración del mismo, pero en mi caso voy a hacerlo con Nginx para configurar varios sitios en mi servidor.

Lo primero es instalar Nginx :), para ello agregamos el repositorio agregando las siguientes lineas en /etc/yum.repos.d/nginx.repo :

[nginx]
name=nginx repo  
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/  
gpgcheck=0  
enabled=1  

Lo dicho estoy usando CentOS, para otros sistemas operativos mirar exactamente como se instala Nginx

Ahora ya lo podemos instalar con

sudo yum install nginx -y  
sudo systemctl start nginx  

Ahora con Nginx y nuestro blog funcionando, ya podemos
agregar la configuración de nuestro sitio.

Para ello necesitamos agregar en la carpeta de configuración de Nginx /etc/nginx/conf.d/ (Directorio en CentOS), el archivo de configuración de nuestro sitio.
Lo más recomendado es llamar a este archivo como el nombre de dominio, por ejemplo: mi-dominio.com.conf
Una vez tengamos el archivo agregaremos las siguientes lineas:

server {  
    listen 80;
    server_name mi-dominio.com;
    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

Y reiniciamos el servicio

sudo systemctl restart nginx  

Conclusion

Hoy aprendimos a instalar la plataforma de Blog Ghost en nuestro servidor. También aprendimos a gestionar procesos con PM2.
Ahora ya podemos empezar a usar nuestro blog ligero pero potente Ghost junto con Node.js, PM2 y Nginx
En este tutorial hemos instalado con éxito el sistema