GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar Drupal en Ubuntu 18.04

Drupal es una de las plataformas CMS de código abierto más populares del mundo. Está escrito en PHP y se puede utilizar para crear diferentes tipos de sitios web, desde pequeños blogs personales hasta grandes sitios corporativos, políticos y gubernamentales.

En este tutorial, le mostraremos cómo instalar Drupal 8.6 en una máquina con Ubuntu 18.04. Hay varias formas de instalar Drupal. Este tutorial cubre los pasos necesarios para instalar Drupal 8.6 usando una plantilla de compositor para proyectos de Drupal llamada drupal-project.

Usaremos Nginx como servidor web, el último PHP 7.2 y MySQL/MariaDB como servidor de base de datos.

Requisitos previos #

Asegúrese de cumplir con los siguientes requisitos previos antes de continuar con este tutorial:

  • Tiene un nombre de dominio que apunta a la IP de su servidor público. Usaremos example.com .
  • Ha instalado Nginx siguiendo estas instrucciones.
  • Tienes un certificado SSL instalado para tu dominio. Puede instalar un certificado SSL gratuito de Let's Encrypt siguiendo estas instrucciones.

Antes de comenzar #

Actualice el índice de paquetes y los paquetes del sistema a las últimas versiones:

sudo apt update && sudo apt upgrade

1. Crear una base de datos MySQL #

Si tiene instalado MySQL o MariaDB en su servidor, puede omitir este paso; si no, puede instalar el paquete del servidor MySQL 5.7 desde los repositorios predeterminados de Ubuntu escribiendo:

sudo apt install mysql-server
Para instalaciones nuevas de MySQL, se recomienda ejecutar mysql_secure_installation comando para mejorar la seguridad de su servidor MySQL.

Ahora necesitamos iniciar sesión en el shell de MySQL y crear una nueva base de datos y cuenta de usuario y otorgar al usuario los permisos de concesión apropiados.

Para iniciar sesión en el shell de MySQL, escriba el siguiente comando e ingrese la contraseña cuando se le solicite:

mysql -u root -p

Para crear una base de datos llamada drupal , usuario llamado drupaluser y para otorgar los permisos necesarios al usuario ejecute los siguientes comandos:

CREATE DATABASE drupal CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupal.* TO 'drupaluser'@'localhost' IDENTIFIED BY 'change-with-strong-password';

2. Instalar PHP #

PHP 7.2, que es la versión predeterminada de PHP en Ubuntu 18.04, es totalmente compatible y se recomienda para Drupal 8.6. Como usaremos Nginx como servidor web, también instalaremos PHP-FPM.

Para instalar todos los módulos PHP necesarios, ejecute el siguiente comando:

sudo apt install php7.2-cli php7.2-fpm php7.2-mysql php7.2-json php7.2-opcache php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl

El servicio PHP-FPM se iniciará automáticamente después de que se complete el proceso de instalación, puede verificarlo imprimiendo el estado del servicio:

systemctl status php7.2-fpm

El resultado debe indicar que el servicio fpm está activo y ejecutándose.

● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-05-19 19:54:13 UTC; 9h ago
     Docs: man:php-fpm7.2(8)
 Main PID: 17781 (php-fpm7.2)
   Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 3 (limit: 507)
   CGroup: /system.slice/php7.2-fpm.service
           ├─17781 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
           ├─17796 php-fpm: pool www
           └─17797 php-fpm: pool www

3. Instalar Compositor #

Composer es un administrador de dependencias para PHP y lo usaremos para descargar la plantilla de Drupal e instalar todos los componentes de Drupal necesarios.

Para instalar composer globalmente, descargue el instalador de Composer con curl y mueva el archivo a /usr/local/bin directorio:

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

Verifique la instalación imprimiendo la versión del compositor:

composer --version

La salida debería verse así:

Composer version 1.6.5 2018-05-04 11:44:59

4. Instale Drupal #

Ahora que tenemos Composer instalado, podemos continuar y crear un nuevo proyecto de Drupal usando la plantilla Composer dentro de /var/www/my_drupal directorio:

sudo composer create-project drupal-composer/drupal-project:8.x-dev /var/www/my_drupal --stability dev --no-interaction

El comando anterior descargará la plantilla, buscará todos los paquetes php necesarios y ejecutará algunos scripts para preparar nuestro proyecto para la instalación. El proceso puede tardar unos minutos y, si tiene éxito, el final de la salida debería tener el siguiente aspecto:

Create a sites/default/settings.php file with chmod 0666
Create a sites/default/files directory with chmod 0777

El siguiente paso es instalar Drupal usando Drush. En el siguiente comando, estamos pasando la base de datos MySQL y la información del usuario creada en el paso 1:

cd /var/www/my_drupalsudo vendor/bin/drush site-install --db-url=mysql://drupaluser:change-with-strong-password@localhost/drupal

El instalador le mostrará el siguiente mensaje, simplemente presione Intro para continuar.

You are about to DROP all tables in your 'drupal' database. Do you want to continue? (yes/no) [yes]:

Una vez que se complete la instalación, el script imprimirá el nombre de usuario y la contraseña administrativos. La salida debería ser similar a la siguiente:

[notice] Starting Drupal installation. This takes a while. Consider using the --notify global option.
[success] Installation complete.  User name: admin  User password: XRkC9Q5WN9

Finalmente, debemos establecer los permisos correctos para que el servidor web pueda tener acceso completo a los archivos y directorios del sitio. Tanto Nginx como PHP se ejecutan como www-data usuario y www-data grupo, por lo que debemos emitir el siguiente comando:

