Está en la página 1de 34

Guía completa de protocolo de instalación

Teclas y Monitores Optimización de Recursos, S.L. (TYM)


Índice
Creación de máquina virtual.........................................................................................................2
Configurar clave SSH..................................................................................................................7
Configuración del Firewall de manera básica y cambio de puerto del servidor SSH....................8
Instalación del LAMP (Apache, MySQL y PHP).......................................................................11
Instalación de Apache............................................................................................................11
Instalación de MySQL...........................................................................................................13
Instalación de PHP.................................................................................................................14
Instalación de WordPress...........................................................................................................16
Creación de base de datos en MySQL....................................................................................16
Instalación de extensiones de PHP.........................................................................................17
Ajustamos la configuración de Apache para permitir sobreescritura o reescritura.................17
Descarga de WordPress..........................................................................................................18
Snapshot en frío de una VM.......................................................................................................23
Configuración del HTTPS mediante certificado autofirmado....................................................24
Configurar Apache para usar SSL..........................................................................................24
Habilitar los cambios en Apache............................................................................................27
Instalación y configuración de Nginx.........................................................................................27
Deshabilitar Apache...............................................................................................................27
Instalación de Nginx...............................................................................................................28
Configuración de Nginx.........................................................................................................29
Configuración de HTTPS.......................................................................................................30
Creación de máquina virtual
Para la creación de nuestro sitio web con WordPress, lo primero que vamos a hacer es
crear una máquina virtual donde trabajar.

Para ello, abrimos el Oracle Virtual Box, le damos a “Nuevo” y creamos la máquina
virtual. En este caso le pondremos el nombre que queramos y seleccionamos el Tipo de
sistema Linux y la versión de Ubuntu de 64 bits.

Le damos a “Siguiente” y seleccionamos una memoria de 4GB (4096MB).


Creamos el disco virtual ahora.

El tipo de archivo de disco duro va a ser VDI (VirtualBox Disk Image).

Y hacemos uso del almacenamiento Reservado dinámicamente.


Le damos una memoria de almacenamiento de 10,00GB, que viene marcada por
defecto.

Y creamos la máquina dándole al botón “Crear”.

Ahora debemos configurar nuestra máquina virtual, para ello, tendremos que hacer click
en “Configuración” para, a continuación, acceder a “Almacenamiento” y seleccionamos
el CD que esté vacío.

Dentro de la unidad óptica, le damos al icono del CD y Seleccionamos un archivo de


disco… en este caso, buscaremos la ruta donde tengamos descargado la ISO del Ubuntu
Server 20.04; que es el SO que vamos a instalar.

Una vez lo tengamos seleccionado, le damos a “Aceptar”.


Antes de iniciar la máquina, tenemos que configurar la Red y ponerlo como Adaptador
puente.

Iniciamos la máquina virtual e instalamos el SO de Ubuntu.

Debemos seguir los pasos que nos marque el instalador de Ubuntu.

 Idioma español.
 Disposición del teclado en español.
 En “Conexiones de red” dejamos la configuración por defecto.
 El proxy lo dejamos vacío.
 El repositorio de Ubuntu, lo dejamos por defecto.
 La configuración del disco la dejamos por defecto.
 En la configuración del perfil:
o Nombre: el nombre del perfil que queramos darle.
o Servidor: el nombre del servidor que identifique el proyecto.
o Nombre de usuario: el nombre del usuario que queramos darle.
o Contraseña de acceso al perfil.
 Ubuntu token: lo dejamos en blanco.
 Instalamos servidor OpenSSH.
 De momento, no instalamos ningún complemento extra.
 Esperamos que toda la configuración se termine de instalar y esperamos que
finalice.
Una vez ha finalizado la instalación, apagamos la máquina y le quitamos el disco de
instalación que le hemos asignado. Para ello, tendremos que acceder a Configuración >
Almacenamiento y seleccionamos el disco; le damos al icono del disco y lo eliminamos.

Volvemos a iniciar la máquina.

Iniciamos sesión con las credenciales que hemos puesto durante la instalación.

Una vez conocemos la IP de la máquina, podemos cerrar y conectarnos a través de SSH.


Para ello, accederemos a la consola de comandos CMD e introducimos lo siguiente:
ssh nombre_usuario@IP_máquina.
Configurar clave SSH
El siguiente paso es generar las claves SSH para poder acceder con estas, y sin
necesidad de contraseña, al servidor web de WordPress.

Para ello, en otra consola (la del equipo con la que te vas a conectar), debemos utilizar
el comando ssh-keygen y aceptamos todo hasta que nos vuelva a salir la línea de
escritura.

