VagrantFile
Vagrant.configure("2") do |config|
config.vm.define :cmsagv do |cmsagv|
cmsagv.vm.box = "debian/bullseye64"
cmsagv.vm.hostname = "cmsagv"
cmsagv.vm.network 'private_network', :ip => '192.168.100.200'
cmsagv.vm.network :private_network,
:libvirt__network_name => "red1",
:libvirt__dhcp_enabled => false,
:ip => "172.22.100.5",
:libvirt__forward_mode => "none"
end
config.vm.define :backup do |backup|
backup.vm.box = "debian/bullseye64"
backup.vm.hostname = "backup"
backup.vm.network :private_network,
:libvirt__network_name => "red1",
:libvirt__dhcp_enabled => false,
:ip => "172.22.100.10",
:libvirt__forward_mode => "none"
end
end
Instalamos un servidor LAMP
Apache
Hacemos una instalación sencilla:
vagrant@cmsalegv:~$ sudo apt install apache2 apache2-utils
Y creamos una regla en iptables para permitir la conexión http
vagrant@cmsalegv:~$ sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Mariadb
Instalamos Mariadb
vagrant@cmsalegv:~$ sudo apt install mariadb-server mariadb-client
PHP
Y por últimos realizaremos la instalación de php
vagrant@cmsalegv:~$ sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline php-dom php-gd php-xml
Tendremos que habilitar el mod de apache de PHP
vagrant@cmsalegv:~$ sudo a2enmod php7.4
vagrant@cmsalegv:~$ sudo systemctl restart apache2
Base de datos
Creamos un usuario nuevo en mariadb y le damos una contraseña
CREATE USER 'usuario1'@'localhost';
SET PASSWORD FOR 'usuario1'@'localhost' = PASSWORD('usuario1');
Y crearemos una nueva base de datos la cual el usuario que hemos creado tendrá acceso completo:
CREATE DATABASE drupal;
GRANT ALL PRIVILEGES ON `drupal`.* TO 'usuario1'@'localhost';
Drupal
Nuestro próximo paso será instalar Drupal, primero descargamos el paquete de instalación y lo extraemos
vagrant@cmsalegv:~$ wget https://ftp.drupal.org/files/projects/drupal-8.8.1.tar.gz
vagrant@cmsalegv:~$ tar xvf drupal-8.8.1.tar.gz
Movemos la carpeta a nuestra carpeta del virtual host
vagrant@cmsalegv:~$ sudo mv drupal-8.8.1 /var/www/html/
Y para amenizar el trabajo podríamos crear un enlace simbólico para no tener que escribir la versión cada vez que queramos hacer una configuración:
vagrant@cmsalegv:~$ sudo ln -s /var/www/drupal-8.8.1/ /var/www/drupal
Debemos activar el modulo rewrite en apache
vagrant@cmsalegv:~$ sudo a2enmod rewrite
Configuramos un virtual host
<VirtualHost *:80>
ServerName www.alegv-drupal.org
ServerAdmin webmaster@localhost
DocumentRoot /var/www/drupal
<Directory /var/www/html/drupal/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/drupal_error.log
CustomLog /var/log/apache2/drupal_access.log combined
<VirtualHost>
Añadimos la IP estática que hemos añadido a nuestro servidor en el /etc/hosts
de nuestra máquina anfitriona
192.168.100.200 www.alegv-drupal.com
Y ya podremos acceder a nuetro drupal
Y comenzamos con la instalación, en primer lugar realizaremos una instalación estandar.
Nos ha aparecido un error, como bien se ve al parecer faltan algunas librerias de php.
La solución es tan sencilla como instalarlas, en nuestro caso debemos instalar las siguientes:
vagrant@cmsagv:~$ sudo apt install php-xml php-gd php-mbstring
Una vez hecho esto si no tenemos ningún otro error o warning pasaremos a la configuración de la base de datos, rellenaremos los datos oportunos que configuramos anteriormente en nuestra base de datos de mariadb.
Una vez heche esto se pasará automáticamente a la instalación.
A continuación pasaremos a rellenar algunos datos necesarios para la configuración, como un nombre para nuestro sitio, un correo valido, un usuario y contraseña, etc…
Y finalmente tendremos nuestro drupal operativo
Configuracion de Drupal
Haremos algunas pequeñas configuraciones, como por ejemplo cambiar el tema, en el menu de arriba podemos entrar en aparencia y aparece la opción de instalar un nuevo tema.
Lo que haremos será buscar un tema que nos guste en la Pagina ofícial de oracle y añadir la url de descarga del archivo para la instalación como puede verse en la siguiente imágen.
Una vez elijamos el tema que recién hemos instalado cambiará la apariencia
Vamos a ver como se crea contenido, también es bastante sencillo e intuitivo, simplemente iremos a la sección que podremos ver arriba de contenido y creamos un nuevo artículo, podremos añadir un título, cuerpo, imagenes, etc…
Para instalar un nuevo módulo nos dirijimos a la pestaña ampliar
y tal y como hicimos para instalar el tema buscaremos un nuevo modulo que pueda interesarnos y los instalamos de la misma forma.
Y lo activamos
Copia de seguridad de la base de datos.
realizar una copia de seguridad es muy sencillo, mariadb tiene una herramienta que nos permite hacerlo y volvar esta copia en un fichero:
root@cmsagv:~# mysqldump drupal > /backup.sql
root@cmsagv:~# ls / | egrep backup
backup.sql
Ahora queremos configurar otro servidor de bbdd en otra máquina conectada a la nuestra por la red interna, ya tenemos esta máquina y esta red interna creada como pudimos ver en el VagrantFile. Así que entramos en ella e instalamos el servidor de mariadb tal como hicimos anteriormente. Crearemos una nueva base de datos.
MariaDB [(none)]> create database backup;
Query OK, 1 row affected (0.001 sec)
Ahora crearemos un usuario dentro de la misma, pero especificaremos que se conectará desde la ip del servidor apache donde nos conectaremos remotamente. Y por supuesto le daremos privilegios sobre la base de datos.
MariaDB [(none)]> CREATE USER 'usuario2'@'172.22.100.5' IDENTIFIED BY 'usuario2';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON backup.* to 'usuario2'@'172.22.100.5';
Query OK, 0 rows affected (0.001 sec)
Para permitir el acceso remoto debemos editar el fichero /etc/mysql/mariadb.conf.d/50-server.cnf
y buscar la línea bind-address
.
bind-address = 127.0.0.1
Lo único que deberemos hacer para permitir el acceso remoto es cambiar la dirección del localhost por 0.0.0.0
bind-address = 0.0.0.0
Nuestro siguiente paso será restaurar la copia de seguridad en nuestra nueva base de datos, para esto debemos recordar ponerle una contraseña a nuestras máquinas vagrant, sino no nos permitirá realizar una conexión ssh entre las mismas y también deberemos cambiar una línea del fichero de configuración de las dos máquinas /etc/ssh/sshd_config
para que nos pida autentificación al conectarnos por ssh
PasswordAuthentication yes
Enviamos el fichero y comprobamos que lo hemos recibido:
vagrant@cmsagv:~$ sudo scp /backup.sql vagrant@172.22.100.10:/home/vagrant/
vagrant@backup:~$ ls
backup.sql
El proceso de importación a nuestra base de datos es igual de sencillo que fue exportarlo al backup:
root@backup:~# mysql backup < /home/vagrant/backup.sql
Si entramos en la base de datos y hacemos un show tables
podremos comprobar que la copia e importación se ha hecho correctamente
MariaDB [(none)]> use backup;
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 [backup]> show tables;
+----------------------------------+
| Tables_in_backup |
+----------------------------------+
| batch |
| block_content |
| block_content__body |
| block_content_field_data |
| block_content_field_revision |
| block_content_revision |
| block_content_revision__body |
| cache_bootstrap |
| cache_config |
| cache_container |
| cache_data |
| cache_default |
| cache_discovery |
| cache_dynamic_page_cache |
| cache_entity |
| cache_menu |
| cache_render |
| cachetags |
| comment |
| comment__comment_body |
| comment_entity_statistics |
| comment_field_data |
| config |
| file_managed |
| file_usage |
| history |
| key_value |
| key_value_expire |
| locale_file |
| locales_location |
| locales_source |
| locales_target |
| menu_link_content |
| menu_link_content_data |
| menu_link_content_field_revision |
| menu_link_content_revision |
| menu_tree |
| node |
| node__body |
| node__comment |
| node__field_image |
| node__field_tags |
| node_access |
| node_field_data |
| node_field_revision |
| node_revision |
| node_revision__body |
| node_revision__comment |
| node_revision__field_image |
| node_revision__field_tags |
| path_alias |
| path_alias_revision |
| queue |
| router |
| search_dataset |
| search_index |
| search_total |
| semaphore |
| sequences |
| sessions |
| shortcut |
| shortcut_field_data |
| shortcut_set_users |
| taxonomy_index |
| taxonomy_term__parent |
| taxonomy_term_data |
| taxonomy_term_field_data |
| taxonomy_term_field_revision |
| taxonomy_term_revision |
| taxonomy_term_revision__parent |
| user__roles |
| user__user_picture |
| users |
| users_data |
| users_field_data |
| watchdog |
+----------------------------------+
76 rows in set (0.001 sec)
Como nuestro objetivo es usar esta base de datos nueva eliminaremos la que teniamos al principio en nuestro servidor principal.
vagrant@cmsagv:~$ sudo apt purge mariadb-client-10.4 mariadb-server-10.4
Por supuesto esto hará que nuestro drupal deje de funcionar, por ello tendremos que configurarlo para que use esta nueva base de datos. y para ello en primer lugar tendremos que configurar el fichero /var/www/drupal/sites/default/settings.php
donde encontraremos un bloque de código como el siguiente con la información de nuestro antiguo servidor de bbdd.
$databases['default']['default'] = array (
'database' => 'drupal',
'username' => 'usuario1',
'password' => 'usuario1',
'prefix' => '',
'host' => 'localhost',
'port' => '3306',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);
Sustituiremos la información adecuadamente
$databases['default']['default'] = array (
'database' => 'backup',
'username' => 'usuario2',
'password' => 'usuario2',
'prefix' => '',
'host' => '172.22.100.10',
'port' => '3306',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);
Instalación de un nuevo CMS PHP
- Vamos a instalar un joomla, para ello descargaremos de la página oficial la aplicación.
vagrant@cmsagv:~$ wget -q https://downloads.joomla.org/cms/joomla4/4-0-4/Joomla_4-0-4-Stable-Full_Package.tar.bz2
- Movemos el archivo comprimido a nuestra carpeta html.
vagrant@cmsagv:~$ sudo mv Joomla_4-0-4-Stable-Full_Package.tar.bz2 /var/www/html/
- Donde tendremos que crear una carpeta donde descomprimiremos este fichero.
vagrant@cmsagv:/var/www/html$ sudo mkdir joomla
vagrant@cmsagv:/var/www/html/joomla$ sudo tar xf Joomla_4-0-4-Stable-Full_Package.tar.bz2
agrant@cmsagv:/var/www/html/joomla$ ls
Joomla_4-0-4-Stable-Full_Package.tar.bz2 cache includes libraries templates
LICENSE.txt cli index.php media tmp
README.txt components installation modules web.config.txt
administrator htaccess.txt language plugins
api images layouts robots.txt.dist
- Vemos que hay un fichero llamado
htaccess.txt
, tendremos que renombrarlo y ponerlo en oculto para que apache pueda leerlo.
vagrant@cmsagv:/var/www/html/joomla$ sudo mv htaccess.txt ./.htaccess.txt
- Y cambiamos los permisos de esta carpeta.
vagrant@cmsagv:/var/www/html/joomla$ sudo chown -R www-data: /var/www/html/joomla/
- Creamos el nuevo virtual host:
VirtualHost *:80>
ServerName www.alegv-joomla.org
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/joomla
<Directory /var/www/html/joomla/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
php_value output_buffering "0"
</Directory>
ErrorLog /var/log/apache2/joomla_error.log
CustomLog /var/log/apache2/joomla_access.log combined
</VirtualHost>
- Y lo activamos:
vagrant@cmsagv:/etc/apache2/sites-available$ sudo a2ensite joomla.conf
Enabling site joomla.
To activate the new configuration, you need to run:
systemctl reload apache2
- Ahora en MariaDB creamos una base de datos para nuestro nuevo cms:
MariaDB [(none)]> create database joomla;
Query OK, 1 row affected (0.000 sec)
- Y damos permisos a nuestro usuario sobre la misma:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON `joomla`.* TO 'usuario1'@'localhost';
Query OK, 0 rows affected (0.063 sec)
- Añadimos la nueva entrada al
/etc/hosts
de nuestra anfitriona.
192.168.100.200 www.alegv-joomla.org
- Y comenzamos con la instalación: