Posts Instalación local de un CMS PHP
Post
Cancel

Instalación local de un CMS PHP

Tarea 1: Instalación de un servidor LAMP

Creamos una instancia de vagrant basado en un box debian buster

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
  # The most common configuration options are documented and commented below.
  # For a complete reference, please see the online documentation at
  # https://docs.vagrantup.com.

  # Every Vagrant development environment requires a box. You can search for
  # boxes at https://vagrantcloud.com/search.
  config.vm.box = "debian/buster64" 
  config.vm.hostname = "lamp" 
  config.vm.network :public_network,:bridge=>"wlan0" 
end

Paso 1: Actualizamos el sistema

1
sudo apt update && sudo apt -y upgrade

Paso 2: Instalamos MariaDB

1
sudo apt install -y mariadb-server mariadb-client

Paso 3: Instalamos Apache:

1
sudo apt install -y apache2 apache2-utils

Paso 4: Instalamos PHP

1
sudo apt install php libapache2-mod-php php-cli php-fpm php-json php-pdo php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath

Habilitamos el módulo Apache si aún no está habilitado.

1
sudo a2enmod php7.3

Creamos un ejemplo para probar la instalación de la pila

1
echo "<? php phpinfo ();?>" | sudo tee /var/www/html/phpinfo.php

Tarea 2: Instalación de drupal en mi servidor local

  • Configura el servidor web con virtual hosting para que el CMS sea accesible desde la dirección: www.nombrealumno-drupal.org.

Primero instalamos drupal con:

1
wget https://ftp.drupal.org/files/projects/drupal-8.7.8.zip

Creamos un nuevo fichero en /etc/apache2/sites-available/

1
vagrant@lamp:/etc/apache2/sites-available$ sudo cp 000-default.conf drupal.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
vagrant@lamp:/etc/apache2/sites-available$ sudo nano drupal.conf

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.

        ServerName www.ernesto-drupal.org

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/drupal

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
1
sudo a2ensite drupal.conf

Copiamos drupal a /var/www/drupal

1
vagrant@lamp:~$ sudo mv drupal-8.7.8 /var/www/drupal

Reiniciamos los servicios de apache2 y entramos en www.ernesto-drupal.org y configuramos

1
vagrant@lamp:~$ sudo systemctl restart apache2

Configuraciones para el pleno funcionamiento:

1
2
3
4
5
6
7
cd /var/www/drupal/
cd ..
sudo chmod o+w sites/default
sudo nano ./sites/default/default.settings.php
sudo cp ./sites/default/default.settings.php ./sites/default/settings.php
sudo chmod 777 settings.php
sudo chmod 777 files/

  • Crea un usuario en la base de datos para trabajar con la base de datos donde se van a guardar los datos del CMS.
1
2
3
4
5
6
7
8
9
10
11
CREATE DATABASE basedrupal;

use basedrupal;

CREATE USER 'ernesto'@'localhost' IDENTIFIED BY 'ernesto';

GRANT ALL PRIVILEGES ON basedrupal to 'ernesto'@'localhost';

FLUSH PRIVILEGES;

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON basedrupal.* TO 'ernesto'@'localhost' IDENTIFIED BY 'ernesto';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vagrant@lamp:~$ mysql -u ernesto -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 21
Server version: 10.3.17-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use basedrupal
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

MariaDB [basedrupal]> 

He tenido que añadir la siguiente linea para tener permisos en drupal:

1
2
3
4
5
6
7
8
9
root@lamp:/etc/apache2/sites-available# nano drupal.conf 

        <Directory "/var/www/drupal">

        AllowOverride None

        AllowOverride All

        </directory>
  • Realiza una configuración mínima de la aplicación (Cambia la plantilla, crea algún contenido, …)

Descargamos el tema en la carpeta themes y descomprimimos

1
2
3
4
5
vagrant@lamp:/var/www/drupal/themes$ wget https://ftp.drupal.org/files/projects/adminimal_theme-8.x-1.5.tar.gz

vagrant@lamp:/var/www/drupal/themes$ tar -xvf adminimal_theme-8.x-1.5.tar.gz 

vagrant@lamp:/var/www/drupal/themes$ sudo systemctl reload apache2

Dentro de la web de drupal, cambiamos el anterior tema por el nuevo en la pestaña de Appearance

  • Añadimos contenido.

  • Instala un módulo para añadir alguna funcionalidad a drupal.
1
2
3
vagrant@lamp:/var/www/drupal/modules$ wget https://ftp.drupal.org/files/projects/pathauto-8.x-1.5.tar.gz

vagrant@lamp:/var/www/drupal/modules$ tar -xvf pathauto-8.x-1.5.tar.gz 

Tarea 3: Configuración multinodo

  • Realiza un copia de seguridad de la base de datos.

El método que vamos a utilizar para crear copias de seguridad de MySQL es el siguiente:

