GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar Drupal con Nginx y Lets Encrypt SSL en Ubuntu 20.04 LTS

Drupal es un sistema de administración de contenido gratuito y de código abierto que lo ayuda a crear y entregar contenido digital para la web y los teléfonos móviles. Está escrito en PHP y es utilizado por muchas organizaciones de todo el mundo. Con Drupal puedes crear diferentes tipos de sitios web, desde pequeños blogs hasta un gran sitio web corporativo. Ofrece una interfaz fácil de usar y potentes herramientas de edición para administrar contenido.

En este tutorial, le mostraremos cómo instalar Drupal con Nginx y asegurarlo con Let's Encrypt SSL en Ubuntu 20.04.

Requisitos

  • Un servidor con Ubuntu 20.04.
  • Un nombre de dominio válido apuntado con su servidor.
  • Se ha configurado una contraseña raíz en su servidor.

Instalar servidor LEMP

Primero, deberá instalar el servidor web Nginx, la base de datos MariaDB, PHP y otras extensiones necesarias en su servidor. Puede instalarlos todos usando el siguiente comando:

apt-get install nginx mariadb-server php7.4 php7.4-fpm php7.4-common php7.4-mysql php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip -y

Una vez que todos los paquetes estén instalados, edite el archivo php.ini y modifique algunas configuraciones:

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

Cambie las siguientes líneas:

short_open_tag = On 
cgi.fix_pathinfo=0
memory_limit = 256M
upload_max_filesize = 100M
max_execution_time = 300
date.timezone = America/Chicago

Guarde y cierre el archivo cuando haya terminado.

Configurar base de datos MariaDB

Primero, 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 como se muestra a continuación:

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

Una vez que MariaDB esté protegida, inicie sesión en el shell de MariaDB con el siguiente comando:

mysql -u root -p

Proporcione su contraseña raíz de MariaDB y luego cree una base de datos y un usuario para Drupal:

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

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

MariaDB [(none)]> GRANT ALL ON drupaldb.* TO 'drupal'@'localhost' WITH GRANT OPTION;

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

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

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

Descargar Drupal

Al momento de escribir este tutorial, la última versión de Drupal es 8.8.5. Puede descargarlo en el directorio raíz web de Nginx con el siguiente comando:

cd /var/www/html/
wget https://ftp.drupal.org/files/projects/drupal-8.8.5.tar.gz

Una vez que se complete la descarga, extraiga el archivo descargado con el siguiente comando:

tar -xvzf drupal-8.8.5.tar.gz

A continuación, cambie el nombre del directorio extraído a drupal y otorgue los permisos adecuados con el siguiente comando:

mv drupal-8.8.5 drupal
chown -R www-data:www-data drupal
chmod -R 755 drupal

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

Configurar Nginx para Drupal

A continuación, cree un archivo de configuración de host virtual Nginx para Drupal con el siguiente comando:

nano /etc/nginx/sites-available/drupal

Agregue las siguientes líneas:

server {
    listen 80;
    listen [::]:80;
    root /var/www/html/drupal;
    index  index.php index.html index.htm;
    server_name  drupal.linuxbuz.com;

    client_max_body_size 100M;
    autoindex off;

    location ~ \..*/.*\.php$ {
        return 403;
    }

    location ~ ^/sites/.*/private/ {
        return 403;
    }

    # Block access to scripts in site files directory
    location ~ ^/sites/[^/]+/files/.*\.php$ {
        deny all;
    }

    location ~ (^|/)\. {
        return 403;
    }

    location / {
        try_files $uri /index.php?$query_string;
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

    # Don't allow direct access to PHP files in the vendor directory.
    location ~ /vendor/.*\.php$ {
        deny all;
        return 404;
    }

    location ~ '\.php$|^/update.php' {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
        try_files $uri @rewrite;
    }
    location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
        try_files $uri /index.php?$query_string;
    }
}

Guarde y cierre el archivo, luego cree un enlace simbólico al directorio habilitado para sitios:

ln -s /etc/nginx/sites-available/drupal /etc/nginx/sites-enabled/

A continuación, establezca hash_bucket_size en el archivo de configuración predeterminado de Nginx:

nano /etc/nginx/nginx.conf

Agregue la siguiente línea debajo de "http {/strong> "

    server_names_hash_bucket_size 64;

Guarde y cierre el archivo, luego verifique el Nginx para ver si hay algún error de sintaxis:

nginx -t

Deberías obtener el siguiente resultado:

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

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

systemctl restart nginx

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

Asegure Drupal con Let's Encrypt SSL

Se recomienda proteger Drupal con Let's Encrypt SSL. Primero, agregue el repositorio de Certbot con el siguiente comando:

add-apt-repository ppa:ahasenack/certbot-tlssni01-1875471

A continuación, actualice el repositorio e instale el cliente Certbot con el siguiente comando:

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

Una vez que el cliente de Certbot esté instalado, ejecute el siguiente comando para descargar e instalar Let's Encrypt SSL para su sitio web:

certbot --nginx -d drupal.linuxbuz.com

Se le pedirá que proporcione su correo electrónico válido 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 drupal.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/drupal

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

Tipo 2 y pulsa Intro para finalizar la instalación:

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/drupal

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

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

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/drupal.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/drupal.linuxbuz.com/privkey.pem
   Your cert will expire on 2020-08-12. 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"
 - 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

En este punto, su sitio web de Drupal está protegido con Let's Encrypt SSL.

Acceso al asistente de instalación web de Drupal

Ahora, abra su navegador web y escriba la URL https://drupal.linuxbuz.com. Será redirigido a la página de selección de idioma de Drupal:

Seleccione el idioma deseado y haga clic en Guardar y continuar botón. Debería ver la página de perfil de instalación:

Seleccione el perfil de instalación deseado y haga clic en Guardar y continuar botón. Debería ver la página de configuración de la base de datos:

Haga clic en Guardar y continuar botón. Debería ver la página Configuración del sitio:

Proporcione su nombre de sitio, nombre de usuario de administrador, contraseña y haga clic en Guardar y continuar botón. Se le redirigirá al panel predeterminado de Drupal en la siguiente página:

Conclusión

¡Felicidades! Ha instalado y asegurado correctamente Drupal con Let's Encrypt SSL en Ubuntu 20.04. Ahora puede comenzar a personalizar su sitio web de Drupal. Para obtener más información, visite la documentación oficial de Drupal.


Ubuntu
  1. Cómo instalar Nextcloud con Nginx y Lets Encrypt SSL en Ubuntu 20.04 LTS

  2. Cómo instalar Magento 2 con Nginx y Lets Encrypt SSL en Ubuntu 20.04 LTS

  3. Cómo instalar Seafile con Nginx en Ubuntu 20.04 LTS

  4. Cómo instalar Drupal 8 con Nginx, PHP-FPM y SSL en Ubuntu 15.10

  5. Cómo instalar Drupal 8.1 con Nginx, PHP-FPM y SSL en Ubuntu 16.04

Cómo instalar NodeBB Forum con Nginx y Lets Encrypt SSL en Ubuntu 20.04 LTS

Cómo instalar Moodle con Nginx y Lets Encrypt SSL en Ubuntu 20.04

Cómo instalar MediaWiki con Nginx y Lets Encrypt SSL en Ubuntu 20.04

Cómo instalar Gitea con Nginx y Lets Encrypt SSL gratis en Ubuntu 20.04

Cómo instalar Let's Encrypt SSL con Nginx en Ubuntu 16.04 LTS

Cómo instalar Nginx con Let's Encrypt SSL en Ubuntu 20.04 LTS