SlideShare ist ein Scribd-Unternehmen logo
1 von 42
FULL-STACK CAKEPHP
   DEPLOYMENT


                Pay attention to this corner
NOT MARKSTORY
SPONSORED BY
~WHOAMI

• Jose   Diaz-Gonzalez

• Resident   IRC Troll (savant)

• Rants   at http://josediazgonzalez.com




                                              ➘
• Harasses   as @savant
                                            me
• Codes    as josegonzalez on github

• EMPLOYED      at @seatgeek
                                           not me
                                                       ➘
                                                    I’m also hot like sriracha sauce
WHO IS THIS TALK FOR?


• Devs/Sysadmins   not afraid of Ruby

• Developers   who don’t have time to waste with sysops

• Sysadmins   who are looking to automate more of their
 workflow


                                          Also anyone who couldn’t get into Mark’s talk
WHY AM I SPEAKING ABOUT
           THIS?


• I’m   no Sysadmin; Sysadmining on half of the projects I’m on

• Devs    do servers wrong; Perhaps I do too

• PHPNut     Parole Policy (PPP)



                                                   My Crime: The Patriot Ale House
WHAT THE HELL IS THIS


• Being   lazy

• Deploying      a SERVAR

• CHARGING         LAYSHURS

• What    about the app?


                              ¡¡¡SHOOP DA WOOP!!!
IN THE BEGINNING



             There was PHPNut, and all was good
#
Every
policy
must
have
a
bundlesequence      •    Geared towards automated
body
common
control                                 deployments of workstations, not
{                                                   servers
bundlesequence

=>
{
"test"
};
inputs
=>
{
"cfengine_stdlib.cf"
};            •    Convergence implies we may never
}                                                   be within compliance
bundle
agent
test
{                                              •    Community maintained packages?
files:

#
This
is
a
throw‐away
comment,
below
is
a
full‐bodied
promise

"/tmp/testfile"





















#
promiser



comment
=>
"This
is
for
keeps...",
#
Live
comment




create
=>
"true",
















#
Constraint
1





perms
=>
m("612");














#
Constraint
2,
rw‐‐‐x‐
w‐
}
                                                   I love it when an automation tool makes a promise
THINGS WERE COMPLICATE



                    @drunkhulk
MODULES AND CLASSES
#
ntp‐class1.pp

class
ntp
{


case
$operatingsystem
{




centos,
redhat:
{







$service_name
=
'ntpd'






$conf_file



=
'ntp.conf.el'




}




debian,
ubuntu:
{







$service_name
=
'ntp'






$conf_file



=
'ntp.conf.debian'




}


}





package
{
'ntp':




ensure
=>
installed,


}





service
{
'ntp':




name





=>
$service_name,




ensure



=>
running,




enable



=>
true,




subscribe
=>
File['ntp.conf'],


}





file
{
'ntp.conf':




path



=>
'/etc/ntp.conf',




ensure

=>
file,                                         http://forge.puppetlabs.com/




require
=>
Package['ntp'],




source

=>
"/root/learning‐manifests/${conf_file}",


}
}




                                                          Free beer to the first person to raise their hand
WE CAN DO BETTER



           If we couldn’t, this would be the end of my talk
now we’re cooking!
WHY CHEF?

• Uses a Ruby DSL; Doesn’t   • All
                                 the cool rails developers
 re-invent the wheel          are using it

• Officially-sanctioned       • Awesome     logo
 Cookbooks
                             • Screams   when things are
• Community-supported         broken
 Cookbooks
                             • Extensive   Documentation

                                            And the obvious Chef/CakePHP pun
HOW IS DEPLOYMENT FORMED?


• Each   server can have one or more cookbooks

• Cookbooks are like plugins (nginx, apache, memcache) that
 can depend upon/require one another

• Cookbooks     have recipes, libraries, templates, definitions, files

• Recipes   are sets of instructions

                                                   I vote we rename “plugins” to “recipes”
WHAT’S IN A RESOURCE CALL?

resource       special node var                name of resource
   ➘
           ➘




                                                     ➘
    git
"#{node[:server][:production][:dir]}/#{hostname}/#{base}/public"
do
    

repository
info[:repository]
    

user
"deploy"
    

group
"deploy"
    end              ➘
                      options

                                                     http://wiki.opscode.com/display/chef/Resources
