Cómo implementar Ghost v0.11 LTS en CentOS 7.3

Ghost es una plataforma de blogs de código abierto que ha ganado popularidad entre los desarrolladores y usuarios comunes desde su lanzamiento en 2013. Se centra en el contenido y los blogs. Lo más atractivo de Ghost es su diseño simple, limpio y receptivo. Puede escribir sus publicaciones de blog desde un teléfono móvil. El contenido para Ghost está escrito usando el lenguaje Markdown. Ghost es perfecto para individuos o pequeños grupos de escritores.

En esta guía vamos a configurar e implementar un blog seguro Ghost v0.11.x LTS en un CentOS 7.3 VPS usando Let's Encrypt , Certbot , Node.js , NPM , NGINX y MySQL .

Requisitos

  • Registre (compre) un nombre de dominio.
  • Instancia de servidor CentOS 7.3 con un mínimo de 1 GB de RAM .
  • Usuario de sudo.

Antes de que empieces

  1. Verifique la versión de CentOS:

    cat /etc/centos-release
    # CentOS Linux release 7.3.1611 (Core)
    
  2. Cree un nuevo usuario no root :

    useradd -c "John Doe" johndoe && passwd johndoe
    
  3. Conviértalo en superusuario agregándolo al wheelgrupo:

    usermod -aG wheel johndoe
    
  4. Cambiar a nuevo usuario:

    su - johndoe
    
  5. Actualice el software de su sistema operativo:

    sudo yum check-update || sudo yum update -y
    
  6. Configure la zona horaria:

    timedatectl list-timezones
    sudo timedatectl set-timezone 'Region/City'
    
  7. Instalar herramientas de desarrollo:

    sudo yum groupinstall -y 'Development Tools'
    
  8. Instale el editor de texto Vim:

    sudo yum install -y vim
    
  9. Reinicie el sistema si es necesario:

    sudo shutdown -r now
    

Instalar Certbot

NOTA : Antes de comenzar este paso, asegúrese de haber establecido registros DNS para su dominio.

Vamos a utilizar Let's Encrypt CA y el cliente Certbot de EFF para obtener el certificado SSL / TLS para nuestro blog Ghost. No olvide reemplazar todas las instancias de blog.domain.tldcon su nombre de dominio.

  1. Habilite el repositorio de Paquetes adicionales para Enterprise Linux (EPEL):

    # Certbot is packaged in Extra Packages for Enterprise Linux (EPEL) repository. To use Certbot, you must first enable the EPEL repository.
    sudo yum install -y epel-release
    
  2. Instale el software de administración de certificados Certbot (anteriormente cliente Let's Encrypt ) hecho con Python:

    sudo yum install -y certbot
    
  3. Verifique la versión de Certbot:

    certbot --version
    # certbot 0.14.1
    
  4. Obtenga el certificado RSA utilizando el método de autenticación independiente (complemento):

    sudo certbot certonly --standalone --domains blog.domain.tld --rsa-key-size 2048 --must-staple --email admin@domain.tld --no-eff-email --agree-tos
    
    # IMPORTANT NOTES:
    #  - Congratulations! Your certificate and chain have been saved at 
       /etc/letsencrypt/live/blog.domain.tld/fullchain.pem.
    #  Your cert will expire on YYYY-MM-DD. . . .
    #  . . .
    

    Después de seguir los pasos anteriores, su certificado y clave privada estarán en el /etc/letsencrypt/live/blog.domain.tlddirectorio.

Instalar Node.js y NPM

NOTA : Ghost actualmente solo admite las versiones Node.js 4.5+ y 6.9+.

Ghost está construido sobre Node.js. Vamos a instalar la versión recomendada para Ghost que se encuentra v6 Boron LTSal momento de escribir esto.

  1. Descargue e instale Node.js v6 LTS:

    sudo curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
    sudo yum install -y nodejs
    
  2. Verifique las versiones Node.js y NPM:

    node -v && npm -v
    # v6.11.2
    # 3.10.10
    

Instalar MySQL

De forma predeterminada, Ghost viene configurado para usar una base de datos SQLite, que no requiere configuración.

Alternativamente, Ghost también se puede usar con una base de datos MySQL cambiando la configuración de la base de datos. Primero debe crear una base de datos y un usuario, luego puede cambiar la configuración de sqlite3 existente.

  1. Descargue e instale la última versión de MySQL (actualmente 5.7 ) del repositorio oficial de MySQL Yum:

    cd /tmp
    
    # Adding the MySQL Yum Repository
    wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    sudo yum localinstall -y mysql57-community-release-el7-11.noarch.rpm
    
    # Installing MySQL
    sudo yum install -y mysql-community-server
    
  2. Verifique la versión de MySQL:

    mysql --version
    # mysql  Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using  EditLine wrapper
    
  3. Inicie MySQL Server y verifique su estado:

    sudo systemctl start mysqld.service
    sudo systemctl status mysqld.service
    
  4. MySQL versión 5.7 o superior genera una contraseña aleatoria temporal para el rootusuario de MySQL después de la instalación y la contraseña se almacena en el archivo de registro de errores de MySQL, ubicado en /var/log/mysqld.log. Para revelarlo, use el siguiente comando:

    sudo grep 'temporary password' /var/log/mysqld.log
    
  5. Ejecute el mysql_secure_installationscript para asegurar un poco su base de datos:

    NOTA : El complemento de validación de contraseña está instalado y habilitado, por lo que su nueva contraseña para el rootusuario debe ser segura ( una letra mayúscula, una letra minúscula, un dígito y un carácter especial, y que la longitud total de la contraseña sea de al menos 8 caracteres) ) Si desea relajar eso o deshabilitar el complemento por completo ( no recomendado ), consulte la documentación oficial de MySQL para saber cómo hacerlo.

    sudo mysql_secure_installation
    
  6. Inicie sesión en MySQL como usuario root:

    mysql -u root -p
    # Enter password:
    
  7. Cree una nueva base de datos MySQL y usuario:

    create database dbname;
    grant all on dbname.* to 'user' identified by 'password';
    
  8. Salga de MySQL:

    exit
    