Se deben subir las claves al servidor para que éste reconozca al usuario y no nos pida
más la clave, de forma que podamos acceder directamente sin necesidad de introducir la
contraseña. Para ello, deberemos escribir lo siguiente:
scp .ssh/id_rsa.pub nombre_usuario@IP_máquina:~

Debemos irnos ahora a la conexión SSH que ya teníamos abierta para mover el archivo
de clave pública a la carpeta .ssh del servidor, renombrándolo como authorized_keys y
cambiándole los permisos para que solo el propietario pueda leer y modificar el fichero,
para ello, tendremos que introducir los siguientes comandos:

 mv id_rsa.pub .ssh/authorized_keys
 chmod 600 .ssh/authorized_keys
Ahora solo queda conectarse de nuevo al servidor utilizando SSH; para ello tendremos
que acceder utilizando el usuario y la IP de la máquina.

Configuración del Firewall de manera básica y cambio de puerto


del servidor SSH

 Utilizamos el comando sudo ufw app list para ver el perfil de aplicaciones.
 Con el comando sudo ufw allow OpenSSH permitimos conectarnos por SSH,
ya que el Firewall viene desactivado por defecto.
Tenemos que agregar una regla al Firewall para permitir el acceso a través del puerto
que vayamos a designar, haciendo lo siguiente:

 Comprobar el estado de los puertos abiertos: sudo ufw status


 Agregar el puerto que se va a designar: sudo ufw allow número_puerto/tcp
 Comprobamos que se ha agregado correctamente: sudo ufw status
 Con sudo ufw enable, habilitamos el Firewall y le confirmamos la elección.

Para poder cambiar el puerto, debemos cambiar el fichero de configuración, ubicado en


/etc/ssh/ y modificamos el fichero llamado sshd_config con el editor de consola,
utilizando el comando sudo nano sshd_config.

Accedemos a la línea correspondiente al Puerto, y lo modificamos al de nuestra


elección, quitando el comentario de la línea “Port”, escogiendo un puerto seguro y
guardando los cambios (Ctrl+O , Ctrl+X).
Reiniciamos el servicio de ssh para que se apliquen los cambios. Tendremos que utilizar
el comando sudo systemctl restart sshd.

 Con esto, ya podremos conectarnos al servidor por SSH utilizando otro puerto.
Para ello utilizamos el comando ssh nombre_usuario@IP_máquina
-p Número_puerto.
 Si hemos tenido éxito en la conexión por SSH al nuevo puerto, eliminamos los
puertos OpenSSH, dejando solo el que hemos designado:
sudo ufw delete posición_que_ocupa_en_la_lista
 Volvemos a comprobar: sudo ufw status
 Eliminamos el otro puerto que queremos para dejar solo aquel que hemos
designado: sudo ufw delete posición_que_ocupa_en_la_lista
 Comprobación de que todo ha quedado como queremos: sudo ufw status

Nota: En el caso de que existan más puertos que no queramos usar, debemos hacer los
pasos anteriores, teniendo en cuenta la posición que ocupa el puerto que queramos
eliminar en ese momento.
Instalación del LAMP (Apache, MySQL y PHP)

Instalación de Apache

Accedemos a la consola de comando introduciendo nuestro usuario por SSH.

Procedemos a la instalación de Apache, para ello, debemos hacer lo siguiente:

 Actualizar la lista de paquetes para descargar: sudo apt update


 Instalar el servidor de Apache: sudo apt install apache2

 Permitir la conexión al servidor de Apache en el Firewall:


o Listar las reglas que se están aplicando: sudo ufw status
o Listado de los perfiles de aplicaciones: sudo ufw app list
o Permitir “Apache Full” para poder conectarse tanto por HTTP como
HTTPS: sudo ufw allow in “Apache Full”
o Comprobar que la regla se haya aplicado: sudo ufw status
Para comprobar que el servidor funciona, debemos introducir la IP en la barra de URL
de nuestro navegador. Nos saldrá una ventana como la que aparece a continuación.
Instalación de MySQL

Se procede con la instalación de MySQL, para ello, en nuestra consola de comandos,


deberemos proceder de la siguiente forma:

 Descarga e instalación de MySQL: sudo apt install mysql-server

 Configurar mediante asistente: mysql_secure_installation


o Elegimos sí a la validación de la contraseña, para que esta sea segura.
o Cambiamos la contraseña al usuario root.
o Eliminamos el usuario anónimo.
o Deshabilitamos el uso en remoto para root.
o Eliminamos la base de datos que se crea como prueba por defecto.
o Vaciamos los privilegios de las bases de datos para que tome los
cambios.
Instalación de PHP

