Ghost es una poderosa plataforma de publicación y blog de código abierto que está bellamente diseñada y es fácil de usar. Ghost está escrito en javascript y utiliza node.js como entorno de ejecución. La primera versión de Ghost se lanzó en 2013 bajo licencia MIT y se actualiza constantemente. Este tutorial muestra la instalación del software Ghost Blog, Node.js y Apache como servidor proxy SSL en Ubuntu 16.04.
Nodejs es un tiempo de ejecución de JavaScript de código abierto basado en el motor de JavaScript V8 de Chrome (v4) para desarrollar aplicaciones web del lado del servidor. Nodejs es un tiempo de ejecución multiplataforma que puede ejecutarse en OS X, Microsoft Windows, Linux y FreeBSD. Proporciona una arquitectura basada en eventos y un modelo de E/S sin bloqueo que lo hace liviano y eficiente para aplicaciones web en tiempo real. Ryan Dahl inició el proyecto Node.js en 2009 y alcanzó la versión 6.5.0 (LTS) a partir de hoy.
Requisitos
- Ubuntu 16.04
- privilegios de raíz
Qué haremos en este tutorial:
- Instalar Node.js
- Instalar fantasma
- Configurar fantasma
- Instala Apache y agrega Ghost VirtualHost
- Habilitar SSL para Ghost
Paso 1:instalar Node.js en Ubuntu
Para este tutorial, usaremos nodejs v4.x. Nodejs se puede instalar de muchas maneras diferentes, como la instalación desde la fuente o la instalación desde el repositorio de Ubuntu. Usaré el repositorio nodejs de nodesecure https://deb.nodesource.com/node_4.x para la instalación, contiene software actualizado y el uso de un repositorio le permite actualizar node.js fácilmente más adelante.
Instale la clave del repositorio de fuente de nodo con el siguiente comando:
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
Luego agregue el repositorio nodejs ejecutando los siguientes comandos:
sudo echo 'deb https://deb.nodesource.com/node_4.x xenial main' > /etc/apt/sources.list.d/nodesource.list
sudo echo 'deb-src https://deb.nodesource.com/node_4.x xenial main' >> /etc/apt/sources.list.d/nodesource.list
Actualizar el repositorio:
sudo apt-get update
Ahora podemos instalar el paquete "nodejs" que instalará node.js y sus dependencias en el servidor:
sudo apt-get install -y nodejs
Ahora verifique la versión de nodejs para asegurarse de que la instalación fue exitosa:
node --version
Comprobar la versión de npm:
npm --version
npm es un administrador de paquetes para instalar, publicar y administrar programas de nodo.
Paso 2:instalar el Blog de Ghost
Instalaremos ghost en el directorio "/var/www/" y usaremos la última versión de Ghost. Cree un nuevo directorio "www" en /var e ingréselo con "cd":
mkdir -p /var/www/
cd /var/www/
Descargue Ghost con el comando wget, luego extráigalo a un directorio llamado "ghostblog":
wget https://ghost.org/zip/ghost-latest.zip
unzip -d ghostblog ghost-latest.zip
NOTA :-d :crea automáticamente el directorio.
Luego vaya al directorio de ghostblog e instale Ghost con npm comando:
cd ghostblog/
sudo npm install --production
Paso 3:Configurar fantasma
Vaya al directorio de ghostblog y luego copie el archivo de muestra de configuración en "config.js"
cd /var/www/ghostblog/
cp config.example.js config.js
A continuación, agregue un nuevo usuario "fantasma". Este usuario será demandado para ejecutar Ghost:
useradd -d /var/www -s /bin/bash ghost
passwd ghost
TYPE NEW PASSWORD FOR ghost USER
-d =Define el directorio de inicio para el usuario fantasma en /var/www/.
-s =Define el shell para el usuario fantasma.
Ahora cambie el propietario del directorio de instalación fantasma al usuario "fantasma".
chown -R ghost:ghost /var/www/ghostblog
Pruebe el blog fantasma ejecutando el comando npm como usuario fantasma. Inicie sesión en el usuario fantasma:
su - ghost
y vaya al directorio de instalación e inicie Ghost:
cd ghostblog/
npm start --production
Ghost está instalado y ejecutándose en localhost con el puerto 2368. Podemos comprobarlo con el comando curl:
curl -I localhost:2368
Puede ver que Ghost se está ejecutando - HTTP/1.1 200 OK .
Ejecutaremos ghost como servicio para que nos resulte más fácil iniciar ghost. Vuelva al usuario sudo/root escribiendo "exit" y cree un nuevo archivo llamado "ghost.service" en el directorio "/lib/systemd/system/".
cd /lib/systemd/system/
vim ghost.service
Pegue el script systemd a continuación:
[Unit] Description=ghost After=network.target [Service] Type=simple # Ghost installation Directory WorkingDirectory=/var/www/ghostblog User=ghost Group=ghost ExecStart=/usr/bin/npm start --production ExecStop=/usr/bin/npm stop --production Restart=always SyslogIdentifier=Ghost [Install] WantedBy=multi-user.target
A continuación, vuelva a cargar el demonio systemd:
systemctl daemon-reload
Luego agregue fantasma para que se inicie en el momento del arranque e inicie fantasma con el comando systemctl:
systemctl enable ghost
systemctl start ghost
Comprueba que Ghost se está ejecutando comprobando el puerto 2368:
netstat -plntu
Paso 4:instale Apache y Ghost VirtualHost
Instale apache con el comando apt-get:
sudo apt-get install apache2
Una vez finalizada la instalación, cree un nuevo archivo para el host virtual fantasma en el directorio "/etc/apache2/sites-disponible/".
sudo cd /etc/apache2/sites-available/
sudo vim ghostblog.conf
Pegue la configuración a continuación:
<VirtualHost *:80> #Domain Name ServerName ghostblog.me ServerAlias www.ghostblog.me #HTTP proxy/gateway server ProxyRequests off ProxyPass / http://127.0.0.1:2368/ ProxyPassReverse / http:/127.0.0.1:2368/ </VirtualHost>
Guardar y salir.
Active el módulo proxy HTTP en apache con el comando a2enmod como se muestra a continuación:
sudo a2enmod proxy proxy_http
Finalmente, tenemos que activar el host virtual Ghost y luego reiniciar apache:
sudo a2ensite ghostblog
sudo systemctl restart apache2
Reiniciar fantasma:
sudo systemctl restart ghost
Pruebe visitando el dominio:http://ghostblog.me
Paso 5:habilitar SSL para Ghost
Para habilitar SSL en apache, asegúrese de que la biblioteca OpenSSL esté instalada en el sistema. Generaremos una nueva clave y un archivo crt en el directorio "/etc/apache2/certs". Primero, creamos nuevos certificados de directorio:
sudo mkdir -p /etc/apache2/certs
Y genere la clave del certificado con el siguiente comando:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/certs/ghostblog.key -out /etc/apache2/certs/ghostblog.crt
Cambie el permiso del archivo de certificado:
sudo cd /etc/apache2/certs/
sudo chmod 600 *
A continuación, agregue la configuración SSL al host virtual fantasma editando el archivo "ghostblog.conf".
sudo cd /etc/apache2/sites-available/
sudo vim ghostblog.conf
Pegue el nuevo script de configuración a continuación:
<VirtualHost *:80> ServerName ghostblog.me ServerAlias www.ghostblog.me # Force http to https Redirect permanent / https://ghostblog.me/ # ProxyRequests off # ProxyPass / http://127.0.0.1:2368/ # ProxyPassReverse / http:/127.0.0.1:2368/ </VirtualHost> <VirtualHost *:443> ServerName ghostblog.me SSLEngine on SSLCertificateFile /etc/apache2/certs/ghostblog.crt SSLCertificateKeyFile /etc/apache2/certs/ghostblog.key ProxyPass / http://127.0.0.1:2368/ ProxyPassReverse / http:/127.0.0.1:2368/ ProxyPreserveHost On RequestHeader set X-Forwarded-Proto "https" </VirtualHost>
Guarde el archivo y salga de vim.
Active el módulo apache de OpenSSL y reinicie apache:
sudo a2enmod ssl headers
sudo systemctl restart apache2
Prueba
Visita http://ghostblog.me , y se verá forzado al sitio HTTPS/SSL de su blog.
Ghost con apache y SSL se ha instalado correctamente.
Conclusión
Nodejs es un tiempo de ejecución de javascript multiplataforma de código abierto para crear aplicaciones web del lado del servidor. Es ligero y eficiente para aplicaciones web en tiempo real. Ghost es una plataforma de blogs escrita en Javascript para Node.js. Ghost está bellamente diseñado y es fácil de usar. La interfaz intuitiva hace que este sistema de blogs sea fácil de usar. Ghost se puede instalar de forma independiente o con un servidor web como Apache o Nginx. Puede asegurar Ghost con OpenSSL. Configurar Ghost con Apache y OpenSSL es fácil, solo tiene que configurar el módulo apache http_proxy y generar un certificado SSL.