Está en la página 1de 65

Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.

com

© 2021 - Charlie Alonso

1
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Prólogo 2
¿A quién va dirigido este libro? 5
¿Qué es una máquina virtual? 6
¿Para qué sirven estas máquinas? 7
¿Cómo instalar Oracle VirtualBox? 7
¿Qué es un gestor de máquinas virtuales? 12
¿Y para qué quiero eso? 13
¿Cómo instalar Vagrant? 14
¿Cómo crear máquinas virtuales? 19
¿Qué es un servidor de aplicaciones web? 28
¿Cómo instalar un servidor de aplicaciones web? 28
¿Qué es una aplicación web? 39
¿Y dónde guardamos todos los datos? 40
¿Qué es una base de datos relacional? 40
¿Cómo es un entorno de aplicaciones web tradicionales? 41
¿Qué es una aplicación web CMS? 41
Preparando el entorno LAMP 44
Instalando WordPress 49
Configuración inicial de Wordpress 55
¡Tu primer reto conseguido! 61
¡Aspira a ser ingenios@ de sistemas! 61
Agradecimientos 64

2
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Prólogo

Durante toda mi carrera profesional he sido testigo de la evolución de las


herramientas software y las distintas soluciones que el mundo del código abierto
ha puesto a nuestra disposición. Un lujo para todo aquel que disfrutara de un
buen rato delante de su ordenador, brujuleando por internet y descargando
aplicaciones para su posterior instalación y realización de todo tipo de pruebas.

No sabría especificar en qué momento esa serie de aplicaciones dejaron de ser


utilizadas exclusivamente por frikis y empezaron a formar parte de la escena
empresarial. Hoy en día es muy habitual ver corporaciones que, en uno u otro
ámbito de sus procesos, utilizan software libre.

Existe la creencia errónea de que el software libre o de código abierto es gratuito.

¡Déjame que te eche el jarro de agua fría cuanto antes! Esto no es verdad.

En el mundo empresarial nada es gratis. De manera que, aunque no haya que


pagar la licencia de software (por que es libre), hay que invertir tiempo en el
estudio de la aplicación, su comprensión, instalación, configuración y puesta en
marcha. Y posteriormente, en su mantenimiento, llevará más o menos tiempo de
un número realizado por un número indeterminado de personas.

Los trabajadores cambiamos nuestro tiempo por dinero pagado por nuestra
empresa. Estas implantaciones precisan de nuestro tiempo en horas laborales,
por lo que lógicamente, no salen gratis a la organización.

No obstante, las aplicaciones de software libre están cada vez más extendidas e
implantadas en el mundo empresarial. A medida que vamos conociendo mejor
su funcionamiento, invertimos menos tiempo o dinero en su implantación, por lo
que salen más baratas.

A continuación no voy a hablarte de aplicaciones de software libre. Esto lo


encontrarás en mi página web tecnolitas.com y en la lista de correo a la que te
has apuntado para poder descargarte este e-book.

3
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

En este libro quiero hablarte sobre una mentalidad, una actitud. Déjame
mostrarte lo fácil que resulta poder instalar estas herramientas y practicar con
ellas. No necesitarás más recursos que tu propio ordenador y una conexión a
internet.

Te ayudaré a descubrir que para ser ingenios@ de sistemas no es necesario tener


años de formación. Siguiendo unos pasos determinados y condensando la
experiencia e información de otros profesionales, puedes avanzar mucho muy
rápido en la dirección adecuada de forma muy sencilla.

Este es un libro eminentemente práctico y experimental, así que prepárate para


poner manos a la obra y seguir los procesos, paso a paso, con tu propio
ordenador.

4
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

¿A quién va dirigido este libro?

Si te gusta la tecnología y eres usuari@ de PC con conocimientos básicos, tienes


un ordenador, utilizas Windows y programas informáticos en tu día a día, un
editor de textos, redes sociales, navegas por internet y a veces instalas o utilizas
aplicaciones específicas de tu trabajo, ¡este libro va dirigido a ti! No necesitas
saber más, si quieres convertirte en Ingenios@ de sistemas.

También es para ti si te gusta la tecnología y quieres ir un paso más allá.


Aprender más sobre redes, sobre los sistemas operativos que usan los
ingenios@s y sobre lo que se puede llegar a hacer con herramientas de código
abierto. Son gratis. Las que puedes coger, usar y comercializar como consideres
oportuno.

Si te gusta pasar el tiempo aprendiendo cosas nuevas, pero eres una persona
práctica y necesitas experimentar lo que aprendes, en este libro vas a encontrar
una serie de procesos que te van a guiar.

No necesitas conocimientos de redes ni de programación para llevar a cabo las


prácticas de este libro. Cualquier base que tengas al respecto será útil y, sin
duda, te ayudará a comprender mejor los conceptos y ponerlos en práctica.
Créeme, consiste en practicar, en seguir las instrucciones paso a paso. Si no te
sale a la primera, borrón y cuenta nueva. Vuelves a empezar. Así es como
aprendemos de verdad: “Lo vi, lo hice y lo aprendí”.

5
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

¿Qué es una máquina virtual?

Si quieres ser un Ingenios@ de sistemas, lo primero que debes saber es, que es
una máquina virtual y cómo aprovechar estas máquinas en tu beneficio para un
buen aprendizaje.

En el sector de la informática, cuando hablamos de máquina, nos referimos


normalmente a un ordenador.

Así que cuando te hablo de máquinas virtuales, te estoy hablando de


ordenadores virtuales. Los ordenadores son cada vez más potentes. Para hacerte
una idea, solo tienes que pensar en el procesador que lleva tu teléfono móvil:
última tecnología con muchísima potencia.

Se trata precisamente de poder aprovechar parte de la potencia y los recursos


que tiene tu ordenador (p. ej. tu portátil) para poder crear máquinas virtuales
mediante un programa. Este asigna parte de los recursos del procesador,
memoria y disco duro, a esta nueva máquina virtual que quieres crear para
instalar en ella un sistema operativo distinto al que tiene tu ordenador, que es la
máquina física, o también llamada, la máquina anfitrión.

Como en esto de la informática nombramos casi todo en inglés, llamaremos host


a la máquina física o real (tu ordenador) en la que vas a crear las máquinas
virtuales.

Cuando el host no es tu ordenador, sino que es un servidor compartido en


internet, en vez de máquina virtual o VM (del inglés virtual machine) se llamará
VPS (virtual private server) o servidor virtual privado.

Una VPS es realmente igual que una máquina virtual, pero resulta más cómoda
para ti porque está alojada en internet y todo el mundo puede tener acceso a
ella sin que tengas que configurar nada en tu router. Lo que aquí aprendas para
máquinas virtuales lo podrás aplicar a VPS.

6
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

¿Para qué sirven estas máquinas?

Siendo realista, no puedes ser ingenios@ de sistemas si no utilizas Linux. La


buena noticia es que no hace falta saber Linux para utilizar Linux. Eso es
precisamente lo que vamos a hacer en estas máquinas virtuales: poner Linux,
distribuciones y versiones, para que puedas experimentar y aprender lo que
necesitas.

Para crear máquinas virtuales vas a usar un programa que se conoce como
Hypervisor. Es como un supervisor pero de tecnología Hyper-V, que es la que le
permite a tu ordenador compartir sus recursos y dividirlos entre varios sistemas
operativos.

Te voy a enseñar también a usar Oracle VirtualBox. Es muy potente y sencillo de


instalar. La dinámica va a ser que instales esta aplicación en tu ordenador y a
partir de ahí, puedas descargar imágenes o “box” con distintos sistemas
operativos.

Para hacer las prácticas vas a usar una distribución de Linux concreta - Ubuntu -
en su versión estable 20.04, que es la más nueva. Así, estás seguro de que tienes
la última versión y sus dependencias.

Vas a usar la línea de comandos. No puedes ser un ingenios@ de sistemas si no


usas la línea de comandos, pero no tienes que dominarla. Ni siquiera tienes que
aprenderte los comandos. Esto lo harás a fuerza de utilizarlos. Vas a tener la
referencia de este libro y otros artículos en mi página web, donde podrás copiar
esos comandos para pegarlos en la consola de la máquina virtual o servidor
virtual que estés usando.

¿Cómo instalar Oracle VirtualBox?

La instalación de Oracle VirtualBox es muy sencilla: tan solo tienes que ejecutar
el instalador de Oracle VirtualBox que encontrarás en el enlace.

7
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Pulsando en el botón “Download VirtualBox” navegarás directamente a la


página de descarga, donde está la última versión para las distintas plataformas
(Windows, Mac, Linux, etc.). Descárgate el instalador adecuado para el sistema
operativo de tu ordenador. En mi caso, voy a realizar el tutorial sobre una
máquina anfitriona con Windows 10.

Cuando finalice la descarga, ejecuta el instalador y sigue sus instrucciones.


Básicamente tienes que pulsar «Next».

El primer cuadro de diálogo que te aparece

8
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

En el próximo cuadro de diálogo cambia la ruta de instalación si no quieres


instalar en la que el instalador propone por defecto (aunque yo te recomiendo
hacerlo sobre la ruta que propone) y pulsa «Next».

En el siguiente cuadro de diálogo, marca las opciones que quieras, entre aquellas
que te propone el instalador:

● Crear el icono de aplicación en el menú de inicio de Windows.