Se procede con la instalación de PHP, para ello, en la consola, se debe proceder de la


siguiente forma:

 Se instala el PHP. Para ello, se escribe lo siguiente:


sudo apt install php libapache2-mod-php php-mysql

 Se comprueba que PHP esté instalado: php -v

 Creamos un host virtual para poder acceder a nuestro dominio. Antes hay que
crear una carpeta para poder guardar todos los archivos referentes al PHP, es
donde se alojará el sitio web.
o sudo mkdir /var/www/DOMINIO.es
 El único parámetro que hay que modificar es el de DOMINIO.es.
 Además, se cambia el propietario de la carpeta para poder administrarla.
o sudo chown -R $USER:$USER /var/www/DOMINIO.es
 El único parámetro que hay que modificar es el de DOMINIO.es.
 Se crea un fichero de configuración para el sitio web.
o sudo nano /etc/apache2/sites-available/DOMINIO.es.conf
 El único parámetro que hay que modificar es el de DOMINIO.es.
 Se edita el fichero que se ha creado y se deben escribir las siguientes líneas:
<VirtualHost *:80>
ServerName DOMINIO.es
ServerAlias www.DOMINIO.es
ServerAdmin admin@DOMINIO.es
DocumentRoot /var/www/DOMINIO.es
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
 Una vez realizados los cambios, se guarda con Ctrl+O y se cierra con Ctrl+X.
 Habilitamos el sitio web: sudo a2ensite DOMINIO.es
 Deshabilitamos el sitio web por defecto: sudo a2dissite 000-default
 Recargamos la configuración de Apache: sudo systemctl reload apache2
 Se crea un archivo de index para la página web que hemos creado para probar
que la web funciona correctamente: nano /var/www/DOMINIO.es/index.html

 Se actualiza la prioridad para que los archivos .php sean más prioritarios que
cualquier otro tipo de archivo, para ello, escribimos:
sudo nano /etc/apache2/mods-enabled/dir.conf

 Recargamos la configuración de Apache: sudo systemctl reload apache2


Instalación de WordPress

Creación de base de datos en MySQL

Para crear el archivo WordPress, debemos, en primer lugar, crear una base de datos con
MySQL. Para ello, accedemos al CMD e introducimos:
sudo mysql -h localhost -u root -p

Modificamos el usuario root añadiéndole una contraseña: ALTER USER


‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY
‘(CONTRASEÑA)’;

 Iniciamos sesión con la cuenta root directamente en la base de datos:


mysql -u root -p
 Creamos la base de datos que va a utilizar WordPress: CREATE DATABASE
WordPress DEFAULT CHARACTER SET utf8 COLLATE
utf8_unicode_ci;
 Creamos el usuario que utilizará WordPress para acceder a la base de datos:
CREATE USER ‘wordpress’@‘%’ IDENTIFIED WITH
mysql_native_password BY ‘(CONTRASEÑA)’;
 Se le dan todos los privilegios al usuario: GRANT ALL ON WordPress.* TO
‘wordpress’@‘%’;
 Vacía los privilegios: FLUSH PRIVILEGES;
 Una vez salgamos, ya tendremos disponible la Base de Datos de WordPress: exit
Instalación de extensiones de PHP

Se pueden descargar e instalar las extensiones más comunes de PHP para nuestro
WordPress:

 sudo apt update


 sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-
soap php-intl php-zip

 Reiniciar Apache: sudo systemctl restart apache2

Ajustamos la configuración de Apache para permitir sobreescritura o


reescritura

Debemos ajustar la configuración de Apache para permitirnos escribir los archivos de


configuración: sudo nano /etc/apache2/sites-available/DOMINIO.es.conf

Debemos añadir las siguientes líneas de código:

<Directory /var/www/DOMINIO.es/>
AllowOverride All
</Directory>

Habilitamos un módulo de Apache: sudo a2enmod rewrite

Reiniciamos Apache para que se guarden los cambios: sudo systemctl restart apache2
Descarga de WordPress

Procedemos con la descarga de WordPress, para ello, abrimos la carpeta de nuestro sitio
web: cd /var/www/DOMINIO.es/

 Descargamos el WordPress desde su página oficial con el siguiente comando:


curl -O https://wordpress.org/latest.tar.gz
 Descomprimimos el archivo descargado: tar xzvf latest.tar.gz

 Creamos un archivo: touch /var/www/DOMINIO.es/.htaccess


 Eliminamos el archivo descomprimido que se ha descargado y copiamos el
