Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/Conceptos Generales»

De WikiEducator
Saltar a: navegación, buscar
Línea 1: Línea 1:
 
[[Usuario:ManuelRomero/NewPHP|Volver]]
 
[[Usuario:ManuelRomero/NewPHP|Volver]]
 
{{Objetivo|Title=Que veremos aquí|
 
{{Objetivo|Title=Que veremos aquí|
asasdfasdf}}
+
Qué es la arquitectura Web
 +
Principales componentes en una arquitectura web}}
 
{{:Usuario:ManuelRomero/php/nav}}
 
{{:Usuario:ManuelRomero/php/nav}}
 
__NOTOC__
 
__NOTOC__
Línea 14: Línea 15:
 
===Tecnologías para programación web del lado del servidor===
 
===Tecnologías para programación web del lado del servidor===
 
{{TecnologiaDesarrloWeb/TecnologíasServidor}}
 
{{TecnologiaDesarrloWeb/TecnologíasServidor}}
 
+
===Herramientas a utilizar===
 +
{{TecnologiaDesarrloWeb/Herramientas}}
 
*Cuando programas una aplicación, utilizas un lenguaje de programación.  
 
*Cuando programas una aplicación, utilizas un lenguaje de programación.  
 
*Por ejemplo, utilizas el lenguaje Java para crear aplicaciones que se ejecuten en distintos sistemas operativos.  
 
*Por ejemplo, utilizas el lenguaje Java para crear aplicaciones que se ejecuten en distintos sistemas operativos.  
Línea 20: Línea 22:
 
*Por ejemplo en el caso de javauna máquina virtual de Java.
 
*Por ejemplo en el caso de javauna máquina virtual de Java.
 
*Son consideraciones a tener en cuenta antes de empezar a desarrollar.
 
*Son consideraciones a tener en cuenta antes de empezar a desarrollar.
 
 
 
==Instalar java==
 
*Primero debemos ver si tenemos instalado java
 
<source lang=bash>
 
java -version
 
</source>
 
*Nos dirá la versión que actualmente tenemos instalada o que no lo tenemos.
 