ROLL YOUR OWN
  RESOURCES?


         Yo dawg, I hurd u liek yo yos so I gave yo dawg
         a yo yo so yo dawg can yo yo while yo dawg yo
                         yos yo dawg yo
Resources on the Cheap
#
Definition
define
:nginx_up,
:enable
=>
true
do


template
params[:name]
do




source
"html.erb"




owner
"deploy"                        ➘
                                                          Just chain resources




group
"deploy"




mode
0644




variables(params[:variables])


end


nginx_site
params[:hostname]
do




action
:enable
                                                                     Fire at will


end




                                                          ➘
end

#
Usage
nginx_up
"#{node[:nginx][:dir]}/sites‐available/#{hostname}.#{base}"
do


hostname
"#{info[:hostname]}.#{info[:base]}"


variables(info[:variables])
end


                                 “Fake” resources, for more info see http://wiki.opscode.com/display/chef/Providers
ALL TOGETHER NOW
node[:static_applications].each
do
|hostname,
sites|


sites.each
do
|base,
info|




directory
"#{node[:server][:production][:dir]}/#{hostname}/#{base}"
do








owner
"deploy"








group
"deploy"








mode
"0755"








recursive
true




end





git
"#{node[:server][:production][:dir]}/#{hostname}/#{base}/public"
do






repository
info[:repository]






user
"deploy"






group
"deploy"




end





nginx_up
"#{node[:nginx][:dir]}/sites‐available/#{hostname}.#{base}"
do






hostname
"#{hostname}.#{base}"






variables(info[:variables])




end


end
end

                                                   Simplified version of something in production use
server
{



listen






80;


server_name

<%=
@subdomain
%><%=
@hostname
%>
www.<%=
@subdomain
%><%=
@hostname
%>;


root








<%=
@root
%>;


index







index.html
index.htm;


error_page


500
501
502
503
504

/error_500.html;


charset





utf‐8;



access_log


<%=
@node[:nginx][:log_dir]
%>/<%=
@subdomain
%><%=
@hostname
%>‐access.log;


error_log



<%=
@node[:nginx][:log_dir]
%>/<%=
@subdomain
%><%=
@hostname
%>‐error.log;



#
remove
www
from
the
url


if
($host
~*
www.(.*))
{




set
$host_without_www
$1;




rewrite
^(.*)$
http://$host_without_www$1
permanent;


}

}




                     ^ FROM THIS ^
                                                                                          here it comes...
server
{



listen






80;


server_name

areyousmokingcrack.com
www.areyousmokingcrack.com;


root








/apps/production/areyousmokingcrack.com/default;


index







index.html
index.htm;


error_page


500
501
502
503
504

/error_500.html;


charset





utf‐8;



access_log


/var/log/nginx/areyousmokingcrack.com‐access.log;


error_log



/var/log/nginx/areyousmokingcrack.com‐error.log;



#
remove
www
from
the
url


if
($host
~*
www.(.*))
{




set
$host_without_www
$1;




rewrite
^(.*)$
http://$host_without_www$1
permanent;


}

}




                 ^ TO THIS ^
                                                                    this site actually exists
DEMO



       stop using the internet please
SERVER DNA


• An   instance is defined as a JSON DNA file

• dna.json   reference both recipes and configurations

• Modifying   DNA should reconfigure server

• DNA    can be versioned with the app


                                                    You too can be a Geneticist
BACK TO CAKE?

• Defineone set of              • Automateserver
 cookbooks, use everywhere      deployment:

• Share, collaborate, grow      • server      new 127.0.0.1 lb.json
 optimized server cookbooks
                               • CakePHP        http://bit.ly/cakechef
• Define servers in terms of
 DNA files: lb.json, db.json,
 web.json, etc.

                                 Contributions welcome, documentation being fleshed out
DEMO



       you can start using the internet now
WHAT ABOUT THE APP?


      what about it?




                       INCEPTION
BASH


• Usable   everywhere

• Easy   to read/write

• Everything   is custom; Don’t be your own giant



                                               Have fun handling multiple server types
FREDISTRANO


    NO




         Never use something just because it’s written in CakePHP
PHING


 NO




        Yo dawg, I hurd u liek XML
ANT


I’ll cut you




    So I put some RDFA in your XML so you can SPARQL while you parse
23 DEPLOYMENT TOOLS
        LATER


         It’s like deployment tools are project management software, sheesh
CAPISTRANO

• MOAR      Ruby                 • Easy
                                      to extend and
                                  manipulate
