TFC: Complete HTTP server & programming language sections

Signed-off-by: Nicolás Ortega Froysa <nicolas@ortegas.org>
This commit is contained in:
Nicolás A. Ortega Froysa 2023-04-27 17:18:59 +02:00
parent 16c48af913
commit 77d275f05a
4 changed files with 55 additions and 17 deletions

BIN
TFC/imgs/ss-lang-stats.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

View File

@ -268,21 +268,59 @@ nuestra disposición, como podrían ser PowerDNS, MaraDNS, NSD, KnotDNS, y Bind9
% TODO: finish
Entre los programas de servidores HTTP existen dos candidatos principales: Nginx
y Apache.
% TODO: finish
y Apache. Aunque si quisiésemos instalar nuestra solución en una máquina de
{\it Microsoft Windows} se podría contemplar {\it Microsoft Internet Information
Services} (IIS), pero esta opción no esta disponible en Debian GNU/Linux -- o
realmente cualquier sistema operativo que no sea {\it Microsoft Windows}. Para
lo poco que hará nuestro servidor HTTP local, tanto Nginx como Apache podrán
cumplir con los requisitos: servir páginas HTML y pasar peticiones (i.e.\ {\it
requests}) HTTP a un {\it script} para gestionarla; así que la elección es
arbitraria. Es verdad que, en cuestión de gestión de contenidos estáticos, Nginx
tiene una ventaja sobre Apache, pero en cuanto a la gestión de contenidos
dinámicos (i.e.\ páginas dinámicas que se gestionan a partir de {\it scripts})
apenas hay diferencia entre las dos opciones. Escogeremos a Nginx simplemente
por el criterio de mayor conocimiento y experiencia con su uso y administración.
% SRC: https://hackr.io/blog/nginx-vs-apache
\begin{figure}[h]
\centering
\includegraphics[width=0.4\textwidth]{imgs/ss-lang-stats.png}
\caption{Estadísticas de uso de lenguajes de \\ programación en el lado
servidor.}
\label{fig:ss-lang-stats}
\end{figure}
Finalmente, precisamos un lenguaje de programación por el cual podemos enviar un
correo al administrador de la red con la información pertinente.
% TODO: finish
correo al administrador de la red con la información pertinente del intento de
acceso a un sitio web prohibido (i.e.\ pornográfico). Para esto existen varias
alternativas hoy en día, las principales siendo PHP, Ruby, Python, y JavaScript
(por medio de NodeJS). De estas opciones la más utilizada en servidores, sin
competición alguna -- ocupando un 77,5\% del mercado -- es PHP (figura
\ref{fig:ss-lang-stats}). Es muy fácil de incorporar a un servidor HTTP, la
mayoría (como Nginx) tienen formas de incorporarlo como un módulo, y otros
servidores lo tienen directamente incorporado (como el caso de Apache). Tiene
también un interprete ligero, y es muy estable. Por estos motivos, el lenguaje
que utilizaremos será PHP.
% SRC: https://w3techs.com/technologies/overview/programming_language/
Con el lenguaje de programación PHP existen varios métodos de enviar correos, y
aunque existe la función por defecto de PHP, {\tt mail()}, no queremos
utilizarlo ya que es demasiado simple y no soporta el protocolo SMTP, que sería
útil para enviar correos a una dirección personal sin que aparecieran como {\it
spam}. Lo que quiere decir que tendremos que utilizar un módulo de terceros para
gestionar el envío de correos. Para esto conviene un módulo que esté disponible
y de fácil instalación en nuestro sistema. En esto la opción más conveniente
sería {\it PHPMailer}. Aunque {\it Symfony Mailer} sería otra opción que se
utiliza mucho con PHP, no esta disponible en los repositorios de Debian
GNU/Linux, como PHPMailer, y por lo tanto sería más difícil de instalar y
actualizar, sobre todo el proceso de una actualización automática.
% SRC: https://mailtrap.io/blog/php-email-sending/
% SRC: https://www.debian.org/distrib/packages
% Software Dependencies:
% - Bind9/Named [PowerDNS,MaraDNS,NSD,KnotDNS]
% https://en.wikipedia.org/wiki/Comparison_of_DNS_server_software
% - Nginx [Apache]
% https://kinsta.com/blog/nginx-vs-apache/
% - PHP [Ruby,Python]
% - PHPMailer [mail() function, Symfony Mailer]
% https://mailtrap.io/blog/php-email-sending/
\subsection{Diseño de Solución}
\section{Pruebas y Despliegue}

View File

@ -12,11 +12,11 @@
\contentsline {subsection}{\numberline {4.1}Análisis de Requisitos}{4}{subsection.4.1}%
\contentsline {subsubsection}{\numberline {4.1.1}Requisitos Hardware}{4}{subsubsection.4.1.1}%
\contentsline {subsubsection}{\numberline {4.1.2}Requisitos Software}{6}{subsubsection.4.1.2}%
\contentsline {subsection}{\numberline {4.2}Diseño de Solución}{9}{subsection.4.2}%
\contentsline {section}{\numberline {5}Pruebas y Despliegue}{9}{section.5}%
\contentsline {subsection}{\numberline {5.1}Plan de Pruebas}{9}{subsection.5.1}%
\contentsline {subsection}{\numberline {5.2}Manuales Técnicos y de Usuario}{9}{subsection.5.2}%
\contentsline {subsection}{\numberline {5.3}Plan de Despliegue}{9}{subsection.5.3}%
\contentsline {section}{\numberline {6}Conclusiones y Propuestas de Mejora}{9}{section.6}%
\contentsline {section}{\numberline {7}Bibliografía}{9}{section.7}%
\contentsline {section}{\numberline {8}Derechos de Autor y Licencia}{10}{section.8}%
\contentsline {subsection}{\numberline {4.2}Diseño de Solución}{10}{subsection.4.2}%
\contentsline {section}{\numberline {5}Pruebas y Despliegue}{10}{section.5}%
\contentsline {subsection}{\numberline {5.1}Plan de Pruebas}{10}{subsection.5.1}%
\contentsline {subsection}{\numberline {5.2}Manuales Técnicos y de Usuario}{10}{subsection.5.2}%
\contentsline {subsection}{\numberline {5.3}Plan de Despliegue}{10}{subsection.5.3}%
\contentsline {section}{\numberline {6}Conclusiones y Propuestas de Mejora}{10}{section.6}%
\contentsline {section}{\numberline {7}Bibliografía}{10}{section.7}%
\contentsline {section}{\numberline {8}Derechos de Autor y Licencia}{11}{section.8}%