*En caso de no tenerla lo instalamos, podemos seguir esta [http://www.ubuntu-guia.com/2012/04/instalar-oracle-java-7-en-ubuntu-1204.html guia]
 
*jdk, jre, jvm
 
*Primero instamalos el jre
 
<source lang="bash">
 
sudo apt-get install icedtea-7-plugin openjdk-7-jre
 
</source>
 
*Luego el jdk
 
<source lang="bash">
 
sudo apt-get install openjdk-7-jdk
 
</source>
 
*Ahora verificamos la instalación
 
<source lang=bash>
 
# java -version
 
java version "1.7.0_65"
 
OpenJDK Runtime Environment (IcedTea 2.5.2) (7u65-2.5.2-3~14.04)
 
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
 
</source>
 
==Instalar netbeans==
 
http://niconsystem.wordpress.com/2014/04/17/instalar-netbeans-8-0-en-ubuntu-14-04/
 
 
http://ubuntuhandbook.org/index.php/2014/03/install-netbeans-ide-8-0-in-ubuntu-14-0413-1012-04/
 
 
*Primero verificamos que nuestro equipo sea de 64 bits o de 32
 
<source lang=bash>
 
# uname -a
 
</source>
 
*Accedemos al fichero descargado
 
*Le damos permiso de ejecución  y ejecutamos dicho fichero
 
<source lang=bash>
 
chmod +x jdk-8u20-nb-8_0_1-linux-x64.sh
 
./jdk-8u20-nb-8_0_1-linux-x64.sh
 
</source>
 
*Una vez instalado se puede ejecutar y no hace falta modificar ningún parámetro
 
 
Ubuntu restricted extras[editar código]
 
 
Una instalación limpia de Ubuntu no permite ver Flash, QuickTime, WMV, aplicaciones Java, etc. Ubuntu Restricted Extras es un paquete que incluye todo el software que por razones de patentes y conflictos con la legislación de ciertos países, Canonical, la empresa madre de Ubuntu, no puede incluir por defecto en la distribución.
 
 
sudo apt-get install ubuntu-restricted-extras
 
==Montando nuestra arquitectura Instalar Apache php y MySql==
 
*Seguimos la instalación de lamp
 
 
http://www.howtoforge.com/installing-apache2-with-php5-and-mysql-support-on-ubuntu-12.04-lts-lamp
 
#instalamos mysql
 
*Durante la instalación nos pedirá la contraseña de root
 
*Probamos a entrar y que funciona bien
 
<source lang=bash>
 
mysql -u root -p
 
'''insertamos la password'''
 
show databases:
 
 
 
use my_baseDatos; 
 
 
 
SELECT database(); 
 
</source>
 
*Podemos probar a crear una tabla
 
#Instalamos apache
 
<source lang=bash>
 
apt-get install apache2
 
</source>
 
{{Actividad|
 
#Probamos a ver si responde nuestro servidor web
 
#Vemos el fichero de configuración
 
#localizamos el fichero log y el de errores
 
}}
 
 
 
 
 
*para parar y arrancar el servicio
 
sudo /etc/init.d/apache2 stop|start
 
Ahora debemos instalar php6 y el módulo correspondiente para apahce
 
 
*Para instalar la versión 6, primero tenemos que añadir el fuente en el fichero sources.list
 
<source lang=bash>
 
sudo add-apt-repository ppa:ondrej/php5-5.6
 
</source>
 
 
<source lang=bash>
 
apt-get install php5 libapache2-mod-php5
 
</source>
 
*Debemos restaurar el servicio para que los cambios tengan efecto en el servidor web
 
<source lang=bash>
 
/etc/init.d/apache2 restart
 
</source>
 
{{Actividad|
 
*Localiza el fichero de configuracion de php: '''''php.ini'''''
 
*Analiza el valor y significado de las siguientes directivas
 
#short_open_tags
 
#max_execution_time
 
#error_reporting
 
#file_upload
 
#upload_max_filesize}}
 
 
===Instalar xdebug===
 
*Podemos consultar la pagina de netbeans para la informacion
 
https://netbeans.org/kb/docs/php/configure-php-environment-ubuntu.html#xdebug-package
 
 
<source lang=bash>
 
sudo apt-get install php5-dev php-pear
 
</source>
 
 
<source lang=bash>
 
sudo pecl install xdebug
 
</source>
 
*A continuacion debemos modificar el fichero ini de php
 
*Abrimos con nuestro editor el fichero
 
<source lang=bash>
 
sudo vim /etc/php5/apache2/php.ini .
 
</source>
 
 
*Añadimos el módulo de xdebug a la variable zend_extenxion de php
 
<source lang=bash>
 
zend_extension=/usr/lib/php5/<DATE+lfs>/xdebug.so
 
xdebug.remote_enable=on
 
</source>
 
*Recordad que '''''<DATE+ĺfs>''''' es un nombre de directorio que se habrá creado al instalar esta extensión.
 
*En el momento de la instalación en mi caso fue '''''20121212'''''
 
*Si no funciona correctamente visita esta página http://xdebug.org/wizard.php
 
*Copia en el cuadro de texto la salida de phpinfo() o bien en línea de comandos php -i
 
*Después sigue las instrucciones que te van indicando.
 

Revisión de 02:09 16 sep 2016

Volver


Icon objectives.jpg

Que veremos aquí

Qué es la arquitectura Web Principales componentes en una arquitectura web



Arquitectura Web

Qué es Arquitectura Web

  • Hay que empezar diciendo que en este campo nuestro objetivo es construir una aplicación que funcione en un entorno web
  • Como toda construcción vamos a tener una forma de hacerlo,
  1. planificar y analizar, diseñar y construir el producto final.
  2. Usaremos un determinado material o herramientas para construirlo.
Arquitectura Web


Icon define.gif
Qué es la arquitectura
  • La estructura de nuestro producto final
  • que se va a ir perfilando es todo su desarrollo,
  • Los principales momentos, esos primeros
  • En ellos se construye los planos de lo que se va a construir,
  • hay que decidir al principio qué herramientas (tecnologías) vamos a utilizar
(comparación con una construcción clásica por ejemplo de edificios)


Arquitectura
Constuyendo los planos


ArquitecturaWeb1.jpg
Como en toda construcción vamos a necesitar una serie de elementos (herramientas, tecnologías).
ArquitecturaWeb2.jpg




Icon qmark.gif
Pregunta
¿Tecnologías en las aplicaciones web?



Como en toda construcción va a haber diferentes roles que pueden ser cubiertos por una o varias personas
ArquitecturaWeb3.png



Icon qmark.gif
Pregunta
¿Roles en el desarrollo?



Los componentes de una aplicación web

  • 1.-Un servidor web para recibir las peticiones de los clientes web


Icon define.gif
Servidor web
  • Un servidor web es un software (programa) encargado de recibir una solicitud por la red; En una red de tipo tcp/ip que es la que usamos en internet, la solicitud se recibe usando el protocolo http y responder a dicha solicitud.
  • Responder a dicha solicitud implica verificar permisos, ejecutar script, puede que tenga que hacer solicitudes de información a otros servidores





Icon define.gif
Servidor web

y generar un mensaje de respuesta usando igualmente el protocolo http. Es muy frecuente que la respuesta es una página html.



2.-El Servidor de Bases de datos


Icon define.gif
Servidor Bases de datos
  • Un servidor web es un software (programa) encargado de gestionar una bases de datos
  • Dada la importancia de esta sección confidencialidad y posible cuello de botella en una aplicación, el servidor de bases de datos suele estar en un servidor dedicado específicamente a ese cometido



  • 3.- El módulo de ejecución de código en el servidor


Icon define.gif
Ejecutando código en el servidor
Ante una solicitud del cliente el servidor no solo entrega una página web, antes de ello es muy frecuente que ejecute código del cual el cliente nunca será consciente. Para ello tenemos que tener un módulo instalado en el servidor para ejectuar ese código.Nosotros usaremos PHP y posteriormente JavaScript en el servidor con NodeJS. Es el aspecto fundamental para este módulo o asignatura



Módulo de ejecución de script en el servidor
    • genera la página web resultante.
    • Este módulo debe integrarse de alguna forma con el servidor web
    • Dependerá del lenguaje y tecnología que utilicemos para programar la aplicación web.


  • 2.- El cliente

Ya lo hemos visto, corresponde al inicio del proceso, generalmente un navegador

  • En el cliente se recibe la página del servidor
  • Se interpreta las etiquetas de html con sus atributos
  • Se aplica el estilo detallado en las páginas css
  • Se ejecuta el código javascript y se atiende a los eventos javascript que haya configurados en código en la página que el servidor nos entrega
    • Suelen ser los navegadores. Reciben la página que solicitan

Para ello tendrá módulos encargados de la ejecución del código y cómo se debe comunicar con él.


  • 4.-El lenguaje de programación
  • Tanto para los script del cliente como del servidor o bien CGI, que utilizarás para desarrollar las aplicaciones.
  • Aquí es donde se pueden usar diferentes opciones incluso con el mismo servidor web


La arquitectura de la aplicación

  • Además de los componentes a utilizar, también es importante decidir cómo vas a organizar el código de la aplicación.
  • Esto se conoce como la arquitectura de la aplicación web.
  • Muchas de las arquitecturas que se usan en la programación de aplicaciones web te ayudan a estructurar el código de las aplicaciones en capas o niveles.
  • El motivo de dividir en capas el diseño de una aplicación es que se puedan separar las funciones lógicas de la misma, de tal forma que sea posible ejecutar cada una en un servidor distinto (en caso de que sea necesario).


La arquitectura de una aplicación
  • Un servidor de aplicaciones web en realidad puede estar formado por varios servidores físicos;
cada servidor se puede encargar de ejecutar una parte de la aplicación. 
  • Internamente se puede dividir la funcionalidad de una aplicación web en tres capas


Arquitectura de 3 capas
  1. capa de acceso a datos: que se tendrá que encargar de almacenar la información de la aplicación en una base de datos y recuperarla cuando sea necesario.
  2. capa intermedia : donde deberás programar la funcionalidad de tu aplicación.
  3. capa cliente: que es donde programarás todo lo relacionado con el interface de usuario, esto es, la parte visible de la aplicación con la que interactuará el usuario.



Icon inter.gif
Recursos de la Web


Tecnologías y arquitectura web



Icon activity.jpg

Investiga en la red

  • Busca información de diferentes arquitecturas en un despliegue web
;Arquitectura LAMP/WAMP
;Arquitectura MEAN
;Arquitectura Java EE

Interesa que hables de que tipos de tecnologías lenguajes se usan, así de como del servidor web que atiende las solicitudes




Qué son las tecnologías

  • Al hablar de tecnologías, hablamos de herramientas concretas que usamos para una arquitectura establecida. En este aspecto, estamos hablando de lenguajes concretos de programación, de gestores de bases de datos y otros elementos concretos que usamos para crear nuestro sistema
  • Es muy grande el abanico de posibilidades y combinaciones que se abren en este ámbito.
  • Las tecnologías son muy dinámica, van cambiando, aparecen nuevas tecnologías, aparecen nuevas formas de utilizar una tecnología existente.
  • No debe de asustarnos tanto dinamismo. Conocer bien una tecnología concreta te posibilita aprender o adaptarte fácilmente a otra situación (otra tecnología u otra forma de usar una tecnología, como usar un framework concreto).

Ejemplos de tecnologías

  • Ejemplos de tecnologías tendríamos
  1. Lenguaje php
  2. MySql
  3. MongoDb
  4. NodeJS
Tecnologías

Tecnolgias servidor.png

¿Un framework es una tecnologías?

  • Si hablamos de un framework como Laravel,no hablamos de una tecnología nueva. La tecnología que usamos en laravel es PHP. El framework en cuestión establece una forma concreta, establecida, con un modelo VC donde se establece una estructura de carpetas, un modo de realizar la programación y una utilidades disponibles para el desarrollador.



Icon activity.jpg
Mira este video
  • Este vídeo da una visión general del desarrollo web
  • Nosotros vamos a usar PHP como lenguaje o tecnología principal
  • Claramente vamos a cubrir varios aspectos de los que aquí comentan a lo largo del curso


Icon inter.gif
Recursos de la Web
https://www.youtube.com/watch?v=_yi3UVcuw_8





Tecnologías para programación web del lado del servidor

Plantilla:TecnologiaDesarrloWeb/TecnologíasServidor

Herramientas a utilizar

Instalar PhpStorm

  • Vamos a usar esta herramienta y se os facilitará claves para acceder
https://www.jetbrains.com/es-es/phpstorm/download/#section=linux
  • Nos debemos registrar en jetbrains con una cuenta de gmail
  • Al principio accedemos usando el acceso gratuito de 30 días


Icon inter.gif
Instalación en ubuntu
  • Solo si la instalas desde ubuntu podemos hacerlo con snap
https://blogubuntu.com/que-es-ubuntu-snap

luego el comando de instalación :

 snap install phpstorm --classic



  • Para descargar php storm, podemos usar 'snap'.
  • snap es un nuevo concepto que aparece en ubuntu 16.0 y trata de realizar instalaciones resolviendo todos los posibles problemas de dependencias, haciendo que sea más sencillo instalar.
  • Para ello ejecutamos:
 sudo snap install phpstorm --classic
  • En cualquier caso se puede visitar la página donde tendremos también disponible este IDE para windows.
https://www.jetbrains.com/es-es/phpstorm/download/
  • Tambien podemos descargar el fichero de configuración, descomprimirlo y ejecutar el instalador
  • Para ello vamos a la página oficial, o bien lo bajamos directamente
$ wget https://download.jetbrains.com/webide/PhpStorm-2020.2.2.tar.gz
  • El direcotorio de instalacion recomendado es /opt, para instalar PhpStorm
$ sudo tar xvfz PhpStorm-2020.2.2.tar.gz -C /opt/
  • x indica que vamos a extraer.
  • f indica que use un archivo.
  • z indica que debe operar sobre un archivo gzip.
  • v indica que lo haga de forma recursiva(vervose) cambie el directorio antes de ejecutar cualquier acción.
$ cd opt/PhpStorm-181.5281.19/bin
Ejecutamos el script de instalación:
 
$ ./phpstorm.sh
Activar la licencia de php a través del insitituto
  • Abrimos el EDI PhpStrorm. Si es la primera vez, ya nos pedirá que aportemos la licencia o que iniciemos la versión de 30 días gratis, si no podemos acceder a registrarnos desde el menú de help

Acceso registro phpstorm.png

  • Entonces se visualizará una página y establecemos que queremos se se active la licencia a través de un servidor de licencias. El servidor tiene la url https://cpilosenlaces.fls.jetbrains.com
  • Entonces presionamos la opción de Activate

Licencia phpstorm.png

  • Tendremos que registrarnos con una cuentan el la página de jetbrains, a la que nos redirige
  • La cuenta tiene que ser de gmail para poder validar la licencia

Apache



Icon objectives.jpg
Objetivo
  • Necesitamos tener un servidor Web
  • Apache va a ser nuestra opción iActualmente estamos en la versión 2.4
  • Proyecto de código abierto, mirar la web


Icon inter.gif
Web oficial de apache

http://httpd.apache.org/docs/2.4/


  • Importante conocer un poco de la configuración
  • En caso de instalar en windows, se debe instalar XAMP o WAMP. Se recomienda usarlo en ubuntu
  • Mis apuntes están basados en ubunut para la instalación y funcionamiento del servidor, si bien es cierto que este módulo es de programación, en varias ocasiones tenemos que acutuar con el servidor
  1. Instalamos apache

Apache.png

  • Se instala directamente del repositorio de ubuntu
 sudo apt-get install apache2
  • Para verificar su instalación abrimos un navegador e invocamos al servidor, que en este momento será localhost, 127.0.0.1 o la ip que tengamos en nuestro equipo


Icon activity.jpg
Actividad
  1. Probamos a ver si responde nuestro servidor web (En nuestro caso localhost
  2. Vemos el fichero de configuración



Apache arrancar.png

  • Podemos ver el estado del servicio, así como pararlo, arrancarlo recargarlo, ...
Apache acciones.png

  • Para ver la versión:
 apache2 -v
Apache version 2019.png

Buscamos el directorio donde están los ficheros de configuración
  • Aquí un listado del contenido del directorio donde está toda la configuración


Icon activity.jpg
Directorio de configuración
Apache dir configuracion.png




Directivas de configuración
  • El servidio (como todos el linux), se configura con directivas de configuración
  • Son variables que tengo en un fichero y especifican el comportamiento de este programa
  • Por ejemplo cuál es el directorio dónde apache va a buscar los recursos solicitados



Icon activity.jpg
Modificar el document root
  • Edita el fichero de configuración 000-default.conf ubicado en /etc/apache2/sites-enabled con privilegios de root
 sudo gedit  /etc/apache2/sites-enabled/000-default.conf
  • Modifica la direciva DocumentRoot
 DocumentRoot /var/www
  • Rebota el servicio
 sudo service apache2 restart




  • Listado de los ficheros log para conocer incidencias y notificiones


Icon activity.jpg
Directorio de log
Apache dir log.png




  • No es objetivo profundizar en estos ficheros, pero sí es importante conocer
apache.conf
fichero de configuración general.
en él se incorporar muchos otros ficheros de configuración.

Servidor Web

Proceso de comunición tcp/ip
Transmision tcp ip2.png
  • Es importante entender el concepto de protocolo.


Icon define.gif
Protocolo
Un programa que implementa una serie de reglas y normas para que dos partes diferentes se puedan comunicar.


  • Un protocolo es un programa, pero solo el programa de nivel de aplicación vamos a gestinar (instalar, eliminar, configurar), el resto de software (protocolos de otros niveles), son parte del kernel del sistema operativo, a los que no tenemos acceso de gestionar, pero sí, a veces, de configurar, como estalbecer el número ip' dentro del protocolo ip o protocolo de internet.
El Servidor
  • La imagen anterior, muestra el proceso de comunicación tcp/ip entre dos dispositivos.
  • El equipo que recibe la comunicación se conoce como servidor, por el hecho de que están ejecutándose en él diferentes programas servidores.
  • Cada programa está escuchando por un puerto, que es quién le identifica, de modo que cuando la tarjeta de red recibe un paquete, datagrama o fragmento (un grupo de bits), si el nivel de red, decide que es él el destinatario, desde el nivel de transporte sabe a qué aplicación entregarlo.
Solicitud web 2.png



Permisos de ficheros

Parar poder acceder a un fichero necesitamos tener una referencia a él (Tanto para escribir como para leer).

Temas de permisos de apache

A pesar de que no somos administradores/as debemos tener conocimientos para ciertos temas. Lo primero debemos tener claro es que cuando php le dice en el script a apache que actúe sobre el sistema de ficheros, es en última instancia el usuario apache quién quiere hacer la acciones

  • Lee atentamente el siguiente cuadro y asegúrate de tener claro cada punto, si no, pregunta.


Icon activity.jpg
Puntos fundamentales sobre permisos

1.- En linux todo fichero tiene un propietario, y también todo proceso.

  • El propietario del proceso es el usuario que lazó dicho proceso.
  • Cuando un proceso quiere hacer algo sobre un fichero, el usuario que lanzó el proceso, debe tener permisos sobre el fichero para hacerlo.
  • El usuario que lanza apache es www-data
  • Para hacer a un usuario propietario de un fichero o a su grupo usamos la sentencia
 sudo chown usuario:grupo fichero (-R) }}

(Comment.gif: *-R parámetro opcional que actuaría de forma recursiva.

  • En php un directorio es igual que un fichero cuyo contenido son los ficheros y directorios que contiene.)



Para dar permisos sobre un fichero a un usuario usamos la sentencia
 sudo chmod permisos fichero (-R) }}