• Similar
        in concept to Chef -
 has deployment strategies       • Docs
                                      are a bit hazy at the
                                  moment
• Separates related tasks into
 namespaces (deploy,             • Geared   towards SCM users
 migration, etc.)



                                                    http://capistranorb.com
INSTALL


• Install   Ruby/RubyGems

• gem   install capistrano

• cd   path/to/local/app/repository

• capify    .


                                       the other 8 steps of the process involve alcohol
CAPIFY?


• “capify   .” creates a Capfile and a config/deploy.rb file

• deploy.rbis by convention; we can move the contents to the
 Capfile if it bothers you

• Capfile    is necessary and proper; loads capistrano plugins
deploy.rb
                 milliondollarapp.com

                        ➘                                        <3 Perforce




                                                              ➘
set
:application,
"set
your
application
name
here"
set
:repository,

"set
your
repository
location
here"

set
:scm,
:subversion
#
Or:
`accurev`,
`bzr`,
`cvs`,
`darcs`,
`git`,
`mercurial`,
`perforce`,
`subversion`
or
`none`

role
:web,
“your
web‐server
here”

























#
Your
HTTP
server,
Apache/etc
role
:app,
“your
app‐server
here”

























#
This
may
be
the
same
as
your
`Web`
server
role
:db,

“your
primary
db‐server
here”,
:primary
=>
true
#
This
is
where
Rails
migrations
will
run
role
:db,

“your
slave
db‐server
here”




                                                                        ➘
                      ➘
                                                             CakePHP is cool too
  Cause we’re all on failover servers, right?
CUSTOMIZABLE


• Set   your own SCM, deploy paths, even callbacks

• Define    custom namespaces and tasks

• Override   core functionality
ENVIRONMENT HANDLING

##
Available
Environments
task
:production
do


server













$config[“servers”][“prod”][“server”],
:web,
:god


set
:application,


$config[“servers”][“prod”][“application”]


set
:deploy_to,




$config[“servers”][“prod”][“deploy_to”]


set
:branch,







:master
end

task
:staging
do


role
:web,









$config[“servers”][“dev”][“server”]


set
:application,


$config[“servers”][“dev”][“application”]


set
:deploy_to,




$config[“servers”][“dev”][“deploy_to”]


set
:branch,







ENV[‘branch’]
if
ENV.has_key?(‘branch’)
&&
ENV[‘branch’]
=~
/[w_‐]+/i
end
CUSTOM TASKS
##
Tasks
involving
assets
namespace
:asset
do


desc
"Clears
assets"


task
:clear
do




run
"cd
#{app_dir}
&&
../cake/console/cake
‐app
#{app_dir}
asset_compress
clear"


end



desc
"Builds
all
assets"


task
:build
do




run
"cd
#{app_dir}
&&
../cake/console/cake
‐app
#{app_dir}
asset_compress
build"


end



desc
"Builds
ini
assets"


task
:build_ini
do




run
"cd
#{app_dir}
&&
../cake/console/cake
‐app
#{app_dir}
asset_compress
build_ini"


end



desc
"Rebuilds
assets"


task
:rebuild
do




run
"cd
#{app_dir}
&&
../cake/console/cake
‐app
#{app_dir}
asset_compress
clear"




run
"cd
#{app_dir}
&&
../cake/console/cake
‐app
#{app_dir}
asset_compress
build"


end
end
CAP PROD ASSET:REBUILD
CAVEATS

• Path   to Cake Core may be incorrect - use -app flag

• Takes   some initial setup

• Behaves   funky with multiple concurrent deploys

• Potentially   slow with large deploys

• Will
     murder your datacenter if deploying to hundreds of
 servers
CLAP



       Props to Michael D’Auria, Sysadmin extraordinaire
LINKS

• CFEngine:

• Puppet: http://puppetlabs.com

• Chef: http://opscode.com/chef

• CakePHP     Chef Cookbooks: http://bit.ly/cakechef

• Capistrano: http://capistranorb.com

Weitere ähnliche Inhalte

Was ist angesagt?

Chef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of ChefChef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of Chef
Chef Software, Inc.
 
Chef + AWS + CodeIgniter
Chef + AWS + CodeIgniterChef + AWS + CodeIgniter
Chef + AWS + CodeIgniter
ciconf
 

Was ist angesagt? (20)

