Inicios (V). Configurando nginx

Una vez configurado Node.js e instalado Ghost, vamos a hacer que nuestro VPS pueda recibir peticiones del exterior.
Para eso utilizaremos nginx, un sistema liviano que nos ayudará a ello.

Ya lo tenemos instalado (lo hemos hecho en el paso anterior), así que ahora toca configurarlo.

En primer lugar, navegaremos mediante el comando cd hacia la carpeta de nginx y borraremos el sitio creado por defecto:

cd /etc/nginx/
rm sites-enabled/default

Ahora crearemos el archivo que utilizaremos para nuestro blog Ghost:

cd sites-available
vim ghost

Y dentro, en modo INSERTAR, copiamos lo siguiente:
(recordad que en PuTTy, con el botón derecho se pega el contenido del portapapeles)

server {
	listen 80;

    server_name www.TUDOMINIO.com TUDOMINIO.com;

  	if ($host = 'localhost' ) {
    	rewrite  ^/(.*)$  http://www.TUDOMINIO.com/$1  permanent;
  	}

  	location ~ ^/(ghost/signup/) {
	    rewrite ^/(.*)$ http:/www.TUDOMINIO.com/ permanent;
   	}

  	location ~ ^/(img/|css/|lib/|vendor/|fonts/|robots.txt|humans.txt) {
	    root /TURUTA/core/client/assets;
	    access_log off;
    	expires max;
  	}

  	location ~ ^/(shared/|built/) {
    	root /TURUTA/core;
	    access_log off;
	    expires max;
  	}

  	location ~ ^/(favicon.ico) {
    	root /TURUTA/core/shared;
	    access_log off;
	    expires max;
  	}

  	location ~ ^/(content/images/) {
    	root /TURUTA;
	    access_log off;
	    expires max;
  	}

  	location / {
    	proxy_redirect off;
	    proxy_set_header   X-Real-IP  $remote_addr;
	    proxy_set_header   X-Forwarded-For proxy_add_x_forwarded_for;
	    proxy_set_header   X-Forwarded-Proto $scheme;
	    proxy_set_header   Host                   $http_host;
	    proxy_set_header   X-NginX-Proxy    true;
	    proxy_set_header   Connection "";
	    proxy_http_version 1.1;
    	proxy_cache one;
	    proxy_cache_key ghost$request_uri$scheme;
	    proxy_pass         http://ghost_upstream;
  	}
}

URL A GIST

Cambiando las partes donde pone TUDOMINIO por, como indica su nombre, tu nombre de dominio (por ejemplo, www.dexa-dev.com ) y las que pone TURUTA por la ruta del servidor en la que almacenarás los archivos de Ghost.

NOTA: ATENCIÓN EN EL APARTADO location ~ ^/(content/images/), donde TURUTA va sin / al final!

(Esto lo pongo a raíz de un fallo que tuve...)

Después, tendremos que añadir un pequeño bloque de código en el archivo de configuración de nginx (más adelante aprenderemos por qué).
De momento simplemente quédate con que hay que hacerlo. Para ello usaremos el comando vim /etc/nginx/nginx.conf y debajo de la instrucción "gzip_buffers...;" añadiremos esto:

upstream ghost_upstream {
    server 127.0.0.1:2368;
    keepalive 64;
}

Guardamos los cambios y listo!

Para activarlo, solo quedará habilitarlo.
Para habilitar sitios en nginx, hay que crear un symlink del archivo creado en sites-available a sites-enabled (en un post posterior se explica de forma más detallada).

ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost

Con esto tendremos el sitio habilitado.
Ahora reiniciaremos el servicio nginx para que detecte los cambios. Para ello usaremos el comando
service nginx restart
(En caso de que os diga que hay un conflicto de IP, reiniciad el VPS y probad de nuevo).

Si no os aparece el mensaje diciendo que se ha reiniciado, escribid nginx -t para ver el error que tiene.

Creando un servicio para Ghost

Y ahora, por último, haremos que el servidor detecte a Ghost como servicio, para poder controlarlo más fácilmente y hacer que se inicie nadamás arranque el VPS. Para ello navegaremos a la carpeta /etc/init con el comando cd.
cd /etc/init
Y crearemos un nuevo archivo llamado ghost
vim ghost.conf

Dentro de vim, entraremos en modo INSERTAR ('i'), y pegaremos lo siguiente:

start on startup

script
cd /var/www/ghost
npm start
end script

Una vez hecho esto, seremos capaces de controlar el servicio ghost mediante los comandos service ghost start, service ghost stop, y service ghost restart

Una vez hecho esto, solo faltará reiniciar los dos servicios y comprobar si tu nombre de dominio apunta al blog. Para ello haremos

service nginx restart
service ghost restart

Y si todo está correcto, entrando al dominio desde un navegador, deberías ver tu blog.
Enhorabuena, has conseguido instalar Ghost!
Para empezar a utilizarlo, solo tendras que entrar a dominio/ghost, crear una nueva cuenta, y ya podrás empezar a configurarlo todo.

Y hasta aquí la guía completa desde 0 de como montar Ghost utilizando nginx en un VPS recién contratado.
Espero que no hayas tenido demasiados problemas para configurarlo y que puedas empezar bien tu aventura con este nuevo sistema de blogging.

En próximas entradas, explicaré como instalar temas.