\documentclass[12pt,a4paper,titlepage]{article}
\usepackage[spanish]{babel}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{minted}

\title{Tema VII Ejercicio I: Instalación de WordPress en Local}
\author{Nicolás A. Ortega Froysa}

\begin{document}
\maketitle

\tableofcontents
\pagebreak

\section{Nginx}

Para instalar Nginx sólo hemos de instalarlo junto a PHP. Instalamos los
paquetes necesarios con el comando siguiente:

\begin{minted}{console}
# apt install nginx php php-fpm php-mysql
\end{minted}

Deberíamos de habilitar el uso de PHP con la extensión de MySQL. Para esto
tenemos que editar el archivo INI que se encuentra en {\tt
/etc/php/7.4/fpm/php.ini} y descomentar la línea que pone {\tt
extension=mysqli}.

Ahora en el directorio {\tt /etc/nginx/sites-available} creamos un archivo con
el nombre {\tt my-wordpress.local.conf} con el contenido siguiente:

\begin{minted}{nginx}
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/wordpress;

    index index.html index.htm index.nginx-debian.html index.php;
    server_name my-wordpress.local;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php-fpm.sock;
    }
}
\end{minted}

Luego se crea un enlace simbólico del mismo en la carpeta de {\tt
sites-enabled}. A partir de ahí podemos inicializar el servicio:

\begin{minted}{console}
# systemctl enable nginx
# systemctl start nginx
\end{minted}

\section{MariaDB}

Como en nuestro caso vamos a instalar MariaDB, hemos de correr el comando
siguiente para instalarlo:

\begin{minted}{console}
# apt install mariadb-server
\end{minted}

Ahora lo tenemos que configurar utilizando el comando siguiente, siguiendo los
pasos. Sólo hemos de fijar la contraseña de root (el administrador) y luego
seguir seleccionando las opciones por defecto.

\begin{minted}{console}
# mysql_secure_installation
\end{minted}

Cuando ya lo tenemos configurado empezamos el servicio:

\begin{minted}{console}
# systemctl start mariadb
# systemctl enable mariadb
\end{minted}

Ahora tenemos que crear la base de datos:

\begin{minted}{mysql}
CREATE DATABASE wpdb;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'wppass';
GRANT ALL PRIVILEGES ON wpdb.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
QUIT;
\end{minted}

\section{WordPress}

Una vez que tenemos todo el fundamento instalado, ya podemos proseguir a
instalar el WordPress como tal. Para esto primero hemos de bajar el ZIP que
contiene la instalación de \url{https://wordpress.org/latest.zip}. Una vez hecho
esto, debemos de extraerlo en {\tt /var/www} para poder usarlo. Notaremos que ya
crea solo el directorio {\tt /var/www/wordpress}. Este directorio deberíamos de
cambiarle los permisos (de forma recursiva) para que Nginx pueda editar su
contenido. Esto lo hacemos con el comando {\tt chown}.

\begin{minted}{console}
# wget https://wordpress.org/latest.zip
# unzip latest.zip -d /var/www
# chown -R www-data:www-data /var/www/wordpress
\end{minted}

Ahora, si accedemos a nuestro sitio web (en \url{http://localhost/}) podremos
encontrarnos con un primer diálogo preguntándonos cuál lengua queremos para
nuestro WordPress. Vamos a elegir inglés, por los mismos motivos de siempre.

\begin{figure}
	\centering
	\includegraphics[width=0.75\textwidth]{imgs/00-db-config.png}
	\caption{Configuración de la base de datos.}
	\label{fig:db-config}
\end{figure}


El primer formulario que nos va a aparecer después de esto nos preguntará para
configurar la base de datos (figura \ref{fig:db-config}). Hay varios campos que
tenemos que rellenar. Lo primero es el nombre de la base de datos, que
anteriormente lo habíamos definido como {\tt wpdb}. También nos pregunta por el
usuario que usará WordPress para conectarse a esta base de datos, que lo
habíamos definido como {\tt wpuser}. Es bueno {\bf no usar el usuario root}, ya
que este tiene más acceso a otras bases de datos y, en caso de un infiltrado,
tendría acceso a más datos. La contraseña es como lo habíamos definido antes:
{\tt wppass}. La base de datos está localizada en el mismo servidor, así que el
{\it host} es {\tt localhost}. Y como prefijo para las tablas, aunque no es
estríctamente necesario -- nuestra base de datos sólo contendrá tablas de
WordPress -- viene por defecto {\tt wp\_}, así que vamos a dejarlo así.

\begin{figure}[ht!]
	\centering
	\includegraphics[width=0.5\textwidth]{imgs/01-site-config.png}
	\caption{Configuración del sitio WordPress.}
	\label{fig:site-config}
\end{figure}

Después de esta configuración, nos encontraremos con la configuración del sitio
como tal (figura \ref{fig:site-config}). Aquí vamos a definir algunos elementos
importantes, particularmente el título de nuestro sitio web, el nombre del
usuario administrador, su contraseña, y su correo electrónico. También hay otra
opción al final que ayuda a fomentar o no que los buscadores web pongan tu
página en sus índices.

\begin{figure}
	\centering
	\begin{subfigure}{0.45\textwidth}
		\includegraphics[width=0.95\textwidth]{imgs/02-first-login.png}
		\caption{Panel de control.}
		\label{fig:first-login}
	\end{subfigure}
	\hfill
	\begin{subfigure}{0.45\textwidth}
		\includegraphics[width=0.95\textwidth]{imgs/03-front-page.png}
		\caption{Página principal.}
		\label{fig:front-page}
	\end{subfigure}
	\caption{}
\end{figure}

Al finalizar la configuración nos aparecerá el panel de control (figura
\ref{fig:first-login}). Desde aquí se podrá configurar más WordPress, y crear
contenidos. Para ver nuestro sitio web en sí, podemos darle arriba donde pone el
título de nuestra página, en este caso <<My Wordpress>>, y nos llevará a la
página principal (figura \ref{fig:front-page}), que parece tener por defecto un
tema bastante sencillo y bonito.

\section{Conclusión}

La instalación de WordPress es bastante sencillo para cualquiera que tenga un
mínimo conocimiento de informática. Al menos en sistemas UNIX (como es Debian
GNU/Linux). Hay formas de usar WordPress sin necesidad de conocimiento técnico,
pero eso cae fuera de este ejercicio.

\pagebreak

\section{Derechos de Autor y Licencia}

\noindent
Copyright \copyright\ \the\year\ Nicolás A. Ortega Froysa
<nicolas@ortegas.org> \\
\\
Este documento se distribuye bajo los términos y condiciones de la licencia
Creative Commons Attribution No Derivatives 4.0 International.

\end{document}