Velocity2011 chef-workshop
Velocity2011 chef-workshopVelocity2011 chef-workshop
Velocity2011 chef-workshop
 
Dev ops for developers
Dev ops for developersDev ops for developers
Dev ops for developers
 
DevOps for Developers
DevOps for DevelopersDevOps for Developers
DevOps for Developers
 
Introduction to Cooking with Chef
Introduction to Cooking with ChefIntroduction to Cooking with Chef
Introduction to Cooking with Chef
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsSymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
 
Chef, Devops, and You
Chef, Devops, and YouChef, Devops, and You
Chef, Devops, and You
 
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
 
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
 
Chef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of ChefChef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of Chef
 
Chasing AMI - Building Amazon machine images with Puppet, Packer and Jenkins
Chasing AMI - Building Amazon machine images with Puppet, Packer and JenkinsChasing AMI - Building Amazon machine images with Puppet, Packer and Jenkins
Chasing AMI - Building Amazon machine images with Puppet, Packer and Jenkins
 
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & Hadoop
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & HadoopPuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & Hadoop
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & Hadoop
 
Puppet Development Workflow
Puppet Development WorkflowPuppet Development Workflow
Puppet Development Workflow
 
Introduction to Chef
Introduction to ChefIntroduction to Chef
Introduction to Chef
 
Deploying distributed software services to the cloud without breaking a sweat
Deploying distributed software services to the cloud without breaking a sweatDeploying distributed software services to the cloud without breaking a sweat
Deploying distributed software services to the cloud without breaking a sweat
 
Common configuration with Data Bags - Fundamentals Webinar Series Part 4
Common configuration with Data Bags - Fundamentals Webinar Series Part 4Common configuration with Data Bags - Fundamentals Webinar Series Part 4
Common configuration with Data Bags - Fundamentals Webinar Series Part 4
 
Configuration management with Chef
Configuration management with ChefConfiguration management with Chef
Configuration management with Chef
 
Chef-Zero & Local Mode
Chef-Zero & Local ModeChef-Zero & Local Mode
Chef-Zero & Local Mode
 
Deploying Hadoop-Based Bigdata Environments
Deploying Hadoop-Based Bigdata EnvironmentsDeploying Hadoop-Based Bigdata Environments
Deploying Hadoop-Based Bigdata Environments
 
Chef + AWS + CodeIgniter
Chef + AWS + CodeIgniterChef + AWS + CodeIgniter
Chef + AWS + CodeIgniter
 
Building Hadoop with Chef
Building Hadoop with ChefBuilding Hadoop with Chef
Building Hadoop with Chef
 

Andere mochten auch

Andere mochten auch (20)

CakePHP
CakePHPCakePHP
CakePHP
 
Cakephp
CakephpCakephp
Cakephp
 
PPT - A slice of cake php
PPT - A slice of cake phpPPT - A slice of cake php
PPT - A slice of cake php
 
Cake PHP 3 Presentaion
Cake PHP 3 PresentaionCake PHP 3 Presentaion
Cake PHP 3 Presentaion
 
9 Awesome cake php tutorials and resources
9 Awesome cake php tutorials and resources9 Awesome cake php tutorials and resources
9 Awesome cake php tutorials and resources
 
Cakephp 3
Cakephp 3 Cakephp 3
Cakephp 3
 
RESTful Web Development with CakePHP
RESTful Web Development with CakePHPRESTful Web Development with CakePHP
RESTful Web Development with CakePHP
 
Php 7 - YNS
Php 7 - YNSPhp 7 - YNS
Php 7 - YNS
 
PHP South Coast - Don't code bake, an introduction to CakePHP 3
PHP South Coast - Don't code bake, an introduction to CakePHP 3PHP South Coast - Don't code bake, an introduction to CakePHP 3
PHP South Coast - Don't code bake, an introduction to CakePHP 3
 
CakePHP Community Keynote 2014
CakePHP Community Keynote 2014CakePHP Community Keynote 2014
CakePHP Community Keynote 2014
 
CakePHP
CakePHPCakePHP
CakePHP
 
REST API with CakePHP
REST API with CakePHPREST API with CakePHP
REST API with CakePHP
 
Recursive in CakePHP
Recursive in CakePHPRecursive in CakePHP
Recursive in CakePHP
 
Customize CakePHP bake
Customize CakePHP bakeCustomize CakePHP bake
Customize CakePHP bake
 
CakePHP mistakes made
CakePHP mistakes madeCakePHP mistakes made
CakePHP mistakes made
 
