Entorno PHP

download

of 92

  • date post

    18-Jul-2015
  • Category

    Technology
  • view

    89
  • download

    3

Embed Size (px)

transcript

  • Entorno PHP

  • ProfesoresCarlos A. Iglesias

    Puedes contactarme en cif@gsi.dit.upm.es - Despacho C-211

    2

  • 3ndice

    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

    Dnde podemos ejecutar nuestros programas PHP

    4

  • Entornos para ejecutar PHP

    Servidor Web Interno Instalamos el

    intrprete de php (php5-cli)

    Nos proporciona un servidor web propio

    Servidor Web Externo Instalamos un

    servidor web (ej. Apache2)

    Instalamos un mdulo (php5-cgi) para procesar PHP

    En la Nube Usamos un

    entorno con entorno LAMP instado

    5

  • Entorno LAMP

    Navegador Servidor Web Apache2+ extensin CGI PHP

    o

    Servidor Web Interno que viene en el intrprete PHP (slo 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

    Administracin bsica 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 sern para

    Linux en la distribucin 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 conctate en un navegador a http://localhost:80 y vers el mensaje 'It works'

    12

  • Instalar PHP

    >sudo apt-get install tasksel>sudo tasksel

    Seleccionar con cursores y espacio, y tabuladores para el botn Aceptar

    Nos pide contrasea de mysql (apuntarla!)

    13

  • Comprobar instalacin

    http://localhost:80

    14

  • Comprobar puertos de servidores

    > sudo netstat -pluntConexiones activas de Internet (solo servidores)Proto Recib Enviad Direccin local Direccin 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 start|restart|shutdown

    > sudo service apache2 start

    > sudo service apache2 restart

    > sudo service apache2 stop

    > sudo service mysql start

    > sudo service mysql stop 16

  • Configurar apache2

    Ficheros de configuracin /etc/apache2 apache2.conf: configuracin global ports.conf: puertos de escucha ficheros de configuracin en mods-enabled, conf-

    enabled y sites-enabled: configuraciones para gestionar mdulos, fragmentos de la configuracin global y hosts virtuales, respectivamente

    Los directorios x-enabled contienen enlaces simblicos 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 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

  • Administracin bsica

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

    Ejemplo de configuracin cambiar la carpeta donde tenemos las pginas 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

  • Administracin bsica: cambiar puerto

    1. Cambio ports.conf

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

    Listen 80

    Listen 443

    Listen 443

    Listen 80

    Listen 80Listen 8080Listen 192.168.0.54:8081

    20

  • Activar / desactivar configuraciones

    Para activar / desactivar mdulos, 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 ms de un sitio web en un mismo servidor web

    Vamos a simular un host Aado (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

    Aado en ports.conf Listen 8080 en 000-default.conf (misma configuracin que

    ...

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

    24

  • Ejemplo de directivas

    Dar permisos de acceso a directorios con la directiva Directory

    Definir el nmero mximo de procesos hijos con MaxRequestWorkers o nmero mximo de peticiones por proceso hijo MaxConnectionsPerChild. Si lo superamos, pondr, servidor ocupado.

    25

  • Ejemplo de mdulos

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

    libapache2-mod-php5 - lado servidor, lenguaje de guionizacin HTML-embebido (mdulo Apache 2)

    libapache2-mod-python - mdulo integrado Python para Apache 2

    Ver ms con

    > sudo apt-cache search libapache2-mod |more

    26

  • Puertos privilegiados

    Los puertos TCP/IP menores de 1024 estn 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

    Solucin: 'acabar' con el proceso

    28

  • Cmo acabo con el proceso?

    Si sospechas que est lanzado apache2

    > sudo service apache2 stop

    29

  • Cmo listo los procesos?

    Opcin 1: fuser

    Opcin 2: ps |grep

    30

  • Cmo mato los procesos?

    Opcin 1: kill -9

    Opcin 2: killall

    31

  • 3.Ejecutar PHP Cmo 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 aadir el directorio con Directory y

    cambiar DocumentRoot Hacer un enlace simblico desde /var/www a

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

    nosotros y dar permisos al grupo37

  • Crear grupo y asignarle document root

    Crear grupo y aadir a tu usuario (ej. tu-login) y a apache2 (www-data)

    Cambiar propietario de /var/www