(Comment.gif:

  • permisos' es un número de tres dígitos en octal, ver tabla de abajo.
  • fichero al cual le queremos dar permisos, se puede usar * para especificar todos.
  • -R parámetro opcional que actuaría de forma recursiva.

)





Número Binario Lectura (r) Escritura (w) Ejecución (x)
0 000
No-Symbol.svg
No-Symbol.svg
No-Symbol.svg
1 001
No-Symbol.svg
centeconcatenaciónr
Symbol OK.svg
2 010
No-Symbol.svg
Symbol OK.svg
No-Symbol.svg
3 011
No-Symbol.svg
Symbol OK.svg
Symbol OK.svg
4 100
Symbol OK.svg
No-Symbol.svg
No-Symbol.svg
5 101
Symbol OK.svg
No-Symbol.svg
Symbol OK.svg
6 110
Symbol OK.svg
Symbol OK.svg
No-Symbol.svg
7 111
Symbol OK.svg
Symbol OK.svg
Symbol OK.svg

Por ejemplo:

chmod 766 file.txt   # brinda acceso total al dueño
                     # y lectura y escritura a los demás
chmod 770 file.txt   # brinda acceso total al dueño y al grupo
                     # y elimina todos los permisos a los demás usuarios
chmod 635 file.txt   # Permite lectura y escritura al dueño, 
                     # escritura y ejecución al grupo,
                     # y lectura y ejecución al resto



