Entorno PHP
Profesores
Carlos A. Iglesias
Puedes contactarme en cif@gsi.dit.upm.es - Despacho C-211
2
3
Índice
1. Infraestructura PHP
2. Instalar PHP en Ubuntu
3. Ejecutar PHP en Ubuntu
4. Configurar phpStorm en Ubuntu
5. Instalar PHP y configurar phpStorm en
Windows
6. Instalar PHP y configurar phpStorm en Mac
7. Entorno virtualizado del DIT
8. Entorno en la nube
9. 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#InstallingandConfig
uringXAMPPwithPhpStormIDE-
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 -plunt
Conexiones 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 stop 16
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/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
IncludeOptional conf-enabled/*.conf
IncludeOptional 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/html
ServerName 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 80
Listen 8080
Listen 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 userdir
Enabling 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.log
127.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 host
127.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 -al
drwxrwsr-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
Integrar con phpStorm
45
▣ Mirar documentación en https://confluence.
jetbrains.
com/display/PhpStorm/Installing+and+Confi
guring+MAMP+with+PhpStorm+IDE#Installing
andConfiguringMAMPwithPhpStormIDE-
IntegratingMAMPwiththeIDE
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 “+” y
seleccionar
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
Windows
Có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_WAMPbinphp.exe (intérprete
PHP)
□ $DIRECTORIO_WAMPwamp (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
Mac
Có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
nube
Có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?
cif@gsi.dit.upm.es
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#InstallingandConfigu
ringMAMPwithPhpStormIDE-
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

Entorno PHP

  • 1.
  • 2.
    Profesores Carlos A. Iglesias Puedescontactarme en cif@gsi.dit.upm.es - Despacho C-211 2
  • 3.
    3 Índice 1. Infraestructura PHP 2.Instalar PHP en Ubuntu 3. Ejecutar PHP en Ubuntu 4. Configurar phpStorm en Ubuntu 5. Instalar PHP y configurar phpStorm en Windows 6. Instalar PHP y configurar phpStorm en Mac 7. Entorno virtualizado del DIT 8. Entorno en la nube 9. Conclusiones
  • 4.
  • 5.
    Entornos para ejecutarPHP 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
  • 6.
    Entorno LAMP Navegador ServidorWeb 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
  • 7.
  • 8.
    Servidor web ▣ Escuchaen 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
  • 9.
    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
  • 10.
  • 11.
    Sistema Operativo delcurso: 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#InstallingandConfig uringXAMPPwithPhpStormIDE- 11
  • 12.
    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
  • 13.
    Instalar PHP >sudo apt-getinstall tasksel >sudo tasksel Seleccionar con cursores y espacio, y tabuladores para el botón Aceptar Nos pide contraseña de mysql (apuntarla!) 13
  • 14.
  • 15.
    Comprobar puertos deservidores > sudo netstat -plunt Conexiones 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
  • 16.
    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 stop 16
  • 17.
    Configurar apache2 ▣ Ficherosde 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
  • 18.
    apache2.conf ▣ /etc/apache2/apache2.conf incluyeel 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/*.load IncludeOptional mods-enabled/*.conf Include ports.conf IncludeOptional conf-enabled/*.conf IncludeOptional sites-enabled/*.conf > sudo service apache2 reload 18
  • 19.
    Administración básica ▣ Elservidor 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/html ServerName localhost En esta carpeta necesitamos permisos de root (sudo), podemos cambiarlo a otra carpeta en nuestra cuenta 19
  • 20.
    Administración básica: cambiarpuerto ▣ 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 80 Listen 8080 Listen 192.168.0.54:8081 <VirtualHost *:80> … </VirtualHost> 20
  • 21.
    Activar / desactivarconfiguraciones ▣ 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 userdir Enabling 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
  • 22.
    Logs ▣ Se configuranen □ 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.log 127.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
  • 23.
    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 host 127.0.0.1 www.tewc.upm.edu http://www.tewc.upm.edu 23
  • 24.
    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
  • 25.
    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
  • 26.
    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
  • 27.
    Puertos privilegiados ▣ Lospuertos 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
  • 28.
    Fallos habituales ▣ Intentamoslanzar un servidor web, y ya hay un proceso escuchando en el puerto 80 ▣ Solución: 'acabar' con el proceso 28
  • 29.
    ¿Cómo acabo conel proceso? ▣ Si sospechas que está lanzado apache2 > sudo service apache2 stop 29
  • 30.
    ¿Cómo listo losprocesos? ▣ Opción 1: fuser ▣ Opción 2: ps |grep 30
  • 31.
    ¿Cómo mato losprocesos? ▣ Opción 1: kill -9 ▣ Opción 2: killall 31
  • 32.
  • 33.
    Ejecutar como script ▣Con php5-cli instalado ▣ Ejecuto 33
  • 34.
    Ejecutar como consolainteractiva ▣ Con php5-cli instalado 34
  • 35.
    Ejecutar como servidorweb 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
  • 36.
    Ejecutar en Apache ▣Debemos copiar los ficheros php al document root /var/www/html ▣ Y ya estará visible 36
  • 37.
    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
  • 38.
    Crear grupo yasignarle 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
  • 39.
    Cambiar permisos ▣ Darpermiso 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 -al drwxrwsr-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
  • 40.
  • 41.
  • 42.
  • 43.
    Ejecución como scripto en web 43 Script Web
  • 44.
  • 45.
    Integrar con phpStorm 45 ▣Mirar documentación en https://confluence. jetbrains. com/display/PhpStorm/Installing+and+Confi guring+MAMP+with+PhpStorm+IDE#Installing andConfiguringMAMPwithPhpStormIDE- IntegratingMAMPwiththeIDE
  • 46.
    Instalar php-cgi ▣ Sino lo tienes instalado, hay que instalarlo 46 > sudo apt-get install php5-cgi
  • 47.
  • 48.
    Paso 1. ConfigurarIntérprete 48 Pinchar en los “...”
  • 49.
    Escoger intérprete PHP 49 Daral “+” y seleccionar intérprete
  • 50.
  • 51.
    Prueba: crear páginaPHP y dar Run 51
  • 52.
    Paso 2. ConfigurarDespliegue 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
  • 53.
    Paso 2a. ConfiguraciónServidor ▣ Vamos a Settings->Deployment (despliegue) 53
  • 54.
    Paso 2b. ConfigurarConnection 54
  • 55.
  • 56.
    Paso 3. ConfigurarRun Configuration 56 Desplegamos el menú de Run (botón verde play) y seleccionamos Edit Configurations
  • 57.
    Paso 3a. Run/DebugConfigurations 57 Añadimos configuración PHP Web Application
  • 58.
    Paso 3b. Run/DebugConfigurations 58 Añadimos configuración Before launch: upload
  • 59.
    5. Instalar PHP en Windows Cómoinstalar PHP en Windows 59
  • 60.
    Instalar PHP enWindows 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_WAMPbinphp.exe (intérprete PHP) □ $DIRECTORIO_WAMPwamp (carpeta DocumentRoot donde poner tus páginas)
  • 61.
    Configurar PHPStorm enWindows ▣ 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
  • 62.
    Paso 1. Localizarphp.exe 62Agradecimientos: Javier Puente Aller
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
    Paso 2. ConfigurarDespliegue 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
  • 69.
    Paso 2a. ConfigurarServidor 69Agradecimientos: Óscar Vázquez
  • 70.
    Paso 2b. ConfigurarConexión 70
  • 71.
  • 72.
    6. Instalar PHP en Mac Cómoinstalar PHP en Mac 72
  • 73.
  • 74.
    Paso 1. Configurarintérprete 74Agradecimientos: Alejandro
  • 75.
    Paso 2b. Configurarconexión 75
  • 76.
  • 77.
    Paso 3a. ConfigurarRun configuration 77
  • 78.
    7. Entorno virtualizado en el labdel DIT Cómo usar una máquina virtual en el laboratorio 78
  • 79.
    Laboratorio. Acceso máquinavirtual ▣ 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
  • 80.
    Laboratorio. Realizar accionesen 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
  • 81.
    Gestionar VM ▣ Ejecutaren 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
  • 82.
    8. Desarrollo en la nube Cómoejecutar PHP desde nuestro IDE 82
  • 83.
    Creciente número deIDEs en la nube 83
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
    Conclusiones ▣ La primeratarea 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
  • 89.
    Es importante conocery saber administrar nuestro entorno. La tendencia es automatizar entornos IT con herramientas como Docker, Puppet, Vagrant, ... 89
  • 90.
  • 91.
    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#InstallingandConfigu ringMAMPwithPhpStormIDE- IntegratingMAMPwiththeIDE 91
  • 92.
    Créditos Gracias a todoslos que han publicado estos recursos de forma gratuita: ▣ Minicons de Webalys ▣ Plantilla de la presentación de SlidesCarnival ▣ Fotos de Unsplash y Wix 92