SlideShare une entreprise Scribd logo
1  sur  72
Télécharger pour lire hors ligne
Despliegue de
aplicaciones Symfony
con DeployerPHP
Patrocinadores
SOY ÁLEX MARTÍN
Hago deploys y otras #mandangas todos los días en @innn
Puedes contactar conmigo en @alexdw
¿QUÉ ES UN
DEPLOY?
Software deployment is all
of the activities that make a
software system available
for use.
https://en.wikipedia.org/wiki/Software_deployment
DEPLOY === COÑAZO
Es una tarea repetitiva…
y aburrida
➔ Subir ficheros
➔ Setear configuración
➔ Bajar dependencias
➔ Realizar migraciones de datos
➔ Construir assets
➔ Limpiar caché
➔ Reiniciar servidores
➔ ...
Traducido a
Symfony…
➔ git pull
➔ upload parameters.yml
➔ composer install
➔ doctrine:migrations
➔ assets:install && assetic:dump
➔ cache:clear
➔ apache2 reload // nginx reload
➔ ...
¿CÓMO PODEMOS
AUTOMATIZARLO?
HERRAMIENTAS
Capistrano Magallanes
DeployerPHP
HERRAMIENTAS
Capistrano Magallanes
DeployerPHP
DeployerPHP
Principales
características
Rápido Modular Rollbacks Atómico
Principales
características
Instalación
global
wget http://deployer.org/deployer.phar
mv deployer.phar /usr/local/bin/dep
chmod +x /usr/local/bin/dep
Instalación
en vendors
php composer.phar require deployer/deployer:~3.0
Configuración
básica
// deploy.php
<?php
require 'recipe/symfony.php';
server('prod', 'host', 22)
->user('name')
->forwardAgent()
->stage('production')
->env('deploy_path', '/your/project/path');
set('repository', 'git@github.com:org/app.git');
dep deploy prod
|-- current → /home/www/releases/20140812131123
|-- releases
| `-- 20140812131123
| `-- 20140809150234
| `-- 20140801145678
`-- shared
Resultado
dep rollback prod
¿Algún error?
ENTREMOS EN
DETALLE …
Configuración
servidores
server('prod_1', 'domain.com')
->user('user')
->password('pass')
->env('deploy_path', '/home/www')
->stage('production');
server('prod_2', 'domain.com')
->user('user')
->password('pass')
->env('deploy_path', '/home/www')
->stage('production');
Configuración
servidores (tipos de conexión)
➔ Usuario y contraseña
server(...)
->user('user')
->password('pass')
Configuración
servidores (tipos de conexión)
➔ Usuario y contraseña
server(...)
->user('user')
->password('pass')
➔ Usuario y solicitud de contraseña
server(...)
->user('user')
->password(null)
Configuración
servidores (tipos de conexión)
➔ Usuario y contraseña
server(...)
->user('user')
->password('pass')
➔ Usuario y solicitud de contraseña
server(...)
->user('user')
->password(null)
➔ Con clave privada
server(...)
->user('name')
->identityFile();
Configuración
servidores (tipos de conexión)
➔ Con PEM file
server('ec2', 'host.aws.amazon.com')
->user('ec2-user')
->pemFile('~/.ssh/keys.pem');
Configuración
servidores (tipos de conexión)
➔ Con PEM file
server('ec2', 'host.aws.amazon.com')
->user('ec2-user')
->pemFile('~/.ssh/keys.pem');
➔ Con SSH config file
server(...)
->user('name')
->configFile('/path/to/file');
Configuración
servidores (con YAML)
➔ serverList('servers.yml');
Configuración
servidores (con YAML)
➔ serverList('servers.yml');
➔ prod:
host: domain.com
user: www
identity_file: ~
stage: production
deploy_path: /home/www/
beta:
host: beta.domain.com
user: www
password: pass
stage: beta
deploy_path: /home/www/
Tareas
DeployerPHP
➔ Sistema basado en tareas
Tareas
DeployerPHP
➔ Sistema basado en tareas
➔ Estas tareas pueden anidarse
Tareas
DeployerPHP
➔ Sistema basado en tareas
➔ Estas tareas pueden anidarse:
task('deploy', [
'deploy:prepare',
'deploy:update_code',
'deploy:vendors',
'deploy:symlink',
'cleanup'
]);
Creación de
tareas
➔ task('my_test_task', function () {
//
})->desc('Doing my stuff')->onlyOn('test');
Creación de
tareas
➔ task('my_test_task', function () {
//
})->desc('Doing my stuff')->onlyOn('test');
➔ dep my_test_task
Creación de
tareas
➔ task('my_test_task', function () {
//
})->desc('Doing my stuff')->onlyOn('test');
➔ dep my_test_task
➔ dep list
Creación de
Tareas (variables)
➔ Variables entorno
task('my_test_task', function () {
env('key');
env('key', 'value');
env('array.key');
});
Creación de
Tareas (variables)
➔ Variables entorno
task('my_test_task', function () {
env('key');
env('key', 'value');
env('array.key');
});
➔ Variables globales
set('key', 'value');
get('key');
has('key');
Creación de
Tareas (variables predefinidas)
➔ Definir repositorio
set('repository', 'git@github.com:user/project.git');
Creación de
Tareas (variables predefinidas)
➔ Definir repositorio
set('repository', 'git@github.com:user/project.git');
➔ Rama repositorio
set('branch','master');
Creación de
Tareas (variables predefinidas)
➔ Definir repositorio
set('repository', 'git@github.com:user/project.git');
➔ Rama repositorio
set('branch','master');
➔ Definir compartidos
set('shared_dirs', ['app/logs']);
set('shared_files', ['app/config/parameters.yml']);
Creación de
Tareas (variables predefinidas)
➔ Definir repositorio
set('repository', 'git@github.com:user/project.git');
➔ Rama repositorio
set('branch','master');
➔ Definir compartidos
set('shared_dirs', ['app/logs']);
set('shared_files', ['app/config/parameters.yml']);
➔ Permisos de escritura
set('writable_dirs', ['app/cache', 'app/logs']);
set('http_user', 'user');
Creación de
Tareas (variables predefinidas)
➔ Copiar directorios
set('copy_dirs', ['vendor']);
before('deploy:vendors', 'deploy:copy_dirs');
Creación de
Tareas (variables predefinidas)
➔ Copiar directorios
set('copy_dirs', ['vendor']);
before('deploy:vendors', 'deploy:copy_dirs');
➔ Versiones a mantener
set('keep_releases', 5);
Creación de
Tareas (variables predefinidas)
➔ Copiar directorios
set('copy_dirs', ['vendor']);
before('deploy:vendors', 'deploy:copy_dirs');
➔ Versiones a mantener
set('keep_releases', 5);
➔ Definir ruta composer
set('composer_command', '/bin/composer.phar');
Creación de
Tareas (funciones)
➔ Ejecutar en servidor
run(string $command)
Creación de
Tareas (funciones)
➔ Ejecutar en servidor
run(string $command)
➔ Ejecutar en local
runLocally(string $command, int $timeout = 60)
Creación de
Tareas (funciones)
➔ Ejecutar en servidor
run(string $command)
➔ Ejecutar en local
runLocally(string $command, int $timeout = 60)
➔ Navegar en servidor
cd(string $path)
Creación de
Tareas (funciones)
➔ Ejecutar en servidor
run(string $command)
➔ Ejecutar en local
runLocally(string $command, int $timeout = 60)
➔ Navegar en servidor
cd(string $path)
➔ Subir al servidor
upload($file, $uploadFile)
Creación de
Tareas (funciones)
➔ Ejecutar en servidor
run(string $command)
➔ Ejecutar en local
runLocally(string $command, int $timeout = 60)
➔ Navegar en servidor
cd(string $path)
➔ Subir al servidor
upload($file, $uploadFile)
➔ Descargar del servidor
download($localFile, $deploymentFile);
Creación de
Tareas (funciones)
➔ Escribir en consola
write($message)
Creación de
Tareas (funciones)
➔ Escribir en consola
write($message)
<info>...</info>
<comment></comment>
<error></error>
Creación de
Tareas (funciones)
➔ Escribir en consola
write($message)
<info>...</info>
<comment></comment>
<error></error>
➔ Escribir en una nueva línea
writeln($message)
Creación de
Tareas (funciones)
➔ Escribir en consola
write($message)
<info>...</info>
<comment></comment>
<error></error>
➔ Escribir en una nueva línea
writeln($message)
➔ Interacción con usuario
ask($message, $default)
askConfirmation($message[,$default = false])
askHiddenResponse(string $message)
Creación de
Tareas (funciones)
➔ Escribir en consola
write($message)
<info>...</info>
<comment></comment>
<error></error>
➔ Escribir en una nueva línea
writeln($message)
➔ Interacción con usuario
ask($message, $default)
askConfirmation($message[,$default = false])
askHiddenResponse(string $message)
set('upload_parameters',
askConfirmation('¿Subir el parameters?'));
Creación de
Tareas (hooks)
➔ After
task('deploy:done', function () {
write('Deploy done!');
});
after('deploy', 'deploy:done');
Creación de
Tareas (hooks)
➔ After
task('deploy:done', function () {
write('Deploy done!');
});
after('deploy', 'deploy:done');
➔ Before
task('deploy:init, function () {
write('Begin deploy!');
});
before('deploy', 'deploy:done');
Tareas
predefinidas (Recipes)
➔ CacheTool
Permite borrar cache APC / OPCACHE
Tareas
predefinidas (Recipes)
➔ CacheTool
Permite borrar cache APC / OPCACHE
➔ Local
Permite realizar deploys locales
Tareas
predefinidas (Recipes)
➔ CacheTool
Permite borrar cache APC / OPCACHE
➔ Local
Permite realizar deploys locales
➔ Newrelic
Notifica a newrelic de un nuevo deploy
Tareas
predefinidas (Recipes)
➔ CacheTool
Permite borrar cache APC / OPCACHE
➔ Local
Permite realizar deploys locales
➔ Newrelic
Notifica a newrelic de un nuevo deploy
➔ Rabbit
Permite mandar notificación a RabbitMQ
Tareas
predefinidas (Recipes)
➔ CacheTool
Permite borrar cache APC / OPCACHE
➔ Local
Permite realizar deploys locales
➔ Newrelic
Notifica a newrelic de un nuevo deploy
➔ Rabbit
Permite mandar notificación a RabbitMQ
➔ Rsync
Permite copiar ficheros mediante Rsync
Tareas
predefinidas (Recipes)
➔ Slack
Permite mandar notificación a Slack
Tareas
predefinidas (Recipes)
➔ Slack
Permite mandar notificación a Slack
➔ Configure
Permite configurar un vhost
Tareas
predefinidas (Recipes)
➔ Slack
Permite mandar notificación a Slack
➔ Configure
Permite configurar un vhost
➔ Hipchat
Permite mandar un mensaje a una sala de hipchat
Otros
recipes
➔ Symfony
➔ Symfony3
➔ Laravel
➔ CakePHP
➔ Codeigniter
➔ Yii
➔ …
Recipes
Symfony
➔ Definir assets
set('assets', ['web/css','web/images','web/js']);
Recipes
Symfony
➔ Definir assets
set('assets', ['web/css','web/images','web/js']);
➔ Definir carpetas var y bin
set('bin_dir', 'app'); //Symfony2
set('var_dir', 'app'); // Symfony2
set('bin_dir', 'bin'); //Symfony3
set('var_dir', 'var'); // Symfony3
Recipes
Symfony
➔ Definir assets
set('assets', ['web/css','web/images','web/js']);
➔ Definir carpetas var y bin
set('bin_dir', 'app'); //Symfony2
set('var_dir', 'app'); // Symfony2
set('bin_dir', 'bin'); //Symfony3
set('var_dir', 'var'); // Symfony3
➔ Compilar assets
set('dump_assets', true); //Symfony2
Recipes
Symfony
➔ Variables de entorno
env('env_vars, 'SYMFONY_ENV=prod');
env('env, 'prod');
Recipes
Symfony
➔ Variables de entorno
env('env_vars, 'SYMFONY_ENV=prod');
env('env, 'prod');
➔ Tarea principal
task('deploy', [
'deploy:prepare',
'deploy:release,
'deploy:update_code',
'deploy:create_cache_dir,
'deploy:shared,
'deploy:assets,
'deploy:vendors',
'deploy:assetic:dump,
'deploy:cache:warmup,
'deploy:writable',
'deploy:symlink',
'cleanup'
]);
¿PREGUNTAS?
¿CERVEZAS?
Puedes encontrarme en
@alexdw
alex@alexdw.com

Contenu connexe

Tendances

Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsFátima Casaú Pérez
 
Introducción al framework Symfony
Introducción al framework SymfonyIntroducción al framework Symfony
Introducción al framework SymfonyAlejandro Hernández
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2Mario IC
 
Ansible DevOps Day Peru 2016
Ansible DevOps Day Peru 2016Ansible DevOps Day Peru 2016
Ansible DevOps Day Peru 2016Raul Hugo
 
Unit Testing - Trovit
Unit Testing - TrovitUnit Testing - Trovit
Unit Testing - TrovitJordi Gerona
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DBjubacalo
 
Slides components en
Slides components enSlides components en
Slides components enJavier López
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSPjubacalo
 
Concurrency with Promise Style – Rayco Araña
Concurrency with Promise Style – Rayco ArañaConcurrency with Promise Style – Rayco Araña
Concurrency with Promise Style – Rayco ArañaDroidcon Spain
 
Construccion de proyectos con gradle
Construccion de proyectos con gradleConstruccion de proyectos con gradle
Construccion de proyectos con gradleDavid Gómez García
 
node-db: La excusa perfecta para hablar de C++ y Node.js
node-db: La excusa perfecta para hablar de C++ y Node.jsnode-db: La excusa perfecta para hablar de C++ y Node.js
node-db: La excusa perfecta para hablar de C++ y Node.jsMariano Iglesias
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundojubacalo
 

Tendances (16)

Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
 
Introducción al framework Symfony
Introducción al framework SymfonyIntroducción al framework Symfony
Introducción al framework Symfony
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Ansible DevOps Day Peru 2016
Ansible DevOps Day Peru 2016Ansible DevOps Day Peru 2016
Ansible DevOps Day Peru 2016
 
Segunda sesion
Segunda sesionSegunda sesion
Segunda sesion
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
Unit Testing - Trovit
Unit Testing - TrovitUnit Testing - Trovit
Unit Testing - Trovit
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
 
Slides components en
Slides components enSlides components en
Slides components en
 
Drupal console
Drupal consoleDrupal console
Drupal console
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
 
Concurrency with Promise Style – Rayco Araña
Concurrency with Promise Style – Rayco ArañaConcurrency with Promise Style – Rayco Araña
Concurrency with Promise Style – Rayco Araña
 
Construccion de proyectos con gradle
Construccion de proyectos con gradleConstruccion de proyectos con gradle
Construccion de proyectos con gradle
 
node-db: La excusa perfecta para hablar de C++ y Node.js
node-db: La excusa perfecta para hablar de C++ y Node.jsnode-db: La excusa perfecta para hablar de C++ y Node.js
node-db: La excusa perfecta para hablar de C++ y Node.js
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
 

Similaire à Deployer PHP. Presentación para #PHPSevilla

Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Raul Fraile
 
Silex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPSilex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPJavier Eguiluz
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencapaulcuenca9
 
PowerShell para administradores
PowerShell para administradoresPowerShell para administradores
PowerShell para administradoresPablo Campos
 
PHPVigo #19 - Lightning variables de entorno
PHPVigo #19 - Lightning variables de entornoPHPVigo #19 - Lightning variables de entorno
PHPVigo #19 - Lightning variables de entornoRolando Caldas
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryDavid Arango
 
Desarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyDesarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyAsier Marqués
 
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosDesymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosJavier Eguiluz
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Gabriela Bosetti
 

Similaire à Deployer PHP. Presentación para #PHPSevilla (20)

Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain
 
Taller de Capistrano
Taller de CapistranoTaller de Capistrano
Taller de Capistrano
 
Selenium & Drupal
Selenium & DrupalSelenium & Drupal
Selenium & Drupal
 
Silex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPSilex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHP
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuenca
 
EXAMEN
EXAMENEXAMEN
EXAMEN
 
PowerShell para administradores
PowerShell para administradoresPowerShell para administradores
PowerShell para administradores
 
PHPVigo #19 - Lightning variables de entorno
PHPVigo #19 - Lightning variables de entornoPHPVigo #19 - Lightning variables de entorno
PHPVigo #19 - Lightning variables de entorno
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQuery
 
Servicios web
Servicios webServicios web
Servicios web
 
(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQuery(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQuery
 
Desarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyDesarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando Symfony
 
Php Basico
Php BasicoPhp Basico
Php Basico
 
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosDesymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
 
Doctrine2 sf2Vigo
Doctrine2 sf2VigoDoctrine2 sf2Vigo
Doctrine2 sf2Vigo
 
Webpack desde cero
Webpack desde ceroWebpack desde cero
Webpack desde cero
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
 
Varnish http cache
Varnish http cacheVarnish http cache
Varnish http cache
 

Plus de Agencia INNN

Aprenday: Las cosas que más molan del mundo
Aprenday: Las cosas que más molan del mundoAprenday: Las cosas que más molan del mundo
Aprenday: Las cosas que más molan del mundoAgencia INNN
 
Aprenday: el formato GIF como herramienta creativa
Aprenday: el formato GIF como herramienta creativaAprenday: el formato GIF como herramienta creativa
Aprenday: el formato GIF como herramienta creativaAgencia INNN
 
English for advertising
English for advertising English for advertising
English for advertising Agencia INNN
 
#Aprenday. Técnicas de retórica y persuasión en publicidad.
#Aprenday. Técnicas de retórica y persuasión en publicidad.#Aprenday. Técnicas de retórica y persuasión en publicidad.
#Aprenday. Técnicas de retórica y persuasión en publicidad.Agencia INNN
 
#Aprenday: Cómo montarte tu estrategia Inbound Marketing a bajo coste
#Aprenday:  Cómo montarte tu estrategia Inbound Marketing a bajo coste#Aprenday:  Cómo montarte tu estrategia Inbound Marketing a bajo coste
#Aprenday: Cómo montarte tu estrategia Inbound Marketing a bajo costeAgencia INNN
 
Introducción a la gamificación
Introducción a la gamificaciónIntroducción a la gamificación
Introducción a la gamificaciónAgencia INNN
 
Formación Innn: Planificación de medios
Formación Innn: Planificación de mediosFormación Innn: Planificación de medios
Formación Innn: Planificación de mediosAgencia INNN
 
Formación INNN: Adwords básico
Formación INNN: Adwords básicoFormación INNN: Adwords básico
Formación INNN: Adwords básicoAgencia INNN
 
Presentación Achilipú
Presentación AchilipúPresentación Achilipú
Presentación AchilipúAgencia INNN
 
Manual de privacidad en Facebook
Manual de privacidad en FacebookManual de privacidad en Facebook
Manual de privacidad en FacebookAgencia INNN
 
Glosario básico de Twitter
Glosario básico de TwitterGlosario básico de Twitter
Glosario básico de TwitterAgencia INNN
 

Plus de Agencia INNN (11)

Aprenday: Las cosas que más molan del mundo
Aprenday: Las cosas que más molan del mundoAprenday: Las cosas que más molan del mundo
Aprenday: Las cosas que más molan del mundo
 
Aprenday: el formato GIF como herramienta creativa
Aprenday: el formato GIF como herramienta creativaAprenday: el formato GIF como herramienta creativa
Aprenday: el formato GIF como herramienta creativa
 
English for advertising
English for advertising English for advertising
English for advertising
 
#Aprenday. Técnicas de retórica y persuasión en publicidad.
#Aprenday. Técnicas de retórica y persuasión en publicidad.#Aprenday. Técnicas de retórica y persuasión en publicidad.
#Aprenday. Técnicas de retórica y persuasión en publicidad.
 
#Aprenday: Cómo montarte tu estrategia Inbound Marketing a bajo coste
#Aprenday:  Cómo montarte tu estrategia Inbound Marketing a bajo coste#Aprenday:  Cómo montarte tu estrategia Inbound Marketing a bajo coste
#Aprenday: Cómo montarte tu estrategia Inbound Marketing a bajo coste
 
Introducción a la gamificación
Introducción a la gamificaciónIntroducción a la gamificación
Introducción a la gamificación
 
Formación Innn: Planificación de medios
Formación Innn: Planificación de mediosFormación Innn: Planificación de medios
Formación Innn: Planificación de medios
 
Formación INNN: Adwords básico
Formación INNN: Adwords básicoFormación INNN: Adwords básico
Formación INNN: Adwords básico
 
Presentación Achilipú
Presentación AchilipúPresentación Achilipú
Presentación Achilipú
 
Manual de privacidad en Facebook
Manual de privacidad en FacebookManual de privacidad en Facebook
Manual de privacidad en Facebook
 
Glosario básico de Twitter
Glosario básico de TwitterGlosario básico de Twitter
Glosario básico de Twitter
 

Dernier

MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxcalzadillasluis134
 
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOELIAMARYTOVARFLOREZD
 
Delitos informáticos en Slideshare.pptx
Delitos informáticos en  Slideshare.pptxDelitos informáticos en  Slideshare.pptx
Delitos informáticos en Slideshare.pptxmaykolmagallanes012
 
Se realiza instalacion y configuraacion servicios Windows
Se realiza instalacion y configuraacion servicios WindowsSe realiza instalacion y configuraacion servicios Windows
Se realiza instalacion y configuraacion servicios WindowsCZSOTEC
 
Webinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfWebinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfAnaRosaMontenegro
 
Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.CZSOTEC
 
SQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptxSQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptxRAMIROANTONIOGALINDO
 

Dernier (7)

MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
 
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
 
Delitos informáticos en Slideshare.pptx
Delitos informáticos en  Slideshare.pptxDelitos informáticos en  Slideshare.pptx
Delitos informáticos en Slideshare.pptx
 
Se realiza instalacion y configuraacion servicios Windows
Se realiza instalacion y configuraacion servicios WindowsSe realiza instalacion y configuraacion servicios Windows
Se realiza instalacion y configuraacion servicios Windows
 
Webinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfWebinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdf
 
Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.
 
SQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptxSQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptx
 

Deployer PHP. Presentación para #PHPSevilla