(Comment.gif: Recuerda que es el usuario apache el que ha de tener los permisos necesarios (leer(r),escribir (w), ejecutar (x))



Configuración de un servidor web

La configuración se basa en un VirtualHost.


Icon activity.jpg
VirtualHost
Forma de configurar en una única máquina (una ip) Apache.
conjunto  sitios web  (1 o más)
basados en nombres de dominio (cada uno un nombre)
cada dominio su configuración independiente (directivas de apache)




Virtual Host

Configuracion virutalhost1.png
VirtualHost
Una única ip, varios dominios
  • Cada dominio configurado en el Virtualhost
  • Cada VirtualHost su propia configuración
  • Se configura a través de directivas de apache
  • Mejor en fichero independiente en el directorio
Ficheros sitios web.png


VirtualHost





VirtualHost
sites_enabled vs sites_available


Icon activity.jpg
Organización de los ficheros de configuración
  • Tener todos los posibles sitios virtuales en el directorio sites-available
  • Solo aquellos que quiero que estén activos establezco un enlace simbólico en el directorio sites-enabled
Icon present.gif
Tip: Solo los ficheros que haya en el directorio sites-enabled estarán activos





VirtualHost
  • Para crear un enlace simbólico
ln -s directorio/fichero_fisico directorio/fichero_enlace
  • Podemos usar comando de apache
a2ensite <site>
a2dissite <site>


Algunas directivas importantes

ServerName
Directiva que especifica el directorio base para buscar ficheros
DocumentRoot
Directiva que especifica el directorio base para buscar ficheros
DirectoryIndex
Nombre de fichero/s que se entregan por defecto al solicitar recurso
<Directory ./../..> </Directory>
Para configurar de forma particular algún directorio dentr del sitio web de esta configuración

Ejemplo Confituracion virutalHost

VirtualHost
  • Los valores principales serían
#DocumentRoot Que es la ruta base de nuestro servidor web
#ServerName . Que es el nombre del host donde está nuestro servidor web

Cliente: varios nombres .. una ip

Ip server cliente.png

Especificando varios nombres de host
  • Un mismo host (ip), puede ser especificado con diferentes dominios (esto no puede ser al contrario).
  • Como no vamos a entrar en configurar bind (DNS), modificaremos el fichero hosts


Icon key points.gif

Puntos clave

Debemos recordar que cuando queremos encontrar la ip de un dominio se siguen unos pasos
1.-Primero miramos en el fichero /etc/hosts 
   a ver si hay una traducción directo.
2.-Se mira en la caché.
3.-Se busca o pregunta a nuestro servidor dns que nos lo resuelva.


</table> }}