sudo chown -R www-data: /var/www/my_drupal

5. Configurar Nginx #

A estas alturas, ya debería tener Nginx con certificado SSL instalado en su sistema, si no, verifique los requisitos previos para este tutorial.

Para crear un nuevo bloque de servidor para nuestro nuevo proyecto Drupal, usaremos la receta de Nginx del sitio oficial de Nginx.

Abre tu editor de texto y crea el siguiente archivo:

sudo nano /etc/nginx/sites-available/example.com
/etc/nginx/sites-available/example.com
# Redirect HTTP -> HTTPS
server {
    listen 80;
    server_name www.example.com example.com;

    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}

# Redirect WWW -> NON WWW
server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    root /var/www/my_drupal/web;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    # log files
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

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

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

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

    # Block access to "hidden" files and directories whose names begin with a
    # period. This includes directories used by version control systems such
    # as Subversion or Git to store control files.
    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' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        include fastcgi_params;
        # Block httpoxy attacks. See https://httpoxy.org/.
        fastcgi_param HTTP_PROXY "";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }

    # Fighting with Styles? This little gem is amazing.
    # location ~ ^/sites/.*/files/imagecache/ { # For Drupal <= 6
    location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
        try_files $uri @rewrite;
    }

    # Handle private files through Drupal. Private file's path can come
    # with a language prefix.
    location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
        try_files $uri /index.php?$query_string;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        try_files $uri @rewrite;
        expires max;
        log_not_found off;
    }

}
No olvide reemplazar example.com con su dominio de Drupal y establezca la ruta correcta a los archivos del certificado SSL. Todas las solicitudes HTTP se redirigirán a HTTPS. Los fragmentos utilizados en esta configuración se crean en esta guía.

Habilite el bloqueo del servidor creando un enlace simbólico al sites-enabled directorio:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Antes de reiniciar el servicio Nginx, haga una prueba para asegurarse de que no haya errores de sintaxis:

sudo nginx -t

Si no hay errores, la salida debería verse así:

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

Finalmente, reinicie el servicio Nginx escribiendo:

sudo systemctl restart nginx

6. Probar la instalación #

Abra su navegador, escriba su dominio y suponiendo que la instalación sea exitosa, aparecerá una pantalla similar a la siguiente:

Puede iniciar sesión como administrador y comenzar a personalizar su nueva instalación de Drupal.

7. Instalar módulos y temas de Drupal #

Ahora que tiene instalado su proyecto Drupal, querrá instalar algunos módulos y temas. Los módulos y temas de Drupal están alojados en un repositorio de compositor personalizado, que drupal-project configura para nosotros de manera inmediata.

Para instalar un módulo o un tema, todo lo que necesita hacer es cd al directorio del proyecto y escriba composer require drupal/module_or_theme_name . Por ejemplo, si queremos instalar Pathautomodule, debemos ejecutar el siguiente comando:

cd /var/www/my_drupalsudo -u www-data composer require drupal/pathauto
Anteponiendo sudo -u www-data estamos ejecutando el comando como usuario www-data
Using version ^1.3 for drupal/pathauto
./composer.json has been updated
> DrupalProject\composer\ScriptHandler::checkComposerVersion
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
  - Installing drupal/token (1.5.0): Downloading (100%)         
  - Installing drupal/ctools (3.2.0): Downloading (100%)         
  - Installing drupal/pathauto (1.3.0): Downloading (100%)         
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating autoload files
> DrupalProject\composer\ScriptHandler::createRequiredFiles

Como puede ver en el resultado anterior, Composer también instala todas las dependencias del paquete por nosotros.

8. Actualice el núcleo de Drupal #

Antes de actualizar, siempre es una buena idea hacer una copia de seguridad de sus archivos y base de datos. Puede usar el módulo Copia de seguridad y migración o hacer una copia de seguridad manual de su base de datos y archivos.

Para hacer una copia de seguridad de los archivos de instalación, puede usar el siguiente comando rsync, por supuesto, deberá usar la ruta correcta al directorio de instalación:

sudo rsync -a /var/www/my_drupal/  /var/www/my_drupal_$(date +%F)

Para hacer una copia de seguridad de la base de datos, podemos usar el estándar mysqldump comando:

mysqldump -u root -p > /var/www/my_drupal_database_$(date +%F).sql

o drush sql-dump :

cd /var/www/my_drupalvendor/bin/drush sql-dump > /var/www/my_drupal_database_$(date +%F).sql

Ahora que creamos una copia de seguridad, podemos continuar y actualizar todos los archivos principales de Drupal ejecutando el siguiente comando:

sudo -u www-data composer update drupal/core webflo/drupal-core-require-dev symfony/* --with-dependencies

Ubuntu
  1. Cómo instalar Drupal 7 en Ubuntu 14.04

  2. Cómo instalar Drupal en Ubuntu 16.04

  3. Cómo instalar R en Ubuntu 16.04

  4. Cómo instalar Go en Ubuntu 18.04

  5. Cómo instalar Drupal en Ubuntu 18.04

Cómo instalar Drupal en Ubuntu 16.04

Cómo instalar Drupal en Ubuntu 18.04 LTS

Cómo instalar Drupal en Ubuntu 20.04 LTS

Cómo instalar Go en Ubuntu 20.04

Cómo instalar Go en Ubuntu 22.04

Cómo instalar Drupal 9 en Ubuntu 20.04