Usuario:ManuelRomero/php/NewPHP/inaem2017/Instalaciones

De WikiEducator
Saltar a: navegación, buscar



Icon objectives.jpg
Qué vamos a ver aquí
  • En esta parte del tema vamos a empezar a realizar instalaciones en nuestro equipo
  • Vamos a instalar una serie de programas para realizar programación web en el servidor
  • Seguramente volveremos a realizar instalaciones de nuevo, por lo que aunque es básico, conviene no olvidarlo.


Icon objectives.jpg
Herramientas a instalar


Icon objectives.jpg
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 difernetes lenguajes de programación. https://netbeans.org/
  • XDebug: Es una extensión de PHP para hacer debug con herramientas de depuración tradicionales. https://xdebug.org/


Curl
  • Esta herramienta es interesante conocerla sobre todo para hacer pruebas y tener atajos de actualicón


Icon key points.gif

Puntos clave

Con Curl podremos entre otras cosas
#descargar  ficheros a través de la red (alternativa a wget)
#analizar cabeceras de respuestas http  ante solicitudes a html
#realizar pruebas


Curl
  • Antes de empezar con las instalaciones, probaremos este comando qué es interesante para acceder a ficheros en internet desde la línea de comandos
  • Usando la sintaxis URL podemos transferir ficheros entre cliente y servidor.
  • Veamos algún uso que puede resultar interesante
  • Suele ser interesante conocer los códigos http
  • Nos interesará conocer los códigos del servidor 5xx

Ejemplos de uso del comando

  • Ver el contenido de una página wqeb
curl url_página_web 
  • Guardar una página web en un fichero -o
curl -o nombreFichero url_página_web  
  • Ver la cabecera de una web
curl --head url_pagina_web
  • Si la web nos redirige, hay que especificarlo con -L
curl -L url_página_web  Para que accedamos a la página que nos redirige url_pagina_web
  • Para ver toda la traza de información de un servidor
  • Podemos también simular el envío de datos a un servidor bien por POST y bien por GET. Simulando un formulario.
Estos conceptos ya los veremos y utilizaremos mas adelante



Icon activity.jpg
Actividad

Investiga y explica al menos 3 opciones del comando curl, pudiendo ser las vistas anteriormente


Herramientas a utilizar

Instalar java



Icon objectives.jpg
Objetivo
  • La máquina virtual de java se necesita para ejecutar el EDI, netbeans
  • La instalación de netbeans permite instalar previamente java si no lo está.
  • En PhpStorm a partir de la versión 2017 (actualemente 2020), se incluye JRE como parte de phpstorm, por lo que no se necesita tener instalado El JRE ni el JDK en la máquina, pero hay muchas aplicaciones que sí que lo necesitnan
  • Lo normal es que esté instalado en el equipo, si en algún momento dice el equipo que no está instalado se instala fácilmente
  • No lo incluyo aquí, se puede buscar en google y si hay alguna duda, preguntarme


Instalar PhpStorm

  • 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

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




  • 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

Solicitud web 2.png



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.


 sudo vim /etc/host



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


Instalar mysql (cliente y servidor

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 netbeans

  • Refrencias web a consultar por si te interesan o te atascas.
  • También incluye la forma de crearse un icono de acceso directo:
https://computingforgeeks.com/install-netbeans-ide-on-debian-ubuntu-and-linux-mint/
https://blog.artegrafico.net/instalacion-de-netbeans-11-en-ubuntu-18-04
  • Es important verificar si nuestro equipo sea de 64 bits o de 32 para descargar el fichero correcto
# uname -a

Plantilla:MRM Actividad\Title=Instalar desde el repositorio

Descargando el fichero
  • Vamos a la página de referencia y nos movemos a la opicón de descargas
https://netbeans.org/downloads/

Netbeans instaler1.png

  • Seleccionamos el versión estable

Netbeans instaler2.png

  • Optamos por desacargar un binario

Netbeans instaler3.png

  • Accedemos al fichero descargado
  • Una vez descargado, le damos al permiso de ejecución y lo ejecutamos en local
  • Le damos permiso de ejecución y ejecutamos dicho fichero
chmod +x Apache-NetBeans-11.1-bin-linux-x64.sh
./Apache-NetBeans-11.1-bin-linux-x64.sh
  • Una vez instalado se habrá creado una carpeta en nuestro directorio home llamada netbeans-11 donde se desplegará todos los directorios de dicho programa.

Permisos

  • Apache trabaja bajo el directorio especificado en la directiva DocumentRoot
  • Por defecto se asigna el valor /var/www/html
  • Es deseable para el desarrollo que este directorio sea propiedad de el usuario que crea los ficheros
  • Por otro lado apache va a leer y ejecutar estos ficheros.
  • Suponiendo los siguientes valores

usuario: alumno usuario propietario de apache: www-data grupo de apache: www-data

  • Vamos a hacer que el propietario de ese directorio sea el usuario habitual y el grupo, que sea el grupo de apache.
  • Para ello usamos el comando chown change owner.
 sudo chown alumno:www-data /var/www/html -R

(Comment.gif: -R para que lo haga de forma recursiva si hubiera ya creados directorio)


  • En caso de tener que cambiar permisos revisa el comando chmod change mode


Icon activity.jpg

Dar permisos a todos los ficheros de un directorio

 sudo chomod 775 /var/www/html -R
  • Recuerda que son números octales:
  1. El primero son permisos para el propietario
  2. El segundo son permisos para el grupo
  3. El tercero son permisos para el resto
rwx
111 Permiso de lectura escrutura y ejecución
100 Solo permisos de lectura
101 Permiso de lectura y ejecucuón
110 Permiso de lectura y escritura
(Comment.gif: Esto es importante tenerlo claro, revísalo si no lo ves claro o pregunta)
{{{1}}}


Versión 9 y superiores

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 echo, con html5 algunas de estas herramientas, se usan cada vez menos.
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