Instalar NGINX

  1. Descargue e instale la última versión principal de NGINX del repositorio oficial de NGINX:

    # Add the NGINX Yum Repository
    sudo vim /etc/yum.repos.d/nginx_mainline.repo
    
    
    # Copy/paste the following into /etc/yum.repos.d/nginx_mainline.repo
    [nginx]
    name=nginx repo
    baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/
    gpgcheck=1
    enabled=1
    
    
    wget https://nginx.org/keys/nginx_signing.key
    sudo rpm --import nginx_signing.key
    rm nginx_signing.key
    
    sudo yum install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt nginx-nr-agent
    
  2. Verifique que esté instalado comprobando la versión de NGINX:

    sudo nginx -v
    # nginx version: nginx/1.13.3
    
  3. Verifique el estado, habilite e inicie el servicio NGINX (daemon):

    sudo systemctl status nginx.service # inactive (dead)
    sudo systemctl enable nginx.service
    sudo systemctl start nginx.service
    
  4. Cree un /etc/nginx/ssldirectorio y genere nuevos parámetros de Diffie-Hellman ( DH ):

    sudo mkdir -p /etc/nginx/ssl
    sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
    
  5. Crear directorio de registro para blog.domain.tldhost virtual:

    sudo mkdir -p /var/log/nginx/blog.domain.tld
    
  6. Configure NGINX como un servidor proxy inverso HTTP ( S ):

    sudo vim /etc/nginx/conf.d/ghost.conf
    
  7. Pegue lo siguiente en /etc/nginx/conf.d/ghost.conf:

    # domain: blog.domain.tld
    # public: /var/www/ghost
    
    upstream ghost_app {
        server 127.0.0.1:2368;
        keepalive 32;
    }
    
    server {
        listen [::]:80 default_server;
        listen 80 default_server;
        listen [::]:443 ssl http2 default_server;
        listen 443 ssl http2 default_server;
    
        server_name blog.domain.tld;
        root /var/www/ghost;
    
        error_log /var/log/nginx/blog.domain.tld/error.log;
        access_log /var/log/nginx/blog.domain.tld/access.log;
    
        client_max_body_size 100M;
    
        ssl_certificate /etc/letsencrypt/live/blog.domain.tld/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/blog.domain.tld/privkey.pem;
        ssl_dhparam ssl/dhparams-2048.pem;
    
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
        ssl_prefer_server_ciphers on;
    
        ssl_buffer_size 4K;
    
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50M;
        ssl_session_tickets off;
    
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_trusted_certificate /etc/letsencrypt/live/blog.domain.tld/chain.pem;
    
        resolver 8.8.8.8 8.8.4.4 valid=300s;
    
        location / {
            proxy_pass http://ghost_app;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_hide_header X-Powered-By;
    
            proxy_http_version 1.1;
            proxy_set_header Connection "";
        }
    }
    
  8. Guarde y pruebe la configuración de NGINX para errores de sintaxis:

    sudo nginx -t
    
  9. Recargue la configuración de NGINX:

    sudo systemctl reload nginx.service
    

Instalar fantasma