Top 50 Interview Questions and Answers in CakePHP
Top 50 Interview Questions and Answers in CakePHPTop 50 Interview Questions and Answers in CakePHP
Top 50 Interview Questions and Answers in CakePHP
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itst
 
Criando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHPCriando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHP
 
Road to CakePHP 3.0
Road to CakePHP 3.0Road to CakePHP 3.0
Road to CakePHP 3.0
 
Advanced Querying with CakePHP 3
Advanced Querying with CakePHP 3Advanced Querying with CakePHP 3
Advanced Querying with CakePHP 3
 

Ähnlich wie Full-Stack CakePHP Deployment

Depolying Drupal with Git, Drush Make and Capistrano
Depolying Drupal with Git, Drush Make and CapistranoDepolying Drupal with Git, Drush Make and Capistrano
Depolying Drupal with Git, Drush Make and Capistrano
libsys
 
Avoiding surprises with Chef and Vagrant
Avoiding surprises with Chef and VagrantAvoiding surprises with Chef and Vagrant
Avoiding surprises with Chef and Vagrant
andygale
 
SELF 2011: Deploying Django Application Stacks with Chef
SELF 2011: Deploying Django Application Stacks with ChefSELF 2011: Deploying Django Application Stacks with Chef
SELF 2011: Deploying Django Application Stacks with Chef
Chef Software, Inc.
 

Ähnlich wie Full-Stack CakePHP Deployment (20)

Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 
Dev-Friendly Ops
Dev-Friendly OpsDev-Friendly Ops
Dev-Friendly Ops
 
Chef meetup presentation
Chef meetup presentationChef meetup presentation
Chef meetup presentation
 
Velocity 2011 Chef OpenStack Workshop
Velocity 2011 Chef OpenStack WorkshopVelocity 2011 Chef OpenStack Workshop
Velocity 2011 Chef OpenStack Workshop
 
perlbrew yapcasia 2010
perlbrew yapcasia 2010perlbrew yapcasia 2010
perlbrew yapcasia 2010
 
Laravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello ProductionLaravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello Production
 
20100425 Configuration Management With Puppet Lfnw
20100425 Configuration Management With Puppet Lfnw20100425 Configuration Management With Puppet Lfnw
20100425 Configuration Management With Puppet Lfnw
 
What we talk about when we talk about DevOps
What we talk about when we talk about DevOpsWhat we talk about when we talk about DevOps
What we talk about when we talk about DevOps
 
Depolying Drupal with Git, Drush Make and Capistrano
Depolying Drupal with Git, Drush Make and CapistranoDepolying Drupal with Git, Drush Make and Capistrano
Depolying Drupal with Git, Drush Make and Capistrano
 
Taking Spinnaker for a spin @ London DevOps Meetup 36
Taking Spinnaker for a spin @ London DevOps Meetup 36Taking Spinnaker for a spin @ London DevOps Meetup 36
Taking Spinnaker for a spin @ London DevOps Meetup 36
 
Avoiding surprises with Chef and Vagrant
Avoiding surprises with Chef and VagrantAvoiding surprises with Chef and Vagrant
Avoiding surprises with Chef and Vagrant
 
SELF 2011: Deploying Django Application Stacks with Chef
SELF 2011: Deploying Django Application Stacks with ChefSELF 2011: Deploying Django Application Stacks with Chef
SELF 2011: Deploying Django Application Stacks with Chef
 
Using Vagrant
Using VagrantUsing Vagrant
Using Vagrant
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011
 
Habitat Overview
Habitat OverviewHabitat Overview
Habitat Overview
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swagger
 
DevOps for Humans - Ansible for Drupal Deployment Victory!
DevOps for Humans - Ansible for Drupal Deployment Victory!DevOps for Humans - Ansible for Drupal Deployment Victory!
DevOps for Humans - Ansible for Drupal Deployment Victory!
 
Pure Speed Drupal 4 Gov talk
Pure Speed Drupal 4 Gov talkPure Speed Drupal 4 Gov talk
Pure Speed Drupal 4 Gov talk
 
Vagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVagrant for Effective DevOps Culture
Vagrant for Effective DevOps Culture
 
Chef for openstack
Chef for openstackChef for openstack
Chef for openstack
 

Kürzlich hochgeladen

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Kürzlich hochgeladen (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 

Full-Stack CakePHP Deployment

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n