Icon activity.jpg
Crea 3 sitios web
  • Crea 3 sitios web con los siguiente nombres
#www.informatica.dwes.es 
#www.tuNombre.es
#www.musica.es
  • Que cada uno de ellos vaya a buscar su fichero index.html a las carpetas respectivas
#/var/www/informatica
#/var/www/tuNombre
#/var/www/musica




(Comment.gif: Mira la sección de ejercicios donde verás una posible solución)


Arrancar y parar el servido
  • para parar y arrancar el servicio
sudo /etc/init.d/apache2 stop|start
  • Siempre que modifiquemos la configuración, tenemos que rearmar el servicio
Localizar el fichero de errores
  • Muy importante, el servidor generará errores cuando no pueda procesar algo (incluido php)


Icon activity.jpg
Fichero de errores de apache
/var/log/apache2/error.log





Icon key points.gif

Puntos clave

  • Usa el comando tail -f para tenerlo abierto en caliente con las últimas líneas añadidas
tail -f /var/log/apache2/error.log


  • Si quieres puedes crear un alias para no tener que escribir el comando completo
  • Se recomienda, ya que con bastante frecuencia consultaremos los errores cuando no funcionen la aplicación


Icon activity.jpg
Crea un alias
  • Edita el fichero oculto .basrc
  • Añade el la última línea el comando
 alias e="tail -f /var/log/apahce2/error.log"
  • Vuelve a cargar el fichero (esto no hará falta cuando vuelvas a cargar el sistema)
 source .basrc
  • Ahora si escribes el alias e, se ejecutará el comando asignado



