Cómo implementar Ghost Blog con Nginx en Ubuntu 20.04

Instalador de blogs fantasma

Ghost es una plataforma de blogs gratuita, de código abierto y liviana construida en Node.js. Es simple, personalizable y le permite crear y publicar su contenido en Internet. Está especialmente diseñado para blogs, por lo que es mucho más rápido que otras plataformas de blogs. Ofrece un amplio conjunto de características, algunas de ellas se enumeran a continuación:

  • editor de rebajas
  • Publicación programada
  • Proporcionar aplicación para Linux, Mac y Windows
  • Proporciona cientos de temas gratuitos y premium.
  • Analítica integrada
  • Proporcione un complemento de migración para migrar de WordPress a Ghost

Este tutorial explicará cómo instalar Ghost con Nginx y Let’s Encrypt SSL en Ubuntu 20.04.

requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Un nombre de dominio válido apunta a la IP de su servidor.
  • Una contraseña de root está configurada en su servidor.

Empezando

Primero, se recomienda actualizar el caché del paquete APT a la última versión. Puedes actualizarlo con el siguiente comando:

apt-get update -y

Una vez que se actualice el caché de APT, instale otras dependencias requeridas usando el siguiente comando:

apt-get install gnupg2 curl unzip git acl -y

A continuación, también deberá instalar Node.js en su sistema.

Primero, agregue el repositorio Node.js con el siguiente comando:

curl -sL https://deb.nodesource.com/setup_12.x | bash -

Una vez que el repositorio esté instalado, ejecute el siguiente comando para instalar Node.js en su sistema.

apt-get install nodejs -y

Una vez finalizada la instalación, verifique la versión de Node.js usando el siguiente comando:

node -v

Deberías obtener el siguiente resultado:

v12.22.1

A continuación, verifique la versión de NPM con el siguiente comando:

npm -v

Deberías obtener el siguiente resultado:

6.14.12

Instalar Nginx y MariaDB

A continuación, deberá instalar el servidor web Nginx y el servidor de base de datos MariaDB en su sistema. Puede instalar ambos paquetes con el siguiente comando:

apt-get install mariadb-server nginx -y

Una vez finalizada la instalación, asegure la instalación de MariaDB y configure la contraseña raíz de MariaDB con el siguiente comando:

mysql_secure_installation

Responda todas las preguntas para asegurar la instalación de MariaDB:

Enter current password for root (enter for none): 
Set root password? [Y/n] Y
New password: 
Re-enter new password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

A continuación, inicie sesión en MariaDB con el siguiente comando:

mysql -u root -p

Una vez que inicie sesión, cree una base de datos y un usuario para Ghost con el siguiente comando:

MariaDB [(none)]> CREATE DATABASE ghostdb;
MariaDB [(none)]> CREATE USER 'ghostuser'@'localhost' IDENTIFIED BY 'password';

A continuación, otorgue todos los privilegios a la base de datos de Ghost con el siguiente comando:

MariaDB [(none)]> GRANT ALL ON ghostdb.* TO 'ghostuser'@'localhost';

A continuación, elimine los privilegios y salga de MariaDB con el siguiente comando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Una vez que haya terminado, puede continuar con el siguiente paso.

Instalar CLI fantasma

A continuación, deberá instalar Ghost CLI para instalar y administrar Ghost. Puede instalarlo usando el NPM como se muestra a continuación:Publicidad

npm install -g [email protected]

Una vez instalado, verifique la versión instalada de Ghost CLI con el siguiente comando:

ghost version

Debería ver el siguiente resultado:

Ghost-CLI version: 1.16.3

Instalar fantasma

Primero, cree un usuario separado para Ghost con el siguiente comando:

adduser user1

A continuación, agregue user1 a sudo y www-data group con el siguiente comando:

adduser user1 sudo
adduser user1 www-data

A continuación, inicie sesión con usuario1 y cree un directorio para Ghost con el siguiente comando:

su - user1
sudo mkdir /var/www/ghost

A continuación, establezca el permiso y la propiedad adecuados con el siguiente comando:

sudo chown -R www-data:www-data /var/www/ghost
sudo chown -R www-data:www-data /var/www/
sudo chmod 775 /var/www/ghost
sudo setfacl -R -m u:user1:rwx /var/www/ghost/

A continuación, cambie el directorio a fantasma e instale la plataforma de blogs Ghost con el siguiente comando:

cd /var/www/ghost
ghost install

Se le pedirá que proporcione la URL de su blog, el nombre de la base de datos, el nombre de usuario, la contraseña y otra información, como se muestra a continuación:

? Enter your blog URL: https://ghost.linuxbuz.com
? Enter your MySQL hostname: localhost
? Enter your MySQL username: ghostuser
? Enter your MySQL password: [hidden]
? Enter your Ghost database name: ghostdb
? Configuring Ghost
? Setting up instance
+ sudo useradd --system --user-group ghost
+ sudo chown -R ghost:ghost /var/www/ghost/content
? Setting up "ghost" system user
? Setting up "ghost" mysql user [skipped]
? Do you wish to set up Nginx? Yes
+ sudo mv /tmp/ghost-linuxbuz-com/ghost.linuxbuz.com.conf /etc/nginx/sites-available/ghost.linuxbuz.com.conf
+ sudo ln -sf /etc/nginx/sites-available/ghost.linuxbuz.com.conf /etc/nginx/sites-enabled/ghost.linuxbuz.com.conf
+ sudo nginx -s reload
? Setting up SSL [skipped]
? Do you wish to set up Systemd? Yes
+ sudo mv /tmp/ghost-linuxbuz-com/ghost_ghost-linuxbuz-com.service /lib/systemd/system/ghost_ghost-linuxbuz-com.service
+ sudo systemctl daemon-reload
? Setting up Systemd
+ sudo systemctl is-active ghost_ghost-linuxbuz-com
? Do you want to start Ghost? (Y/n) 