● Crear un icono en el escritorio.
● Crear un acceso directo en la barra de tareas.
● Registrar la asociación de ficheros con la aplicación Virtual box.

9
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

En el siguiente cuadro de diálogo, el instalador te avisa de que tiene que reiniciar


el interface de red temporalmente. Desconectará el adaptador de red, con lo que
perderás la conexión de forma temporal.

Es un proceso inevitable, así que tienes que procurar no tener descargas en


marcha. Pulsa «Yes»

10
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Inicia la instalación pulsando «Install». Una vez que finalice, te preguntará si


quieres iniciar la aplicación. Marcaremos la opción de «Iniciar Oracle VM
VirtualBox» y pulsamos sobre «Finish».

Se abrirá la aplicación y este será el aspecto del escritorio si es la primera vez


que ejecutas la aplicación.

11
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

¡Ya tienes instalado tu motor de máquinas virtuales!

No vamos a trabajar directamente con la aplicación Virtualbox. Un ingenios@ de


sistemas no trabaja con los escritorios de máquinas virtuales. En vez de eso, vas a
utilizar una herramienta intermedia para gestionar todas las máquinas virtuales
que desees crear.

¿Qué es un gestor de máquinas virtuales?


Un gestor de máquinas virtuales es una herramienta que te permite crear
máquinas virtuales con ciertas características, fácilmente reproducibles, a través
de la línea de comando y un fichero de configuración.

12
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

¿Y para qué quiero eso?

Imagina que quieres instalar un gestor de contenido web, como p. ej. WordPress,
o que estás aprendiendo a programar.

En cualquiera de los dos casos, vas a necesitar instalar una serie de programas o
lenguajes de programación sobre el sistema operativo. Estos programas tienen
muchas dependencias.

En el caso de que vayas a instalar WordPress, necesitarás instalar en tu máquina


virtual el servidor de aplicaciones web (Apache), un gestor de bases de datos
(MySQL) y un lenguaje de scripting de servidor (PHP). Esto es ya motivo suficiente
para que te vuelvas loco, debido a la cantidad de combinaciones de versiones
que puedas necesitar.

Dependiendo de en qué momento quieras hacer esta instalación, WordPress


estará en una determinada versión, que tendrá unos determinados requisitos de
versión de PHP y de versión de MySQL.

En el caso de que quieras aprender a programar, se complica un poco más, a


causa de la cantidad de librerías, compiladores, transpiladores, empaquetadores
y gestores de dependencias y paquetes que vas a necesitar. Puede que sepas de
qué estoy hablando o puede que no. No te preocupes. Es irrelevante. No
necesitas saber de qué estoy hablando para ser un ingenios@ de sistemas.

De momento piensa solo en el gestor de máquinas virtuales que vamos a usar.


Se llama Vagrant, Es una herramienta de generación de entornos virtuales,
reproducibles.

Vas a poder generar un fichero de configuración que creará máquinas virtuales


con la misma configuración una y otra vez. Tantas máquinas como necesites. (Eso
sí, ten en cuenta que depende de los recursos de tu ordenador).

Confía en mí. Sigue leyendo un poquito más y cuando hayas instalado el gestor
de máquinas virtuales, vas a alucinar con lo potente y útil que puede resultar.

13
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

¿Cómo instalar Vagrant?

Haz la descarga del instalador desde la página oficial de Vagrant

Encontrarás el botón de descarga de la última versión. Al pulsar, te llevará a una


página donde te preguntará para qué sistema operativo quieres el instalador.

14
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Entiendo que tienes un PC con sistema operativo Windows 10 de 64 bits, si no


fuera así, tendrías que buscar la descarga conveniente a tu sistema.
Una vez haya terminado la descarga, ejecuta el instalador. Después de
comprobar que tienes espacio en tu disco duro, Vagrant te pedirá que instales.

En este punto es posible que, después de haber instalado VirtualBox, necesites


reiniciar el ordenador para poder realizar la instalación de Vagrant.

Otra posibilidad es que Vagrant detecte que no tienes activada la virtualización


VT-x en la Bios de tu ordenador. En ese caso, debéis acceder a la Bios y activar la
función VT-x para que Vagrant pueda funcionar.

15
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Acepta los términos y condiciones. A continuación haz clic en «Next».

Elige la ruta para la instalación (la que viene por defecto es correcta) y haz clic en
«Next».

16
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Pulsamos «Install» en la siguiente ventana.

Se completará el proceso de instalación, por lo que pulsamos «Finish» en la


siguiente pantalla.

17
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Una vez terminada la instalación te pedirá que reinicies el ordenador.

¡Ya está! Tenemos instalado el Hypervisor de máquinas virtuales Oracle


VirtualBox y también el gestor de entornos virtuales Vagrant.

¡Ahora es cuando vas a empezar a alucinar con lo potente que es esto!

¿Preparad@?

18
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

¿Cómo crear máquinas virtuales?

Vamos a ponernos al lío. La mejor forma de empezar a usar Vagrant es hacerlo


desde la carpeta “documentos del usuario” de Windows que estés usando.

Para ello vas a acceder a tu consola de sistema, escribiendo “cmd” en la barra de


búsqueda de tu escritorio Windows.

Esto abrirá la consola de línea de comando de tu Windows

En la consola tendrás el cursor en la carpeta con el nombre de tu usuario (en mi


caso Charlie Alonso), dentro de los usuarios (“Users”) de Windows.

C:\Users\charliealonso>

19
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Una vez ahí, vas a crear una nueva carpeta para una nueva máquina virtual. Esta
nueva carpeta contendrá los archivos de configuración de la máquina virtual de
Vagrant.

Teclea mkdir (make directory) seguido de un espacio y el nombre de tu máquina


virtual

C:\Users\charliealonso>mkdir prueba

Después pulsa la tecla “enter” y aparecerá una nueva línea de consola. Teclea el
siguiente comando para situarte dentro de esa carpeta,

C:\Users\charliealonso>cd prueba

Pulsa otra vez “enter” y estarás dentro de la carpeta prueba. Ahora el “prompt”
de consola (texto que te indica la ruta en la que te encuentras) te mostrará la ruta
“C:\Users\charliealonso\prueba” para indicarnos en qué directorio nos
encontramos.

C:\Users\charliealonso\prueba>

Aquí vas a comenzar a introducir comandos de Vagrant.

El primer comando que vamos a utilizar es el comando que inicializa la máquina


virtual que deseamos crear.

Vagrant está basado en imágenes de sistemas operativos que denomina “Box”.


Para poder localizar todas las Vagrant Box que existen, debemos ir al repositorio
de Vagrant en el que podremos buscar. Yo voy a utilizar una máquina virtual
basada en Ubuntu 18.04, una versión estable disponible para entornos de 64 Bits,

La caja “Box” o máquina virtual sobre la que vamos a instalar se llama


“bento/ubuntu-18.04” así que procedemos a inicializar con el siguiente
comando:

vagrant init bento/ubuntu-18.04

C:\Users\calonso\zonadam>vagrant init bento/ubuntu-18.04

20
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Ahora pulsa la tecla “enter”. Si todo ha ido bien, recibirás un mensaje como este;

A `Vagrantfile` has been placed in this directory. You are now


ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Si haces un listado de ese directorio con el comando dir, verás que contiene:

C:\Users\charliealonso\prueba>dir

Directorio de C:\Users\charliealonso\prueba

15/03/2019 10:00 <DIR> .


15/03/2019 10:00 <DIR> ..
15/03/2019 10:00 <DIR> .vagrant
15/03/2019 15:02 321 Vagrantfile
1 archivos 321 bytes
3 dirs 92.629.192.704 bytes libres

Los datos que te aparecerán a ti serán diferentes, con otras fechas, pero lo
importante es que localices el fichero Vagrantfile, que es el que ha creado
nuevo, tras el comando de inicialización de la máquina virtual.

Si editas este fichero Vagrantfile (aquí recomiendo instalar este editor de


texto Notepad++), veremos el contenido del fichero de configuración de la
máquina virtual:

# -*- 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|

21
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

# 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 = "bento/ubuntu-18.04"

# Disable automatic box update checking. If you disable this, then


# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false

# Create a forwarded port mapping which allows access to a specific port


# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080

# Create a forwarded port mapping which allows access to a specific port


# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

# Create a private network, which allows host-only access to the machine


# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"

# Create a public network, which generally matched to bridged network.


# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"

# Share an additional folder to the guest VM. The first argument is


# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"

# Provider-specific configuration so you can fine-tune various


# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#

22
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

# View the documentation for the provider you are using for more
# information on available options.

# Enable provisioning with a shell script. Additional provisioners such as


# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
end

¡No dejes que te asuste tanto código! Son todo comentarios para que
puedas hacer configuraciones avanzadas, pero realmente, la esencia de ese
fichero se resume a tres líneas de código:

Vagrant.configure("2") do |config|

config.vm.box = "bento/ubuntu-18.04"

end