Instalar php y el módulo de php para apache2

Php.png

Ahora instalamos php como un módulo de apache2.
apt-get -y install php libapache2-mod-php

(Comment.gif: -y es para que no pregunte, un yes por defecto. Se pueden poner varios paquetes seguidos (en este caso 2: php y 'libapache2-mod-php)


  • Posteriormente y según necesitemos otros módulos que los podemos dejar instalados ya
 sudo apt-get install php-mcrypt php-soap php-mbstring 
php-intl php-xml php-curl php-gd php-mysql

Breve Historia de php

Rasmus Lerdorf
  • Diseñó un CGI intérprete de scripts incrustados en las páginas web.
    • Evita la compilación
    • Evita la instalación
    • Logra compatibilidad entre plataformas
1995 – PHP (Personal Home Page Tools)
  • Código abierto
Zeev Suraski y Andi Gutmans
  • 1998: PHP 3. PHP Hypertext Preprocessor
    • Admite módulos externos
Zend
  • Motor Zend (núcleo de PHP reescrito)
  • 2000: PHP 4
    • Abstracción respecto al servidor
    • Puede funcionar sobre cualquier servidor
2004
Motor Zend 2
    • PHP 5: OOP y MySQL: Un punto de inflexión real
¿Qué pasó con PHP 6?
  • 2005: Se anuncia PHP 6
  • Codificación Unicode
  • Más complejo de lo esperado
  • Tensión entre los desarrolladores por los retrasos
  • 2010: Se lanza PHP 5.3 y se separa la codificación Unicode a otra rama
  • PHP 5.3 es PHP 6 salvo por la codificación Unicode
    • 2012: La mayoría de las mejoras en PHP 5.4.x no tienen ningún impacto sobre el código existente
    • 2013: La extensión original MySQL está obsoleta en
PHP 5.0. En su lugar, usar la extension MySQLi o PDO_MySQL.
PHP 7.0.
  • PHP 6 nunca llegó a lanzarse como una versión oficial
  • 10/2015: Lanzamiento de la versión 7
  • Para ver la historia http://php.net/manual/es/history.php
  • Tenemos nuevas funcionalidades y pocas incompatibilidades
  • Operador nave espacial <=>
  • Operador ternario ??
  • Clases anónimas
  • Declaración en tipos de los parámetros y tipo de valor de retorno en funciones


Restaurar el servicio
  • Debemos restaurar el servicio para que los cambios tengan efecto en el servidor web
/etc/init.d/apache2 restart


Icon activity.jpg
Actividad
  • Localiza el fichero de configuracion de php: php.ini
  • Analiza el valor y significado de las siguientes directivas
  1. short_open_tags
  2. max_execution_time
  3. error_reporting
  4. file_upload
  5. upload_max_filesize


Herramientas a utilizar

Instalar mysql (cliente y servidor

</div>

MysqlVsMaria.png

  • Debemos instalar mysql cliente y servidor
sudo apt-get install mysql-client mysql-server
mysql
  • Alternativamente podemos instalar maria
apt-get -y install mariadb-server mariadb-client


Icon activity.jpg
Actividad
  • Qué diferencias hay entre los gestores de bases de datos mysql y maria




  • Durante la instalación nos pedirá la contraseña de root
  • Es importante recordarla, en caso de perderla probamos a intentar reestablecerla
1.- Primero entramos en el gestor sin passord
mysql --defaults-file=/etc/mysql/debian.cnf
Recuperar contraseña root
2.- Reiniciar pass del "root" de MySQL (si lo hemos perdido)
mysql --defaults-file=/etc/mysql/debian.cnf mysql
mysql> update user set Password=password('password_nuevo') where User='root';
mysql> flush privileges;
Probamos que todo ok.
  • Ahora ya podríamos entrar y comprobarlo


Icon activity.jpg
probando mysql
  1. Prueba a entrar en la base de datos
  2. Crea una base de datos
  3. Crea una tabla con dos campos y añade un fila
  4. Comprueba que las filas se han creado correctamente



Probrando el ejercicio
 mysql -u root -p
 '''insertamos la password'''
 show databases:
 create database NombreBD
 show databases:
 
 use NombreBD;
 create table usuarios (nombre varchar(20), apellido varchar(20));
 insert into usuarios values ("Manuel","Romero");
 select * from usuarios


Instalar Xdebug

  • Podemos consultar la pagina de netbeans para la información
https://netbeans.org/kb/docs/php/configure-php-environment-ubuntu.html#xdebug-package
 sudo apt-get install php-dev php-pear
 sudo pecl install xdebug

A continuación debemos modificar el fichero ini de php

Abrimos con nuestro editor el fichero

 sudo vim /etc/php5/apache2/php.ini

Añadimos el módulo de xdebug a la variable zend_extenxion de php Actuliza los valores y verifica la ubicación del fichero

zend_extension=/usr/lib/php/7.2/<DATE+lfs>/xdebug.so
xdebug.remote_enable=on
Con cuidado el nombre
  • Recordad que <DATE+ĺfs> es un nombre de directorio que se habrá creado al instalar esta extensión.
  • En el momento de la instalación en mi caso fue 20121212, no es una fecha, tiene que ver con la marca de la versión


Icon key points.gif

Puntos clave

  • Si no funciona correctamente visita la página de referencia http://xdebug.org/wizard.php'
  • Copia en el cuadro de texto la salida de phpinfo() o bien en línea de comandos php -i

Después sigue las instrucciones que te van indicando (Te prepara la instalación dependiente de versiones).



Para terminar, vamos a completar la instalación.
  • Esto es por si queremos ampliar nuestro desarrollo usando otras herramientos o ampliar las opciones de ver páginas.
  • En este curso NO lo vamos a utilizar, de hecho, con html5 algunas de estas herramientas ya no se utilizan.
Ubuntu restricted extras



Icon activity.jpg
Instalación de ubuntu
  • Una instalación limpia de Ubuntu no permite ver Flash, QuickTime, WMV, aplicaciones Java, etc. *Ubuntu Restricted Extras es un paquete que incluye todo este software
  • Este, por las siguientes razones:
  1. de patentes
  2. conflictos con la legislación de ciertos países
  3. Canonical
  • la empresa madre de Ubuntu, no puede incluir por defecto en la distribución.
sudo apt-get install ubuntu-restricted-extras





Icon activity.jpg
Actividad
Realiza la instalación en tu sistema
  • Verifica que todo funciona correctamente



  • Cuando programas una aplicación, utilizas un lenguaje de programación.
  • Por ejemplo, utilizas el lenguaje Java para crear aplicaciones que se ejecuten en distintos sistemas operativos.
  • Al programar cada aplicación utilizas ciertas herramientas como un entorno de desarrollo o librerías de código. *Además, una vez acabado su desarrollo, esa aplicación necesitará ciertos componentes para su ejecución.
  • Por ejemplo en el caso de javauna máquina virtual de Java.
  • Son consideraciones a tener en cuenta antes de empezar a desarrollar.

Menú de navegación