Cómo instalar Craft CMS con Nginx en Debian 11

Craft CMS es un sistema de gestión de contenidos gratuito y de código abierto escrito en PHP y basado en el framework Yii. Es un CMS seguro y escalable que ofrece muchos plugins que te ayudan a personalizar tu sitio web fácilmente. Te permite crear tu contenido y estructurar los datos de tu aplicación con control sobre todo, incluido tu propio HTML. Es una plataforma CMS sencilla, ligera y fácil de usar que permite a los propietarios de sitios web colaborar y automatizar experiencias atractivas con los usuarios a través de múltiples dispositivos.

Este post te mostrará cómo instalar Craft CMS con Nginx y Let’s Encrypt SSL en Debian 11.

Requisitos previos

  • Un servidor con Debian 11.
  • Un nombre de dominio válido apuntado con la IP del servidor.
  • Una contraseña de root configurada en el servidor.

Instalar Nginx, MariaDB y PHP

En primer lugar, vamos a instalar el servidor web Apache, el servidor MariaDB, PHP y otras extensiones PHP necesarias:

apt-get install nginx mariadb-server php php-cli php-fpm php-common php-curl php-gd php-imagick php-json php-mbstring php-mysql php-pgsql php-zip php-intl php-xml sudo curl -y

Una vez instalados todos los paquetes, edita el archivo php.ini con el siguiente comando:

nano /etc/php/7.4/fpm/php.ini

Cambia los siguientes ajustes:

memory_limit = 512M
post_max_size = 32M
upload_max_filesize = 32M
date.timezone = Asia/Kolkata

Guarda y cierra el archivo y reinicia el servicio PHP-FPM para aplicar los cambios:

systemctl restart php7.4-fpm

Crear una base de datos para Craft CMS

A continuación, tendrás que crear una base de datos y un usuario para Craft CMS. Para ello, inicia sesión en el shell de MySQL con el siguiente comando:

mysql

Una vez que hayas iniciado sesión, crea una base de datos y un usuario con el siguiente comando:

MariaDB [(none)]> CREATE DATABASE craftdb;
MariaDB [(none)]> GRANT ALL ON craftdb.* TO 'craftuser' IDENTIFIED BY 'password';

A continuación, vacía los privilegios y sal del shell MariaDB con el siguiente comando:

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

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar Composer

Composer es un gestor de dependencias para PHP que se utiliza para instalar las dependencias necesarias para tu proyecto PHP. Puedes instalar Composer con el siguiente comando:

curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Deberías ver la siguiente salida:

All settings correct for using Composer
Downloading...

Composer (version 2.1.8) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Una vez completada la instalación, verifica la versión de COmposer utilizando el siguiente comando:

composer --version

Deberías ver la siguiente salida:

Composer version 2.1.8 2021-09-15 13:55:14

Instalar Craft CMS

A continuación, tendrás que instalar el Craft CMS utilizando Composer. En primer lugar, cambia la propiedad del directorio raíz por defecto de Nginx a www-data:

chown -R www-data:www-data /var/www/html

A continuación, navega al directorio /var/www/html e instala el Craft CMS utilizando el siguiente comando:

cd /var/www/html
sudo -u www-data composer create-project craftcms/craft craftcms

Se te pedirá que proporciones tus credenciales de la base de datos, el nombre de usuario admin, la contraseña y la URL del sitio web, como se muestra a continuación:

