Download - Entorno PHP

Transcript

Entorno PHP

ProfesoresCarlos A. Iglesias

Puedes contactarme en [email protected] - Despacho C-211

2

3

Índice

1. Infraestructura PHP2. Instalar PHP en Ubuntu3. Ejecutar PHP en Ubuntu4. Configurar phpStorm en Ubuntu5. Instalar PHP y configurar phpStorm en

Windows6. Instalar PHP y configurar phpStorm en Mac7. Entorno virtualizado del DIT8. Entorno en la nube9. Conclusiones

1.Infraestructura

PHP

Dónde podemos ejecutar nuestros programas PHP

4

Entornos para ejecutar PHP

Servidor Web Interno

▣ Instalamos el intérprete de php (php5-cli)

▣ Nos proporciona un servidor web propio

Servidor Web Externo

▣ Instalamos un servidor web (ej. Apache2)

▣ Instalamos un módulo (php5-cgi) para procesar PHP

En la Nube

▣ Usamos un entorno con entorno LAMP instado

5

Entorno LAMP

Navegador Servidor Web Apache2+ extensión CGI PHP

o

Servidor Web Interno que viene en el intérprete PHP (sólo para desarrollo)

Servidor mySQL

puerto 80 puerto 3306

6

Arquitectura

7

Servidor web

▣ Escucha en un puerto, en el que acepta conexiones http

▣ Normalmente, ese puerto es el puerto 80 □ Ej. http://localhost o http://localhost:80

▣ Si es otro puerto, debo indicarlo□ Ej. http://localhost:8080

8

Servidores Web: Alternativas

▣ Apache2 http://httpd.apache.org/ ▣ Nginx http://nginx.org/en/ ▣ Zend http://www.zend.

com/en/products/server▣ Appserver.io http://appserver.io/

9

2.Instalar PHP en

Ubuntu

Administración básica para instalar PHP en Ubuntu

10

Sistema Operativo del curso: Linux

▣ PHP puede utilizarse en cualquier entorno: Linux, MS-Windows, MacOS....□ Windows: http://www.wampserver.com □ Mac: ya instalado. Ejecutar php en terminal. Para

mySQL, http://www.mamp.info ▣ En este curso las instrucciones serán para

Linux en la distribución Ubuntu▣ Se puede instalar en Ubuntu/Mac/Windows

con un único paquete:□ https://www.apachefriends.org/download.html □ https://confluence.jetbrains.

com/display/PhpStorm/Installing+and+Configuring+XAMPP+with+PhpStorm+IDE#InstallingandConfiguringXAMPPwithPhpStormIDE-ChoosingtherightXAMPPedition

11

Paquete LAMP

▣ LAMP = Linux + Apache Web Server + MySQL/MariaDB + PHP/Perl/Python

▣ En Mac: MAMP, Windows: WAMP, en cualquier sistema operativo X: XAMP.

▣ En linux, puedes instalarlo con el paquete tasksel, lanzarlo y seleccionar LAMP server. Luego conéctate en un navegador a http://localhost:80 y verás el mensaje 'It works'

12

Instalar PHP

>sudo apt-get install tasksel>sudo tasksel

Seleccionar con cursores y espacio, y tabuladores para el botón Aceptar

Nos pide contraseña de mysql (apuntarla!)

13

Comprobar instalación

http://localhost:80

14

Comprobar puertos de servidores

> sudo netstat -pluntConexiones activas de Internet (solo servidores)Proto Recib Enviad Dirección local Dirección remota Estado PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* ESCUCHAR 9620/mysqld tcp6 0 0 :::80 :::* ESCUCHAR 11926/apache2

15

Iniciar / reiniciar /parar servicios

▣ Sintaxis general

▣ Ej. Servidor web apache2 y mysql

> sudo service <servicio> start|restart|shutdown

> sudo service apache2 start

> sudo service apache2 restart

> sudo service apache2 stop

> sudo service mysql start

> sudo service mysql stop16

Configurar apache2

▣ Ficheros de configuración /etc/apache2□ apache2.conf: configuración global□ ports.conf: puertos de escucha□ ficheros de configuración en mods-enabled, conf-

enabled y sites-enabled: configuraciones para gestionar módulos, fragmentos de la configuración global y hosts virtuales, respectivamente

□ Los directorios x-enabled contienen enlaces simbólicos a configuraciones de x-available: mods-available, conf-available, sites-available

17

apache2.conf

▣ /etc/apache2/apache2.conf incluye el resto de ficheros

> sudo service <servicio> start|restart|shutdown

