PHP: PHP (acrónimo recursivo de PHP: Hypertext Preprocessor) Lenguaje de programción interpretado y diseñado para el desarrollo web y que puede ser incrustado en HTML. http://php.net/manual/es/
Módulos
Agregar a apache mn módulo de php para que apache sepa interpretar el código php
Agregar a php un módulo de mysql para que php sepa acceder a mysql.
Más módulos que iremos instalando según vayamos necesitando
Herramientas a instalar
Java: Lenguaje de programación seudocompilado que corre en máquinas virtuales de java. https://www.java.com/es/
Netbeans : EDI (Entorno de Desarrollo Integrado), entorno para desarrollar aplicaciones usando diferentes lenguajes de programación. https://netbeans.org/
PHPStorm : EDI (Entorno de Desarrollo Integrado), entorno para desarrollar aplicaciones usando diferentes lenguajes de programación. El entorno no es gratuito, pero se puede conseguir una licencia gratuita de estudiante *https://www.jetbrains.com/estore/students/
XDebug: Es una extensión de PHP para hacer debug con herramientas de depuración tradicionales. https://xdebug.org/
Herramientas a utilizar
Instalar PhpStorm
Vamos a usar esta herramienta y se os facilitará claves para acceder
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.
El direcotorio de instalacion recomendado es /opt, para instalar PhpStorm
$ sudotar 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
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
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
Objetivo
Necesitamos tener un servidor Web
Apache va a ser nuestra opción iActualmente estamos en la versión 2.4
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
Instalamos apache
Se instala directamente del repositorio de ubuntu
sudoapt-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
Actividad
Probamos a ver si responde nuestro servidor web (En nuestro caso localhost
Vemos el fichero de configuración
Podemos ver el estado del servicio, así como pararlo, arrancarlo recargarlo, ...
Para ver la versión:
apache2 -v
Buscamos el directorio donde están los ficheros de configuración
Aquí un listado del contenido del directorio donde está toda la configuración
Directorio de configuración
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
Modificar el document root
Edita el fichero de configuración 000-default.conf ubicado en /etc/apache2/sites-enabled con privilegios de root
Listado de los ficheros log para conocer incidencias y notificiones
Directorio de log
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
Es importante entender el concepto de protocolo.
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.
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.
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
sudochown usuario:grupo fichero (-R)}}
(: *-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
sudochmod permisos fichero (-R)}}
(:
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
1
001
2
010
3
011
4
100
5
101
6
110
7
111
Por ejemplo:
chmod766 file.txt # brinda acceso total al dueño# y lectura y escritura a los demáschmod770 file.txt # brinda acceso total al dueño y al grupo# y elimina todos los permisos a los demás usuarioschmod635 file.txt # Permite lectura y escritura al dueño, # escritura y ejecución al grupo,# y lectura y ejecución al resto
(: 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.
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)
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
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
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.
Rebotamos el servicio (al haber cambiado el fichero de configuración)
sudo service apache2 restart
2º Creo los recursos en la web
Hemos establecido que cuando se acceda a este servidor web con el nombre informatica.com se ha de ir a buscar los recursos a /var/www/informatica. Ahora debemos de crear esa estructura de carpetas, y ubicar ahí algún recurso (página html).
Para realizar esta acción, debes de asegurarte de tener premisos de escritura en esta carpeta.
3º Modificamos el fichero /etc/hosts para la resolución de direcciones ip, aportando un nombre
sudo gedit /etc/host
</div>
Agregamos las ip de los nombres, observa que la ip que pongo es la de loopback (127.0.0.1), o bien la ip que tenga asignada mi equipo
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
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
Herramientas a utilizar
Instalar mysql (cliente y servidor
</div>
Debemos instalar mysql cliente y servidor
sudoapt-get install mysql-client mysql-server
mysql
Alternativamente podemos instalar maria
apt-get-yinstall mariadb-server mariadb-client
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 setPassword=password('password_nuevo') where User='root';
mysql> flush privileges;
Probamos que todo ok.
Ahora ya podríamos entrar y comprobarlo
probando mysql
Prueba a entrar en la base de datos
Crea una base de datos
Crea una tabla con dos campos y añade un fila
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
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
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:
de patentes
conflictos con la legislación de ciertos países
Canonical
la empresa madre de Ubuntu, no puede incluir por defecto en la distribución.