Platzi
Platzi

¡Invierte en ti y celebremos! Adquiere un plan Expert o Expert+ a precio especial.

Antes:$349
$259
Currency
Antes:$349
Ahorras:$90
COMIENZA AHORA
3

Cómo instalar Nginx y configurar Ghost en Amazon EC2

795Puntos

hace 6 años

Entre todas las plataformas de blogging que existen, si buscas simplicidad y facilidad de usoGhost es la opción para ti. Es open source, está escrita en JavaScript y, tal como sus principales competidores, nos permite publicar y administrar contenido de manera fácil y rápida. En este artículo veremos cómo configurar, paso a paso, un VPS en amazon EC2 para que sirva nuestro blog en Ghost usando Nginx.

Crear y configurar un VPS

Para publicar un blog de Ghost en Amazon EC2 tenemos dos opciones:
  1. El camino fácil: Usar algún AMI existente con un template de Ghost (Bitnami cuenta con los suyos en el AWS Marketplace) y simplemente “dar clic en siguiente” hasta tener el blog arriba.
  2. El camino difícil: Configurar una instancia de EC2 por nuestra cuenta, casi desde cero, e irle instalando todo lo necesario hasta lograr el mismo resultado.
Ya que somos hardcore developers y nos gusta estar aprendiendo todo el tiempo, en esta ocasión optaremos por el camino “difícil”. Comenzaremos creando una instancia de la capa gratuita (t1.micro) con Ubuntu 14.04 instalado para el ejemplo de hoy. Create_instance Dejaremos la mayoría de las configuraciones tal y como están; excepto por la configuración del grupo de seguridad. Ahí debemos dejar el puerto 22 (para conectarnos por SSH) y el puerto 80 abiertos. SecurityGroupNota: No olvides descargar la llave de seguridad al finalizar el configurado de la instancia y almacenarla en un lugar seguro ya que es la única forma de acceder a tu servidor. No la pierdas.PEM Key

Conectarse y actualizar el servidor

Para conectarse a una instancia de Amazon EC2 necesitaremos dos cosas: la IP que Amazon nos asignó para esa instancia y la llave que generamos y descargamos previamente en la creación de la máquina. La IP puedes encontrarla en el dashboard principal, seleccionando la instancia una vez que esté lista. InstanceDetail Antes de conectarnos a la instancia tendremos que configurar los permisos de la llave que ya descargamos para poder usarla en modo lectura únicamente. Para alterar los permisos de la llave usamos el comando: $ chmod 0400 MyKey.pem   Key Properties Para conectarlos a la instancia que creamos, de manera que que “MyKey.pem” sea la llave que descargamos y que “INSTANCE_IP” sea la IP que Amazon le asignó a nuestra instancia, usaremos el siguiente comando: $ sudo ssh -i MyKey.pem [email protected]_IP En mi caso, el comando quedaría de la siguiente manera: $ sudo ssh -i PlatziBlog.pem [email protected] Una vez dentro del servidor, tendremos que poner todos los paquetes al día utilizando los siguientes comandos. $ sudo apt-get update y $ sudo apt-get upgrade

Instalar NodeJS

Ghost está desarrollado en NodeJS; por lo que tendremos que instalar node y npm en el servidor con los siguientes comandos: $ curl --silent --location https://deb.nodesource.com/setup_0.12 | sudo bash - y $ sudo apt-get install --yes nodejs Comprobamos que node y npm están correctamente instalados corriendo el comando: $ node -v && npm -v Este nos imprimirá las versiones de cada uno, como se muestra a continuación: Node & NPM

Descargar y configurar Ghost