▣ Define directivas globales y se carga al lanzar apache. Podemos recargarlo con:

> sudo service apache2 start▣ Si una directiva la ponemos dos veces, se

sobreescribe

IncludeOptional mods-enabled/*.loadIncludeOptional mods-enabled/*.confInclude ports.confIncludeOptional conf-enabled/*.confIncludeOptional sites-enabled/*.conf

> sudo service apache2 reload

18

Administración básica

▣ El servidor por defecto está configurado en□ /etc/apache2/sites-enabled/000-default.conf

▣ Ejemplo de configuración□ cambiar la carpeta donde tenemos las páginas web □ poner el nombre del servidor (o IP)

DocumentRoot /var/www/htmlServerName localhost

En esta carpeta necesitamos permisos de root (sudo), podemos cambiarlo a otra carpeta en nuestra cuenta

19

Administración básica: cambiar puerto

▣ 1. Cambio ports.conf

▣ 2. Cambio el sitio (ej. 000-default.conf)

Listen 80<IfModule ssl_module> Listen 443</IfModule><IfModule mod_gnutls.c> Listen 443</IfModule>

Listen 80

Listen 80Listen 8080Listen 192.168.0.54:8081

<VirtualHost *:80>…</VirtualHost>

20

Activar / desactivar configuraciones

▣ Para activar / desactivar módulos, configuraciones o sitios, se pueden usar a2enmod a2dismod a2ensite a2dissite a2enconf a2disconf

> cd /etc/apache2> ls mods-available/userdir*mods-available/userdir.conf mods-available/userdir.load> ls mods-enabled/userdir*ls: cannot access mods-enabled/userdir*: No existe el archivo o directorio> sudo a2enmod userdirEnabling module userdir.To activate the new configuration, you need to run: service apache2 restart> ls mods-enabled/userdir*mods-enabled/userdir.conf mods-enabled/userdir.load

21

Logs

▣ Se configuran en □ envvars → APACHE_LOG_DIR□ 000-default.conf → ErrorLog y CustomLog

▣ La ruta por defecto es /var/log/apache2 donde tenemos access.log y error.log

> tail -f /var/log/apache2/access.log127.0.0.1 - - [17/Mar/2015:16:07:58 +0100] "GET / HTTP/1.1" 200 3594 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36"127.0.0.1 - - [01/Mar/2015:16:07:59 +0100] "GET /icons/ubuntu-logo.png HTTP/1.1" 200 3688 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36

22

Virtual host (I)

▣ Nos permiten servir más de un sitio web en un mismo servidor web

▣ Vamos a simular un host ▣ Añado (con sudo) en /etc/hosts

#virtual host127.0.0.1 www.tewc.upm.edu

http://www.tewc.upm.edu

23

Virtual host (II)

▣ Quiero ahora escuchar en *:80 y www.tewc.upm.edu:8080

▣ Añado □ en ports.conf Listen 8080□ en 000-default.conf (misma configuración que

<VirtualHost *:80> <VirtualHost www.tewc.upm.edu:8080>...</VirtualHost>

http://www.tewc.upm.edu:8080

24

Ejemplo de directivas

▣ Dar permisos de acceso a directorios con la directiva Directory

▣ Definir el número máximo de procesos hijos con MaxRequestWorkers o número máximo de peticiones por proceso hijo MaxConnectionsPerChild. Si lo superamos, pondrá, servidor ocupado.

25

Ejemplo de módulos

▣ libapache2-mod-auth-mysql - Apache 2 module for MySQL authentication

▣ libapache2-mod-php5 - lado servidor, lenguaje de guionización HTML-embebido (módulo Apache 2)

▣ libapache2-mod-python - módulo integrado Python para Apache 2

▣ Ver más con

> sudo apt-cache search libapache2-mod |more

26

Puertos privilegiados

▣ Los puertos TCP/IP menores de 1024 están reservados para usuarios privilegiados

▣ Si ejecutamos un servidor web como usuario normal, lo habitual son los puertos 2784, 5000, 8001, 8080

Fuente_ http://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html

27

Fallos habituales

▣ Intentamos lanzar un servidor web, y ya hay un proceso escuchando en el puerto 80

▣ Solución: 'acabar' con el proceso

28

¿Cómo acabo con el proceso?

▣ Si sospechas que está lanzado apache2

> sudo service apache2 stop

29

¿Cómo listo los procesos?

▣ Opción 1: fuser

▣ Opción 2: ps |grep

30

¿Cómo mato los procesos?

▣ Opción 1: kill -9

▣ Opción 2: killall

31

3.Ejecutar PHP

Cómo ejecutar PHP

32

Ejecutar como script

▣ Con php5-cli instalado

▣ Ejecuto

33

Ejecutar como consola interactiva

▣ Con php5-cli instalado

34

Ejecutar como servidor web interno

▣ Con php5-cli instalado▣ Puedo indicar puerto y DocumentRoot

35

Usar un puerto diferente de 80 (p.ej. 81) si tenemos ya lanzado un apache

Ejecutar en Apache

▣ Debemos copiar los ficheros php al document root /var/www/html

▣ Y ya estará visible

36

Problemas de permisos

▣ Problema□ /var/www/html pertenece a root□ No podemos editar con nuestro usuario

directamente los ficheros ‘desplegados’▣ Soluciones

□ Cambiar el document root de apache 2 a un directorio nuestro■ Debemos añadir el directorio con Directory y

cambiar DocumentRoot□ Hacer un enlace simbólico desde /var/www a

nuestro directorio□ Crear un grupo en el que estemos root, apache2 y

nosotros y dar permisos al grupo

37

Crear grupo y asignarle document root

▣ Crear grupo y añadir a tu usuario (ej. tu-login) y a apache2 (www-data)

▣ Cambiar propietario de /var/www

38

> sudo groupadd www-pub> sudo usermod -a -G www-pub tu-login> sudo usermod -a -G www-pub www-data

> sudo chown -R root:www-pub /var/www

Cambiar permisos

▣ Dar permiso de lectura a todos, a los del grupo de escritura y añade setguid para que retengan el grupo

▣ Nos tenemos que salir de la sesión, entramos, y ya podremos crear ficheros en /var/www

39

> sudo chmod -R o+r /var/www> sudo chmod -R g+w /var/www> sudo find /var/www -type d -exec chmod g+s {} +

> cd /var/www> echo hola > hola.txt> ls -aldrwxrwsr-x 2 root www-pub 4096 mar 1 08:19 .drwxrwsr-x 3 root www-pub 4096 mar 1 08:54 ..-rw-rw-r-- 1 cif www-pub 1 mar 18 01:19 hola.txt-rw-rw-r-- 1 root www-pub 11510 mar 1 08:55 index.html

Crear proyecto

40

Rellenamos página PHP

41

Control+J bs3-template:html5

Vemos en navegador

42

Ejecución como script o en web

43

Script

Web

4.Configuración

phpStorm en Ubuntu

Cómo ejecutar PHP desde nuestro IDE

44

Instalar php-cgi

▣ Si no lo tienes instalado, hay que instalarlo

46

> sudo apt-get install php5-cgi

Pasos

47

Configurar Intérprete

Configurar Despliegue

Configurar Ejecución

Paso 1. Configurar Intérprete

48

Pinchar en los “...”

Escoger intérprete PHP

49

Dar al “+” yseleccionar intérprete

Intérprete listo

50

Prueba: crear página PHP y dar Run

51

Paso 2. Configurar Despliegue

52

▣ Tenemos varias opciones, todas soportadas▣ Servidor en lugar (server in place):

□ servidor local con document root la carpeta madre del raíz del proyecto

□ tenemos permisos para escribir en el document root y desarrollamos directamente en esa carpeta

▣ Servidor local:□ servidor local□ la carpeta del proyecto no es el document root

▣ Servidor remoto:□ servidor remoto y carpeta remota

Fuente https://www.jetbrains.com/phpstorm/help/configuring-synchronization-with-a-web-server.html

Paso 2a. Configuración Servidor

▣ Vamos a Settings->Deployment (despliegue)

53

Paso 2b. Configurar Connection

54

Paso 2c. Configurar Mappings

55

Paso 3. Configurar Run Configuration

56

Desplegamos el menú de Run (botón verde play) y seleccionamos Edit Configurations

Paso 3a. Run/Debug Configurations

57

Añadimos configuración PHP Web Application

Paso 3b. Run/Debug Configurations

58

Añadimos configuración Before launch: upload

5.Instalar PHP en

WindowsCómo instalar PHP en Windows

59

Instalar PHP en Windows

60

▣ Instalar WAMP□ http://www.wampserver.com/en/

▣ Te instala apache, mySQL, etc.▣ Verás una aplicación para lanzar / parar

Apache, etc.▣ Normalmente, será

□ $DIRECTORIO_WAMP\bin\php.exe (intérprete PHP)

□ $DIRECTORIO_WAMP\wamp (carpeta DocumentRoot donde poner tus páginas)

Configurar PHPStorm en Windows

▣ Sigue los pasos mostrados en la sección de windows

▣ La diferencia está en:□ cómo localizar php.exe (paso 1)□ cómo configurar el despliegue (paso 2)

61

Paso 1. Localizar php.exe

62Agradecimientos: Javier Puente Aller

Localizar php.exe

63

Localizar php.exe en Windows

64

Localizar php.exe en Windows

65

Localizar php.exe en Windows

66

Localizar php.exe en Windows

67

Paso 2. Configurar Despliegue

68

▣ Hay dos opciones□ Usar ‘Server in place’ y crear los proyectos

phpStorm DENTRO de la carpeta $DIRECTORIO_WAMP/wamp

□ Usar ‘Server local’■ Sigue los pasos descritos en la sección de

Ubuntu

Paso 2a. Configurar Servidor

69Agradecimientos: Óscar Vázquez

Paso 2b. Configurar Conexión

70

Paso 2c. Configurar mappings

71

6.Instalar PHP en

MacCómo instalar PHP en Mac

72

Ej. XAMPP instalado

73

Paso 1. Configurar intérprete

74Agradecimientos: Alejandro

Paso 2b. Configurar conexión

75

Paso 2c. Configurar Mappings

76

Paso 3a. Configurar Run configuration

77

7.Entorno

virtualizado en el lab del DIT

Cómo usar una máquina virtual en el laboratorio

78

Laboratorio. Acceso máquina virtual

▣ Tienes que estar en el laboratorio▣ Paso 1. Copiar el escenario de prueba:

▣ Paso 2. Arrancar máquina virtual

▣ Paso 3. Acceder a la máquina virtual via ssh con X-forwarding

> cp/mnt/vnx/repo/labo-cif/labo-cif.xml .

> sudo vnx -f labo-cif.xml -v -t

> slogin -X <cuenta_alumno>@10.1.0.4

79

Laboratorio. Realizar acciones en VM

▣ El home del alumno queda montado en la máquina virtual. Todos los archivos están accesibles y los cambios son persistentes.

▣ Se pueden ejecutar órdenes con sudo y contraseña del alumno o como ‘root’ y contraseña ‘xxxx’

▣ Acciones. Arrancar phpStorm en la máquina virtual (terminal con login en @ubuntu) o firefox

▣ Acciones. Instalar algo: con sudo apt-get <paquete>

> /opt/JetBrains/PhpStorm-139.732/bin/phpstorm.sh &

80

Gestionar VM

▣ Ejecutar en un terminal de la máquina (no el el del login ubuntu, que es el virtual)

▣ Acciones. Parar escenario conservando cambios

▣ Acciones. Volver a arrancar la VM

▣ Acciones. Parar escenario destruyendo cambios

> sudo vnx -f labo-cif.xml -v --shutdown

> sudo vnx -f labo-cif.xml -v --shutdown

> sudo vnx -f labo-cif.xml -v --start

> sudo vnx -f labo-cif.xml -v --destroy

81

8.Desarrollo en la

nubeCómo ejecutar PHP desde nuestro IDE

82

Creciente número de IDEs en la nube

83

Codenvy

84

Codenvy

85

Codenvy

86

9.Conclusiones

Qué hemos aprendido

87

Conclusiones

▣ La primera tarea para aprender PHP es instalar PHP y comprobar que somos capaces de ejecutar un ejemplo en el navegador

▣ Un entorno IDE como phpStorm nos va a permitir desarrollar, ejecutar y depurar tanto PHP como HTML, CSS y JavaScript

88

Es importante conocer y saber administrar nuestro entorno. La tendencia es automatizar entornos IT con herramientas como Docker, Puppet, Vagrant, ...

89

¡Gracias!¿Alguna pregunta?

[email protected]

90

Referencias

▣ Tasksel□ https://help.ubuntu.com/community/Tasksel

▣ Adminstración Ubuntu□ http://proquest.safaribooksonline.

com/book/operating-systems-and-server-administration/linux/9780133927368

▣ Configuración phpStorm con PHP□ https://confluence.jetbrains.

com/display/PhpStorm/Installing+and+Configuring+MAMP+with+PhpStorm+IDE#InstallingandConfiguringMAMPwithPhpStormIDE-IntegratingMAMPwiththeIDE

91

Créditos

Gracias a todos los que han publicado estos recursos de forma gratuita:▣ Minicons de Webalys▣ Plantilla de la presentación de SlidesCarnival▣ Fotos de Unsplash y Wix

92