contenido de la carpeta WordPress a nuestra carpeta del sitio web:
o rm latest.tar.gz
o mv wordpress/* . (con el punto final)
o rm wordpress/ -r

 Se copia el archivo wp-config-sample.php a wp-config.php utilizando el


comando: cp wp-config-sample.php wp-config.php
 A continuación, permitimos que Apache y aquellos que pertenezcan al grupo
puedan acceder a la carpeta para manipularla: sudo find
/var/www/DOMINIO.es/ -type d -exec chmod 750 {} \;
o Nota: El comando: sudo find /var/www/DOMINIO.es/ -type f -exec
chmod 640 {} \; hace que Apache pueda leer y escribir fichero y los del
grupo sólo puedan leerlo.
 El siguiente paso es generar un archivo SALT para encriptar las contraseñas.
Para este caso, hay que poner el siguiente comando:
curl -s https://api.wordpress.org/secret-key/1.1/salt/

 Modificamos el archivo wp-config.php y le introducimos los valores obtenidos


de la API de WordPress, para ello, hacemos uso del comando:
sudo nano /var/www/DOMINIO.es/wp-config.php
 Una vez cumplimentado, configuramos el apartado superior del documento (wp-
config.php) definiéndole los siguientes parámetros:
o Nombre de la base de datos.
o Usuario de la base de datos.
o Contraseña de la base de datos.
o Nombre del host de la base de datos.
o Charset y Collate.

 Designamos el método para que no sea necesario el uso de ningún servidor FTP
a la hora de crear los ficheros de WordPress.

 Guardamos y cerramos el documento (Ctrl+O, Ctrl+X).


 A partir de este punto, podemos acceder a nuestro WordPress haciendo uso de la
web. Introducimos la URL de acceso que le hayamos proporcionado.
 Seleccionamos el idioma de uso, en nuestro caso, Español.

 Configuramos los parámetros de uso de nuestra página web, introduciendo el


título del sitio, nombre de usuario, contraseña y el correo electrónico del
Administrador del sitio web.
 Instalamos WordPress y hacemos login con nuestro usuario y contraseña.

 Tras esto, ya podremos acceder a nuestra página de WordPress.


Snapshot en frío de una VM
Para hacer un snapshot (captura / copia de seguridad del momento), lo recomendable es
que la máquina esté apagada, para, únicamente, realizar una copia del almacenamiento y
no de la memoria.
Para llevar a cabo el snapshot, accedemos al programa Virtual Box y hacemos click en
los tres puntos que aparecen en la máquina una vez ha sido seleccionada.

Pulsamos en el apartado “Instantáneas” y accederemos a las opciones para hacer una


copia instantánea de la Máquina Virtual.
Podemos describir el momento en el que se realiza el snapshot.
Una vez realizado, le damos a aceptar y se guardará la captura del momento.
Configuración del HTTPS mediante certificado autofirmado
Para poder utilizar el protocolo HTTPS, tendremos que autorizar, a través de un
certificado de usuario, la veracidad de este. Haremos uso de la siguiente línea de
comandos: sudo openssl req -newkey rsa:2048 -keyout /etc/ssl/private/DOMINIO-
server.es.key -out /etc/ssl/certs/DOMINIO.es-server.req -subj /CN=DOMINIO.es -
sha256 -nodes
Se agrega la siguiente línea para que el certificado CA pueda firmar el certificado de
usuario: sudo openssl x509 -req -CA /etc/ssl/certs/DOMINIO.es.crt -CAkey
/etc/ssl/private/DOMINIO.es.key -in /etc/ssl/certs/DOMINIO.es-server.req -out
/etc/ssl/certs/DOMINIO.es-server.crt -days 90 -sha256 -CAcreateserial

Configurar Apache para usar SSL

En primer lugar, configuramos los parámetros para poder habilitar el uso de HTTPS,
utilizaremos para ello la siguiente línea de comandos:
sudo nano /etc/apache2/conf-available/ssl-params.conf

Se nos abrirá un editor de textos y tendremos que introducir lo siguiente:

SSLCipherSuite
ECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off
Copiamos el archivo de configuración original de nuestra página web y lo modulamos
de forma que también sea compatible con HTTPS. Para poder llevar a cabo esto,
utilizaremos el siguiente comando:
sudo cp /etc/apache2/sites-available/DOMINIO.es.conf /etc/apache2/sites-
available/DOMINIO.es-secure.conf

Abriremos el archivo para poder editarlo:


sudo nano /etc/apache2/sites-available/DOMINIO.es-secure.conf y le modificaremos
para que quede de la siguiente forma:

<VirtualHost *:443>
ServerName DOMINIO.es
ServerAlias www.DOMINIO.es
ServerAdmin admin@DOMINIO.es
DocumentRoot /var/www/DOMINIO.es
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLEngine on
SSLCertificateFile /etc/ssl/certs/DOMINIO-server.crt
SSLCertificateKeyFile /etc/ssl/private/DOMINIO-server.key

<Directory /var/www/DOMINIO.es>
AllowOverride All
</Directory>
</VirtualHost>
Vamos a proceder a redireccionar todas las solicitudes de conexión a la web que pasen
por el puerto 80 (HTTP) y que, automáticamente, lo hagan a través del 443 (HTTPS),
de forma obligatoria. Utilizaremos, para ello, el siguiente comando:
sudo nano /etc/apache2/sites-available/DOMINIO.es.conf
Donde tendremos que añadir la siguiente línea:
Redirect permanent “/” “https://DOMINIO.es/”
Habilitar los cambios en Apache

A continuación, procedemos a habilitar todos los cambios para que podamos utilizar el
protocolo HTTPS en nuestro dominio. Escribiremos las siguientes líneas de código:
 sudo a2enmod ssl
 sudo a2enmod headers
 sudo a2ensite DOMINIO.es-secure.conf
 sudo a2enconf ssl-params
 sudo apache2ctl configtest
 sudo systemctl restart apache2

Instalación y configuración de Nginx


Para realizar la configuración con Nginx, en primer lugar, tendremos que realizar un
Snapshot para guardar el estado de la máquina y no perder ninguna configuración.

Una vez realizado el snapshot, procedemos con la configuración de Nginx.

Deshabilitar Apache

Una vez hayamos realizado el snapshot, procederemos detener el servicio de Apache y


lo deshabilitamos del arranque. Haremos uso del siguiente comando: sudo systemctl
disable apache2.service
Instalación de Nginx

Una vez detenido el servicio, actualizamos los repositorios para poder instalar Nginx:
sudo apt update e instalamos, a continuación, Nginx: sudo apt install nginx.
Habilitamos el firewall para que permita el uso de Nginx: sudo ufw allow in “Nginx
Full”

Comprobamos que el servicio está ejecutándose correctamente: systemcl status


nginx.service
Contrastamos en la web que, efectivamente, Nginx está activo y funciona
correctamente. Debemos introducir la IP de nuestro servidor en el navegador.
Configuración de Nginx

Instalamos la extensión php7.4-fpm para que Nginx pueda trabajar con código en PHP:
sudo apt install php7.4-fpm
Procedemos a configurar nuestro dominio de Nginx:
 Cambiamos el directorio: cd /etc/nginx/sites-available/
 Creamos el siguiente fichero de configuración: sudo nano DOMINIO.es-
secure
 Introducimos la contraseña.
 Añadimos lo siguiente:
server {
listen 80;
listen [::]:80;

root /var/www/DOMINIO.es;
index index.php index.html;

server_name DOMINIO.es www.DOMINIO.es;

location / {
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.pho$args;
}

location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Habilitamos el sitio web:
sudo ln -s /etc/nginx/sites-available/DOMINIO.es-secure /etc/nginx/sites-enabled/

Configuración de HTTPS

Para configurar nuestro dominio con el protocolo HTTPS, debemos hacer lo siguiente:
 Creamos un nuevo archivo en /etc/nginx/sites-available/ con el fin de
redireccionar al usuario al sitio web, utilizando el protocolo HTTPS: sudo
nano /etc/nginx/sites-available/DOMINIO.es
server {
listen 80;
listen [::]:80;

server_name DOMINIO.es www.DOMINIO.es;

return 301 https://DOMINIO.es$request_uri;


}

 Modificamos el archivo anterior añadiéndole las siguientes líneas, dando como


resultado lo siguiente:
server {
listen 443 ssl;
listen [::]:443 ssl;

root /var/www/DOMINIO.es;
index index.php index.html;

server_name DOMINIO.es www.DOMINIO.es;

ssl_certificate /etc/ssl/certs/DOMINIO.es-server.crt;
ssl_certificate_key /etc/ssl/private/DOMINIO.es-server.key;

location / {
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$args;
}

location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Habilitamos el nuevo archivo de configuración que hemos creado para el sitio web:
sudo ln -s /etc/nginx/sites-available/DOMINIO.es /etc/nginx/sites-enabled/

Reiniciamos el servicio de Nginx para que se guarden todos los cambios producidos y
se puedan aplicar: sudo systemctl reload nginx.service

También podría gustarte