SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Velocity2011 chef-workshop
Velocity2011 chef-workshopVelocity2011 chef-workshop
Velocity2011 chef-workshopjtimberman
 
Introduction to Cooking with Chef
Introduction to Cooking with ChefIntroduction to Cooking with Chef
Introduction to Cooking with ChefJohn Osborne
 
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 AppsPablo Godel
 
Chef, Devops, and You
Chef, Devops, and YouChef, Devops, and You
Chef, Devops, and YouBryan Berry
 
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 Software, Inc.
 
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 Software, Inc.
 
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 ChefChef Software, Inc.
 
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 JenkinsTomas Doran
 
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 & HadoopWalter Heck
 
Puppet Development Workflow
Puppet Development WorkflowPuppet Development Workflow
Puppet Development WorkflowJeffery Smith
 
Introduction to Chef
Introduction to ChefIntroduction to Chef
Introduction to ChefKnoldus Inc.
 
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 sweatSusan Potter
 
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 4Chef
 
Chef-Zero & Local Mode
Chef-Zero & Local ModeChef-Zero & Local Mode
Chef-Zero & Local ModeMichael Goetz
 
Deploying Hadoop-Based Bigdata Environments
Deploying Hadoop-Based Bigdata EnvironmentsDeploying Hadoop-Based Bigdata Environments
Deploying Hadoop-Based Bigdata EnvironmentsPuppet
 
Chef + AWS + CodeIgniter
Chef + AWS + CodeIgniterChef + AWS + CodeIgniter
Chef + AWS + CodeIgniterciconf
 
Building Hadoop with Chef
Building Hadoop with ChefBuilding Hadoop with Chef
Building Hadoop with ChefJohn Martin
 

Mais procurados (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
 

Destaque

Cake PHP 3 Presentaion
Cake PHP 3 PresentaionCake PHP 3 Presentaion
Cake PHP 3 Presentaionglslarmenta
 
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 resourcesiScripts
 
RESTful Web Development with CakePHP
RESTful Web Development with CakePHPRESTful Web Development with CakePHP
RESTful Web Development with CakePHPAndru Weir
 
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 3David Yell
 
CakePHP Community Keynote 2014
CakePHP Community Keynote 2014CakePHP Community Keynote 2014
CakePHP Community Keynote 2014James Watts
 
Recursive in CakePHP
Recursive in CakePHPRecursive in CakePHP
Recursive in CakePHPKetan Patel
 
Customize CakePHP bake
Customize CakePHP bakeCustomize CakePHP bake
Customize CakePHP bakeKazuyuki Aoki
 
CakePHP mistakes made
CakePHP mistakes madeCakePHP mistakes made
CakePHP mistakes mademarkstory
 
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 CakePHPKetan Patel
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itstomicx
 
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 CakePHP2km interativa!
 
Road to CakePHP 3.0
Road to CakePHP 3.0Road to CakePHP 3.0
Road to CakePHP 3.0markstory
 

Destaque (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
 

Semelhante a Full-Stack CakePHP Deployment

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-20Michael Lihs
 
Chef meetup presentation
Chef meetup presentationChef meetup presentation
Chef meetup presentationCharles Johnson
 
Velocity 2011 Chef OpenStack Workshop
Velocity 2011 Chef OpenStack WorkshopVelocity 2011 Chef OpenStack Workshop
Velocity 2011 Chef OpenStack WorkshopChef Software, Inc.
 
perlbrew yapcasia 2010
perlbrew yapcasia 2010perlbrew yapcasia 2010
perlbrew yapcasia 2010Kang-min Liu
 
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 ProductionJoe Ferguson
 
20100425 Configuration Management With Puppet Lfnw
20100425 Configuration Management With Puppet Lfnw20100425 Configuration Management With Puppet Lfnw
20100425 Configuration Management With Puppet Lfnwgarrett honeycutt
 
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 DevOpsRicard Clau
 
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 Capistranolibsys
 
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 36aleonhardt
 
Avoiding surprises with Chef and Vagrant
Avoiding surprises with Chef and VagrantAvoiding surprises with Chef and Vagrant
Avoiding surprises with Chef and Vagrantandygale
 
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 ChefChef Software, Inc.
 
Using Vagrant
Using VagrantUsing Vagrant
Using Vagrantandygale
 
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 2011Brian Ritchie
 
Habitat Overview
Habitat OverviewHabitat Overview
Habitat OverviewMandi Walls
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swaggerTony Tam
 
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!Jeff Geerling
 
Pure Speed Drupal 4 Gov talk
Pure Speed Drupal 4 Gov talkPure Speed Drupal 4 Gov talk
Pure Speed Drupal 4 Gov talkBryan Ollendyke
 
Vagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVaidik Kapoor
 

Semelhante a 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
 

Último

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 

Último (20)

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 

Full-Stack CakePHP Deployment

Notas do Editor

  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