SlideShare a Scribd company logo
1 of 38
Using PHPwith IBM Bluemix
Vikram Vaswani
July 2017
Vikram Vaswani
Founder, Melonfire
● Product design and implementation with open source
technologies
● 20+ productslaunched for customersworldwide
Author and activePHPcommunity participant
● 7 booksfor McGraw-Hill USA
● 250+ tutorialsfor IBM dW, Zend Developer Zoneand
others
Moreinformation at http://vikram-vaswani.in
Vikram Vaswani
ActiveIBM Bluemix user since2014
● IBM Cloud Champion
● 15+ PHPapplicationson IBM Bluemix
● Stray assist: http://stray-assist.mybluemix.net/
● Invoicegenerator: https://invoice-generator.mybluemix.net/
● ATM finder: http://atm-finder.mybluemix.net/
● Document indexer: https://pdf-keyword-search.mybluemix.net
Codesamplesat https://github.com/vvaswani
Bluemix
● Cloud PaaS
● Secureand scalable
● Pay-per-use
● Multipleprogramming languages
● PHP, Java, Go, Ruby, Swift, ...
● Multipleservices(own and third-party)
● Text to Speech, Object Storage, Spark, Sendgrid, ...
Bluemix
● Serverlesscomputing
● ApacheOpenWhisk
● Integrated continuousdelivery toolchains
● Own and externally-hosted repositories
● Web IDE
● Third-party integrations: Slack, GitHub
● Blue-green deployment and rollback
Bluemix and PHP
● PHPruntimeviaCloud Foundry PHPbuildpack
● Key features
● Choiceof Web servers: Apacheor nginx
● Choiceof PHPversions: PHP5 or PHP7
● Support for variousPHPextensionsand modules
● Support for Composer and custom startup scripts
● Debug logs
PHPbuildpack docsat
http://docs.cloudfoundry.org/buildpacks/php/
Prerequisites
● Bluemix account
● Third-party serviceaccounts(if needed)
● Local PHPdevelopment environment
● CloudFoundry CLI
● Application sourcecode(obviously!)
CloudFoundry CLI installation instructionsat
https://docs.cloudfoundry.org/cf-cli/install-go-cli.html
ConfigurationArtifacts
● Application manifest (manifest.yml)
● Buildpack configuration data(.bp-co nfig/* )
● Dependency manifest (co mpo ser.jso n)
Development Approaches
UsethePHPstarter application asbase
● Deploy thestarter application to Bluemix
● Download thesourcecodeand modify locally
● Incorporatelocal or remoteservices
● Redeploy thefinal application to Bluemix and bind
servicesasneeded
Benefits
● Simple, easy to understand
● Best for first-timeusers
Development Approaches
Start from scratch
● Develop theapplication locally
● Incorporatelocal or remoteservices
● Deploy thefinal application to Bluemix and bind
servicesasneeded
Benefits
● Greater flexibility and customization options
● Best for experienced developers
Development Steps
1.Defineand install application dependencies
2.Configureapplication with local servicecredentials
3.Find and instantiateany remoteservicesneeded for
development
4.Configureapplication with remoteservice
credentials
5.Develop, test and finalize
Deployment Steps
1.Find and instantiateremoteservices
2.Updateapplication to retrieveremoteservice
credentialsfrom Bluemix
3.Defineapplication manifest
4.Push application
5.Bind remoteservices
6.Test application
Development
Development: Dependencies
● Useco mpo ser.jso n to
● Specify thePHPversion
● Declaredependenciesand version constraints
● Useco mpo ser.lo ck to
● Lock your application to specific versionsof
dependencies
Development: Dependencies
Sampleco mpo ser.jso n file:
{
"require": {
"php": ">=7.0.0",
"slim/slim": "^3.8",
"slim/php-view": "^2.2"
}
}
Development: ServiceDiscovery
Find servicesusing theBluemix Dashboard
● 120+ services, IBM and third-party
● Many servicesincludeafreetier
Development: ServiceInstantiation
Instantiatenew servicesusing theBluemix Dashboard
● Leaveservicesunbound for local development
● Obtain credentialsfrom each servicepanel
Deployment
Pre-Deployment: ServiceCredentials
● Availablein Bluemix environment for all bound services
viaVCAP_ SERVICES variable
● Structured asJSON document
Pre-Deployment: ServiceCredentials
Samplecode:
<?php
// if BlueMix VCAP_SERVICES environment available
// overwrite local credentials with BlueMix credentials
if ($services = getenv("VCAP_SERVICES")) {
$json = json_decode($services, true);
$config['db']['hostname'] = $json['cleardb'][0]['credentials']['hostname'];
$onfig['db']['username'] = $json['cleardb'][0]['credentials']['username'];
$config['db']['password'] = $json['cleardb'][0]['credentials']['password'];
$config['db']['name'] = $json['cleardb'][0]['credentials']['name'];
}
Deployment: Application Manifest
Usemanifest.yml to defineapplication attributes:
● Host name
● Application name
● Memory
● Number of instances
● Buildpack
Deployment: Application Manifest
Samplemanifest.yml file:
---
applications:
- name: myapp-[initials]
memory: 256M
instances: 1
host: myapp-[initials]
buildpack: https://github.com/cloudfoundry/php-buildpack.git
stack: cflinuxfs2
Deployment: Buildpack Configuration
● Use.bp-co nfig/o ptio ns.jso n to:
● ConfiguretheWeb server and document root
● Set thePHPversion (if conflict, co mpo ser.jso n getspriority)
● EnablePHPmodulesand Zend extensions
● Use.bp-co nfig/php/php.ini.d/*.ini to:
● ConfigurePHPsettings
● EnablePHPextensions
● Use.bp-co nfig/httpd/httpd.co nf to:
● ConfigureApachesettings
Deployment: Buildpack Configuration
Sample.bp-co nfig/o ptio ns.jso n file:
{
"WEB_SERVER": "httpd",
"COMPOSER_VENDOR_DIR": "vendor",
"WEBDIR": "public",
"PHP_VERSION": "{PHP_70_LATEST}"
}
Deployment: Buildpack Configuration
Sample.bp-co nfig/php/php.ini.d/php.ini file:
extension=mysqli.so
default_charset="UTF-8"
display_errors="1"
display_startup_errors="1"
error_reporting="E_ALL"
List of PHPbuildpack extensionsenabled by default at
https://github.com/cloudfoundry/php-buildpack/releases/
Deployment: CodePush
● Set API endpoint
cf api https://api.ng.bluemix.net
● Log in
cf login
● Push application
cf push
Deployment: CodePush Results
When aPHPapplication ispushed:
● Theapplication metadataisstored and arouteand record iscreated for it.
● Theapplication assetsareuploaded.
● ThePHPbuildpack isdownloaded and executed.
● ThePHPbuildpack downloadsand configurestheWeb server and PHPbinary.
● ThePHPbuildpack usesComposer to install application dependencies.
● Thestaged PHPapplication ispackaged into a"droplet".
● Thedroplet isuploaded and thestaged PHPapplication isstarted.
Moreinformation at https://docs.cloudfoundry.org/concepts/how-
applications-are-staged.html
Deployment: ServiceBinding
● Bind services:
cf bind-service APP-NAME SERVICE-
NAME
● Set custom environment variables:
cf set-env APP-NAME VARIABLE VALUE
● Restageapplication:
cf restage APP-NAME
Post-Deployment: Debugging
● View logs:
cf logs APP-NAME
cf logs APP-NAME --recent
● Start secureshell session:
cf ssh APP-NAME
Learn moreat http://vikram-
vaswani.in/weblog/2015/03/19/debugging-php-errors-
on-ibm-bluemix/
Demonstration
SampleApplication
● PHP+MySQL application using Slim micro-
framework
● UsesBluemix ClearDB Managed MySQL service
● Usescustomized buildpack configuration
Codeat https://github.com/vvaswani/bluemix-cities
Demonstration Overview
● Cloneapplication sourcecode
● Configurewith local development MySQL database
● CreateClearDB Managed MySQL Databaseserviceon Bluemix
● Updateapplication codeto useservicecredentialsin Bluemix
environment
● Createapplication manifest
● ConfigureCloud Foundry PHPbuildpack
● Deploy application to Bluemix
● Bind ClearDB Managed MySQL Databaseserviceto application
● Test and debug deployment
Questions?
Contact Information
Email:
● vikram-vaswani.in/contact
Web:
● www.melonfire.com
● vikram-vaswani.in
Social networks:
● plus.google.com/100028886433648406825
MySQL/PHPuser group:
● https://plus.google.com/+mmpugindia/
Using PHP with IBM Bluemix
Using PHP with IBM Bluemix
Using PHP with IBM Bluemix
Using PHP with IBM Bluemix

More Related Content

What's hot

What's hot (20)

O futuro do desenvolvimento .NET
O futuro do desenvolvimento .NETO futuro do desenvolvimento .NET
O futuro do desenvolvimento .NET
 
What is new in ASP.NET Core
What is new in ASP.NET CoreWhat is new in ASP.NET Core
What is new in ASP.NET Core
 
Get IT together
Get IT togetherGet IT together
Get IT together
 
[Webinar] Automating Developer Workspace Construction for the Nuxeo Platform ...
[Webinar] Automating Developer Workspace Construction for the Nuxeo Platform ...[Webinar] Automating Developer Workspace Construction for the Nuxeo Platform ...
[Webinar] Automating Developer Workspace Construction for the Nuxeo Platform ...
 
James Zetlen - PWA Studio Integration…With You
James Zetlen - PWA Studio Integration…With YouJames Zetlen - PWA Studio Integration…With You
James Zetlen - PWA Studio Integration…With You
 
Jayway Web Tech Radar 2015
Jayway Web Tech Radar 2015Jayway Web Tech Radar 2015
Jayway Web Tech Radar 2015
 
Nagios Conference 2014 - Andy Brist - Intro to Incident Manager
Nagios Conference 2014 - Andy Brist - Intro to Incident ManagerNagios Conference 2014 - Andy Brist - Intro to Incident Manager
Nagios Conference 2014 - Andy Brist - Intro to Incident Manager
 
DDD Strategic Patterns and Microservices by Example
DDD Strategic Patterns and Microservices by ExampleDDD Strategic Patterns and Microservices by Example
DDD Strategic Patterns and Microservices by Example
 
Inter process communication
Inter process communicationInter process communication
Inter process communication
 
[Nuxeo World 2013] A DOCUMENT ACQUISITION SOLUTION FOR THE NUXEO PLATFORM - S...
[Nuxeo World 2013] A DOCUMENT ACQUISITION SOLUTION FOR THE NUXEO PLATFORM - S...[Nuxeo World 2013] A DOCUMENT ACQUISITION SOLUTION FOR THE NUXEO PLATFORM - S...
[Nuxeo World 2013] A DOCUMENT ACQUISITION SOLUTION FOR THE NUXEO PLATFORM - S...
 
Content Management and Marketing Automation: Best Practices for Customer Expe...
Content Management and Marketing Automation: Best Practices for Customer Expe...Content Management and Marketing Automation: Best Practices for Customer Expe...
Content Management and Marketing Automation: Best Practices for Customer Expe...
 
Microsoft Azure Cloud Services
Microsoft Azure Cloud ServicesMicrosoft Azure Cloud Services
Microsoft Azure Cloud Services
 
ORusu_Apps
ORusu_AppsORusu_Apps
ORusu_Apps
 
Micro frontends with react and redux dev day
Micro frontends with react and redux   dev dayMicro frontends with react and redux   dev day
Micro frontends with react and redux dev day
 
Quick workflow of a nodejs api
Quick workflow of a nodejs apiQuick workflow of a nodejs api
Quick workflow of a nodejs api
 
Polymer, HTML includes y core-ajax
Polymer, HTML includes y core-ajaxPolymer, HTML includes y core-ajax
Polymer, HTML includes y core-ajax
 
GitLab Remote Meetup: Enhance Your Kubernetes CI/CD Pipelines with GitLab & ...
GitLab Remote Meetup:  Enhance Your Kubernetes CI/CD Pipelines with GitLab & ...GitLab Remote Meetup:  Enhance Your Kubernetes CI/CD Pipelines with GitLab & ...
GitLab Remote Meetup: Enhance Your Kubernetes CI/CD Pipelines with GitLab & ...
 
MongoDB 2.8 bug hunt
MongoDB 2.8 bug huntMongoDB 2.8 bug hunt
MongoDB 2.8 bug hunt
 
Piwik Presentation
Piwik PresentationPiwik Presentation
Piwik Presentation
 
[Nuxeo World 2013] EXTENSIBILITY AND USE OF NUXEO AS A DOCUMENT MANAGEMENT PL...
[Nuxeo World 2013] EXTENSIBILITY AND USE OF NUXEO AS A DOCUMENT MANAGEMENT PL...[Nuxeo World 2013] EXTENSIBILITY AND USE OF NUXEO AS A DOCUMENT MANAGEMENT PL...
[Nuxeo World 2013] EXTENSIBILITY AND USE OF NUXEO AS A DOCUMENT MANAGEMENT PL...
 

Similar to Using PHP with IBM Bluemix

Achieving Developer Nirvana With Codename: BlueMix
Achieving Developer Nirvana With Codename: BlueMixAchieving Developer Nirvana With Codename: BlueMix
Achieving Developer Nirvana With Codename: BlueMix
Ryan Baxter
 
Agile NCR 2013- Shekhar Gulati - Open shift platform-for-rapid-and-agile-deve...
Agile NCR 2013- Shekhar Gulati - Open shift platform-for-rapid-and-agile-deve...Agile NCR 2013- Shekhar Gulati - Open shift platform-for-rapid-and-agile-deve...
Agile NCR 2013- Shekhar Gulati - Open shift platform-for-rapid-and-agile-deve...
AgileNCR2013
 
Microsoft WebsiteSpark & Windows Platform Installer
Microsoft WebsiteSpark & Windows Platform InstallerMicrosoft WebsiteSpark & Windows Platform Installer
Microsoft WebsiteSpark & Windows Platform Installer
George Kanellopoulos
 

Similar to Using PHP with IBM Bluemix (20)

How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
 
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
How to convert your Full Trust Solutions to the SharePoint Framework (SPFx)
 
Developer Nirvana with IBM Bluemix™
Developer Nirvana with IBM Bluemix™Developer Nirvana with IBM Bluemix™
Developer Nirvana with IBM Bluemix™
 
Rock Solid Deployment of Web Applications
Rock Solid Deployment of Web ApplicationsRock Solid Deployment of Web Applications
Rock Solid Deployment of Web Applications
 
Achieving Developer Nirvana With Codename: BlueMix
Achieving Developer Nirvana With Codename: BlueMixAchieving Developer Nirvana With Codename: BlueMix
Achieving Developer Nirvana With Codename: BlueMix
 
Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)
 
Programmable infrastructure with FlyScript
Programmable infrastructure with FlyScriptProgrammable infrastructure with FlyScript
Programmable infrastructure with FlyScript
 
Simplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudSimplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual Cloud
 
Agile NCR 2013- Shekhar Gulati - Open shift platform-for-rapid-and-agile-deve...
Agile NCR 2013- Shekhar Gulati - Open shift platform-for-rapid-and-agile-deve...Agile NCR 2013- Shekhar Gulati - Open shift platform-for-rapid-and-agile-deve...
Agile NCR 2013- Shekhar Gulati - Open shift platform-for-rapid-and-agile-deve...
 
Ahmadabad mule soft_meetup_6march2021_azure_CICD
Ahmadabad mule soft_meetup_6march2021_azure_CICDAhmadabad mule soft_meetup_6march2021_azure_CICD
Ahmadabad mule soft_meetup_6march2021_azure_CICD
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
 
Building and Deploying PHP Applications, PHPTour 2016
Building and Deploying PHP Applications, PHPTour 2016Building and Deploying PHP Applications, PHPTour 2016
Building and Deploying PHP Applications, PHPTour 2016
 
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScriptENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
 
Microsoft WebsiteSpark & Windows Platform Installer
Microsoft WebsiteSpark & Windows Platform InstallerMicrosoft WebsiteSpark & Windows Platform Installer
Microsoft WebsiteSpark & Windows Platform Installer
 
MuleSoft Surat Meetup#48 - Anypoint API Governance (RAML, OAS and Async API) ...
MuleSoft Surat Meetup#48 - Anypoint API Governance (RAML, OAS and Async API) ...MuleSoft Surat Meetup#48 - Anypoint API Governance (RAML, OAS and Async API) ...
MuleSoft Surat Meetup#48 - Anypoint API Governance (RAML, OAS and Async API) ...
 
Hands-on Workshop: Intermediate Development with Heroku and Force.com
Hands-on Workshop: Intermediate Development with Heroku and Force.comHands-on Workshop: Intermediate Development with Heroku and Force.com
Hands-on Workshop: Intermediate Development with Heroku and Force.com
 
Pyramid Deployment and Maintenance
Pyramid Deployment and MaintenancePyramid Deployment and Maintenance
Pyramid Deployment and Maintenance
 
PHP as a Service TDC2019
PHP as a Service TDC2019PHP as a Service TDC2019
PHP as a Service TDC2019
 
Firebase Basics - Dialog Demo for Group Tech Staff
Firebase Basics - Dialog Demo for Group Tech StaffFirebase Basics - Dialog Demo for Group Tech Staff
Firebase Basics - Dialog Demo for Group Tech Staff
 
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
 

Recently uploaded

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
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
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
 

Recently uploaded (20)

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...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
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
 
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
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
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 ...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
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...
 
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
 
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
 

Using PHP with IBM Bluemix

  • 1. Using PHPwith IBM Bluemix Vikram Vaswani July 2017
  • 2. Vikram Vaswani Founder, Melonfire ● Product design and implementation with open source technologies ● 20+ productslaunched for customersworldwide Author and activePHPcommunity participant ● 7 booksfor McGraw-Hill USA ● 250+ tutorialsfor IBM dW, Zend Developer Zoneand others Moreinformation at http://vikram-vaswani.in
  • 3. Vikram Vaswani ActiveIBM Bluemix user since2014 ● IBM Cloud Champion ● 15+ PHPapplicationson IBM Bluemix ● Stray assist: http://stray-assist.mybluemix.net/ ● Invoicegenerator: https://invoice-generator.mybluemix.net/ ● ATM finder: http://atm-finder.mybluemix.net/ ● Document indexer: https://pdf-keyword-search.mybluemix.net Codesamplesat https://github.com/vvaswani
  • 4. Bluemix ● Cloud PaaS ● Secureand scalable ● Pay-per-use ● Multipleprogramming languages ● PHP, Java, Go, Ruby, Swift, ... ● Multipleservices(own and third-party) ● Text to Speech, Object Storage, Spark, Sendgrid, ...
  • 5. Bluemix ● Serverlesscomputing ● ApacheOpenWhisk ● Integrated continuousdelivery toolchains ● Own and externally-hosted repositories ● Web IDE ● Third-party integrations: Slack, GitHub ● Blue-green deployment and rollback
  • 6. Bluemix and PHP ● PHPruntimeviaCloud Foundry PHPbuildpack ● Key features ● Choiceof Web servers: Apacheor nginx ● Choiceof PHPversions: PHP5 or PHP7 ● Support for variousPHPextensionsand modules ● Support for Composer and custom startup scripts ● Debug logs PHPbuildpack docsat http://docs.cloudfoundry.org/buildpacks/php/
  • 7. Prerequisites ● Bluemix account ● Third-party serviceaccounts(if needed) ● Local PHPdevelopment environment ● CloudFoundry CLI ● Application sourcecode(obviously!) CloudFoundry CLI installation instructionsat https://docs.cloudfoundry.org/cf-cli/install-go-cli.html
  • 8. ConfigurationArtifacts ● Application manifest (manifest.yml) ● Buildpack configuration data(.bp-co nfig/* ) ● Dependency manifest (co mpo ser.jso n)
  • 9. Development Approaches UsethePHPstarter application asbase ● Deploy thestarter application to Bluemix ● Download thesourcecodeand modify locally ● Incorporatelocal or remoteservices ● Redeploy thefinal application to Bluemix and bind servicesasneeded Benefits ● Simple, easy to understand ● Best for first-timeusers
  • 10. Development Approaches Start from scratch ● Develop theapplication locally ● Incorporatelocal or remoteservices ● Deploy thefinal application to Bluemix and bind servicesasneeded Benefits ● Greater flexibility and customization options ● Best for experienced developers
  • 11. Development Steps 1.Defineand install application dependencies 2.Configureapplication with local servicecredentials 3.Find and instantiateany remoteservicesneeded for development 4.Configureapplication with remoteservice credentials 5.Develop, test and finalize
  • 12. Deployment Steps 1.Find and instantiateremoteservices 2.Updateapplication to retrieveremoteservice credentialsfrom Bluemix 3.Defineapplication manifest 4.Push application 5.Bind remoteservices 6.Test application
  • 14. Development: Dependencies ● Useco mpo ser.jso n to ● Specify thePHPversion ● Declaredependenciesand version constraints ● Useco mpo ser.lo ck to ● Lock your application to specific versionsof dependencies
  • 15. Development: Dependencies Sampleco mpo ser.jso n file: { "require": { "php": ">=7.0.0", "slim/slim": "^3.8", "slim/php-view": "^2.2" } }
  • 16. Development: ServiceDiscovery Find servicesusing theBluemix Dashboard ● 120+ services, IBM and third-party ● Many servicesincludeafreetier
  • 17. Development: ServiceInstantiation Instantiatenew servicesusing theBluemix Dashboard ● Leaveservicesunbound for local development ● Obtain credentialsfrom each servicepanel
  • 19. Pre-Deployment: ServiceCredentials ● Availablein Bluemix environment for all bound services viaVCAP_ SERVICES variable ● Structured asJSON document
  • 20. Pre-Deployment: ServiceCredentials Samplecode: <?php // if BlueMix VCAP_SERVICES environment available // overwrite local credentials with BlueMix credentials if ($services = getenv("VCAP_SERVICES")) { $json = json_decode($services, true); $config['db']['hostname'] = $json['cleardb'][0]['credentials']['hostname']; $onfig['db']['username'] = $json['cleardb'][0]['credentials']['username']; $config['db']['password'] = $json['cleardb'][0]['credentials']['password']; $config['db']['name'] = $json['cleardb'][0]['credentials']['name']; }
  • 21. Deployment: Application Manifest Usemanifest.yml to defineapplication attributes: ● Host name ● Application name ● Memory ● Number of instances ● Buildpack
  • 22. Deployment: Application Manifest Samplemanifest.yml file: --- applications: - name: myapp-[initials] memory: 256M instances: 1 host: myapp-[initials] buildpack: https://github.com/cloudfoundry/php-buildpack.git stack: cflinuxfs2
  • 23. Deployment: Buildpack Configuration ● Use.bp-co nfig/o ptio ns.jso n to: ● ConfiguretheWeb server and document root ● Set thePHPversion (if conflict, co mpo ser.jso n getspriority) ● EnablePHPmodulesand Zend extensions ● Use.bp-co nfig/php/php.ini.d/*.ini to: ● ConfigurePHPsettings ● EnablePHPextensions ● Use.bp-co nfig/httpd/httpd.co nf to: ● ConfigureApachesettings
  • 24. Deployment: Buildpack Configuration Sample.bp-co nfig/o ptio ns.jso n file: { "WEB_SERVER": "httpd", "COMPOSER_VENDOR_DIR": "vendor", "WEBDIR": "public", "PHP_VERSION": "{PHP_70_LATEST}" }
  • 25. Deployment: Buildpack Configuration Sample.bp-co nfig/php/php.ini.d/php.ini file: extension=mysqli.so default_charset="UTF-8" display_errors="1" display_startup_errors="1" error_reporting="E_ALL" List of PHPbuildpack extensionsenabled by default at https://github.com/cloudfoundry/php-buildpack/releases/
  • 26. Deployment: CodePush ● Set API endpoint cf api https://api.ng.bluemix.net ● Log in cf login ● Push application cf push
  • 27. Deployment: CodePush Results When aPHPapplication ispushed: ● Theapplication metadataisstored and arouteand record iscreated for it. ● Theapplication assetsareuploaded. ● ThePHPbuildpack isdownloaded and executed. ● ThePHPbuildpack downloadsand configurestheWeb server and PHPbinary. ● ThePHPbuildpack usesComposer to install application dependencies. ● Thestaged PHPapplication ispackaged into a"droplet". ● Thedroplet isuploaded and thestaged PHPapplication isstarted. Moreinformation at https://docs.cloudfoundry.org/concepts/how- applications-are-staged.html
  • 28. Deployment: ServiceBinding ● Bind services: cf bind-service APP-NAME SERVICE- NAME ● Set custom environment variables: cf set-env APP-NAME VARIABLE VALUE ● Restageapplication: cf restage APP-NAME
  • 29. Post-Deployment: Debugging ● View logs: cf logs APP-NAME cf logs APP-NAME --recent ● Start secureshell session: cf ssh APP-NAME Learn moreat http://vikram- vaswani.in/weblog/2015/03/19/debugging-php-errors- on-ibm-bluemix/
  • 31. SampleApplication ● PHP+MySQL application using Slim micro- framework ● UsesBluemix ClearDB Managed MySQL service ● Usescustomized buildpack configuration Codeat https://github.com/vvaswani/bluemix-cities
  • 32. Demonstration Overview ● Cloneapplication sourcecode ● Configurewith local development MySQL database ● CreateClearDB Managed MySQL Databaseserviceon Bluemix ● Updateapplication codeto useservicecredentialsin Bluemix environment ● Createapplication manifest ● ConfigureCloud Foundry PHPbuildpack ● Deploy application to Bluemix ● Bind ClearDB Managed MySQL Databaseserviceto application ● Test and debug deployment
  • 34. Contact Information Email: ● vikram-vaswani.in/contact Web: ● www.melonfire.com ● vikram-vaswani.in Social networks: ● plus.google.com/100028886433648406825 MySQL/PHPuser group: ● https://plus.google.com/+mmpugindia/