Son las únicas tres líneas que no están comentadas (#), y que por tanto, se
ejecutan.

Ejecuta este comando en tu consola para pedirle a Vagrant que ejecute tu nueva
máquina virtual

C:\Users\charliealonso\prueba>vagrant up

Mientras se ejecuta el proceso verás este tipo de mensajes:

==> default: Box 'bento/ubuntu-18.04' could not be found. Attempting to find and
install...
default: Box Provider: virtualbox
default: Box Version: >= 0
==> default: Loading metadata for box 'bento/ubuntu-18.04'
default: URL: https://vagrantcloud.com/bento/ubuntu-18.04
==> default: Adding box 'bento/ubuntu-18.04' (v202008.16.0) for provider:
virtualbox

23
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

default: Downloading:
https://vagrantcloud.com/bento/boxes/ubuntu-18.04/versions/202008.16.0/providers/vi
rtualbox.box
default: Download redirected to host:
vagrantcloud-files-production.s3.amazonaws.com
default:
==> default: Successfully added box 'bento/ubuntu-18.04' (v202008.16.0) for
'virtualbox'!
==> default: Importing base box 'bento/ubuntu-18.04'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'bento/ubuntu-18.04' version '202008.16.0' is up to
date...
==> default: Setting the name of the VM: prueba_default_1600192133976_36393
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection reset. Retrying...
default: Warning: Connection aborted. Retrying...
default: Warning: Remote connection disconnect. Retrying...
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: The guest additions on this VM do not match the installed version of
default: VirtualBox! In most cases this is fine, but in rare cases it can
default: prevent things such as shared folders from working properly. If you
see
default: shared folder errors, please make sure the guest additions within the
default: virtual machine match the version of VirtualBox you have installed on
default: your host and reload your VM.
default:
default: Guest Additions Version: 6.1.12
default: VirtualBox Version: 6.0
==> default: Mounting shared folders...
default: /vagrant => C:/Users/charliealonso/prueba

24
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Si ejecutas la primera aplicación que instalaste, Oracle VM VirtualBox, podrás ver


que por fin tienes una máquina virtual corriendo.

Hay otra característica muy importante en la que debes fijarte. En la última línea
de los mensajes que Vagrant te ha devuelto mientras levantaba tu máquina
virtual, podrás ver que directorio de tu ordenador ha compartido con la máquina
virtual.

default: /vagrant => C:/Users/charliealonso/prueba

Acuérdate que la máquina virtual es Linux, entonces en esa línea vemos que el
directorio Windows C:/Users/charliealonso/prueba es el mismo que el directorio
/vagrant en Linux

¿Por qué es esto tan práctico?

La respuesta es que te permite crear ficheros en ese directorio de Windows y


que se ejecuten en Linux.

¡Míralo de esta manera! Imagina que quieres aprender a programar. ¿Qué


necesitas para programar? Necesitas un entorno de desarrollo, es decir, un editor
de código. Puedes usar muchos. Como por ejemplo Visual Studio Code (un

25
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

fantástico entorno de desarrollo que puedes usar gratis en su versión Open


Source).

También puedes usar editores más sencillos como el mismo Notepad++ o


Sublime text. Da igual que editor de código utilices. El caso es que podrás usar
como carpeta de destino para los archivos de tu programa:

C:/Users/charliealonso/prueba

Y ejecutar ese código en la máquina Linux en la carpeta

/vagrant

En el caso de que se trate de una página web, lo mismo. Puedes poner los
archivos HTML en la carpeta C:/Users/charliealonso/prueba y decirle al servidor
de aplicaciones web Apache o Nginx que has instalado en tu máquina virtual
Linux, que el directorio para la web es /vagrant

Esto evita que tengas que usar un programa FTP para subir tus archivos al
servidor y actualizar los cambios cada vez que los hagas. Estás trabajando en
local. Ambos sistemas operativos están dentro de la misma máquina, ejecutando
a la vez, así que los cambios que hagas en esa carpeta que comparten ambas
máquinas, la real y la virtual, son cambios que ambas máquina pueden ver de
inmediato.

Una de las cosas más atractivas de ser Ingenios@ de sistemas, es la capacidad


para automatizar procesos. Un proceso que te podría interesar automatizar es,
por ejemplo, la descarga de algún fichero de datos desde algún portal web.

Eso es muy sencillo usando navegadores en modo línea de comando como


puede ser wget o curl. Estos navegadores son herramientas que ya vienen
instaladas en muchas de las distribuciones de Linux, como la que has utilizado
para tu máquina virtual.

¡Tan fácil como eso!

Desde la consola de tu máquina virtual, te cambias al directorio /vagrant con el


siguiente comando:

26
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

vagrant@vagrant:/$ cd vagrant

Y después:

vagrant@vagrant:/vagrant$ wget http://sitioweb.com/pelicula.mpg

Haces un wget al sitio web donde está el fichero que quieres descargarte y a
continuación pones el nombre del fichero que quieres descargarte.

Esto descarga un fichero de video, que podrás ver desde tu reproductor


preferido en Windows y que estará ubicado en la carpeta

C:/Users/charliealonso/prueba

Recuerda cambiar el nombre de charliealonso por tu nombre de usuario.

¿Qué has aprendido?

Estos son los puntos que has aprendido hasta el momento:

● Has instalado un Hypervisor de máquinas virtuales Oracle VM VirtualBox


● Has instalado Vagrant como gestor de entornos virtuales
● Has creado una máquina virtual Ubuntu 18.04
● Has comprendido la relación entre la máquina virtual y el Host, así como
la carpeta que comparten ambas máquinas

27
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

¿Qué es un servidor de aplicaciones web?

Las aplicaciones web son normalmente un conjunto de ficheros, escritos en


algún lenguaje de programación, que produce una salida en pantalla que los
navegadores web (p. ej. Internet Explorer, Google Chrome o Mozilla Firefox, etc.)
pueden interpretar y presentar al usuario en formato HTML.

Si las páginas con HTML, se denominan páginas web estáticas, no se consideran


una aplicación. Más bien una serie de páginas con información y enlaces a otras
páginas.

Si por el contrario, los ficheros están escritos en un lenguaje de programación


como PHP, Python o Javascript, no confundas este último con Java, El servidor
de aplicación web, más conocido como servidor web, debe interpretar esos
ficheros para poder servirte la información HTML que genera la aplicación.

Como servidores de aplicaciones conocidos, puedes encontrar Apache y Nginx,


Cada uno de ellos con sus bondades y sus inconvenientes. Ambos son código
abierto, y por tanto, gratuitos. Podrás hacer uso de ellos sin ningún problema.

Yo te voy a enseñar a instalar y configurar Apache para tus proyectos web, Es


muy versátil y, con diferencia, el más conocido. Así que ante cualquier problema
vas a poder encontrar mucha información en línea, así como foros de ayuda. Esto
es realmente lo importante.

¿Cómo instalar un servidor de aplicaciones web?

Toca ahora enseñarte a instalar un servidor web en la máquina virtual que has
creado. Antes vamos a cambiar la configuración de esta máquina virtual que has
creado para que cumpla los requisitos de red que necesitamos,

28
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Tu máquina virtual se ha creado con una dirección IP que no está en el rango de


tu ordenador - la máquina física - por lo que no podrás ver dicha máquina virtual
desde p. ej. un navegador, Como estamos instalando una aplicación web, vamos
a necesitar que puedas llegar a ella vía IP.

Por lo que la configuración de tu nueva máquina virtual, va a ser esta:

Vagrant.configure("2") do |config|

config.vm.define "server01" do |server01|


server01.vm.box = "bento/ubuntu-18.04"
server01.vm.hostname = "server01"
server01.vm.network :public_network, ip: "192.168.1.51"
server01.vm.network :private_network, ip: "10.11.12.51",
virtualbox__intnet: true
end

end

La máquina tendrá una tarjeta de red en la red privada (10.11.12.51), por si


necesita en un futuro conectarse con más máquinas virtuales de esa misma red y
además tendrá otra dirección IP en la red pública (192.168.1.51), en el mismo
rango que tu ordenador.

Guarda el fichero de configuración de la máquina y ejecuta el comando para


ponerla en marcha:

C:\Users\charliealonso\laboratorio>vagrant up

Comprueba que haces “ping” desde una consola del sistema, tu ordenador, a la
dirección 192.168.1.51.

Una vez que hayas comprobado que haces ping a esta máquina, puedes
proceder con la instalación. Para instalar Apache en este servidor, conéctate
mediante ssh.

C:\Users\charliealonso\laboratorio>vagrant ssh
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 5.4.0-42-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com

29
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

* Support: https://ubuntu.com/advantage

System information disabled due to load higher than 1.0

0 updates can be installed immediately.


0 of these updates are security updates.

The list of available updates is more than a week old.


To check for new updates run: sudo apt update

This system is built by the Bento project by Chef Software


More information can be found at https://github.com/chef/bento
vagrant@server01:~$

Lo primero que vas a hacer, para poder instalar el servidor web Apache, es
actualizar el sistema operativo Ubuntu 18.04 que viene con la imagen con la que
has levantado el entorno virtual. Esta actualización descarga las últimas
versiones de los paquetes y dependencias del sistema operativo.

Para poder actuar sobre estas máquinas y realizar algunas acciones, necesitas
privilegios de superusuario. Este superusuario en Linux, es el usuario “root”, con
privilegios totales sobre el sistema.

En el caso de tu entorno virtual, el usuario con el que te conectas a tus máquinas


es el usuario vagrant, por lo que no tiene privilegios de superusuario. Por suerte,
hay un comando Linux que se antepone a todos los comandos y te deja utilizar
esos privilegios de forma temporal para ejecutar otros comando. Este comando
del que te hablo es “sudo”.

Para actualizar la máquina vamos a usar el comando apt update precedido del
comando sudo. En la consola ssh del server01, escribe lo siguiente:

vagrant@server01:~$ sudo apt update


vagrant@server01:~$ sudo apt update
Hit:1 http://archive.ubuntu.com/ubuntu focal InRelease
Get:2 http://archive.ubuntu.com/ubuntu focal-updates InRelease [111 kB]
Get:3 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]
Get:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [359 kB]
Get:6 http://archive.ubuntu.com/ubuntu focal-updates/main i386 Packages [212 kB]
Get:7 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [184 kB]
Get:8 http://archive.ubuntu.com/ubuntu focal-updates/main Translation-en [136 kB]
Get:9 http://archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [34.5 kB]
Get:10 http://security.ubuntu.com/ubuntu focal-security/main i386 Packages [72.1 kB]

