\documentclass[10pt]{article}
%%%%%%%% PREÁMBULO %%%%%%%%%%%%
\usepackage[spanish]{babel} %Indica que escribiermos en español
\usepackage[utf8]{inputenc} %Indica qué codificación se está usando ISO-8859-1(latin1) o utf8
\usepackage{amsmath} % Comandos extras para matemáticas (cajas para ecuaciones,
% etc)
\usepackage{amssymb} % Simbolos matematicos (por lo tanto)
\usepackage{graphicx} % Incluir imágenes en LaTeX
\usepackage{color} % Para colorear texto
\usepackage{subfigure} % subfiguras
\usepackage{ulem}
%%%%%%%%%%%%%CODIGO%%%%%%%%%%%%%%%%%%%%%%
\usepackage{listings} %Sirve para pegar codigo fuente de programas
\usepackage{caption}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{%
\parbox{\textwidth}{\colorbox{gray}{\parbox{\textwidth}{#1#2#3}}\vskip-4pt}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white}
\lstset{frame=lrb,xleftmargin=\fboxsep,xrightmargin=-\fboxsep}
%%%%%%%%%%%%%CODIGO%%%%%%%%%%%%%%%%%%%%%%
\usepackage{float} %Podemos usar el especificador [H] en las figuras para que se
% queden donde queramos
\usepackage{capt-of} % Permite usar etiquetas fuera de elementos flotantes
% (etiquetas de figuras)
\usepackage{enumerate} % enumerados
\usepackage{sidecap} % Para poner el texto de las imágenes al lado
\sidecaptionvpos{figure}{c} % Para que el texto se alinie al centro vertical
\usepackage{caption} % Para poder quitar numeracion de figuras
\usepackage{commath} % funcionalidades extras para diferenciales, integrales,
% etc (\od, \dif, etc)
\usepackage{cancel} % para cancelar expresiones (\cancelto{0}{x})
\usepackage{anysize} % Para personalizar el ancho de los márgenes
\marginsize{2cm}{2cm}{2cm}{2cm} % Izquierda, derecha, arriba, abajo
\usepackage{appendix}
\renewcommand{\appendixname}{Apéndices}
\renewcommand{\appendixtocname}{Apéndices}
\renewcommand{\appendixpagename}{Apéndices}
%Para la creación de tablas
\usepackage{array}
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\usepackage{makecell}
% Para que las referencias sean hipervínculos a las figuras o ecuaciones y
% aparezcan en color
\usepackage[colorlinks=true,plainpages=true,citecolor=blue,linkcolor=blue]{hyperref}
%\usepackage{hyperref}
% Para agregar encabezado y pie de página
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{\footnotesize UPIITA} %encabezado izquierda
\fancyhead[R]{\footnotesize IPN} % dereecha
\fancyfoot[R]{\footnotesize Administración de Sistemas Operativos} % Pie derecha
\fancyfoot[C]{\thepage} % centro
\fancyfoot[L]{\footnotesize Ing. Telemática} %izquierda
\renewcommand{\footrulewidth}{0.4pt}
\usepackage{listings} % Para usar código fuente
\definecolor{dkgreen}{rgb}{0,0.6,0} % Definimos colores para usar en el código
\definecolor{gray}{rgb}{0.5,0.5,0.5}
% configuración para el lenguaje que queramos utilizar
\lstset{language=Matlab,
keywords={break,case,catch,continue,else,elseif,end,for,function,
global,if,otherwise,persistent,return,switch,try,while},
basicstyle=\ttfamily,
keywordstyle=\color{blue},
commentstyle=\color{red},
stringstyle=\color{dkgreen},
numbers=left,
numberstyle=\tiny\color{gray},
stepnumber=1,
numbersep=10pt,
backgroundcolor=\color{white},
tabsize=4,
showspaces=false,
showstringspaces=false}
\newcommand{\sen}{\operatorname{\sen}} % Definimos el comando \sen para el seno
%en español
\title{Manual de instalación y configuración LAMP}
%%%%%%%% TERMINA PREÁMBULO %%%%%%%%%%%%
\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PORTADA %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
\begin{center} %%%
\newcommand{\HRule}{\rule{\linewidth}{0.5mm}} %%%\left
%%%
\begin{minipage}{0.48\textwidth} \begin{flushleft}
\includegraphics[scale = 0.1]{Imagenes/IPN}
\end{flushleft}\end{minipage}
\begin{minipage}{0.48\textwidth} \begin{flushright}
\includegraphics[scale = 0.4]{Imagenes/upiita}
\end{flushright}\end{minipage}
%%%
\vspace*{-1.5cm} %%%
%%%
\textsc{\huge Instituto Politécnico\\ \vspace{5px} Nacional}\\[1.5cm]
\textsc{\LARGE Unidad Profesional Interdisciplinaria en Ingeniería y %%%
Tecnologías Avanzadas}\\[1.5cm] %%%
%%%
\vspace*{1cm} %%%
%%%
\HRule \\[0.4cm] %%%
{ \huge \bfseries Manual de instalación y configuración LAMP}\\[0.4cm] %%%
%%%
\HRule \\[1cm] %%%
{ \Large \bfseries Equipo 7}\\[0.4cm] %%%
%%%
\begin{minipage}{0.46\textwidth} %%%
\begin{flushleft} \large %%%
\textit{Integrantes del equipo:}\\
Álvarez Santiago Daniela\\
Gonzalez Hernandez Diego\\
Martinez Vivaldo Uriel Giovanni\\
Rojas Solís Juan Carlos\\
Sanchez Lemus Ulises Mariano\\
Servin Zamora Alejandro\\
%%%
%\vspace*{2cm}
%%%
%%%
\end{flushleft} %%%
\end{minipage}
%%%
\begin{minipage}{0.52\textwidth}
\vspace{-0.6cm} %%%
\begin{flushright} \large %%%
\emph{} %%%
\end{flushright} %%%
\end{minipage}
\vspace*{1cm}
%\begin{flushleft}
%\end{flushleft}
%%%
\flushleft{\textbf{\Large Profesor: Hector Mendoza Cortés} }\\ %%%
\vspace{2cm}
\begin{center}
{\large 05 de junio de 2019} %%%
\end{center}
\end{center}
\newpage
%%%%%%%%%%%%%%%%%%%% TERMINA PORTADA %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\tableofcontents
\newpage
\section{Objetivo general}
Descargar, instalar y configurar un servidor web (Apache), una base de datos (MySQL) y una pagina web (PHP) de manera local para poder generar un formulario que almacene la información en una base de datos y ademas muestre la información guardada.
\section{Objetivos particulares}
\begin{itemize}
\item Definir que es XAMPP y LAMP.
\item Instalar la paqueteria LAMP.
\item Configurar la paquetería LAMP.
\item Realizar un formulario en PHP y almacenar la información en una base de datos.
\end{itemize}
\newpage
\section{Marco teórico}
\subsection{Definición de XAMPP}
\textbf{XAMPP} es un servidor independiente de plataforma, software libre, que consiste principalmente en la base de datos MySQL, el servidor Web Apache y los intérpretes para lenguajes de script: PHP y Perl. El nombre proviene del acrónimo de X (para cualquiera de los diferentes sistemas operativos), Apache, MySQL, PHP, Perl. El programa está liberado bajo la licencia GNU y actúa como un servidor Web libre, fácil de usar y capaz de interpretar páginas dinámicas. Actualmente XAMPP esta disponible para Microsoft Windows, GNU/Linux, Solaris, y MacOS X.\cite{IEEEreferencias:Ref1}
\subsection{Definición de LAMP}
El acrónimo \textbf{LAMP} está compuesto por las iniciales de sus cuatro componentes: \textbf{L}inux, \textbf{A}pache, \textbf{M}ySQL y \textbf{P}HP. Estos forman la infraestructura en el servidor, que hace posible la creación y el alojamiento de páginas web dinámicas. Los componentes individuales se acumulan unos sobre otros, por lo que esta plataforma también recibe el nombre de LAMP.
Su funcionamiento es muy simple. Linux sirve como sistema operativo base para ejecutar el servidor web Apache. Este último no puede interpretar contenidos dinámicos, pero es aquí donde PHP entra a ejercer sus funciones de programación del lado del servidor. El proceso funciona entonces de la siguiente manera: Apache le envía un código fuente al intérprete PHP, incluyendo la información correspondiente sobre las acciones del visitante de la web, y permite el acceso a la base de datos MySQL. El resultado es devuelto a Apache y este se muestra finalmente en el navegador web del visitante.\cite{IEEEreferencias:Ref2}
\subsection{Servidor web}
Para entender lo que es Apache, primeramente definiremos lo que es un servidor web. La definición más sencilla de servidor web, que es un programa especialmente diseñado para transferir datos de hipertexto, es decir, páginas web con todos sus elementos (textos, widgets, baners, etc). Estos servidores web utilizan el protocolo http.
Los servidores web están alojados en un ordenador que cuenta con conexión a Internet. El web server, se encuentra a la espera de que algún navegador le haga alguna petición, como por ejemplo, acceder a una página web y responde a la petición, enviando código HTML mediante una transferencia de datos en red.
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=2.5]{LAMP/APACHE.jpeg}
\captionof{figure}{\label{fig:APACHE}Esquema de funcionamiento de Apache}
\end{center}
\end{figure}
\clearpage
\subsubsection{Apache}
Apache es una popular y eficiente alternativa, que ofrece servicios web. Este web server es uno de los logros más grandes del software libre y la punta de lanza del mundo de las páginas web.
Apache es un poderoso servidor web, cuyo nombre proviene de la frase inglesa “a patchy server” y es completamente libre, ya que es un software Open Source y con licencia GPL. Una de las ventajas más grandes de Apache, es que es un servidor web multiplataforma, es decir, puede trabajar con diferentes sistemas operativos y mantener su excelente rendimiento.
Desde el año 1996, es el servidor web más popular del mundo, debido a su estabilidad y seguridad. Apache sigue siendo desarrollado por la comunidad de usuarios desarrolladores que trabaja bajo la tutela de Apache Software Foundation.
\subsubsection{Principales características de Apache}
Entre las principales características de Apache, se encuentran las siguientes:
\begin{itemize}
\item Soporte de seguridad SSL y TLS.
\item Puede realizar autentificación de datos utilizando SGDB.
\item Puede dar soporte a diferentes lenguajes, como Perl, PHP, Python y tcl.
\end{itemize}
\subsubsection{Usos de Apache}
Apache es utilizado principalmente, para realizar servicio a páginas web, ya sean estáticas o dinámicas. Este estupendo servidor se integra a la perfección con otras aplicaciones, creando el famoso paquete XAMP con Perl, Python, MySQL y PHP, junto a cualquier sistema operativo, que por lo general es Linux, Windows o Mac OS.\cite{IEEEreferencias:Ref3}
\newpage
\subsection{MySQL}
MySQL es un sistema de administración de bases de datos (Database Management System, DBMS) para bases de datos relacionales. Así, MySQL no es más que una aplicación que permite gestionar archivos llamados de bases de datos.
Existen muchos tipos de bases de datos, desde un simple archivo hasta sistemas relacionales orientados a objetos. MySQL, como base de datos relacional, utiliza multiples tablas para almacenar y organizar la información. MySQL fue escrito en C y C++ y destaca por su gran adaptación a diferentes entornos de desarrollo, permitiendo su interactuación con los lenguajes de programación más utilizados como PHP, Perl y Java y su integración en distintos sistemas operativos.
También es muy destacable, la condición de open source de MySQL, que hace que su utilización sea gratuita e incluso se pueda modificar con total libertad, pudiendo descargar su código fuente. Esto ha favorecido muy positivamente en su desarrollo y continuas actualizaciones, para hacer de MySQL una de las herramientas más utilizadas por los programadores orientados a Internet.\cite{IEEEreferencias:Ref4}
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=1]{LAMP/MYSQL.jpg}
\captionof{figure}{\label{fig:MYSQL}MySQL}
\end{center}
\end{figure}
\clearpage
\subsection{PHP}
PHP es un lenguaje de código abierto muy popular, adecuado para desarrollo web y que puede ser incrustado en HTML. Es popular porque un gran número de páginas y portales web están creadas con PHP. Código abierto significa que es de uso libre y gratuito para todos los programadores que quieran usarlo. Incrustado en HTML significa que en un mismo archivo vamos a poder combinar código PHP con código HTML, siguiendo unas reglas.
PHP se utiliza para generar páginas web dinámicas. Recordar que llamamos página estática a aquella cuyos contenidos permanecen siempre igual, mientras que llamamos páginas dinámicas a aquellas cuyo contenido no es el mismo siempre. Por ejemplo, los contenidos pueden cambiar en base a los cambios que haya en una base de datos, de búsquedas o aportaciones de los usuarios, etc.
\subsubsection{¿Cómo trabaja PHP? }
El lenguaje PHP se procesa en servidores, que son potentes ordenadores con un software y hardware especial. Cuando se escribe una dirección tipo http://www.aprenderaprogramar.com/index.php en un navegador web como Internet Explorer, Firefox o Chrome, ¿qué ocurre? Se envían los datos de la solicitud al servidor que los procesa, reúne los datos (por eso decimos que es un proceso dinámico) y el servidor lo que devuelve es una página HTML como si fuera estática.
El esquema es: Petición de página web al servidor -- --$>$ El servidor recibe la petición, reúne la información necesaria consultando a bases de datos o a otras páginas webs, otros servidores, etc -- --$>$ El servidor responde enviando una página web “normal” (estática) pero cuya creación ha sido dinámica (realizando procesos de modo que la página web devuelta no siempre es igual).\cite{IEEEreferencias:Ref5}
En resumen:
Páginas estáticas: Petición -- --$>$ Respuesta
Páginas dinámicas: Petición -- --$>$ Procesado y preparación -- --$>$ Respuesta
\newpage
\section{Solución propuesta}
\subsection{Instalación LAMP}
Antes de instalar un servidor LAMP, es importante aclarar un par de cosas. Además, es fundamental asegurarse de que el hardware utilizado tenga la suficiente capacidad para instalar y trabajar con la infraestructura LAMP.
A continuación, los pasos para implementar el LAMP:
\subsubsection{Paso 1: Instalar Apache y actualizar el cortafuegos}
El servidor web, Apache es uno de los servidores web más populares en el mundo. Se encuentra bien documentado y ha sido utilizado en buena parte de la historia de la web, hechos que lo convierten en un muy buen candidato para ser escogido como el servidor por defecto de páginas web.
Instala Apache usando el administrador de paquetes de Ubuntu, apt:
\begin{lstlisting}[language=bash,label=instalacionapache1,caption=Instalación de Apache]
$ sudo apt update
$ sudo apt install apache2
\end{lstlisting}
Como éste es un comando sudo, estas operaciones son ejecutadas con los privilegios de superusuario. Te preguntará por la contraseña de tu cuenta regular para verificar tus intenciones.
Una vez hayas autenticado tu contraseña, apt te informará cuáles paquetes se instalarán y cuánto espacio en disco será requerido. Digita Y y después Enter para continuar, así, la instalación procederá.
\subsubsection{Paso 2: Configuración de un cortafuegos básico}
Ubuntu 18.04 puede usar el firewall UFW para asegurar conexiones a ciertos servicios que estan permitidos. Podemos configurar un firewall basico facilmente usando esta aplicacion.
Diferentes aplicaciones pueden registrar sus perfiles con UFW tras la instalación. Estos perfiles permiten a UFW administrar estas aplicaciones por nombre.
Puedes ver esto escribiendo:
\begin{lstlisting}[language=bash,label=firewall1,caption=Configuración de firewall]
# ufw app list
\end{lstlisting}
Podemos habilitar el firewall escribiendo:
\begin{lstlisting}[language=bash,label=firewall2,caption=Configuración de firewall]
# ufw enable
\end{lstlisting}
Escriba "y" y presione ENTER para continuar. Puedes ver los servicios activos escribiendo:
\begin{lstlisting}[language=bash,label=firewall3,caption=Configuración de firewall]
# ufw status
\end{lstlisting}
Si instala y configura servicios, deberá ajustar la configuración del servidor de seguridad para permitir un tráfico aceptable.
\subsubsection{Paso 3: Ajuste del cortafuegos para permitir el tráfico web}
Asumiendo habilitaste el cortafuegos UFW, ahora podrás asegurarte que tu cortafuegos permite el tráfico HTTP y HTTPS. Para hacerlo, verifica que el UFW tiene un perfil de aplicación para Apache mediante el comando:
\begin{lstlisting}[language=bash,label=firewall4,caption=Configuración de firewall]
$ sudo ufw app list
\end{lstlisting}
Si solicitas la información del perfil Apache Full, se debería mostrar que el tráfico se encuentra habilitado para los puertos 80 y 443.
Para permitir el tráfico de entrada HTTP y HTTPS para este perfil, digita:
\begin{lstlisting}[language=bash,label=firewall5,caption=Configuración de firewall]
$ sudo ufw allow in "Apache Full"
\end{lstlisting}
Puedes hacer una comprobación instantánea de que todo ha ido según lo planeado visitando la dirección IP de tu servidor en un navegador (o en su defecto, la de localhost 127.0.0.1):
Verás la página web predeterminada de Apache para Ubuntu 18.04, la cual tiene propósitos informativos y de prueba. Debería verse semejante a:
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.3]{LAMP/APACHE_DEFAULT.png}
\captionof{figure}{\label{fig:Apache_default}Si viste esta página, entonces tu servidor web se encuentra instalado correctamente y es accesible a través del cortafuegos}
\end{center}
\end{figure}
\subsubsection{Paso 4: Instalar MySQL}
Ahora que tienes tu servidor web activo y funcional, es el momento de instalar MySQL. MySQL es un sistema de administración de bases de datos. Basicamente, él organizará y proveerá acceso a las bases de datos donde tu sitio podrá guardar información.
De nuevo, usa apt para adquirir e instalar este software:
\begin{lstlisting}[language=bash,label=mysql1,caption=Instalación y configuración de MySQL]
$ sudo apt install mysql-server
\end{lstlisting}
De nuevo se te desplegará una lista de paquetes a instalar, así como el espacio en disco que requerirá. Presiona Y para continuar.
Cuando la instalación esté completa, debes ejecutar un archivo de comandos de seguridad que viene preinstalado con MySQL, éste removerá algunos parámetros peligrosos, así como asegurará el acceso a tu base de datos. Ejecuta el archivo interactivo de comandos mediante:
\begin{lstlisting}[language=bash,label=mysql2,caption=Instalación y configuración de MySQL]
$ sudo mysql_secure_installation
\end{lstlisting}
Se te preguntará si quieres configurar el conector de validación de contraseña: VALIDATE PASSWORD PLUGIN.
\textbf{Nota:} Habilitar esta funcionalidad dependerá de juzgar las necesidades de tu servidor. Si está habilitada una contraseña que no cumpla con un criterio específico, será rechazada por MySQL y generará un error. Esto podría ser un problema si utilizas contraseñas débiles en conjunto con software que configura automáticamente credenciales de usuario de MySQl, como por ejemplo los paquetes de Ubuntu para phpMyAdmin. Es seguro dejar esta validación deshabilitada, pero recuerda siempre utilizar contraseñas únicas y fuertes para las credenciales de las bases de datos. Como contraseña recomendada: ``MyNewP4ss!''.
Responde Y si estás de acuerdo, cualquier otra respuesta continuará sin realizar la habilitación.
Si respondiste “yes”, se te solicitará que selecciones el nivel de validación de contraseña. Debes tener en cuenta que si digitas 2 representando el nivel más fuerte, recibirás errores al intentar utilizar una contraseña que no contenga números, letras mayúsculas y minúsculas, así como caracteres especiales; además la contraseña no podrá estar basada en palabras comunes en un diccionario.
Sin importar el nivel escogido para VALIDATE PASSWORD PLUGIN, tu servidor te solicitará, a continuación, seleccionar y confirmar la contraseña para el usuario root de MySQL. Ésta es una cuenta administrativa dentro MySQL con privilegios incrementados. Puede ser entendida de manera similar a la cuenta root del servidor mismo (Sin embargo, estarás configurando una cuenta específica para MySQL). Asegúrate de utilizar una contraseña fuerte y única, no debería dejarse en blanco.
Si habilitaste la validación de contraseña, se te mostrará qué tan fuerte es la contraseña para la cuenta root que acabas de introducir y tu servidor preguntará si quieres cambiarla. Si crees que es adecuado como está, digita N para seleccionar "no" en la línea de comandos.
Para las siguientes preguntas, presiona Y y pulsa la tecla Enter en cada sugerencia. Esto removerá algunos usuarios anónimos y la base de datos de prueba, deshabilitará ingresos remotos del root, y cargará estas nuevas reglas, de tal modo que MySQL respete inmediatamente los cambios que se acaban de hacer.
En este punto, tu sistema de bases de datos se encuentra configurado y puedes seguir con la instalación de PHP, el componente final de la pila LAMP.
\subsubsection{Paso 5: Instalar Instalar PHP}
PHP es el componente de tu configuración que procesa código para desplegar contenido dinámico. Puede ejecutar archivos, conectarse a tus bases de datos MySQL para obtener información, y manejar la visualización del contenido procesado sobre tu servidor web.
Una vez más usaremos el sistema apt para instalar PHP. Adicionalmente lo podemos configurar para que se ejecute sobre el servidor Apache y para que se comunique con la base de datos MySQL:
\begin{lstlisting}[language=bash,label=PHP1,caption=Instalación y configuración de PHP]
$ sudo apt install php libapache2-mod-php php-mysql
\end{lstlisting}
Esto debería instalar PHP sin problemas, sin embargo, probaremos esta instalación en este momento.
En la mayoría de los casos, desearás modificar la forma mediante la cual Apache sirve archivos cuando un directorio es solicitado. En este momento, si un usuario solicita un directorio del servidor, Apache buscará, en primera instancia, un archivo llamado index.html. Nosotros queremos que el servidor web le dé prelación a los archivos PHP sobre cualquier otro archivo. Para lo cual haremos que el Apache busque el archivo index.php en primer lugar.
Para lograrlo, digita el siguiente comando para abrir el archivo dir.conf en un editor de texto con privilegios de superusuario:
\begin{lstlisting}[language=bash,label=PHP2,caption=Instalación y configuración de PHP]
$ sudo nano /etc/apache2/mods-enabled/dir.conf
\end{lstlisting}
Debería verse semejante a esto:
\begin{lstlisting}[language=bash,label=PHP3,caption=Instalación y configuración de PHP]
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml
index.htm
</IfModule>
\end{lstlisting}
Mueve el archivo de índice de PHP (subrayado arriba) a la primera posición después de la especificación DirectoryIndex, debería verse similar a:
\begin{lstlisting}[language=bash,label=PHP4,caption=Instalación y configuración de PHP]
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml
index.htm
</IfModule>
\end{lstlisting}
Cuando termines, graba y cierra el archivo presionando las teclas Ctrl + X. Confirma los cambios presionando Y, y a continuación pulsa la tecla Enter para verificar el lugar de grabación del archivo.
A continuación, deberás reiniciar el servidor Apache para que tus cambios sean reconocidos, lo puedes hacer mediante el comando:
\begin{lstlisting}[language=bash,label=PHP5,caption=Instalación y configuración de PHP]
$ sudo systemctl restart apache2
\end{lstlisting}
También podrás verificar el estado del servicio apache2 utilizando systemctl:
\begin{lstlisting}[language=bash,label=PHP6,caption=Instalación y configuración de PHP]
$ sudo systemctl status apache2
\end{lstlisting}
Para ampliar la funcionalidad de PHP, tienes la posibilidad de instalar algunos módulos adicionales. Para ver las opciones disponibles de módulos y librerías de PHP, envía los resultados de apt search a less, un paginador que te permitirá navegar dentro de la salida de otro comando:
\begin{lstlisting}[language=bash,label=PHP7,caption=Instalación y configuración de PHP]
$ apt search php- | less
\end{lstlisting}
Usa las flechas para moverte hacia arriba y abajo, y pulsa Q para salir.
Como resultado obtendrás todos los componentes opcionales que puedes instalar. El sistema te mostrará una descripción corta de cada uno de ellos.
Para indagar más sobre las funcionalidades de cada módulo, simplemente puedes buscar en la web su descripción, o alternativamente, puedes ver la descripción larga de cada paquete, digitando:
\begin{lstlisting}[language=bash,label=PHP8,caption=Instalación y configuración de PHP]
$ apt show package_name
\end{lstlisting}
La salida será extensiva, con un campo en particular llamado Description que tendrá una explicación más extensa acerca de la funcionalidad que el módulo provee.
Por ejemplo, para ver las funcionalidades del módulo php--cli, podrías digitar:
\begin{lstlisting}[language=bash,label=PHP9,caption=Instalación y configuración de PHP]
$ apt show php-cli
\end{lstlisting}
Si después de tu consulta decides instalar algún paquete, lo puedes hacer mediante el comando apt install, de la misma forma que lo has hecho para otro software.
Si te das cuenta que necesitas instalar php-cli, puedes escribir:
\begin{lstlisting}[language=bash,label=PHP10,caption=Instalación y configuración de PHP]
$ sudo apt install php-cli
\end{lstlisting}
Si deseas instalar más de un módulo, lo puedes hacer listándolos separados por espacio, después del comando apt install, semejante a lo siguiente:
\begin{lstlisting}[language=bash,label=PHP11,caption=Instalación y configuración de PHP]
$ sudo apt install package1 package2 ...
\end{lstlisting}
Para este punto, tu pila LAMP se encuentra instalada y configurada. Sin embargo, antes de hacer más cambios o de desplegar una aplicación, sería beneficioso hacer una prueba proactiva de la configuración de PHP, quizá haya alguna situación que merezca alguna atención en este momento.
\subsubsection{Paso 6: Evaluar el procesamiento de PHP sobre tu servidor web}
Con el objetivo de evaluar si tu sistema está configurado de manera correcta para usar PHP, crea una archivo de comandos básico, llamado info.php. Para que Apache pueda encontrar y servir este archivo de manera correcta, debe ser alojado en un directorio muy específico, que es llamado "web root".
En Ubuntu 18.04, este directorio se encuentra localizado en /var/www/html/. Crea el archivo en ese lugar digitando:
\begin{lstlisting}[language=bash,label=PHP12,caption=Probando PHP]
$ sudo nano /var/www/html/info.php
\end{lstlisting}
Esto creará un archivo en blanco. Introduce el siguiente código PHP válido, dentro del archivo de texto:
\begin{lstlisting}[language=PHP,label=PHP13,caption=Probando PHP]
<?php
phpinfo();
?>
\end{lstlisting}
Cuando termines, graba y cierra el archivo.
Ahora ya puedes probar si tu servidor web se encuentra habilitado para desplegar correctamente contenido generado por este archivo de comandos PHP. Para hacerlo, visita una página web específica en tu navegador, necesitarás tu dirección pública de nuevo.
La dirección que deberás visitar es:
\begin{lstlisting}[language=bash,label=PHP14,caption=Probando PHP]
http://tu_direccion_ip/info.php
\end{lstlisting}
La página que deberías estar viendo debe ser similar la siguiente:
\begin{figure}[ht]
\begin{center}
\includegraphics[scale=0.3]{LAMP/PHP.png}
\captionof{figure}{\label{fig:PHP}Esta página provee información básica sobre tu servidor, recogida desde la perspectiva de PHP}
\end{center}
\end{figure}
\clearpage
Es útil cuando necesites hacer algún tipo de seguimiento o para verificar que la configuración deseada ha sido aplicada de manera correcta.
Si pudiste ver esta página en tu navegador, tu PHP está trabajando según lo esperado.
Probablemente quieras remover este archivo después de la prueba, éste puede dar información sobre tu servidor a usuarios no autorizados. Para hacer esto, digita el siguiente comando:
\begin{lstlisting}[language=bash,label=PHP15,caption=Probando PHP]
sudo rm /var/www/html/info.php
\end{lstlisting}
Siempre puedes crear este archivo de nuevo en caso que necesites acceder a esta información en otra oportunidad.\cite{IEEEreferencias:Ref6}
\subsection{Cómo instalar y asegurar phpMyAdmin}
Si bien muchos usuarios necesitan la funcionalidad de un sistema de administración de base de datos como MySQL, es posible que no se sientan cómodos interactuando con el sistema únicamente desde el indicador de MySQL.
phpMyAdmin fue creado para que los usuarios puedan interactuar con MySQL a través de una interfaz web. En esta guía, analizaremos cómo instalar y proteger phpMyAdmin para que pueda usarlo de manera segura para administrar sus bases de datos desde un sistema Ubuntu.
\subsubsection{Prerrequisitos}
Antes de comenzar con esta guía, debe completar algunos pasos básicos.
Primero, asumiremos que está utilizando un usuario no root con privilegios de sudo.
También vamos a asumir que ha completado una instalación de LAMP (Linux, Apache, MySQL y PHP) en su servidor Ubuntu. Si esto aún no se ha completado, regrese al apartado de instalación LAMP.
Finalmente, hay consideraciones de seguridad importantes al usar software como phpMyAdmin, ya que:
\begin{itemize}
\item Se comunica directamente con su instalación de MySQL.
\item Maneja la autenticación usando las credenciales de MySQL.
\item Ejecuta y devuelve resultados para consultas SQL arbitrarias.
\end{itemize}
Por estas razones, y debido a que es una aplicación de PHP ampliamente implementada que se dirige frecuentemente a ataques, nunca debe ejecutar phpMyAdmin en sistemas remotos a través de una conexión HTTP simple.
Una vez que haya terminado con estos pasos, estará listo para ir al siguiente paso.
\subsubsection{Paso 1: Instalar phpMyAdmin}
Para comenzar, instalaremos phpMyAdmin desde los repositorios predeterminados de Ubuntu.
Podemos hacer esto actualizando nuestro índice de paquete local y luego utilizando el aptsistema de empaquetado para bajar los archivos e instalarlos en nuestro sistema:
\begin{lstlisting}[language=bash,label=phpmyadmin1,caption=Instalación phpmyadmin]
$ sudo apt-get update
$ sudo apt-get install phpmyadmin php-mbstring php-gettext
\end{lstlisting}
Esto le hará algunas preguntas para configurar su instalación correctamente.
\textbf{Advertencia:} cuando aparece el primer mensaje, apache2 se resalta, pero no se selecciona. Si no pulsa Espacio para seleccionar Apache, el instalador no moverá los archivos necesarios durante la instalación. Pulse Espacio , Tab y luego Intro para seleccionar Apache.
\begin{itemize}
\item Para la selección del servidor, elija apache2.
\item Seleccione sí cuando se le pregunte si desea utilizar dbconfig-commonpara configurar la base de datos.
\item Se le pedirá la contraseña de administrador de su base de datos.
\item A continuación, se le pedirá que elija y confirme una contraseña para la phpMyAdminaplicación en sí.
\end{itemize}
El proceso de instalación en realidad agrega el archivo de configuración phpMyAdmin Apache en el /etc/apache2/conf-enabled/directorio, donde se lee automáticamente.
Lo único que debemos hacer es habilitar explícitamente el PHP mcrypty las mbstringextensiones, lo que podemos hacer escribiendo:
\begin{lstlisting}[language=bash,label=phpmyadmin2,caption=Instalación phpmyadmin]
$ sudo phpenmod mcrypt
$ sudo phpenmod mbstring
\end{lstlisting}
Luego, deberá reiniciar Apache para que se reconozcan sus cambios:
\begin{lstlisting}[language=bash,label=phpmyadmin3,caption=Instalación phpmyadmin]
$ sudo systemctl restart apache2
\end{lstlisting}
Ahora puede acceder a la interfaz web visitando el nombre de dominio o la dirección IP de su servidor, seguido de /phpmyadmin:
\begin{lstlisting}[language=bash,label=phpmyadmin4,caption=Instalación phpmyadmin]
https://tu_direccion_ip/phpmyadmin
\end{lstlisting}
\clearpage
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.3]{LAMP/phpmyadmin.png}
\captionof{figure}{\label{fig:PHP1}Inicio de sesión phpmyadmin}
\end{center}
\end{figure}
Ahora puede iniciar sesión en la interfaz con el rootnombre de usuario y la contraseña administrativa que configuró durante la instalación de MySQL.
Cuando inicies sesión, verás la interfaz de usuario, que se verá así:
\clearpage
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.5]{LAMP/phpmyadminsesion.png}
\captionof{figure}{\label{fig:PHP2}Inicio de sesión phpmyadmin}
\end{center}
\end{figure}
\subsubsection{Paso 2: Asegure su instancia phpMyAdmin}
Pudimos hacer que nuestra interfaz phpMyAdmin funcionara con bastante facilidad. Sin embargo, todavía no hemos terminado. Debido a su ubicuidad, phpMyAdmin es un objetivo popular para los atacantes. Debemos tomar medidas adicionales para evitar el acceso no autorizado.
Una de las maneras más fáciles de hacer esto es colocar una puerta de enlace frente a toda la aplicación. Podemos hacer esto utilizando las .htaccessfunciones de autenticación y autorización integradas de Apache .
\subsubsection{Paso 3: Configurar Apache para permitir anulaciones de .htaccess}
Primero, debemos habilitar el uso de .htaccessanulaciones de archivos mediante la edición de nuestro archivo de configuración de Apache.
Editaremos el archivo vinculado que se ha colocado en nuestro directorio de configuración de Apache:
\begin{lstlisting}[language=bash,label=phpmyadmin5,caption=Configuración phpmyadmin]
$ sudo nano /etc/apache2/conf-available/phpmyadmin.conf
\end{lstlisting}
Necesitamos agregar una AllowOverride Alldirectiva dentro de la <Directory /usr/share/phpmyadmin>sección del archivo de configuración, como esta:
\begin{lstlisting}[language=bash,label=phpmyadmin6,caption=/etc/apache2/conf-available/phpmyadmin.conf]
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .
\end{lstlisting}
Cuando haya agregado esta línea, guarde y cierre el archivo.
Para implementar los cambios que hizo, reinicie Apache:
\begin{lstlisting}[language=bash,label=phpmyadmin7,caption=Configuración phpmyadmin]
$ sudo systemctl restart apache2
\end{lstlisting}
\subsubsection{Paso 4: Crear un archivo .htaccess}
Ahora que hemos habilitado el .htaccessuso de nuestra aplicación, debemos crear uno para implementar algo de seguridad.
Para que esto tenga éxito, el archivo debe crearse dentro del directorio de la aplicación. Podemos crear el archivo necesario y abrirlo en nuestro editor de texto con privilegios de root escribiendo:
\begin{lstlisting}[language=bash,label=phpmyadmin8,caption=Configuración phpmyadmin]
$ sudo nano /usr/share/phpmyadmin/.htaccess
\end{lstlisting}
Dentro de este archivo, necesitamos ingresar la siguiente información:
\begin{lstlisting}[language=bash,label=phpmyadmin9,caption=/usr/share/phpmyadmin/.htaccess]
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
\end{lstlisting}
Repasemos qué significa cada una de estas líneas:
\begin{itemize}
\item \textbf{AuthType Basic:} Esta línea especifica el tipo de autenticación que estamos implementando. Este tipo implementará la autenticación de contraseña utilizando un archivo de contraseña.
\item \textbf{AuthName:} Esto establece el mensaje para el cuadro de diálogo de autenticación. Debe mantener este genérico para que los usuarios no autorizados no obtengan ninguna información sobre lo que se está protegiendo.
\item \textbf{AuthUserFile:} Esto establece la ubicación del archivo de contraseña que se utilizará para la autenticación. Esto debería estar fuera de los directorios que están siendo servidos. Vamos a crear este archivo en breve.
\item \textbf{Require valid-user:} Esto especifica que solo los usuarios autenticados deben tener acceso a este recurso. Esto es lo que realmente impide que entren usuarios no autorizados.
\end{itemize}
Cuando haya terminado, guarde y cierre el archivo.
\subsubsection{Paso 5: Cree el archivo .htpasswd para la autenticación}
La ubicación que seleccionamos para nuestro archivo de contraseña era " /etc/phpmyadmin/.htpasswd". Ahora podemos crear este archivo y pasarle un usuario inicial con la htpasswdutilidad:
\begin{lstlisting}[language=bash,label=phpmyadmin10,caption=Configuración phpmyadmin]
$ sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
\end{lstlisting}
Se le solicitará que seleccione y confirme una contraseña para el usuario que está creando. Posteriormente, el archivo se creará con la contraseña hash que ingresó.
Si desea ingresar un usuario adicional, debe hacerlo sin el -cindicador, como este:
\begin{lstlisting}[language=bash,label=phpmyadmin11,caption=Configuración phpmyadmin]
$ sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
\end{lstlisting}
Ahora, cuando acceda a su subdirectorio phpMyAdmin12, se le pedirá el nombre de la cuenta adicional y la contraseña que acaba de configurar:
\begin{lstlisting}[language=bash,label=phpmyadmin13,caption=Configuración phpmyadmin]
https://tu_direccion_ip/phpmyadmin
\end{lstlisting}
Después de ingresar a la autenticación de Apache, se lo llevará a la página de autenticación de phpMyAdmin para ingresar sus otras credenciales. Esto agregará una capa adicional de seguridad ya que phpMyAdmin ha sufrido vulnerabilidades en el pasado.\cite{IEEEreferencias:Ref7}
\subsubsection{Creación de un formulario con HTML, PHP y MySQL}
Despues de haber realizado la configuración e instalación de LAMP, ahora nos toca realizar un pequeño formulario en HTML y PHP. La información que guarde dicho formulario se almacenará en una base de datos.
Para la creación de una base de datos, existen dos maneras: en gráfico (usando phpmyadmin) y en consola (por medio de comandos).
Nosotros lo haremos por medio de phpmyadmin, sin embargo en la parte final de este capitulo, se pondrán los comandos de MySQL que se necesitan para crear una base de datos, tablas, hacer consultas, etc.
Lo primero que vamos a hacer, es crear un pequeño código en HTML que nos muestre información en el navegador. El código que se implemento fue el siguiente:
\begin{lstlisting}[language=HTML,label=codigo1,caption=Código en HTML]
<!DOCTYPE html>
<html>
<head>
<title>Forma</title>
</head>
<body>
<form method="post" action="datos.php">
Nombre de usuario : <input type="text" name="username"><br><br>
Contrasena : <input type="password" name="password"><br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
\end{lstlisting}
\begin{lstlisting}[language=PHP,label=codigo2,caption=Código en PHP]
<?php
$username = filter_input(INPUT_POST, 'username');
$password = filter_input(INPUT_POST, 'password');
if (!empty($username)){
if (!empty($password)){
$host = "localhost";
$dbusername = "root";
$dbpassword = "MyNewP4ss!";
$dbname = "carlos_operativos";
// Create connection
$conn = new mysqli ($host, $dbusername, $dbpassword, $dbname);
if (mysqli_connect_error()){
die('Connect Error ('. mysqli_connect_errno() .') '
. mysqli_connect_error());
}
else{
$sql = "INSERT INTO cuenta (username, password)
values ('$username','$password')";
if ($conn->query($sql)){
echo "Nuevo registro agregado exitosamente";
}
else{
echo "Error: ". $sql ."
". $conn->error;
}
$conn->close();
}
}
else{
echo "Contrasena no debe de estar vacia";
die();
}
}
else{
echo "Nombre de usuario no debe de estar vacio";
die();
}
?>
\end{lstlisting}
Después, vamos a crear una base de datos (en adelante BD) y una tabla. El nombre de la BD debe de coincidir con el que esta en el código de PHP. De igual manera para el nombre de la tabla, el usuario de la BD, la contraseña de la BD y el nombre del host.
Nos iremos a la siguiente pagina:
\begin{lstlisting}[language=bash,label=pagina1,caption=Página de phpmyadmin]
http://localhost/phpmyadmin
\end{lstlisting}
\clearpage
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.2]{FORMULARIO/pagina1.png}
\captionof{figure}{\label{fig:pagina1}Inicio de sesión phpmyadmin}
\end{center}
\end{figure}
Iniciamos sesión, y en seguida nos mandara a la siguiente página:
\clearpage
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.2]{FORMULARIO/pagina2.png}
\captionof{figure}{\label{fig:pagina2}Crearemos una base de datos con el nombre de ``carlos\_operativos''}
\end{center}
\end{figure}
Luego, crearemos una tabla con el nombre de ``cuenta''
\clearpage
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.2]{FORMULARIO/pagina3.png}
\captionof{figure}{\label{fig:pagina3}Creación de una tabla}
\end{center}
\end{figure}
Después crearemos dos apartados, uno con el nombre de ``username'' y otro con el nombre de ``password'', nos serviran para guardar valores de usuario y contraseña respectivamente. Seran de tipo varchar y tendran una extensión de 40 carateres. (varchar es como tipo string).
\clearpage
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.2]{FORMULARIO/pagina4.png}
\captionof{figure}{\label{fig:pagina4}Creación apartados ``username'' y ``password''}
\end{center}
\end{figure}
\clearpage
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.2]{FORMULARIO/pagina5.png}
\captionof{figure}{\label{fig:pagina5}Apartados de ``username'' y ``password''}
\end{center}
\end{figure}
Listo, ya creamos nuestra BD con nuestra tabla. Ahora, el siguiente paso es colocar los 2 códigos de HTML y PHP en la siguiente carpeta:
\begin{lstlisting}[language=bash,label=paginas2,caption=Directorio para cargar paginas web]
/var/www/html
\end{lstlisting}
En nuestro caso, nosotros le pusimos como nombres ``sistemas.html'' y ``datos.php''.
\clearpage
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.4]{FORMULARIO/pagina6.png}
\captionof{figure}{\label{fig:pagina6}Archivos HTML y PHP}
\end{center}
\end{figure}
Ya que colocamos los archivos en el directorio mencionado anteriornemte. Reiniciamos Apache y nos iriamos a la siguiente dirección:
\begin{lstlisting}[language=bash,label=paginas3,caption=Página de phpmyadmin]
http://localhost/sistemas.html
\end{lstlisting}
\clearpage
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.2]{FORMULARIO/pagina7.png}
\captionof{figure}{\label{fig:pagina7}Reiniciamos Apache}
\end{center}
\end{figure}
\clearpage
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.2]{FORMULARIO/pagina8.png}
\captionof{figure}{\label{fig:pagina8}Nos vamos a http://localhost/sistemas.html}
\end{center}
\end{figure}
\clearpage
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.2]{FORMULARIO/pagina9.png}
\captionof{figure}{\label{fig:pagina9}LLenamos los campos}
\end{center}
\end{figure}
Ya que llenamos los campos, nos aparecerá el siguiente mensaje:
\clearpage
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.2]{FORMULARIO/pagina10.png}
\captionof{figure}{\label{fig:pagina10}Mensaje de éxito}
\end{center}
\end{figure}
Para comprobar que, efectivamente los datos se fueron a la BD, nos regresamos a la pagina de phpmyadmin. Le damos clic en la base de datos que creamos, le damos clic a la tabla y listo, deberían de aparecer los datos:
\clearpage
\begin{figure}[!htb]
\begin{center}
\includegraphics[scale=0.2]{FORMULARIO/pagina11.png}
\captionof{figure}{\label{fig:pagina11}Creacion de un formulario}
\end{center}
\end{figure}
Ahora, a continuación se pondrán los codigos para MySQL:
\begin{itemize}
\item Crear una base de datos: create database [databasename];
\item Listar todas las base de datos en el servidor: show databases;
\item Cambiar a una base de datos: use [db name];
\item Ver todas las tablas de una base de datos: show tables;
\item Ver los formatos de campo de la base de datos: describe [table name];
\item Eliminar una base de datos: drop database [database name];
\item Eliminar una tabla de la base de datos: drop table [table name];
\item Devolver todos los registros de una tabla: SELECT * FROM [table name];
\item Devolver las columnas y la información de la columna correspondiente a la tabla designada: show columns from [table name];
\item Mostrar ciertas filas seleccionadas con el valor «lo que sea»: SELECT * FROM [table name] WHERE [field name] = «whatever»;
\item Mostrar todos los registros que contengan el nombre «Bob» AND el número de teléfono ‘3444444’: SELECT * FROM [table name] WHERE name = «Bob» AND phone\_number = ‘3444444’;
\item Mostrar todos los registros que contienen el nombre «Bob» AND el número de teléfono ‘3444444’ ordenados por el campo «phone\_number»: SELECT * FROM [table name] WHERE name != «Bob» AND phone\_number = ‘3444444’ order by phone\_number;
\item Mostrar todos los registros que comienzan con la palabra ‘bob’ AND el número de teléfono ‘3444444’: SELECT * FROM [table name] WHERE name like «Bob\%» AND phone\_number = ‘3444444’;
\item Usar una expresión regular para encontrar registros. Usar «REGEXP BINARY» para forzar la sensibilidad a las mayúsculas. \begin{itemize}
\item Esto encuentra cualquier registro que comience con «a»: SELECT * FROM [table name] WHERE rec RLIKE «\^a\$»;
\end{itemize}
\item Mostrar registros únicos: SELECT DISTINCT [column name] FROM [table name];
\item Mostrar los registros seleccionados, ordenados en orden ascendente (asc) o descendente (desc): SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;
\item Devolver un número de filas: SELECT COUNT(*) FROM [table name];
\item Sumar el contenido de la columna: SELECT SUM(*) FROM [table name];
\end{itemize}
Para mas información, visitar la pagina de MySQL.\cite{IEEEreferencias:Ref8}
\newpage
\section{Conclusiones}
\subsection{Álvarez Santiago Daniela}
Respecto al tema que le correspondió a mi equipo, me permitió tener una vista más amplia hacer de la creación de las páginas web dinámicas y el uso de las base de datos en ellas, a pesar de que la principal herramienta para la implementación de este en Linux es LAMP, nosotros optamos por otras alternativas que en cierta forma resultan fáciles de aplicar pero un poco difíciles de comprender, pues ya no son procesos hechos por nosotros como tal.
En general con el curso me siento satisfecha ya que adquirí nuevos conocimientos sobre el sistema, e incluso podría llegar a cambiar de sistema operativo en mi computadora ya que nos enseñó bastantes ventajas, me resultó bastante entretenido y divertido cada una de las actividades que realizamos durante el semestre aunque a veces se nos complicaba.
\subsection{Gonzalez Hernandez Diego}
Este proyecto me agrada por que yo no conocía nada de esto yo vengo de la carrera de telecomunicaciones y para mi esto fue algo muy novedoso pude ver más acerca de como se construye una pagina web y todos los servicios que necesita para poder operar al menos ya tengo una idea de como poder emprender una pagina web, ya que si planeaba tomar un curso de como poder aprender esto ahora lo pondré en práctica para ver en que mejorar.
\subsection{Martinez Vivaldo Uriel Giovanni}
El saber usar estas herramientas es bastante útil ya que con estas podemos hacer nuestros propios proyectos en red y no solo eso sino que también es una gran herramienta para conseguir trabajo ya que estamos en una época donde estar en red es muy importante y para una pequeña o mediana empresa que aún no cuente con una página web le sería muy útil que le brindamos este servicio.
\subsection{Rojas Solís Juan Carlos}
En la elaboración de esta práctica, debo decir que fue todo un reto. No solo la instalación de LAMP, sino su configuración y puesta a punto estuvieron talachudas. Anteriormente desconocia todo el proceso que conlleva levantar un servidor web, y no solo eso, la creación de las paginas web, de darles seguridad, creacion de bases de datos. En fin, me siento satisfecho con el resultado que obtuve realizando esta práctica
\subsection{Sanchez Lemus Ulises Mariano}
Al estar en este curso de administración de sistemas operativos y habiendo participado en este trabajo acerca de la instalación y uso del software apache y las bases de datos, además de algo de información para complementar el trabajo, pude darme cuenta de la colaboración entre diferentes tipos de softwares para realizar una simple acción como la de navegar en internet, además de que requiere basto conocimiento y tiempo para que este sea implementado de una manera adecuada y satisfactoria, incluso es un trabajo en el mundo laboral, de ahí la importancia e incluso necesidad de entender el funcionamiento de estos softwares.
\subsection{Servin Zamora Alejandro}
En el proyecto me dio otra perspectiva de cómo se puede crear una página web junto con una base de datos. Anteriormente en la vocacional tuve la oportunidad de hacer algo semejante, aunque en esencia en el mismo procedimiento si cambia el entorno y es algo fácil de ver porque este proyecto ,tuve que documentarme en el uso básico de apache como era para poder instalarlo ,como también hacer que el firewall permitiera la conexión que queríamos hacer con MySQL y PHP para crear la red y un entorno que nos de la facilidad de crear una página web y verificar que estos funcionaban.
%%%%%%% Bibliografía %%%%%%%%
\clearpage
\bibliographystyle{bst/IEEEtranUrldate.bst}
\addcontentsline{toc}{section}{Referencias}
\bibliography{bib/IEEEabrv,bib/IEEEreferencias.bib}
%%%%%%% Bibliografía %%%%%%%%
\end{document}