> @php craft setup/welcome

   ______ .______          ___       _______ .___________.
  /      ||   _  \        /   \     |   ____||           |
 |  ,----'|  |_)  |      /  ^  \    |  |__   `---|  |----`
 |  |     |      /      /  /_\  \   |   __|      |  |
 |  `----.|  |\  \----./  _____  \  |  |         |  |
  \______|| _| `._____/__/     \__\ |__|         |__|
 
     A       N   E   W       I   N   S   T   A   L   L
               ______ .___  ___.      _______.
              /      ||   \/   |     /       |
             |  ,----'|  \  /  |    |   (----`
             |  |     |  |\/|  |     \   \
             |  `----.|  |  |  | .----)   |
              \______||__|  |__| |_______/


Generating an application ID ... done (CraftCMS--286d40e5-ec80-49e0-b64b-13bb7870375e)
Generating a security key ... done (5k8ygP059NnCLeTZvxRily-R4Wect6tY)

Welcome to Craft CMS!

Are you ready to begin the setup? (yes|no) [no]:yes
Generating an application ID ... done (CraftCMS--37ec6cd5-fde9-4b09-b2e8-1ad29edd4142)

Which database driver are you using? [mysql,pgsql,?]: mysql
Database server name or IP address: [127.0.0.1] 
Database port: [3306] 
Database username: [root] craftuser
Database password: 
Database name: craftdb
Database table prefix: 
Testing database credentials ... success!
Saving database credentials to your .env file ... done

Install Craft now? (yes|no) [yes]:yes

Username: [admin] 
Email: [email protected]
Password: 
Confirm: 
Site name: Craft Site
Site URL: https://craftcms.example.com                                                 
Site language: [en-US] 

Una vez instalado el Craft CMS, establece la propiedad adecuada al directorio craftcms:

chown -R www-data:www-data /var/www/html/craftcms

Configurar Nginx para Craft CMS

A continuación, tendrás que crear un archivo de configuración de host virtual Nginx para servir a Craft CMS. Puedes crearlo utilizando el siguiente comando:

nano /etc/nginx/conf.d/craftcms.conf

Añade las siguientes líneas:

server {
listen 80;
 server_name craftcms.example.com;
 root /var/www/html/craftcms/web;
 index index.php;
 location / {
  try_files $uri/index.html $uri $uri/ /index.php?$query_string;
  }
 location ~ [^/]\.php(/|$) {
  try_files $uri $uri/ /index.php?$query_string;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
  fastcgi_index index.php;
  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_param PATH_INFO $fastcgi_path_info;
  fastcgi_param HTTP_PROXY "";
 }
}

Guarda y cierra el archivo y luego comprueba si Nginx tiene algún error de sintaxis utilizando el siguiente comando:

nginx -t

Deberías ver la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, recarga el servicio Nginx para aplicar los cambios:

systemctl reload nginx

Para comprobar el estado de Nginx, ejecuta el siguiente comando:

systemctl status nginx

Deberías ver la siguiente salida:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-09-26 02:24:40 UTC; 6s ago
       Docs: man:nginx(8)
    Process: 370207 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 370208 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 370209 (nginx)
      Tasks: 5 (limit: 9510)
     Memory: 4.7M
        CPU: 53ms
     CGroup: /system.slice/nginx.service
             ??370209 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??370210 nginx: worker process
             ??370211 nginx: worker process
             ??370212 nginx: worker process
             ??370213 nginx: worker process

Sep 26 02:24:40 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Sep 26 02:24:40 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

Asegura Craft CMS con Let’s Encrypt SSL

A continuación, tendrás que instalar el paquete cliente Certbot para instalar y gestionar Let’s Encrypt SSL.

Primero, instala el Certbot con el siguiente comando:

apt-get install python3-certbot-nginx -y

Una vez finalizada la instalación, ejecuta el siguiente comando para instalar el SSL de Let’s Encrypt en tu sitio web:

certbot --nginx -d craftcms.example.com

Se te pedirá que proporciones una dirección de correo electrónico válida y que aceptes las condiciones 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 craftcms.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/craftcms.conf

A continuación, elige si deseas o no redirigir el tráfico HTTP a HTTPS como se muestra a continuación:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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

Escribe 2 y pulsa Intro para finalizar la instalación. Deberías ver el siguiente resultado:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/craftcms.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://craftcms.example.com

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

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/craftcms.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/craftcms.example.com/privkey.pem
   Your cert will expire on 2022-05-26. 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

 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

Acceder a Craft CMS

Ahora, abre tu navegador web y accede al Craft CMS utilizando la URL https://craftcms.example.com. Deberías ver la siguiente pantalla:

Haz clic en Ir a tu panel de control. Deberías ver la página de acceso a Craft CMS:

Proporciona tus credenciales de inicio de sesión y haz clic en el botón Iniciar sesión. Deberías ver el panel de control de Craft CMS en la siguiente pantalla:

Conclusión

Enhorabuena! has instalado con éxito CraftCMS con Nginx y Let’s Encrypt SSL en Debian 11. Ahora puedes crear tu sitio web fácilmente desde el panel de control de Craft CMS. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...