En este punto, Ghost está instalado e iniciado.

Asegure Ghost con Let’s Encrypt SSL

A continuación, deberá proteger Ghost con Let’s Encrypt SSL.

Primero, instale el cliente Certbot con el siguiente comando:

sudo apt-get install certbot python3-certbot-nginx -y

Una vez instalado, ejecute el siguiente comando para descargar Let’s Encrypt SSL y configure Nginx para usar esos certificados:

sudo certbot --nginx -d ghost.linuxbuz.com

Se le pedirá que proporcione su dirección de correo electrónico y acepte el término del servicio como se muestra a continuación:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for ghost.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/ghost.linuxbuz.com.conf

A continuación, elija si desea redirigir o no el tráfico HTTP a HTTPS:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Escriba 2 y presione Enter para completar la instalación.

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/ghost.linuxbuz.com.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://ghost.linuxbuz.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=ghost.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/ghost.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/ghost.linuxbuz.com/privkey.pem
   Your cert will expire on 2021-07-13. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Ahora, puede verificar el sitio web de Ghost con el siguiente comando;

ghost ls

Debería ver el siguiente resultado:

+ sudo systemctl is-active ghost_ghost-linuxbuz-com
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? Name               ? Location       ? Version ? Status               ? URL                        ? Port ? Process Manager ?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? ghost-linuxbuz-com ? /var/www/ghost ? 4.2.1   ? running (production) ? https://ghost.linuxbuz.com ? 2368 ? systemd         ?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

También puede verificar el servicio Ghost con el siguiente comando:

sudo systemctl status ghost_ghost-linuxbuz-com

Debería ver el siguiente resultado:

? ghost_ghost-linuxbuz-com.service - Ghost systemd service for blog: ghost-linuxbuz-com
     Loaded: loaded (/lib/systemd/system/ghost_ghost-linuxbuz-com.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-04-14 07:05:33 UTC; 9min ago
       Docs: https://ghost.org/docs/
   Main PID: 7546 (node)
      Tasks: 22 (limit: 2353)
     Memory: 134.3M
     CGroup: /system.slice/ghost_ghost-linuxbuz-com.service
             ??7546 ghost run
             ??7590 /usr/bin/node current/index.js

Apr 14 07:13:44 ubuntu node[7590]: [2021-04-14 07:13:44] INFO "GET /ghost/assets/img/dashboard/start-membership-baafa2c6558d118ae59cb1fddab045>
Apr 14 07:13:44 ubuntu node[7590]: [2021-04-14 07:13:44] INFO "GET /ghost/assets/img/dashboard/the-browser-f5e7e199fe82d8435913e84d022fa7e1.pn>
Apr 14 07:13:44 ubuntu node[7590]: [2021-04-14 07:13:44] INFO "GET /ghost/assets/img/dashboard/join-community-bb5478f7dca6c04a2d0baf2b02f880fb>
Apr 14 07:13:44 ubuntu node[7590]: [2021-04-14 07:13:44] INFO "GET /ghost/api/canary/admin/members/?filter=status%3Apaid&order=created_at%20as>
Apr 14 07:14:11 ubuntu node[7590]: [2021-04-14 07:14:11] INFO "GET /" 200 475ms
Apr 14 07:14:11 ubuntu node[7590]: [2021-04-14 07:14:11] INFO "GET /" 200 480ms
Apr 14 07:14:15 ubuntu node[7590]: [2021-04-14 07:14:15] INFO "GET /members/api/site/" 200 12ms
Apr 14 07:14:18 ubuntu node[7590]: [2021-04-14 07:14:18] INFO "GET /" 304 142ms
Apr 14 07:14:25 ubuntu node[7590]: [2021-04-14 07:14:25] INFO "GET /members/api/site/" 304 4ms
Apr 14 07:14:26 ubuntu node[7590]: [2021-04-14 07:14:26] INFO "GET /members/api/member/" 401 4ms

Acceder a la interfaz de administración de Ghost

Ahora, abra su navegador web y acceda a la interfaz de administración de Ghost usando la URL https://ghost.linuxbuz.com/ghost/. Deberías ver la siguiente página:

Instalador de blogs fantasma

Haga clic en el Crea tu cuenta botón para crear su primera cuenta:

Crea tu cuenta

Proporcione los detalles de su cuenta y haga clic en el haré esto más tarde en la parte inferior de la pantalla. Debería ver la interfaz de administración de Ghost en la siguiente página:

Panel de CMS fantasma

También puede acceder a su sitio web de Ghost utilizando la URL https://ghost.linuxbuz.com/. Deberías ver la siguiente página:

Interfaz de CMS fantasma

Conclusión

¡Felicidades! ha instalado con éxito la plataforma de blogs Ghost en Ubuntu 20.04. Ahora puede crear y publicar su propio contenido desde la interfaz de Ghost.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *