diff --git a/1/ISO/assignments/t9-ej4-mantisbt/t9-ej4-mantisbt-naortega.pdf b/1/ISO/assignments/t9-ej4-mantisbt/t9-ej4-mantisbt-naortega.pdf new file mode 100644 index 0000000..9542aaf Binary files /dev/null and b/1/ISO/assignments/t9-ej4-mantisbt/t9-ej4-mantisbt-naortega.pdf differ diff --git a/1/ISO/assignments/t9-ej4-mantisbt/t9-ej4-mantisbt-naortega.tex b/1/ISO/assignments/t9-ej4-mantisbt/t9-ej4-mantisbt-naortega.tex new file mode 100644 index 0000000..de25b7a --- /dev/null +++ b/1/ISO/assignments/t9-ej4-mantisbt/t9-ej4-mantisbt-naortega.tex @@ -0,0 +1,384 @@ +\documentclass[12pt,a4paper]{article} +\usepackage[spanish]{babel} +\usepackage{hyperref} +\usepackage{graphicx} +\usepackage{subcaption} + +\title{Tema IX Ejercicio IV: Mantis Bug Tracker} +\author{Nicolás A. Ortega Froysa} + +\begin{document} +\maketitle +\pagebreak +\tableofcontents +\pagebreak + +\section{Introducción} + +Muchas veces cuando gestionamos cualquier tipo de proyecto, es necesario tener +alguna herramienta que nos ayude a manejar las tareas (o incidencias) que vayan +surgiendo al respecto. Esto facilita mucho tanto mantener de forma organizada +nuestras incidencias, como también poderlas asignar y actualizar conforme a sus +necesidades. + +Una de estas herramientas es {\em Mantis Bug Tracker} (o {\em MantisBT}). Es una +herramienta que se puede usar desde la {\em web}. Es {\em software libre}, y nos +permite montar nuestra propia instancia de la misma en nuestro propio servidor. + +En este documento revisaremos cómo instalar y configurar {\em MantisBT} y sus +dependencias en un sistema GNU/Linux. Además revisaremos un uso básico, siendo +cómo crear una tarea nueva y modificar su estado. + +\section{Instalación} + +\subsection{Dependencias} + +\begin{figure}[!htb] + \centering + \begin{subfigure}[tb]{0.45\textwidth} + \centering + \includegraphics[width=0.95\linewidth]{imgs/00-install-deps.png} + \caption{Instalación de dependencias.} + \label{fig:install-deps} + \end{subfigure} + \hfill + \begin{subfigure}[tb]{0.45\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/01-database-user.png} + \caption{Configuración de usuario en base de datos.} + \label{fig:database-user} + \end{subfigure} + \hfill + \begin{subfigure}[tb]{0.45\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/02-secure-install.png} + \caption{Instalación segura de MariaDB.} + \label{fig:secure-install} + \end{subfigure} + \caption{Instalación y configuración de dependencias.} +\end{figure} + +Antes de empezar será necesario instalar y configurar primero las dependencias. +{\em MantisBT} precisa de tres: + +\begin{itemize} + \item PHP (versión 7 o mayor) + \item MariaDB o MySQL (en nuestro caso usaremos MariaDB) + \item Apache 2 (o cualquier servidor HTTP, como NGinx; mas en nuestro caso + nos centraremos en Apache) +\end{itemize} + +En nuestro caso, estamos instalando desde un sistema de Linux Mint, que usa el +sistema de gestión de paquetes {\tt apt} (figura \ref{fig:install-deps}), como +en Debian y Ubuntu. Por lo tanto, para instalar nuestras dependencias usaríamos +el siguiente comando: + +\begin{verbatim} +sudo apt install php php-cli php-fpm php-mysql \ + php-zip php-gd php-mbstring php-curl php-xml \ + php-pear php-bcmath apache2 mariadb-server \ + mariadb-client +\end{verbatim} + +Una vez instaladas estas cosas, los servicios se activarán de forma automática +(generalmente) en sistemas basadas en Debian, pero si este no es tu caso, puedes +activarlas con los siguientes comandos: + +\begin{verbatim} +sudo systemctl start apache2 +sudo systemctl start mariadb +\end{verbatim} + +Una vez que se haya completado la instalación inicial, hay que configurar la +base de datos (figura \ref{fig:database-user}). Para esto entramos en la base de +datos y configuramos el usuario {\em root} de la forma siguiente para actualizar +el {\em plugin} de autenticación: + +\begin{verbatim} +mysql -u root +UPDATE mysql.user SET plugin = 'mysql_native_password' + WHERE User = 'root'; +FLUSH PRIVILEGES; +QUIT; +\end{verbatim} + +Una vez que hayamos acabado con esto, podemos finalizar la configuración de +nuestra base de datos con el siguiente comando (figura +\ref{fig:secure-install}): + +\begin{verbatim} +sudo mysql_secure_installation +\end{verbatim} + +Esto es un pequeño programa de configuración e instalación que lo usaremos para +configurar la nueva contraseña de {\em root}. Cuando pregunta por la contraseña +actual, que no tenemos, simplemente introduces una línea en blanco. Luego +preguntará por la nueva contraseña. En todos los demás simplemente introducimos +una línea en blanco para tomar la decisión por defecto. + +Después de todo esto, tan sólo hemos de configurar el usuario que usará +MantisBT, y crear la base de datos en sí. Esto se hace con los siguientes +comandos: + +\begin{verbatim} +CREATE USER 'mantisbt'@'localhost' IDENTIFIED BY + 'CatholicMantis'; +CREATE DATABASE mantisbt; +GRANT ALL PRIVILEGES ON mantisbt.* TO 'mantisbt'@'localhost'; +FLUSH PRIVILEGES; +QUIT; +\end{verbatim} + +Aquí se puede cambiar {\tt CatholicMantis} por otra contraseña. El valor {\tt +mantibt} es el nombre de nuestra base de datos. Nuestro usuario también se +nombra {\tt mantisbt}. Para comprobar su se ha configurado correctamente este +usuario, se puede hacer entrando en el {\em shell} de MariaDB usando el comando +siguiente: + +\begin{verbatim} +mysql -u mantisbt -p +\end{verbatim} + +\subsection{Instalación de MantisBT} + +\begin{figure}[!htb] + \centering + \begin{subfigure}[tb]{0.45\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/05-descargar.png} + \caption{Descarga.} + \label{fig:descargar} + \end{subfigure} + \hfill + \begin{subfigure}[tb]{0.45\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/06-install-mantisbt.png} + \caption{Instalación de MantisBT} + \label{fig:install-mantisbt} + \end{subfigure} + \hfill + \begin{subfigure}[tb]{0.45\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/07-mantisbt-start.png} + \caption{Primera vista de MantisBT.} + \label{fig:mantisbt-start} + \end{subfigure} + \caption{Instalación de MantisBT} +\end{figure} + +Una vez configuradas nuestras dependencias, podemos instalar MantisBT en sí. +Esto se hace primero descargando el archivo comprimido que contiene el código de +la herramienta (figura \ref{fig:descargar}). Esto se puede hacer en la siguiente +URL: + +\hfill + +\url{https://mantisbt.org/download.php} + +\hfill + +Una vez que hayamos descargado nuestro código hemos de descomprimirlo, moverlo a +una ruta más accesible para el servicio de HTTP (i.e.\ Apache), configurar +nuestro servidor para apuntar a esa ruta, y finalmente reiniciar el servicio +HTTP (figura \ref{fig:install-mantisbt}). Esto se hace corriendo los siguientes +comandos: + +\begin{verbatim} +unzip mantisbt-{version}.zip +sudo mkdir -p /srv/ +sudo mv mantisbt-{version}/ /srv/ +sudo chmod -R www-data:www-data /srv/mantisbt +\end{verbatim} + +Con esto ya tendremos los archivos instalados, pero aún tenemos que configurar +Apache para que apunte a la ruta correcta para leer nuestros archivos. Para +esto, creamos un nuevo archivo: + +\begin{verbatim} +/etc/apache2/sites-enabled/mantisbt.conf +\end{verbatim} + +\noindent +E introducimos dentro de él lo siguiente: + +\begin{verbatim} + + ServerAdmin admin@example.com + DocumentRoot "/srv/mantisbt" + ServerName bt.example.com + ServerAlias www.bt.example.com + ErrorLog "/var/log/apache2/mantisbt-error_log" + TransferLog "/var/log/apache2/mantisbt-access_log" + + DirectoryIndex index.php index.html + Options FollowSymLinks + AllowOverride None + Require all granted + Options MultiViews FollowSymlinks + + +\end{verbatim} + +\noindent +En este código, los variables importantes son los siguientes: + +\begin{itemize} + \item {\tt admin@example.com} es el correo electrónico del administrador de + nuestro servicio. + \item {\tt /srv/mantisbt} es la ruta donde se encuentra MantisBT. + \item {\tt bt.example.com} es el nombre de dominio que tendrá (inclusive su + {\em alias} en la línea siguiente). +\end{itemize} + +Para verificar que el código lo hemos escrito (o copiado) correctamente, podemos +probarlo corriendo el comando: + +\begin{verbatim} +sudo apachectl -t +\end{verbatim} + +Si éste responde con la línea {\tt Syntax OK}, entonces es que se ha escrito +correctamente y Apache podrá leer sin errores lo que hemos escrito. + +En nuestro caso, como hemos puesto un nombre de dominio que no es nuestro (i.e.\ +{\tt bt.example.com}), y que no enruta a nuestro servidor, podemos simularlo +modificando el archivo {\tt /etc/hosts} y añadiendo la línea siguiente: + +\begin{verbatim} +127.0.0.1 bt.example.com +\end{verbatim} + +Al hacer todo esto, podemos ir a nuestro navegador e introducir en la entrada de +URL {\tt http://bt.example.com} y nos debería salir ya MantisBT (figura +\ref{fig:mantisbt-start}). + +\section{Configuración} + +\begin{figure}[!htb] + \centering + \begin{subfigure}[tb]{0.45\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/08-config-mantisbt.png} + \caption{Opciones de la base de datos.} + \label{fig:config-mantisbt} + \end{subfigure} + \hfill + \begin{subfigure}[tb]{0.45\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/09-config-complete.png} + \caption{Resultado de configuración.} + \label{fig:config-complete} + \end{subfigure} + \hfill + \begin{subfigure}[tb]{0.45\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/10-admin-panel.png} + \caption{Panel administrador.} + \label{fig:admin-panel} + \end{subfigure} + \caption{Configuración de MantisBT.} +\end{figure} + +Para configurar nuestro servicio de MantisBT, hemos de configurarlo de acuerdo a +las opciones que habíamos configurado antes para nuestro base de datos con +MariaDB (figura \ref{fig:config-mantisbt}). Principalmente nos interesa +modificar los siguientes apartados: + +\begin{itemize} + \item {\bf Username (for Database):} mantisbt + \item {\bf Password (for Database):} CatholicMantis + \item {\bf Database name (for Database):} mantisbt + \item {\bf Default Time Zone:} Madrid +\end{itemize} + +Con todo esto configurado, le podemos dar ya al botón que dice {\em +Install/Upgrade Database}. Esto empezará por popular nuestra base de datos con +tablas y entradas necesarias para MantisBT, y por lo tanto es algo que puede +tardar unos minutos, aunque parezca que la conexión esté colgada. + +Cuando por fin termina, devolverá una nueva página con los resultados (figura +\ref{fig:config-complete}), donde no debería de haber ningún error. Si hubiese +algún error es preciso buscar cómo resolverlo. Si vamos al cabo de la página +encontraremos un botón para ir al panel del administrador (figura +\ref{fig:admin-panel}). Aquí se nos pedirá entrar en sesión del administrador, +que por defecto tiene usuario {\tt administrator} y de contraseña {\tt root}. +Cuando entremos en sesión por primera vez, se nos pedirá cambiar esta +contraseña. + +\section{Creación y Manejo de Tareas} + +\begin{figure}[!htb] + \centering + \begin{subfigure}[tb]{0.45\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/11-create-project.png} + \caption{Crear proyecto.} + \label{fig:create-project} + \end{subfigure} + \hfill + \begin{subfigure}[tb]{0.45\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/12-project-properties.png} + \caption{Propiedades del proyecto.} + \label{fig:project-properties} + \end{subfigure} + \hfill + \begin{subfigure}[tb]{0.45\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/13-create-new-issue.png} + \caption{Crear una tarea nueva.} + \label{fig:create-new-issue} + \end{subfigure} + \hfill + \begin{subfigure}[tb]{0.45\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/14-issue-view.png} + \caption{Vista de tarea.} + \label{fig:issue-view} + \end{subfigure} + \caption{Creación de una tarea.} +\end{figure} + +Para empezar a usar nuestra herramienta, lo más útil es empezar creando un +proyecto. Esto lo podemos hacer entrando en {\em Manage $\rightarrow$ Manage +Projects $\rightarrow$ Create New Project} (figura \ref{fig:create-project}). +Esto nos llevará a una nueva pantalla donde podremos editar las propiedades del +proyecto, aunque el único campo preciso es el de {\em Project Name} (figura +\ref{fig:project-properties}). + +Para crear una tarea nueva, hemos de entrar en donde dice {\em Report Issue}. +Esto nos llevará a una página que se parece a aquella donde configuramos las +propiedades del proyecto, pero con más opciones (figura +\ref{fig:create-new-issue}). Introducimos la información pertinente que nos hace +falta para nuestra tarea y la mandamos. Al finalizarla veremos un resumen de +nuestra tarea con todos los estados actuales que tiene (figura +\ref{fig:issue-view}). + +\begin{figure}[!htb] + \centering + \begin{subfigure}[tb]{0.45\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/15-set-status.png} + \caption{Asignar estado.} + \label{fig:set-status} + \end{subfigure} + \hfill + \begin{subfigure}[tb]{0.45\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/16-close-issue.png} + \caption{Cerrar caso.} + \label{fig:close-issue} + \end{subfigure} + \hfill + \begin{subfigure}[tb]{0.75\textwidth} + \includegraphics[width=0.95\linewidth]{imgs/17-closed.png} + \caption{Caso cerrado.} + \label{fig:closed} + \end{subfigure} + \caption{Estados de un caso.} +\end{figure} + +Los casos en sí tienen muchas opciones, pero la que más nos importa es su +estado (i.e.\ la propiedad {\em Status}). Ésta la podemos modificar en lo bajo +del reportaje donde pone {\em Change Status to:} (figura \ref{fig:set-status}). +Nos provee una variedad de opciones: + +% https://www.mantisbt.org/docs/master/en-US/Admin_Guide/html/admin.lifecycle.status.html + +\pagebreak + +\section{Derechos de Autor y Licencia} + +\noindent +Copyright \copyright\ \the\year\ Nicolás A. Ortega Froysa \\ +\\ +Este documento se distribuye bajo los términos y condiciones de la licencia +Creative Commons Attribution No Derivatives 4.0 International. + +\end{document} diff --git a/1/ISO/assignments/t9-ej4-mantisbt/t9-ej4-mantisbt-naortega.toc b/1/ISO/assignments/t9-ej4-mantisbt/t9-ej4-mantisbt-naortega.toc new file mode 100644 index 0000000..54b9adc --- /dev/null +++ b/1/ISO/assignments/t9-ej4-mantisbt/t9-ej4-mantisbt-naortega.toc @@ -0,0 +1,8 @@ +\babel@toc {spanish}{}\relax +\contentsline {section}{\numberline {1}Introducción}{3}{section.1}% +\contentsline {section}{\numberline {2}Instalación}{3}{section.2}% +\contentsline {subsection}{\numberline {2.1}Dependencias}{3}{subsection.2.1}% +\contentsline {subsection}{\numberline {2.2}Instalación de MantisBT}{5}{subsection.2.2}% +\contentsline {section}{\numberline {3}Configuración}{7}{section.3}% +\contentsline {section}{\numberline {4}Creación y Manejo de Tareas}{8}{section.4}% +\contentsline {section}{\numberline {5}Derechos de Autor y Licencia}{10}{section.5}%