30
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Get:11 http://archive.ubuntu.com/ubuntu focal-updates/restricted Translation-en [8,968 B]


Get:12 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [166 kB]
Get:13 http://security.ubuntu.com/ubuntu focal-security/main Translation-en [65.3 kB]
Get:14 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [34.3 kB]
Get:15 http://security.ubuntu.com/ubuntu focal-security/restricted Translation-en [8,916 B]
Get:16 http://security.ubuntu.com/ubuntu focal-security/universe i386 Packages [28.2 kB]
Get:17 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [57.8 kB]
Get:18 http://archive.ubuntu.com/ubuntu focal-updates/universe i386 Packages [91.3 kB]
Get:19 http://security.ubuntu.com/ubuntu focal-security/universe Translation-en [30.5 kB]
Get:20 http://archive.ubuntu.com/ubuntu focal-updates/universe Translation-en [88.1 kB]
Get:21 http://archive.ubuntu.com/ubuntu focal-backports/universe amd64 Packages [3,088 B]
Get:22 http://archive.ubuntu.com/ubuntu focal-backports/universe i386 Packages [2,256 B]
Fetched 1,899 kB in 2s (941 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
55 packages can be upgraded. Run 'apt list --upgradable' to see them.
vagrant@server01:~$

El servidor se actualizará, descargando los paquetes necesarios para ello. Ahora


sin más, escribe el comando para instalar Apache, precedido también del
comando “sudo”.

vagrant@server01:~$ sudo apt install apache2

Comienza la instalación de Apache hasta que el instalador te informe de cuanto


ocupará esta aplicación y te pregunte si estas seguro de que quieres instalar este
programa. Debes responder pulsando “y” y después pulsa Enter.

vagrant@server01:~$ sudo apt install apache2


Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
apache2-bin apache2-data apache2-utils libapr1 libaprutil1
libaprutil1-dbd-sqlite3 libaprutil1-ldap
libjansson4 liblua5.2-0 ssl-cert
Suggested packages:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser
openssl-blacklist
The following NEW packages will be installed:
apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1
libaprutil1-dbd-sqlite3
libaprutil1-ldap libjansson4 liblua5.2-0 ssl-cert
0 upgraded, 11 newly installed, 0 to remove and 55 not upgraded.
Need to get 1,865 kB of archives.
After this operation, 8,080 kB of additional disk space will be used.
Do you want to continue? [Y/n]

Y si toda va bien, recibirás estos mensajes en tu consola:

31
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

agrant@server01:~$ sudo apt install apache2


Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3
libaprutil1-ldap
libjansson4 liblua5.2-0 ssl-cert
Suggested packages:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser openssl-blacklist
The following NEW packages will be installed:
apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3
libaprutil1-ldap libjansson4 liblua5.2-0 ssl-cert
Progress: [ 2%]
[#..................................................................................]
Progress: [ 4%]
[###................................................................................]
After this operation, 8,080 kB of additional disk space will be used.
Progress: [ 7%]
[#####..............................................................................]
Progress: [ 9%]
[#######............................................................................]
Get:2 http://archive.ubuntu.com/ubuntu focal/main amd64 libaprutil1 amd64 1.6.1-4ubuntu2 [84.7 kB]
Progress: [ 11%]
[#########..........................................................................] 0.Progress:
[ 13%] [###########........................................................................]
Get:4 http://archive.ubuntu.com/ubuntu focal/main amd64 libaprutil1-ldap amd64 1.6.1-4ubuntu2
[8,736 B]
Progress: [ 16%]
[############.......................................................................]
Progress: [ 18%]
[##############.....................................................................]
Get:7 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 apache2-bin amd64
2.4.41-4ubuntu3.1 [1,18Progress: [ 20%]
[################...................................................................]
Progress: [ 22%]
[##################.................................................................] kB]
Progress: [ 24%]
[####################...............................................................] 83Progress:
[ 27%] [######################.............................................................]
Get:10 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 apache2 amd64 2.4.41-4ubuntu3.1
[95.5 kBProgress: [ 29%]
[#######################............................................................]
Progress: [ 31%]
[#########################..........................................................]
Fetched 1,865 kB in 1s (1,777 kB/s)
Progress: [ 33%]
[###########################........................................................]
Progress: [ 36%]
[#############################......................................................] ling
terminal.)
Progress: [ 38%]
[###############################....................................................]
Progress: [ 40%]
[#################################..................................................]
Selecting previously unselected package libapr1:amd64.
Progress: [ 42%]
[###################################................................................]
Progress: [ 44%]
[####################################...............................................]
Unpacking libapr1:amd64 (1.6.5-1ubuntu1) ...

32
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Progress: [ 47%]
[######################################.............................................]
Progress: [ 49%]
[########################################...........................................]
Progress: [ 53%]
[############################################.......................................]
Progress: [ 58%]
[###############################################....................................]
Progress: [ 60%]
[#################################################..................................]
Unpacking libaprutil1-dbd-sqlite3:amd64 (1.6.1-4ubuntu2) ...
Selecting previously unselected package libaprutil1-ldap:amd64.
Preparing to unpack .../03-libaprutil1-ldap_1.6.1-4ubuntu2_amd64.deb ...
Progress: [ 62%]
[###################################################................................]
Progress: [ 67%]
[#######################################################............................]
Progress: [ 71%]
[###########################################################........................]
Progress: [ 76%]
[##############################################################.....................]
Progress: [ 80%]
[##################################################################.................]
Progress: [ 84%]
[######################################################################.............]
Progress: [ 89%]
[#########################################################################..........]
Progress: [ 93%]
[#############################################################################......]
Progress: [ 96%]
[###############################################################################....]
Unpacking apache2-bin (2.4.41-4ubuntu3.1) ...
Selecting previously unselected package apache2-data.
Preparing to unpack .../07-apache2-data_2.4.41-4ubuntu3.1_all.deb ...
Unpacking apache2-data (2.4.41-4ubuntu3.1) ...
Selecting previously unselected package apache2-utils.
Preparing to unpack .../08-apache2-utils_2.4.41-4ubuntu3.1_amd64.deb ...
Unpacking apache2-utils (2.4.41-4ubuntu3.1) ...
Selecting previously unselected package apache2.
Preparing to unpack .../09-apache2_2.4.41-4ubuntu3.1_amd64.deb ...
Unpacking apache2 (2.4.41-4ubuntu3.1) ...
Selecting previously unselected package ssl-cert.
Preparing to unpack .../10-ssl-cert_1.0.39_all.deb ...
Unpacking ssl-cert (1.0.39) ...
Setting up libapr1:amd64 (1.6.5-1ubuntu1) ...
Setting up libjansson4:amd64 (2.12-1build1) ...
Setting up ssl-cert (1.0.39) ...
debconf: unable to initialize frontend: Dialog
debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a
controlling terminal.)
debconf: falling back to frontend: Readline
Setting up liblua5.2-0:amd64 (5.2.4-1.1build3) ...
Setting up apache2-data (2.4.41-4ubuntu3.1) ...
Setting up libaprutil1:amd64 (1.6.1-4ubuntu2) ...
Setting up libaprutil1-ldap:amd64 (1.6.1-4ubuntu2) ...
Setting up libaprutil1-dbd-sqlite3:amd64 (1.6.1-4ubuntu2) ...
Setting up apache2-utils (2.4.41-4ubuntu3.1) ...
Setting up apache2-bin (2.4.41-4ubuntu3.1) ...
Setting up apache2 (2.4.41-4ubuntu3.1) ...
Progress: [ 98%]
[#################################################################################..]
Enabling module authz_core.

33
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Enabling module authz_host.


Enabling module authn_core.
Enabling module auth_basic.
Enabling module access_compat.
Enabling module authn_file.
Enabling module authz_user.
Enabling module alias.
Enabling module dir.
Enabling module autoindex.
Enabling module env.
Enabling module mime.
Enabling module negotiation.
Enabling module setenvif.
Enabling module filter.
Enabling module deflate.
Enabling module status.
Enabling module reqtimeout.
Enabling conf charset.
Enabling conf localized-error-pages.
Enabling conf other-vhosts-access-log.
Enabling conf security.
Enabling conf serve-cgi-bin.
Enabling site 000-default.
Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service →
/lib/systemd/system/apache2.service.
Created symlink /etc/systemd/system/multi-user.target.wants/apache-htcacheclean.service →
/lib/systemd/system/apache-htcacheclean.service.
Processing triggers for ufw (0.36-6) ...
Processing triggers for systemd (245.4-4ubuntu3.2) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9) ...
vagrant@server01:~$

Ahora comprueba el estado del servidor web que acabas de instalar. Utiliza el
siguiente comando sudo systemctl status apache2, que significa: “como
superusuario pídele al controlador del sistema (systemctl) que me diga el estado
(status) del servidor web (apache2)”. Este comando puede variar ligeramente de
un sistema Linux a otro, pero en esencia será así.

vagrant@server01:~$ sudo systemctl status apache2


● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
enabled)
Active: active (running) since Thu 2020-09-17 10:29:46 UTC; 5min ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 2826 (apache2)
Tasks: 55 (limit: 1074)
Memory: 5.1M
CGroup: /system.slice/apache2.service
├─2826 /usr/sbin/apache2 -k start
├─2828 /usr/sbin/apache2 -k start
└─2829 /usr/sbin/apache2 -k start

Sep 17 10:29:46 server01 systemd[1]: Starting The Apache HTTP Server...

34
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Sep 17 10:29:46 server01 apachectl[2824]: AH00558: apache2: Could not reliably


determine the serve…essage
Sep 17 10:29:46 server01 systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
vagrant@server01:~$

Te informará del estado que tiene tu servidor web (en este caso Activo) y del
tiempo que lleva en ese estado, así como del identificador de proceso que está
ejecutando el programa y la memoria que utiliza. Sin duda, profundizaremos
más adelante sobre todos estos datos, pero por ahora esto es suficiente para
saber que Apache está ejecutándose y que ya podrías servir páginas web.

Para probar esto, abre tu navegador web favorito, y en la barra de direcciones


introduces la dirección IP de la máquina server01 que es donde tienes instalado
el servidor web, en mi caso es 192.168.1.51. En tu caso puede ser distinta.

Te mostrará la página de bienvenida de Apache. Es una página web llamada


index.html y que se encuentra en el directorio. Apache la ha creado durante su
proceso de instalación. El directorio en cuestión dentro de Linux es
/var/www/html.

35
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Ya cuando empezamos a jugar con las máquinas virtuales, te hablé de lo


conveniente que resultaba que tu ordenador y la máquina virtual compartieran
una carpeta común. Pues bien, ahora vas a comprobar lo útil que es.

Apache crea una página web inicial que está en esta ruta,
/var/www/html/index.html, y carga esa página web por defecto, porque
cuando se instala, tiene configurado un sitio web por defecto, en un fichero de
configuración que está en la ruta /etc/apache2/sites-available/ y que se
llama 000-default.conf, donde tiene configurado que el directorio por defecto
para el sitio web es /var/www/html.

Lo que vas a hacer es un pequeño truco de ingenios@ de sistemas al sustituir la


carpeta /var/www/html por un enlace directo a la carpeta /vagrant/html.

Lo primero que vas a hacer es crear un directorio HTML dentro de la carpeta


Vagrant, que es la carpeta compartida entre las máquinas virtuales y tu
ordenador.

Como es una carpeta compartida, puedes crear la carpeta HTML bien desde
Windows o bien desde Linux. Es más propio de un ingenios@ de sistemas hacerlo
desde Linux usando la consola de comandos.

vagrant@server01:~$ mkdir /vagrant/html

Ahora usa el comando “touch” para crear otro fichero index.html dentro de la
carpeta que acabas de crear /vagrant/html

vagrant@server01:~$ touch /vagrant/html/index.html

Y recuerda…. ¡Es una carpeta compartida y que puedes usar cualquier editor de
texto que te guste para editar el contenido de ese fichero! Abre el fichero con tu
editor de texto y pega este contenido dentro del fichero HTML.

<!DOCTYPE html>
<html lang="en">

36
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>

<body>
<h1> Eres ingenios@ de sistemas</h1>
</body>

</html>

Es un ejemplo de lo que puedes hacer, para que seas consciente de la tremenda


ventaja que supone el que esa carpeta sea compartida.

Bien, ahora solo vamos a mover la carpeta HTML que ha creado Apache para ti,
para no borrar nada. La vamos a poner dentro de la carpeta /var.

vagrant@server01:~$ sudo mv /var/www/html /var/

Y después solo tenemos que hacer otro truquito de ingenios@ de sistemas. Harás
un link o enlace para que la carpeta HTML que pongamos dentro de /var/www
sea la carpeta /vagrant/html, Eso lo puedes hacer con el siguiente comando.

vagrant@server01:~$ sudo ln -s /vagrant/html /var/www/html

Si no te ha dado ningún error, la carpeta /var/www/html es ahora realmente


/var/www/(/vagrant/html.) Te lo escribo entre paréntesis para que puedas
ver el truco, pero para Apache, a todos los efectos, va a ser /var/www/html, . La
gran ventaja es que la puedes editar desde tu editor de código favorito en tu
ordenador. Cuando salves el fichero y recargues la página en el navegador,
podrás ver los cambios de inmediato.

¿Tienes abierto el navegador web con la página de inicio de Apache? Recarga la


página o abre un navegador. A continuación escribe la dirección ip de tu máquina
virtual. Debes ver esto:

37
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

¿Qué has aprendido?

En este capítulo has instalado un servidor de aplicaciones Web:

● Has aprendido a configurar tu máquina virtual con parámetros de red


específicos para tus propósitos.
● Has instalado Apache como servidor de aplicaciones en una de tus
máquinas virtuales de tu laboratorio.
● Has utilizado la carpeta compartida que crea Vagrant entre tu entorno
virtual y tu ordenador para poder editar las páginas web desde Windows
de forma inmediata sin tener que descargar y subir ficheros al servidor
web cada vez que haces un cambio

38
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

¿Qué es una aplicación web?

Si has llegado hasta aquí, ya has visto lo que es una página web y cómo se
monta un servidor, para que cuando un usuario navegue hasta tu dirección, vea
el contenido web.

Una página HTML es lo que se conoce como una página estática. La de nuestro
ejemplo solo tiene una cabecera que te dice que “Eres un ingenios@ de
sistemas”. Podría tener muchas más cosas: más texto o enlaces a otras páginas.....
Todo lo que se te ocurra.

Como ya te dije al principio del libro, este no pretende ser una guía de
programación HTML ni de diseño de páginas web. Está orientado a aprender
sobre sistemas, sobre servidores y servicios que se ejecutan en ellos y que se
pueden relacionar entre sí.

La verdad es que no hemos montado todo este lío para poder ver una página
web. Vamos a instalar una aplicación web, en concreto un CMS (Content
Manager System) o gestor de contenido web. Es una aplicación porque tiene
datos dinámicos y tiene funcionalidad. No es únicamente un conjunto de páginas
web estáticas.

Un gestor de contenidos te va a servir para crear páginas web con mucha


funcionalidad, que es la base de casi cualquier proyecto que quieras emprender
hoy en día. Ya sea un proyecto digital o no, necesitarás una página web.

Aquí me puedes decir: “Charlie ¡Yo me las apaño con una página simple y
estática a modo de tarjeta de visita!”

39
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Ya. Eso crees tú ahora. En cuando quieras recoger datos de tus potenciales
clientes a través de un formulario de contacto, o bien su correo electrónico para
enviarle emails en un futuro, ya tienes que utilizar un formulario, con funciones
de envío de información y que guarde los datos de tus posibles clientes.

Para eso vamos a usar este gestor de contenido, que es ni más ni menos
WordPress, el más conocido e implantado en internet.

Además es código abierto, así que es gratuito. Podrás instalar la aplicación y


configurar sus parámetros a tu gusto y de acuerdo con tus necesidades. Con él
vas a poder montar portales web, redes sociales, comercios electrónicos,
directorios de empresas, herramientas para digitalizar y virtualizar empresas...
Un sin fin de aplicaciones más.

¿Y dónde guardamos todos los datos?

Una aplicación web va a manejar datos, seguro. Debe de guardarlos en algún


sitio. Para esta función están las bases de datos. Vas a conocer un gestor de
bases de datos amadísimo y también de código abierto. MySQL es el rey de los
gestores de bases de datos relacionales.

¿Qué es una base de datos relacional?

Una base de datos relacional es aquella en la que los datos se guardan en tablas,
con columnas (que son los nombres de los datos que quieres almacenar) y filas
(que son los datos que almacenas).

Una tabla para guardar datos de los suscriptores a tu lista de correo, necesita al
menos una columna, que sería la correspondiente al correo electrónico. Pero
debería tener más columnas. Como mínimo otra más, en la que se guarde si este
usuario ha confirmado su suscripción a través del correo de confirmación que le
has enviado. Así que tendrías una tabla con dos columnas “email” y”confirmado”,
más otra columna que añade el propio gestor de base de datos de manera
automática. Esta columna corresponde al identificador de cada fila, un valor

40
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

numérico que no se repite y que es el identificador unívoco de cada registro de


tu tabla.

Además de esta tabla, si vendes cosas a través de tu web, vas a tener un montón
de tablas más: tablas de productos, otra para registrar las ventas de los
productos y otra para registrar los clientes que te compran los productos, etc.

La filosofía de estas tablas es una base de datos relacional. Es no repetir la


información. Es relacionar los registros de una tabla con otro u otros de otra tabla,
y de esa forma, se consigue extraer la información de la base de datos, usando
un lenguaje estandarizado que se llama SQL.

La tabla “pedidos” tendrá relación con la tabla clientes y con la tabla productos.
Un pedido estará relacionado con un cliente y tendrá relación con uno o con
varios productos.

Este e-book no es curso de SQL, ni tampoco de programación HTML, pero te


dejo enlaces suficientes para que puedas investigar por tu cuenta si te atrae el
tema. Además, puedes visitar mi web tecnolitas.com y tendrás acceso a
tutoriales y otros cursos para ampliar tu formación como ingenios@ de sistemas.

¿Cómo es un entorno de aplicaciones web tradicionales?

Antes has instalado Apache para servir páginas web, pero para poder servir
aplicaciones web, necesitamos un entorno más completo. Necesitamos un
entorno que en Linux se conoce como LAMP (Linux, Apache, MySQL y PHP). Este
es el conjunto que se necesita para la mayoría de aplicaciones web hoy en día.

Muchas aplicaciones web están hechas en PHP. Con este conjunto de


aplicaciones LAMP podrás hacerlas funcionar. También podrías usar un entorno
XAMP (Windows, Apache, MySQl y PHP) or MAMP ( Mac, Apache, MySQL y PHP).

Como ves, vas a tener la opción que necesites, pero utilizando un entorno virtual
con máquinas virtuales. Da igual qué sistema operativo tenga tu ordenador. Todo
será tal y como lo has aprendido en este libro.

41
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

¿Qué es una aplicación web CMS?

Después de haber experimentado con la página web estática, debes tener la


oportunidad de utilizar un CMS (Content Management System). Este tipo de
aplicación te permitirá gestionar contenido, en modo de páginas web, entradas
de un blog, usuarios de una intranet, productos y categorías de una tienda online.

A estas alturas del libro, ya eres muy ingenios@ de sistemas. Estoy convencido de
que se te pueden ocurrir muchas formas ingeniosas de usar un gestor de
contenido, o cualquier otra de las muchas aplicaciones de código abierto que
hay en internet. Todas se instalan prácticamente igual que la que estás a punto
de instalar.

Tu misión en este capítulo va a ser aprender como instalar la aplicación. Así, en el


próximo capítulo, podré enseñarte todo un señor truco de ingenios@ de sistemas,
Te sorprenderá. Un poco de paciencia……

En esencia vamos a instalar WordPress, que consiste en una serie de páginas web
y una serie de carpetas e información. La información puede ser de dos tipos:
datos, que guardaremos en la base de datos, y archivos estáticos, que serán
logotipos, fotografías, documentos PDF y todos aquellos activos que quieras
gestionar, dependiendo de la aplicación para la que hayas instalado el gestor.

Si, por ejemplo, lo que quieres es hacer un blog, estos archivos serán las
fotografías que utilices en tus artículos,

En esta sección del libro vas a instalar WordPress en la máquina server01 y en el


próximo capítulo te explicaré para qué queremos server02 y server03.

En el capítulo anterior habías instalado Apache como servidor web, pero para
este capítulo, en vez de continuar, vamos a empezar desde cero.

¡Vamos a destruir la máquina virtual y a reiniciarla de nuevo para que no tenga ni


rastro de la instalación que has hecho!

42
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Como solo quieres actuar sobre la máquina server01, vas a ser específico con los
comandos que utilizas.

C:\Users\charliealonso\laboratorio>vagrant destroy server01

Te preguntará si estás seguro, y respondes que sí con una “y”, después pulsa
“enter”

C:\Users\charliealonso\laboratorio>vagrant destroy server01


server01: Are you sure you want to destroy the 'server01' VM? [y/N] y
==> server01: Forcing shutdown of VM...
==> server01: Destroying VM and associated drives…

Y vuelves a iniciar la máquina con el siguiente comando

C:\Users\charliealonso\laboratorio>vagrant up server01
Bringing machine 'server01' up with 'virtualbox' provider...
==> server01: Importing base box 'bento/ubuntu-18.04'...
==> server01: Matching MAC address for NAT networking...
==> server01: Checking if box 'bento/ubuntu-18.04' version '202008.16.0' is up to
date...
==> server01: Setting the name of the VM: laboratorio_server01_1600460971841_5277
==> server01: Clearing any previously set network interfaces...
==> server01: Preparing network interfaces based on configuration...
server01: Adapter 1: nat
server01: Adapter 2: bridged
server01: Adapter 3: intnet
==> server01: Forwarding ports...
server01: 22 (guest) => 2222 (host) (adapter 1)
==> server01: Booting VM...
==> server01: Waiting for machine to boot. This may take a few minutes...
server01: SSH address: 127.0.0.1:2222
server01: SSH username: vagrant
server01: SSH auth method: private key
server01: Warning: Connection reset. Retrying...
server01: Warning: Connection aborted. Retrying...
server01:
server01: Vagrant insecure key detected. Vagrant will automatically replace
server01: this with a newly generated keypair for better security.
server01:
server01: Inserting generated public key within guest...
==> server01: Machine booted and ready!
==> server01: Checking for guest additions in VM...
==> server01: Setting hostname...
==> server01: Configuring and enabling network interfaces...
==> server01: Mounting shared folders...

43
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

server01: /vagrant => C:/Users/charliealonso/laboratorio

Ya tienes tu máquina server01 limpita para volver a hacer experimentos. ¿Mola,


eh?.

Preparando el entorno LAMP

Empieza a instalar tu entorno LAMP sobre la máquina virtual. Te conectas por ssh
a tu máquina y actualizas el sistema operativo.

C:\Users\charliealonso\laboratorio>vagrant ssh serevr01

vagrant@server01:~$ sudo apt update

Después de la actualización, instala Apache como ya hiciste en el capítulo


anterior:

vagrant@server01:~$ sudo apt install apache2

Responde “y” a la pregunta de confirmación que te hace el instalador.


Para comprobar que todo ha ido bien, puedes utilizar el navegador, navegando a
la dirección IP de tu servidor virtual para ver la página de bienvenida de Apache.

Atención: como has destruido y has vuelto a crear la máquina server01, es


posible que su dirección IP haya cambiado. Comprueba cuál es utilizando el
comando “ip a show”.

Recuerda, la página de bienvenida de Apache es esta:

44
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

El siguiente paso es instalar MySQL.

Ejecuta el siguiente comando:

vagrant@server01:~$ sudo apt install mysql-server


Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.1-7
libfcgi-perl
libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl
libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libmecab2
libtimedate-perl
liburi-perl mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0
mysql-client-core-8.0 mysql-common mysql-server-8.0 mysql-server-core-8.0
Suggested packages:
libdata-dump-perl libipc-sharedcache-perl libwww-perl mailx tinyca
The following NEW packages will be installed:
libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.1-7
libfcgi-perl
libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl
libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libmecab2
libtimedate-perl
liburi-perl mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0
mysql-client-core-8.0 mysql-common mysql-server mysql-server-8.0
mysql-server-core-8.0
0 upgraded, 24 newly installed, 0 to remove and 56 not upgraded.
Need to get 30.6 MB of archives.
After this operation, 248 MB of additional disk space will be used.
Do you want to continue? [Y/n]

45
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Contesta “y” a la pregunta. Continúa con la instalación hasta que termine. Como
es un laboratorio, vamos a concluir la instalación de MySQL aquí.

Si se tratara de un sistema en producción, deberías instalar el modo seguro de la


base de datos. En esencia, lo que hace este modo, es crear una contraseña para
el usuario “root” de MySQL. Además, desactiva la posibilidad de que el usuario
root se conecte a la base de datos desde otra máquina externa, impidiendo que
tu base de datos sea vulnerable.

Comprueba que está bien instalado, entrado a la consola de MySQL.


Simplemente ejecuta el comando mysql precedido del comando sudo para
ejecutar como superusuario.

vagrant@server01:~$ sudo mysql


Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.21-0ubuntu0.18.04.4 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its


affiliates. Other names may be trademarks of their respective
owners.

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

mysql>

Acabas de comprobar que MySQL funciona. Teclea “exit” para salir de la consola
del gestor de base de datos y continuar con la instalación.

mysql> exit

El siguiente paso es instalar PHP y las librerías que vamos a necesitar. Hazlo con
este comando:

46
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

vagrant@server01:~$ sudo apt install php libapache2-mod-php php-mysql


Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libapache2-mod-php7.4 php-common php7.4 php7.4-cli php7.4-common php7.4-json
php7.4-mysql php7.4-opcache php7.4-readline
Suggested packages:
php-pear
The following NEW packages will be installed:
libapache2-mod-php libapache2-mod-php7.4 php php-common php-mysql php7.4
php7.4-cli
php7.4-common php7.4-json php7.4-mysql php7.4-opcache php7.4-readline
0 upgraded, 12 newly installed, 0 to remove and 56 not upgraded.
Need to get 4,143 kB of archives.
After this operation, 18.5 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Y una vez que termine el instalador tendrás que comprobar que está bien
instalado,

Ejecuta el comando php -v para comprobar la versión de PHP que se ha


instalado.

vagrant@server01:~$ php -v
PHP 7.4.3 (cli) (built: May 26 2020 12:24:22) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
vagrant@server01:~$

Ya tienes listo todo lo que necesitas para empezar a instalar WordPress, El


siguiente paso es:

1. Crear una base de datos llamada laboratorio para guardar los datos del
sitio “laboratorio” que vas a instalar.
2. Crear un usuario llamado “usrlab” para que sea el usuario que WordPress
use para conectarse a la base de datos.
3. Otorgar privilegios al usuario “urslab” para la base de datos “laboratorio”.

47
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Entra en la consola de MySQL:

vagrant@server01: sudo mysql

Una vez estés dentro de la consola, teclea el siguiente comando:

mysql>CREATE DATABASE laboratorio DEFAULT CHARACTER SET utf8 COLLATE


utf8_unicode_ci;

Con este comando creamos una base de datos llamada “laboratorio” con un
juego de caracteres utf8 unicode (quiere decir compatible con acentos y
símbolos del castellano).

Después usa este otro comando:

mysql>CREATE USER 'usrlab'@'localhost' IDENTIFIED WITH mysql_native_password BY


'l4b0r4t0r10';

Con él crea un usuario llamado “usrlab” y lo identifica con una contraseña


tradicional, que es 'l4b0r4t0r10’. Tú puedes usar el nombre de usuario que
quieras y la contraseña que más te guste, pero luego acuérdate de que vamos a
usarlo en un fichero de configuración.

mysql>GRANT ALL ON laboratorio.* TO 'usrlab'@'localhost';

Por último, ejecuta este comando que garantiza todos los privilegios del usuario
‘usrlab’ sobre la base de datos ‘laboratorio’, (lectura escritura y borrado de
datos) para que WordPress pueda operar en esta base de datos sin problemas
de permisos. Por último, solo te queda inicializar los privilegios y salir de la
consola de MySQL.

mysql>FLUSH PRIVILEGES;
mysql>exit;

En este punto te conviene hacer otra actualización del sistema operativo con el
comando que ya conoces:

vagrant@server01: sudo apt update

48
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Ahora añadimos alguna librería más de PHP que sabemos que WordPress va a
necesitar.

vagrant@server01: sudo apt install php-curl php-gd php-mbstring php-xml


php-xmlrpc php-soap php-intl php-zip

Y reinicias el servicio Apache para que refleje todos estos cambios que has
hecho con las actualizaciones.

vagrant@server01: sudo systemctl restart apache2

Vamos ahora a ejecutar un comando que instalará un nuevo módulo de Apache,

vagrant@server01:~$ sudo a2enmod rewrite

cuando haya terminado de ejecutarse, ejecuta este otro para reiniciar el servidor
web y cargar los nuevos cambios

vagrant@server01:~$ sudo systemctl restart apache2

Instalando WordPress

Ahora que ya tienes configurado el servidor para poder instalar WordPress,


descarga la aplicación, entra en el directorio /tmp y descarga allí los archivos de
la aplicación

vagrant@server01:~$ cd /tmp
vagrant@server01:~$ curl -O https://wordpress.org/latest.tar.gz

Descomprime el archivo que acabas de descargar. Fíjate bien en que he quitado


la cabecera vagrant@server01:~$ en los siguientes comandos y la he sustituido
por ~$. Esto es para que se puedan leer mejor los comandos largos y evitar que
ocupen varias líneas y lleven a confusión.

~$ tar xzvf latest.tar.gz

49
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Crea tu fichero .htaccess dentro del directorio de WordPress.

~$ touch /tmp/wordpress/.htaccess

Copia la plantilla del fichero de configuración que te has descargado del archivo
de WordPress para poder tener tu propio fichero de configuración, respetando el
original, por si algo sale mal y tienes que volver a utilizar el que te has
descargado.

~$ cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

Crea el directorio donde WordPress pondrá los ficheros para sus actualizaciones:

~$ mkdir /tmp/wordpress/wp-content/upgrade

Y finalmente copia todos los ficheros de WordPress a la carpeta donde Apache


buscará el fichero a ejecutar cuando desde un navegador pongas la dirección
http://192.168.1.51 (que en tu caso tiene que ser la dirección del servidor virtual
server02).

~$ sudo cp -a /tmp/wordpress/. /var/www/html/

Ahora vamos con la configuración del directorio de la aplicación para que pueda
funcionar correctamente. Por una parte, Linux es bastante quisquilloso con el
tema de los permisos que tiene que tener un usuario a la hora de ejecutar
ficheros, y por otra parte, Apache es una aplicación que necesita también sus
permisos para ejecutar ficheros.

Lo primero que vas a hacer es otorgar la propiedad del director /var/www/html


al usuario Apache con el siguiente comando, para que pueda ejecutar los
ficheros de esa carpeta sin problema.

~$ sudo chown -R www-data:www-data /var/www/html

50
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Después ejecutamos los siguientes comandos para establecer los permisos de


los directorios y archivos de WordPress:

~$ sudo find /var/www/html/ -type d -exec chmod 750 {} \;


~$ sudo find /var/www/html/ -type f -exec chmod 640 {} \;

Y ahora, antes de ponerte a editar los ficheros de configuración de WordPress


con el editor nano de Linux (que es muy antipático), vas a hacer nuestro truco de
utilizar la carpeta compartida para poder editar los ficheros desde Windows.

¡Recuerda el truco! Primero movemos la carpeta /var/www/html y todo su


contenido al directorio /vagrant

~$ sudo mv /var/www/html/ /vagrant/html

Ahora le das la propiedad de esa carpeta al usuario de Apache, como hiciste


antes con la carpeta /var/www/html

~$ sudo chown -R www-data:www-data /vagrant/html

Y por último, creas un enlace simbólico (un acceso directo en lenguaje Windows)
desde la carpeta /vagrant/html hasta la carpeta /var/www/html , que es donde
Apache espera encontrar las páginas de WordPress.

~$ sudo ln -s /vagrant/html /var/www/html

Ya puedes editar desde tu explorador de Windows cualquier fichero de la


carpeta /var/www/html, con el editor de textos que más te guste,

Ejecuta este comando para obtener unas claves de seguridad con las que
WordPress encripta una serie de datos en su base de datos.

~$ curl -s https://api.wordpress.org/secret-key/1.1/salt/

Cuando ejecutes este comando la consola te devolverá estos valores. Tienes que
copiarlos, ya que los vas a pegar en el fichero de configuración de WordPress.

define('AUTH_KEY', 'zym-7G Js@p/(hp`gidz1_y/#l(KAjhgr=f=vx({vLu= mp[-RZO2,VIl3*IBEnQ');


define('SECURE_AUTH_KEY', '=Nv;VY)InSzuBz=[YDep-aMq,W6wg1-C$kV)7W|]u*p-eG5HDfI0t-a/dQ4|BB7%');
define('LOGGED_IN_KEY', '0]P5n+-$5S{9N[b b&{w_Wj(d Z6_/KC{S {@eSDebNu]7-k/J2KCVb>g+pciv!k');
define('NONCE_KEY', 'o,90:ahRP(?}ylX<:(}TF16b9r-]s75:z!T%2F*q/pnM|K87@eXv7IX]`N&Ba6Ss');

51
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

define('AUTH_SALT', '0 m12cR6Cief5kr-o<XvglEFC<Th-~]wsHecUjK$XQV2mOyf^i{&k#V9nrjQ[za]');


define('SECURE_AUTH_SALT', 'T:bPp2U[U[I{h5a%Dx }X*|UD,&( uSRR*d}.3gyX5xzTK`U0,=UI]&Evs|(N(D(');
define('LOGGED_IN_SALT', ':?Pehb))`Xj7BXb-<QO7b79&${&bsXm|F@-V+czk+Tx5(qH$$tbmx n41+i.FdM[');
define('NONCE_SALT', '/$hU!`)tBm2<w/@|:YHsWoIgT+;/#6ocT+>BK<&D>h-$3?kXky )XNe9c24a+fn(');

Edita el fichero C:/Users/charliealonso/laboratorio/html/wp-config.php con el editor


Notepad++ o similar. Sustituye los parámetros con los valores que has creado
anteriormente para la configuración de la base de datos,

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'laboratorio' );

/** MySQL database username */


define( 'DB_USER', 'usrlab' );

/** MySQL database password */


define( 'DB_PASSWORD', 'l4b0r4t0r10' );

Copia también las claves que has obtenido para la seguridad de wordpress y las
pegas, sustituyendo esta sección en el fichero.

. . .

define('AUTH_KEY', 'VALUES COPIED FROM THE COMMAND LINE');


define('SECURE_AUTH_KEY', 'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_KEY', 'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_KEY', 'VALUES COPIED FROM THE COMMAND LINE');
define('AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_SALT', 'VALUES COPIED FROM THE COMMAND LINE');

. . .

Debe quedar un fichero de configuración como el que se muestra a continuación


en la captura de imagen, con Los datos de conexión a tu base de datos y los
parámetros de seguridad que se te ha generado la API de WordPress para tu
instalación.
Añade la línea define('FS_METHOD', 'direct'); después de las claves de
seguridad.

52
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Este es el contenido íntegro del fichero de configuración de WordPress una vez


editado

<?php
/**
* The base configuration for WordPress
*
* The wp-config.php creation script uses this file during the
* installation. You don't have to use the web site, you can
* copy this file to "wp-config.php" and fill in the values.
*
* This file contains the following configurations:
*
* * MySQL settings
* * Secret keys
* * Database table prefix
* * ABSPATH
*
* @link https://wordpress.org/support/article/editing-wp-config-php/

53
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

*
* @package WordPress
*/

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'laboratorio' );

/** MySQL database username */


define( 'DB_USER', 'usrlab' );

/** MySQL database password */


define( 'DB_PASSWORD', 'l4b0r4t0r10' );

/** MySQL hostname */


define( 'DB_HOST', 'localhost' );

/** Database Charset to use in creating database tables. */


define( 'DB_CHARSET', 'utf8' );

/** The Database Collate type. Don't change this if in doubt. */


define( 'DB_COLLATE', '' );

/**#@+
* Authentication Unique Keys and Salts.
*
* Change these to different unique phrases!
* You can generate these using the {@link
https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
* You can change these at any point in time to invalidate all existing cookies.
This will force all users to have to log in again.
*
* @since 2.6.0
*/
define('AUTH_KEY', 'zym-7G Js@p/(hp`gidz1_y/#l(KAjhgr=f=vx({vLu= mp[-RZO2,VIl3*IBEnQ');
define('SECURE_AUTH_KEY', '=Nv;VY)InSzuBz=[YDep-aMq,W6wg1-C$kV)7W|]u*p-eG5HDfI0t-a/dQ4|BB7%');
define('LOGGED_IN_KEY', '0]P5n+-$5S{9N[b b&{w_Wj(d Z6_/KC{S {@eSDebNu]7-k/J2KCVb>g+pciv!k');
define('NONCE_KEY', 'o,90:ahRP(?}ylX<:(}TF16b9r-]s75:z!T%2F*q/pnM|K87@eXv7IX]`N&Ba6Ss');
define('AUTH_SALT', '0 m12cR6Cief5kr-o<XvglEFC<Th-~]wsHecUjK$XQV2mOyf^i{&k#V9nrjQ[za]');
define('SECURE_AUTH_SALT', 'T:bPp2U[U[I{h5a%Dx }X*|UD,&( uSRR*d}.3gyX5xzTK`U0,=UI]&Evs|(N(D(');
define('LOGGED_IN_SALT', ':?Pehb))`Xj7BXb-<QO7b79&${&bsXm|F@-V+czk+Tx5(qH$$tbmx n41+i.FdM[');
define('NONCE_SALT', '/$hU!`)tBm2<w/@|:YHsWoIgT+;/#6ocT+>BK<&D>h-$3?kXky )XNe9c24a+fn(');

/**#@-*/

define('FS_METHOD', 'direct');
/**
* WordPress Database Table prefix.
*
* You can have multiple installations in one database if you give each
* a unique prefix. Only numbers, letters, and underscores please!

54
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

*/
$table_prefix = 'wp_';

/**
* For developers: WordPress debugging mode.
*
* Change this to true to enable the display of notices during development.
* It is strongly recommended that plugin and theme developers use WP_DEBUG
* in their development environments.
*
* For information on other constants that can be used for debugging,
* visit the documentation.
*
* @link https://wordpress.org/support/article/debugging-in-wordpress/
*/
define( 'WP_DEBUG', false );

/* That's all, stop editing! Happy publishing. */

/** Absolute path to the WordPress directory. */


if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', __DIR__ . '/' );
}

/** Sets up WordPress vars and included files. */


require_once ABSPATH . 'wp-settings.php';

Configuración inicial de Wordpress

Ahora solo tienes que poner en tu navegador la dirección IP de tu server01, y


como todo habrá ido bien, aparecerá la página de selección de idioma del panel
de control de Wordpress..

55
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Selecciona “español” y pulsa el botón continuar. Llegarás hasta la página de


configuración de datos básicos de tu sitio web:

56
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Rellena este formulario con tus propios datos y pulsa el botón de Instalar
Wordpress. El proceso de instalación durará unos segundos, Cuando termine
aparecerá esta página.

57
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Haz clic en “acceder” y te aparecerá el formulario de acceso en el que tienes


que poner tu nombre de usuario y contraseña. Las mismas que has puesto antes
en el formulario de configuración:

58
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Al pulsar el botón “acceder” habrá llegado al panel de control de WordPress, el


backoffice donde el administrador tiene control total de este gestor de contenido.

Y si usas esta opción en el menú de administración, podrás ver el aspecto de tu


página web.

59
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

¿Qué has aprendido?

Este es el resumen de lo que has aprendido en este capítulo:

● Has aprendido a instalar un entorno LAMP en un servidor Ubuntu 20.04


● Has configurado la carpeta compartida /vagrant como enlace simbólico
para que sea el directorio base donde Apache ejecutará WordPress y
poder editar los ficheros desde un editor de textos en Windows.
● Has instalado WordPress y realizado la configuración inicial para acceder
al panel de control de tu nuevo sitio web.

60
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

¡Tu primer reto conseguido!

¡Enhorabuena ingenios@ de sistemas!

Si has llegado hasta aquí es que acabas de conseguir tu primer reto. Más claro
aún. Has conseguido instalar una plataforma WordPress en una máquina virtual
en tu propio ordenador. ¿Te sientes estupendamente? ¡Seguro que sí!

Es posible que ya supieras que son las máquinas virtuales, o no. También es
posible que ya conocieras WordPress, o no.

Es cierto que en la internet hay cientos, mejor dicho, miles de páginas,


explicando cómo instalar un WordPress con un solo clic en uno de los cientos de
hosting que puedes encontrar.

En este libro he querido transmitirte un poco de los fundamentos, sin pretender


que estudies. Has podido ver la relación entre tu ordenador y la máquina virtual
que ha hospedado, así como la configuración de las redes que necesitas para
que una máquina hable con la otra.

¡Aspira a ser ingenios@ de sistemas!

Ya tienes instalado WordPress en una de las máquinas de tu laboratorio virtual,


pero queremos ir más allá. Este libro no trata sobre la instalación de WordPress.
Podrías haber encontrado un montón de guías y tutoriales que te enseñan a
instalar este gestor de contenido en Ubuntu 20.04 con comandos que apenas
ocupan una o dos páginas,

Con este libro pretendo darte a entender lo que haces, haciéndolo de una forma
diferente y utilizando herramientas que te dan un mayor control y entendimiento
de los procesos que conlleva la administración de servidores, plataformas y
servicios informáticos.

61
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Si aprendes unos pocos conceptos básicos y acumulas información en forma de


“chuletas”, pequeñas guías o snippets de comandos para realizar tareas,
poniéndolas en práctica una y otra vez hasta que las ejecutas sin problemas, te
habrás convertido en un ingenios@ de sistemas sin miedo a nada. Serás capaz de
instalar y configurar herramientas muy útiles y necesarias, con mucha demanda
laboral y mucha capacidad de emprender tus propios proyectos y negocios.

Antes de seguir avanzando con la parte formativa, me gustaría que comprendas


el punto de vista que hay detrás de un ingenios@ de sistemas.

Me gustaría explicarte qué cualidades debes desarrollar para disponer de la


mentalidad necesaria para destacar y ser un ingenios@ competente.

Hay dos preguntas básicas que te tienes que hacer a cada momento, “¿Cómo
podría?” y “¿Qué pasa si?” No tiene que ser necesariamente en ese orden.

La idea sería esta:

¿Cómo podría montar una página web para hacer un festival de cortos online?.

- Necesitaría una página web donde los usuarios se pudieran dar de alta y
subir los videos de sus cortos,

- Necesitaría un servidor virtual privado con unas capacidades mínimas para


probar si la idea funciona.

.¿Qué pasaría si tiene éxito y se apuntan muchos usuarios y quieres subir muchos
vídeos?

.¿Cómo podría expandir la capacidad de mi servidor?

- Sería bueno poder ir ampliando el número de cortes y memoria a medida


que vaya teniendo nuevos usuarios.

62
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

¿Qué pasaría si tengo mucho éxito y los videos no saben en el almacenamiento


que tiene uno de estos servidores por defecto?

¿Cómo podría montar un sistema muy básico hasta validar la idea y luego ir
ampliando el almacenamiento poco a poco?

- Sin tener que invertir en un servidor con mucho almacenamiento, que voy
a tener que pagar desde el primer día aunque esté vacío.

Esta es la esencia. ¿Ves por donde voy? Cuestionar, cuestionar y cuestionar. De


esta forma siempre tendrás un plan para ir desde lo más pequeño hasta lo más
grande.

Otro aspecto importante de la mentalidad del ingenios@ de sistemas, es la


integración. Mezclar cosas, juntar pequeños sistemas entre sí y hacer que
trabajen juntos, que se integren o que pasen información de unos a otros.

Sé que tienes esta mentalidad.

Por eso, para que puedas adquirir más conocimiento y experimentar con un
completo laboratorio de máquinas virtuales, mezclando e integrando tecnología
de código abierto, he escrito la segunda parte de este libro. La puedes descargar
de mi página web.

Pero antes te voy a pedir un favor. Me gustaría saber más sobre ti, para conocer
tus intereses y poder orientar mis contenidos a cosas que realmente te sean
útiles. Te voy a pedir que rellenes un pequeño formulario.

Haz clic en el enlace que te llevará al formulario para después poder descargar
Como ser ingenios@ de sistemas (almacenamiento redundante)

63
Como ser “Ingenios@ de sistemas” sin ser ingenier@ Tecnolitas.com

Agradecimientos

Mi más sincero agradecimiento a las muchas comunidades de código abierto


que hacen posible la democratización de la tecnología, y a aquellas compañías
que hacen que la tecnología esté disponible de forma gratuita, para poder
aprender y conocer los avances tecnológicos.

En particular quiero agradecer a Oracle la posibilidad de usar un hipervisor de


máquinas virtuales como Oracle VM VirtualBox

Quiero también agradecer a Hashicorp, este magnífico gestor de entornos


virtuales que es Vagrant.

Por último, también quiero destacar mi agradecimiento a Automatic, por crear y


compartir WordPress, esta magnífica herramienta de gestión de contenidos que
tantas posibilidades me ha dado. Estoy seguro de que también os las va a
proporcionar a vosotros.

64

También podría gustarte