- Inicie sesión para enviar comentarios
Hoy en día es impensable que una empresa, por más pequeña que sea, no quiera posicionarse en internet, con el objetivo de darse a conocer y ampliar su mercado. Pero las motivaciones pueden ser otras: cualquier persona lo podría hacer independientemente de su objetivo ya que el internet abarca a miles de millones de personas.
Para este propósito, una solución que está presente desde los orígenes del internet son las conocidas páginas web, que en su momento se desarrollaban y construían sitios web página a página. En cambio ahora existen los llamados sistemas de administración de contenidos (CMS por sus siglas en inglés) que facilitan el despliegue de un sitio web funcional en internet en poco tiempo y sin demasiado esfuerzo orientados a que los conocimientos de programación no sea una limitante.
En cuanto a la seguridad de estos gestores dependerá de una adecuada configuración que se le de. Por ejemplo uso de contraseñas robustas, añadir funcionalidades antispam, bloqueo ante intentos fallidos de inicio de sesión, y lo más importante, estar al día con las actualizaciones de seguridad.
A continuación se describirá paso a paso la instalación de Drupal en la versión 8, destacando que drupal es uno de los administradores de contenidos más populares, la instalación se realizará en un servidor Linux Debian 8 con el siguiente software:
- Gestor de Base de Datos Mysql
- Servidor web Apache2 con módulos (rewrite y ssl)
- PHP5 con extensiones (php5-gd y php5-mysql)
- Un usuario normal con privilegios sudo para instalar mysql, apache2, php5
Acciones previas
$ sudo apt-get update $ sudo apt-get upgrade
Instalación de mysql
$ sudo apt-get install mysql-server
Durante la instalación deberá proporcionar la contraseña para el usuario administrador root de mysql.
Finalizada la instalación, crear la base de datos para el sitio web. Por ejemplo paginawebdb y usuario usuarioweb.
$ mysql -u root -p Enter password: mysql> CREATE DATABASE misitioweb; mysql> CREATE USER 'usuariowebdb'@'localhost' IDENTIFIED BY 'usuariowebdb';GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, CREATE VIEW, EVENT, TRIGGER, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON `misitioweb`.* TO 'usuariowebdb'@'localhost' IDENTIFIED BY 'usuariowebdb' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0; mysql> exit
NOTA. Los nombres de la base de datos, usuario y contraseña en un ambiente de producción cambiarán.
Instalación de php
$ sudo apt-get install php5 php5-gd php5-mysql
Instalación de apache
Instalar de apache2 y habilitar el módulo rewrite y ssl.
$ sudo apt-get install apache2 $ sudo a2enmod rewrite ssl $ sudo service apache2 restart
Agregar el usuario actual al grupo www-data de apache2.
$ sudo usermod -G www-data {USUARIO}
Obtener archivos de instalación
Descargar la versión mas reciente de drupal desde https://www.drupal.org/project/drupal/releases/ , la versión para la presente guía es la 8.2.6
$ cd /var/www $ sudo wget https://ftp.drupal.org/files/projects/drupal-8.2.6.tar.gz
Descomprimir archivos del sitio
$ sudo tar xvzf drupal-8.2.6.tar.gz $ sudo mv drupal-8.2.6 sitio $ sudo rm -f drupal-8.2.6.tar.gz
Cambiar de propietario al usuario actual (usuario) a la carpeta sitio.
$ sudo chown {usuario_actual} sitio $ cd sitio
Ingresar a la carpeta sitio/web/sites/default y cambiar los permisos y propietario a la carpeta files
$ cd web/sites/default $ chmod 0777 files $ chmod -R 0775 files/* $ sudo chown -R www-data:www-data files/*
Configurar el virtualhost para el sitio
En el directorio /etc/apache2/sites-available, crear por ejemplo el archivo misitioweb.conf
$ cd /etc/apache2/sites-available $ sudo touch misitioweb.conf
Editar el archivo sitio.conf con el siguiente contenido
<VirtualHost *:80> ServerName www.misitioweb.com ServerAlias misitioweb.com DocumentRoot /var/www/sitio/web ErrorLog ${APACHE_LOG_DIR}/error-misitioweb.log CustomLog ${APACHE_LOG_DIR}/access-misitioweb.log combined <directory /var/www/sitio/web> AllowOverride All </directory> </VirtualHost>
Crear los archivos log en el directorio de logs de apache
$ sudo touch /var/log/apache2/error-misitioweb.log $ sudo touch /var/log/apache2/access-misitioweb.log
Habilitar el sitio misitioweb.conf
$ sudo a2ensite misitioweb.conf $ sudo service apache2 reload
Configuración del sitio para https, crear por ejemplo el archivo misitioweb-ssl.conf en el directorio /etc/apache2/sites-available
La configuración que se muestra aquí son para ambientes de prueba, para un entorno de producción es recomendable generar certificados gratuitos de LetsEncrypt.
$ cd /etc/apache2/sites-available $ sudo touch misitioweb-ssl.conf
Editar el archivo misitioweb-ssl.conf y agregar el siguiente contenido
<IfModule mod_ssl.c> <VirtualHost _default_:443> DocumentRoot /var/www/sitio/web LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error-misitioweb.log CustomLog ${APACHE_LOG_DIR}/access-misitioweb.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/misitioweb.pem SSLCertificateKeyFile /etc/ssl/certs/misitioweb.key <directory /var/www/sitio/web> AllowOverride All </directory> </virtualhost> </IfModule>
Generar la solicitud de certificado
$ sudo openssl genrsa -out /etc/ssl/certs/misitioweb.key 1024 $ sudo openssl req -new -key /etc/ssl/certs/misitioweb.key -out /etc/ssl/certs/misitioweb.csr
Completar información para el certificado; nombre de la compañía, nombre del país, etc.
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:BO to be sent with your certificate request A challenge password []: An optional company name []:
Generar el certificado autofirmado
$ sudo openssl x509 -req -days 90 -in /etc/ssl/certs/misitioweb.csr -signkey /etc/ssl/certs/misitioweb.key -out /etc/ssl/certs/misitioweb.pem
Habilitar el sitio con https
$ sudo a2ensite misitioweb-ssl.conf $ sudo service apache2 reload
Instalación del sitio
Acceder desde un navegador al sitio www.misitioweb.com, para ello es posible que deba configurar el archivo /etc/hosts desde la máquina que tiene instalado un navegador, con el siguiente contenido:
IP_SERVIDOR www.misitioweb.com
Al ingresar se mostrará la pantalla de instalación del sitio:

Seleccionar Español como idioma de instalación, guardar y continuar

Seleccionar Standar como perfil de instalación, guardar y continuar

Configuración de la base de datos. Ingresar el nombre de la base de datos, usuario y contraseña anteriormente establecido:
- Nombre de la base de datos: misitioweb
- Nombre de usuario de la base de datos: usuariowebdb
- Contraseña de la base de datos: usuariowebdb
En opciones avanzadas dejar los datos por defecto. Guardar y continuar.

A continuación ingresar la información del sitio:
- Nombre del sitio
- Dirección de correo electrónico del sitio
- Nombre de usuario (Este no debe ser identificativo, mala idea usar admin, administrador o algo parecido)
- Contraseña (Drupal te indicará cuan robusta es la contraseña)
Continuar con el paso siguiente

Al momento de finalizar la instalación, se muestrará una advertencia en color naranja, para solucionar esto se debe cambiar los permisos de escritura del directorio sites/default y el archivo sites/default/settings.php.
Adicionalmente se debe establecer el host de confianza www.misitioweb.gob.bo en el archivo sites/default/settings.php para mitigar ataques HTTP HOST Header. Para ello abrir el archivo
$ nano /var/www/sitio/web/sites/default/settings.php
Buscar el bloque de comentario donde aparece la palabra Trusted host configuration y al final del bloque agregar:
$settings['trusted_host_patterns'] = array( '^www.misitioweb.com$', );
Guardar el archivo con las modificaciones realizadas.
Finalmente Cambiar los permisos de escritura del directorio sites/default y el archivo sites/default/settings.php
$ chmod u-w /var/www/sitio/web/sites/default $ chmod ugo-w /var/www/sitio/web/sites/default/settings.php
Visitar el sitio instalado

Ver el informe de estado sobre las operaciones del sitio (Menú: Administrar >> Informes >> Informe de estado) para verificar que no haya mensajes de advertencia sobre posibles problemas durante la instalación.

Con esto se tiene un sitio drupal instalado y listo para configurar módulos adicionales acorde a las funcionalidades que uno requiera.