1
2
vagrant@lamp:~$ mysqldump --single-transaction -u ernesto -p basedrupal > backup.sql
Enter password: 
  • Crea otra máquina con vagrant, conectada con una red interna a la anterior y configura un servidor de base de datos.

Máquina 1:

1
2
3
4
5
    config.vm.box = "debian/buster64" 
    config.vm.hostname = "lamp" 
    config.vm.network :public_network,:bridge=>"wlan0" 
    config.vm.network "private_network", ip: "192.168.100.1",
      virtualbox__intnet: "redinterna" 

Máquina 2:

1
2
3
4
5
6
7
  config.vm.define :clientelamp do |clientelamp|
    clientelamp.vm.box = "debian/buster64" 
    clientelamp.vm.hostname = "clientelamp" 
    clientelamp.vm.network "public_network",:bridge=>"wlan0" 
    clientelamp.vm.network "private_network", ip: "192.168.100.2",
      virtualbox__intnet: "redinterna" 
  end
  • Crea un usuario en la base de datos para trabajar con la nueva base de datos.
1
2
3
4
5
6
7
8
9
MariaDB [(none)]> CREATE USER 'ernesto' IDENTIFIED BY 'ernesto';
MariaDB [(none)]> GRANT USAGE ON *.* TO 'ernesto'@localhost IDENTIFIED BY 'ernesto';
MariaDB [(none)]> GRANT USAGE ON *.* TO 'ernesto'@'%' IDENTIFIED BY 'ernesto';
MariaDB [(none)]> GRANT ALL privileges ON `basedrupal`.* TO 'ernesto'@localhost;
MariaDB [(none)]> FLUSH PRIVILEGES;
        Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> create database basedrupal;
        Query OK, 1 row affected (0.001 sec)
  • Restaura la copia de seguridad en el nuevo servidor de base datos.
1
2
mysql --user=ernesto --password basedrupal < backup.sql
        Enter password: 
  • Desinstala el servidor de base de datos en el servidor principal.

vagrant@lamp:~$ sudo apt-get --purge remove mysql-common

  • Realiza los cambios de configuración necesario en drupal para que la página funcione.

    vagrant@lamp:/var/www/drupal/sites/default$ sudo nano settings.php

Cambiamos el host a la ip de la red interna del cliente.

1
2
3
4
5
6
7
8
9
$databases['default']['default'] = array (
  'database' => 'basedrupal',
  'username' => 'ernesto',
  'password' => 'ernesto',
  'prefix' => '',
  'host' => '192.168.100.2',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
1
vagrant@clientelamp:/etc/mysql$ sudo nano mariadb.conf.d/50-server.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[mysqld]

#
# * Basic Settings
#
user                    = mysql
pid-file                = /run/mysqld/mysqld.pid
socket                  = /run/mysqld/mysqld.sock
#port                   = 3306
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
lc-messages-dir         = /usr/share/mysql
#skip-external-locking

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 0.0.0.0

Tarea 4: Instalación de otro CMS PHP

Descargamos de la página oficial el CMS PHP.

1
https://www.mediawiki.org/wiki/Download/es

Copiamos la configuración.

1
2
3
4
5
6
7
8
9
10
vagrant@lamp:/etc/apache2/sites-available$ sudo cp drupal.conf mediawiki.conf

        ServerName www.ernesto-mediawiki.org
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/mediawiki

        <Directory "/var/www/mediawiki">
        AllowOverride None
        AllowOverride All
        </directory>
1
sudo a2ensite mediawiki.conf

Copiamos mediawiki a /var/www/mediawiki

1
vagrant@lamp:~$ sudo mv mediawiki-1.33.1 /var/www/mediawiki/

Reiniciamos los servicios de apache2.

1
vagrant@lamp:~$ sudo systemctl restart apache2

Creamos una nueva base de datos en MariaDB llamada basemediawiki

Y ya tendríamos nuestra instalación terminada

Vamos a cambiarle el logo a nuestra página

1
vagrant@lamp:/var/www/mediawiki$ sudo nano LocalSettings.php

Cambiamos la ruta y poner el nuevo logo.

  • Instala un servidor de correo electrónico en tu servidor. Debes configurar un servidor relay de correo, para ello en el fichero /etc/postfix/main.cf , debes poner la siguiente línea:

    relayhost = babuino-smtp.gonzalonazareno.org

Primero instalamos postfix

1
vagrant@lamp:~$ sudo apt-get install postfix

Editamos el archivo que hemos comentado previamente.

1
2
3
4
5
6
7
8
9
10
11
12
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = lamp.gonzalonazareno.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, ernestomediawiki.gonzalonazareno.org, lamp, localhost.localdomain, localhost
relayhost = babuino-smtp.gonzalonazareno.org
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

Y reiniciamos postfix

1
vagrant@lamp:~$ sudo systemctl restart postfix

Vamos a enviar un correo de ejemplo, como el de restablecer contraseña

Para ello, vamos a iniciar sesión y darle a he olvidado la contraseña

Y nos enviará un correo con la nueva contraseña.

This post is licensed under CC BY 4.0 by the author.