NOTA : Si desea alojar varios blogs de Ghost en el mismo VPS, cada instancia de Ghost debe ejecutarse en un puerto separado.

  1. Crear directorio raíz de documentos:

    sudo mkdir -p /var/www/
    
  2. Crea un nuevo usuario fantasma:

    sudo useradd -c 'Ghost application' ghost
    
  3. Descargar Ghost:

    curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.11/Ghost-0.11.11.zip -o ghost.zip
    
  4. Descomprima Ghost en el /var/www/ghostdirectorio (ubicación de instalación recomendada):

    sudo unzip -uo ghost.zip -d /var/www/ghost
    rm ghost.zip
    
  5. Mover al nuevo directorio fantasma:

    cd /var/www/ghost
    
  6. Cambiar la propiedad del /var/www/ghostdirectorio:

    sudo chown -R ghost:ghost .
    
  7. Cambiar a nuevo ghostusuario:

    sudo su - ghost
    
  8. Navegue a la raíz del documento /var/www/ghost:

    cd /var/www/ghost
    
  9. Instale Ghost solo con dependencias de producción. Cuando esto se completa, se instala Ghost:

    npm install --production
    
  10. Santo Configurar cambiando url, maily databasela propiedad de la producción de objetos en el interior del config.jsarchivo:

    cp config.example.js config.js
    vim /var/www/ghost/config.js
    
    
    var path = require('path'),
        config;
    
    config = {
    // ### Production
    // When running Ghost in the wild, use the production environment.
    // Configure your URL and mail settings here
    production: {
        url: 'https://blog.domain.tld',
        mail: {
            transport: 'SMTP',
            options: {
                service: 'Mailgun',
                auth: {
                    user: '',
                    pass: ''
                }
            }
        },
        database: {
            client: 'mysql',
            connection: {
                host: '127.0.0.1',
                user: 'your_database_user',
                password: 'your_database_password',
                database: 'your_database_name',
                charset: 'utf8'
            },
            debug: false
        },
        // . . .
        // . . .
    

    NOTA : también debe configurar los mailajustes. Consulte la documentación oficial de Ghost sobre cómo hacerlo.

  11. Iniciar Ghost en entorno de producción:

    npm start --production
    

    Ghost ahora estará corriendo. Tanto la interfaz de usuario como la interfaz de administración del blog están protegidas con HTTPS y HTTP / 2 también funciona. Puede abrir su navegador y visitar el sitio en https://blog.domain.tld. No olvide reemplazar blog.domain.tldcon su nombre de dominio.

  12. Cierre el proceso de Ghost presionando CTRL+ Cy salga del usuario fantasma de nuevo al usuario no root que haya creado al principio:

    exit
    

Ejecutando Ghost como un servicio del sistema

Si cierra su sesión de terminal con su VPS, su blog también se cerrará. Eso no es bueno. Para evitar esto, vamos a usar systemd. Mantendrá nuestro blog activo las 24 horas, los 7 días de la semana.

  1. Crear ghost.servicearchivo de unidad systemd. Ejecute sudo sudo vim /etc/systemd/system/ghost.servicey copie / pegue el siguiente contenido:

    [Unit]
    Description=Ghost - the professional publishing platform
    Documentation=https://docs.ghost.org/v0.11.11/docs
    After=network.target
    
    [Service]
    Type=simple
    # Edit WorkingDirectory, User and Group as needed
    WorkingDirectory=/var/www/ghost
    User=ghost
    Group=ghost
    ExecStart=/bin/npm start --production
    ExecStop=/bin/npm stop --production
    Restart=always
    SyslogIdentifier=Ghost
    
    [Install]
    WantedBy=multi-user.target
    
  2. Habilitar y comenzar ghost.service:

    sudo systemctl enable ghost.service && sudo systemctl start ghost.service
    
  3. Verificar ghost.serviceestado:

    sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service
    
  4. Navega https://blog.domain.tld/ghost/y crea un usuario administrador de Ghost. ¡Haz esto tan pronto como sea posible!

Conclusión

Eso es. Ahora tenemos un blog de Ghost totalmente funcional. Su servidor está entregando contenido a través de HTTP / 2 cuando el cliente lo admite. Si desea cambiar el tema predeterminado de Ghost llamado Casper a uno personalizado, simplemente puede descargar y descomprimir el tema en la /var/www/ghost/content/themescarpeta y seleccionarlo a través de la interfaz de administrador de Ghost, ubicada en https://blog.domain.tld/ghost.

Dejar un comentario

ZPanel y Sentora en CentOS 6 x64

ZPanel y Sentora en CentOS 6 x64

ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Aprende cómo instalar Vtiger CRM, una aplicación de gestión de relaciones con el cliente, en CentOS 7 para aumentar tus ventas y mejorar el servicio al cliente.

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Esta guía completa le mostrará cómo configurar un servidor Counter-Strike 1.6 en Linux, optimizando el rendimiento y la seguridad para el mejor juego. Aprende los pasos más recientes aquí.

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.