Ahora que ya terminamos con la configuración previa, debemos descargar Ghost haciendo una petición al .zip mediante CURL: $ curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip Instalamos unzip para descomprimir el .zip de Ghost: $ sudo apt-get install unzip Creamos la carpeta www dentro de /var/www para descomprimir dentro el .zip de Ghost: $ sudo mkdir /var/www/ Descomprimimos el .zip de Ghost dentro de la carpeta /var/www/ghost: $ sudo unzip -uo ghost.zip -d /var/www/ghost Nos ubicamos en la carpeta donde descomprimimos el .zip de Ghost: $ cd /var/www/ghost Instalamos todas las dependencias de Node que Ghost necesita en producción: $ sudo npm install --production Y probamos que Ghost funcione levantando el servidor con: $ sudo npm start --production Si todo funcionó a la perfección, veremos un mensaje como el siguiente: Your blog is now available on http://my-ghost-blog.comGhost Server Por último nos hace falta cambiar la URL http://my-ghost-blog.com  por la futura URL original. En caso de que no tengamos un dominio, podemos dejar la IP de nuestro servidor. Ghost cuenta con un archivo de configuración para todo el proyecto en donde podremos definir parámetros como el motor de base de datos que queremos usar o la URL de nuestro blog. El archivo se llama config.js y podemos editarlo con el siguiente comando: $ sudo nano config.jsConfigjs Una vez configurado el dominio, tenemos que preparar un script que nos asegure que el servidor de Ghost estará siempre prendido y que, en caso de que se caiga o apague la máquina, tratará de levantarlo inmediatamente. Lo anterior lo podemos lograr mediante una tarea upstart. Para crear una tarea upstart tenemos que ir a la carpeta /etc/init: $ cd /etc/init Y crear dentro el archivo ghost.conf con lo siguiente: $ sudo nano ghost.confGhostconf Y ahora sólo tenemos que levantar el servidor de Ghost con el comando: $ sudo service ghost start

Instalar y configurar Nginx

Para instalar Nginx usamos el siguiente comando: $ sudo apt-get install nginx Una vez concluida la instalación, podremos comprobar que Nginx se instaló correctamente corriendo el siguiente comando y comprobando que el status del proceso sea igual a running.$ sudo service nginx statusNginx Is Runnig Otra opción es simplemente navegar en la URL de nuestro dominio (sí ya lo configuramos) o IP y comprobar que aparezca la siguiente pantalla: Welome to NGINXNota: En caso de que no aparezca ninguno de los dos resultados anteriores puedes probar corriendo el siguiente comando:$ sudo service nginx restart Nginx guarda toda su configuració en /etc/nginx. Ahí contamos con dos carpetas muy importantes:
  • sites-available que contiene los archivos de configuración disponibles por usar
  • sites-enabled que contiene enlaces simbólicos a los archivos de configuración almacenados en “sites-available” que están en uso
Comencemos ubicándonos en la carpeta de configuración de Nginx y borrando los archivos que ya existían en estas dos carpetas: $ cd /etc/nginx$ sudo rm sites-available/default$ sudo rm sites-enabled/default Una vez hecho esto, agreguemos un archivo de configuración llamado ghost dentro de sites-available, que escuche en el puerto 80  y que haga un proxy pass de todas las peticiones hacia la URL “/” al servidor de Ghost que está corriendo en el puerto 2368. $ sudo nano sites-available/ghostNginx Ghost file Después es necesario generar el enlace simbólico del archivo que acabamos de crear dentro de “sites-available”. Esto para que Nginx lo considere como una configuración vigente. $ sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghostSymbolic Link Terminando este proceso, lo único que nos resta por hacer es reiniciar NGINX para que actualice los archivos de configuración por los que acabamos de escribir. Esto lo logras con el comando: $ sudo service nginx restart Sí todo funciona a la perfección, tendremos el blog de Ghost corriendo directo en nuestra URL. Ghost running Ya sólo nos haría falta configurar nuestra sesión de admin en /ghost/setupAdmin session Ahora ya tienes listo tu blog para empezar a generar y publicar contenido. Si quieres saber más de administración de servers Linux, Apache, Rackspace, Azure, Docker y más; te recomiendo cursar el Curso de Administración de Servidores y DevOps en Platzi.
Pablo
Pablo
Escribe tu comentario
+ 2
0
13428Puntos

Me sirvio de mucho gracias…