SlideShare a Scribd company logo
1 of 42
Download to read offline
Oops, where's my site?
How to install Plone add-ons
and live to tell the tale
Goals
 • Know the procedure for installing most Plone add-ons

 • Understand guidelines to prevent things from breaking

 • Recognize some common ways installation fails and know how to recover
Starting on the same page
The flavors of Plone installers
(Available from plone.org)

Windows installer
     Only option for Windows.

OS X
       For Mac OS X. Doesn't require a C compiler.

Unified installer
      Installation from source for all Unix-like systems (including OS X).
      Requires a C compiler to install.

Your own custom buildout
     Most likely generated using ZopeSkel or based on a previous project.
     Provides the most flexibility.
buildout root
The directory that contains the rest of the installation.

Windows
     C:Plone41

Unified installer
      /usr/local/Plone/zinstance or $HOME/zinstance

Custom buildout
     Wherever you put it
instance script
Script used to start Plone:

bin/instance fg

Windows

       C:Plone41bininstance fg

OS X & Unified installer

       ${
       ${buildout_root}/bin/instance fg
                      }

      or

       ${
       ${buildout_root}/bin/client1 fg
                      }
First, do no harm
multi-staged deployment
 • Keep at least one copy of the site separate from the production copy, to test
   changes.

 • Keep all changes in version control (svn, git, etc.) so you can reproduce your
   environment.

 • Use buildout's extends to handle differences between environments.
Aspeli's rule of deployment
Code & configuration flow from the development site to the production site; data
flows from the production site to the development site.
Back up your data before you make changes!
 1. Make sure your buildout configuration is under version control.

 2. Back up the data:

     $ bin/snapshotbackup

    -- or --

     $ bin/backup

(collective.recipe.backup is included in the Unified installer buildout.)
Restoring from backup
1. Stop the instance

2. Use your version control system to revert to the old version of the buildout,
   and re-run it.

3. Restore the data:

   $ bin/snapshotrestore
   -- or --
   $ bin/restore

4. Start the instance.
The simplest backup
Copy the entire buildout.
Preparing to install
Finding add-ons
 • Python Package Index (PyPI): http://pypi.python.org/pypi

 • Plone.org products directory: http://plone.org/products

 • Plone Open Comparison: http://plone.opencomparison.org
Plone version compatibility
Dependencies
Simplest way to tell what it depends on is actually installing. :(

Use the buildout.dumppickedversions extension:

[buildout]
extensions = buildout.dumppickedversions

(Included in the Unified installer buildout.)
What does it do?
  • Does it do some trivial customization, or introduce a brand new
    experimental subsystem?

  • Does it do anything malicious?

  • Is it possible to uninstall?

Ask others about their experience with it (on IRC or the mailing lists).
A simple installation
Buildout.cfg format
Parts

        Each part has a header in square brackets:

        [buildout]

Variables

        Each part contains multiple variables below the header:

        [buildout]
        extends = http://dist.plone.org/release/4.1.2/versions.cfg
        parts = instance

        Variables can interpolate other variables

        [instance]
        eggs = ${buildout:eggs}
Adding PloneFormGen
Add the name of the distribution to the eggs variable.

Which part?

[instance]
eggs =
    Plone
    Products.PloneFormGen

But in the Unified installer buildout the instance eggs are based on the
buildout eggs:

[instance]
eggs = ${buildout:eggs}

So you can add to buildout eggs:

[buildout]
eggs =
    Plone
    Products.PloneFormGen
Run buildout
$ bin/buildout

For verbose info:

$ bin/buildout -v


Confirm it was installed
Examine the instance script.
Identifying picked versions
If we used buildout.dumppickedversions, it shows us which versions were
"picked":

*************** PICKED VERSIONS ****************
[versions]
Products.PloneFormGen = 1.7b5
Products.PythonField = 1.1.3
Products.TALESField = 1.1.3
Products.TemplateFields = 1.2.5

#Required by:
#Products.PloneFormGen 1.7b5
collective.js.jqueryui = 1.8.5.2
Pinning picked versions
Add them to the versions buildout part:

[versions]
Products.PloneFormGen = 1.7b5
Products.PythonField = 1.1.3
Products.TALESField = 1.1.3
Products.TemplateFields = 1.2.5

#Required by:
#Products.PloneFormGen 1.7b5
collective.js.jqueryui = 1.8.5.2

Now if you re-run buildout, it should show no picked versions.
Inferior pinning
Why not do this?

[buildout]
eggs = Products.PloneFormGen==1.7b5

Because the version doesn't get used if PloneFormGen is a dependency of
something else.
Being strict about pinning
Disallow picked versions:

[buildout]
allow-picked-versions = false
Starting Zope
Use the instance script in foreground mode to make failures obvious:

$ bin/instance fg
Activating the add-on
Site Setup > Add-ons
A complex installation
Installing Dexterity
[buildout]
extends = http://good-py.appspot.com/release/dexterity/1.0.3?plone=4.1.2

[instance]
eggs =
    plone.app.dexterity
good-py
 • A tool for building and distributing known good sets

 • One KGS can extend another

 • A KGS can be constrained by a particular platform
Upgrading an add-on
1. Update the version pins for the add-on and any dependencies.

2. Re-run buildout and restart Zope.

3. Go to Add-ons control panel and check if there are upgrade steps to run.
What could possibly go wrong?
Incompatible version pins
Example:

The version, 1.1.2, is not consistent with the requirement,
'plone.app.jquerytools>=1.2dev'.
While:
  Installing instance.
Error: Bad version 1.1.2

Reason: PloneFormGen requires plone.app.jquerytools >= 1.2dev, but I have it
pinned to 1.1.2.

How did I know?:

Getting required 'collective.js.jqueryui'
  required by Products.PloneFormGen 1.7b6.
Picked: collective.js.jqueryui = 1.8.13.1
The version, 1.1.2, is not consistent with the requirement,
'plone.app.jquerytools>=1.2dev'.
While:
  Installing instance.
Error: Bad version 1.1.2

Solution: Upgrade plone.app.jquerytools (with care).
PyPI times out
Symptom: Error message about the egg not being available.

Solution: Temporarily use a mirror of the package index:

[buildout]
index = http://d.pypi.python.org/simple
ZCML not loaded
Symptom: The product you installed doesn't show up in the Add-ons control
panel.

Reason: Many add-ons "announce" themselves to Plone so that Plone loads their
configuration, but some are missing this.

Solution: Include the package's ZCML in buildout, re-run buildout, and restart:

[instance]
zcml =
    my.package
Other errors while starting up
Seeking help:

 • Send the full traceback to the add-on's author

 • Ask in #plone channel on IRC

 • Ask on the plone-users mailing list
Room for improvement
plonelint tool
"Dry run mode" for buildout
Communal Known Good Set
         (KGS)
UI for installing packages
Questions

More Related Content

What's hot

Laravel Beginners Tutorial 1
Laravel Beginners Tutorial 1Laravel Beginners Tutorial 1
Laravel Beginners Tutorial 1Vikas Chauhan
 
Q4E and Eclipse IAM, Maven integration for Eclipse
Q4E and Eclipse IAM, Maven integration for EclipseQ4E and Eclipse IAM, Maven integration for Eclipse
Q4E and Eclipse IAM, Maven integration for EclipseCarlos Sanchez
 
Building and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and ContextBuilding and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and ContextSvilen Sabev
 
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...Pantheon
 
All the Laravel things: up and running to making $$
All the Laravel things: up and running to making $$All the Laravel things: up and running to making $$
All the Laravel things: up and running to making $$Joe Ferguson
 
Maven, Eclipse And OSGi Working Together
Maven, Eclipse And OSGi Working TogetherMaven, Eclipse And OSGi Working Together
Maven, Eclipse And OSGi Working TogetherCarlos Sanchez
 
Eclipse IAM, Maven Integration For Eclipse
Eclipse IAM, Maven Integration For EclipseEclipse IAM, Maven Integration For Eclipse
Eclipse IAM, Maven Integration For EclipseCarlos Sanchez
 
Virtual CD4PE Workshop
Virtual CD4PE WorkshopVirtual CD4PE Workshop
Virtual CD4PE WorkshopPuppet
 
MidwestPHP 2016 - Adventures in Laravel 5
MidwestPHP 2016 - Adventures in Laravel 5 MidwestPHP 2016 - Adventures in Laravel 5
MidwestPHP 2016 - Adventures in Laravel 5 Joe Ferguson
 
Automating your workflow with Gulp.js
Automating your workflow with Gulp.jsAutomating your workflow with Gulp.js
Automating your workflow with Gulp.jsBo-Yi Wu
 
Chef for beginners module 1
Chef for beginners   module 1Chef for beginners   module 1
Chef for beginners module 1Chef
 
All the Laravel Things – Up & Running to Making $$
All the Laravel Things – Up & Running to Making $$All the Laravel Things – Up & Running to Making $$
All the Laravel Things – Up & Running to Making $$Joe Ferguson
 
php[world] 2015 Laravel 5.1: From Homestead to the Cloud
php[world] 2015 Laravel 5.1: From Homestead to the Cloudphp[world] 2015 Laravel 5.1: From Homestead to the Cloud
php[world] 2015 Laravel 5.1: From Homestead to the CloudJoe Ferguson
 
Console Apps: php artisan forthe:win
Console Apps: php artisan forthe:winConsole Apps: php artisan forthe:win
Console Apps: php artisan forthe:winJoe Ferguson
 
PHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding stylePHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding styleBo-Yi Wu
 
Invoke component demo in mule
Invoke component demo in muleInvoke component demo in mule
Invoke component demo in muleRamakrishna kapa
 

What's hot (20)

Laravel Beginners Tutorial 1
Laravel Beginners Tutorial 1Laravel Beginners Tutorial 1
Laravel Beginners Tutorial 1
 
CakePHP
CakePHPCakePHP
CakePHP
 
Q4E and Eclipse IAM, Maven integration for Eclipse
Q4E and Eclipse IAM, Maven integration for EclipseQ4E and Eclipse IAM, Maven integration for Eclipse
Q4E and Eclipse IAM, Maven integration for Eclipse
 
Building and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and ContextBuilding and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and Context
 
Flask
FlaskFlask
Flask
 
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
 
All the Laravel things: up and running to making $$
All the Laravel things: up and running to making $$All the Laravel things: up and running to making $$
All the Laravel things: up and running to making $$
 
Maven, Eclipse And OSGi Working Together
Maven, Eclipse And OSGi Working TogetherMaven, Eclipse And OSGi Working Together
Maven, Eclipse And OSGi Working Together
 
Eclipse IAM, Maven Integration For Eclipse
Eclipse IAM, Maven Integration For EclipseEclipse IAM, Maven Integration For Eclipse
Eclipse IAM, Maven Integration For Eclipse
 
Virtual CD4PE Workshop
Virtual CD4PE WorkshopVirtual CD4PE Workshop
Virtual CD4PE Workshop
 
MidwestPHP 2016 - Adventures in Laravel 5
MidwestPHP 2016 - Adventures in Laravel 5 MidwestPHP 2016 - Adventures in Laravel 5
MidwestPHP 2016 - Adventures in Laravel 5
 
Cakephp
CakephpCakephp
Cakephp
 
Automating your workflow with Gulp.js
Automating your workflow with Gulp.jsAutomating your workflow with Gulp.js
Automating your workflow with Gulp.js
 
Chef for beginners module 1
Chef for beginners   module 1Chef for beginners   module 1
Chef for beginners module 1
 
All the Laravel Things – Up & Running to Making $$
All the Laravel Things – Up & Running to Making $$All the Laravel Things – Up & Running to Making $$
All the Laravel Things – Up & Running to Making $$
 
php[world] 2015 Laravel 5.1: From Homestead to the Cloud
php[world] 2015 Laravel 5.1: From Homestead to the Cloudphp[world] 2015 Laravel 5.1: From Homestead to the Cloud
php[world] 2015 Laravel 5.1: From Homestead to the Cloud
 
Console Apps: php artisan forthe:win
Console Apps: php artisan forthe:winConsole Apps: php artisan forthe:win
Console Apps: php artisan forthe:win
 
PHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding stylePHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding style
 
Invoke component demo in mule
Invoke component demo in muleInvoke component demo in mule
Invoke component demo in mule
 
Phing
PhingPhing
Phing
 

Similar to Oops, where's my site?

ZopeSkel & Buildout packages
ZopeSkel & Buildout packagesZopeSkel & Buildout packages
ZopeSkel & Buildout packagesQuintagroup
 
Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld PresentationDan Hinojosa
 
Continuous deployment-at-flipkart
Continuous deployment-at-flipkartContinuous deployment-at-flipkart
Continuous deployment-at-flipkartPankaj Kaushal
 
Martin Aspeli Extending And Customising Plone 3
Martin Aspeli   Extending And Customising Plone 3Martin Aspeli   Extending And Customising Plone 3
Martin Aspeli Extending And Customising Plone 3Vincenzo Barone
 
How to host an app for $20 in 20min using buildout and hostout
How to host an app  for $20 in 20min using buildout and hostoutHow to host an app  for $20 in 20min using buildout and hostout
How to host an app for $20 in 20min using buildout and hostoutDylan Jay
 
Chocolatey - making the process of installing software on windows easy as pie
Chocolatey - making the process of installing software on windows easy as pieChocolatey - making the process of installing software on windows easy as pie
Chocolatey - making the process of installing software on windows easy as pieJustin James
 
Joget Workflow v6 Training Slides - 16 - Preparing Development Environment
Joget Workflow v6 Training Slides - 16 - Preparing Development EnvironmentJoget Workflow v6 Training Slides - 16 - Preparing Development Environment
Joget Workflow v6 Training Slides - 16 - Preparing Development EnvironmentJoget Workflow
 
How to Install and Configure Jenkins on Centos 7
How to Install and Configure Jenkins on Centos 7How to Install and Configure Jenkins on Centos 7
How to Install and Configure Jenkins on Centos 7AniketGoyal14
 
Joget Workflow v5 Training Slides - Module 16 - Preparing Development Environ...
Joget Workflow v5 Training Slides - Module 16 - Preparing Development Environ...Joget Workflow v5 Training Slides - Module 16 - Preparing Development Environ...
Joget Workflow v5 Training Slides - Module 16 - Preparing Development Environ...Joget Workflow
 
Continuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with JenkinsContinuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with JenkinsMichael Kröll
 
Os dev tool box
Os dev tool boxOs dev tool box
Os dev tool boxbpowell29a
 
Virtualization
VirtualizationVirtualization
VirtualizationYansi Keim
 
Where's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneWhere's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneVincenzo Barone
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Fabrice Bernhard
 
Buildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in pythonBuildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in pythonCodeSyntax
 
Buildout: How to maintain big app stacks without losing your mind
Buildout: How to maintain big app stacks without losing your mindBuildout: How to maintain big app stacks without losing your mind
Buildout: How to maintain big app stacks without losing your mindDylan Jay
 

Similar to Oops, where's my site? (20)

ZopeSkel & Buildout packages
ZopeSkel & Buildout packagesZopeSkel & Buildout packages
ZopeSkel & Buildout packages
 
Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld Presentation
 
Continuous deployment-at-flipkart
Continuous deployment-at-flipkartContinuous deployment-at-flipkart
Continuous deployment-at-flipkart
 
Martin Aspeli Extending And Customising Plone 3
Martin Aspeli   Extending And Customising Plone 3Martin Aspeli   Extending And Customising Plone 3
Martin Aspeli Extending And Customising Plone 3
 
How to host an app for $20 in 20min using buildout and hostout
How to host an app  for $20 in 20min using buildout and hostoutHow to host an app  for $20 in 20min using buildout and hostout
How to host an app for $20 in 20min using buildout and hostout
 
Chocolatey - making the process of installing software on windows easy as pie
Chocolatey - making the process of installing software on windows easy as pieChocolatey - making the process of installing software on windows easy as pie
Chocolatey - making the process of installing software on windows easy as pie
 
Zenoss: Buildout
Zenoss: BuildoutZenoss: Buildout
Zenoss: Buildout
 
CodeShip
CodeShipCodeShip
CodeShip
 
Joget Workflow v6 Training Slides - 16 - Preparing Development Environment
Joget Workflow v6 Training Slides - 16 - Preparing Development EnvironmentJoget Workflow v6 Training Slides - 16 - Preparing Development Environment
Joget Workflow v6 Training Slides - 16 - Preparing Development Environment
 
What's new in p2 (2009)?
What's new in p2 (2009)?What's new in p2 (2009)?
What's new in p2 (2009)?
 
How to Install and Configure Jenkins on Centos 7
How to Install and Configure Jenkins on Centos 7How to Install and Configure Jenkins on Centos 7
How to Install and Configure Jenkins on Centos 7
 
Joget Workflow v5 Training Slides - Module 16 - Preparing Development Environ...
Joget Workflow v5 Training Slides - Module 16 - Preparing Development Environ...Joget Workflow v5 Training Slides - Module 16 - Preparing Development Environ...
Joget Workflow v5 Training Slides - Module 16 - Preparing Development Environ...
 
Continuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with JenkinsContinuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with Jenkins
 
Os dev tool box
Os dev tool boxOs dev tool box
Os dev tool box
 
Virtualization
VirtualizationVirtualization
Virtualization
 
Where's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneWhere's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind Plone
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
 
Jenkins
JenkinsJenkins
Jenkins
 
Buildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in pythonBuildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in python
 
Buildout: How to maintain big app stacks without losing your mind
Buildout: How to maintain big app stacks without losing your mindBuildout: How to maintain big app stacks without losing your mind
Buildout: How to maintain big app stacks without losing your mind
 

More from David Glick

PloneNG: What's new in Plone 4.2, 4.3, and beyond
PloneNG: What's new in Plone 4.2, 4.3, and beyondPloneNG: What's new in Plone 4.2, 4.3, and beyond
PloneNG: What's new in Plone 4.2, 4.3, and beyondDavid Glick
 
Dexterity in the Wild
Dexterity in the WildDexterity in the Wild
Dexterity in the WildDavid Glick
 
A Dexterity Intro for Recovering Archetypes Addicts
A Dexterity Intro for Recovering Archetypes AddictsA Dexterity Intro for Recovering Archetypes Addicts
A Dexterity Intro for Recovering Archetypes AddictsDavid Glick
 
Integrating Plone with E-Commerce and Relationship Management: A Case Study i...
Integrating Plone with E-Commerce and Relationship Management: A Case Study i...Integrating Plone with E-Commerce and Relationship Management: A Case Study i...
Integrating Plone with E-Commerce and Relationship Management: A Case Study i...David Glick
 
Building Content Types with Dexterity
Building Content Types with DexterityBuilding Content Types with Dexterity
Building Content Types with DexterityDavid Glick
 
When Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
When Good Code Goes Bad: Tools and Techniques for Troubleshooting PloneWhen Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
When Good Code Goes Bad: Tools and Techniques for Troubleshooting PloneDavid Glick
 

More from David Glick (6)

PloneNG: What's new in Plone 4.2, 4.3, and beyond
PloneNG: What's new in Plone 4.2, 4.3, and beyondPloneNG: What's new in Plone 4.2, 4.3, and beyond
PloneNG: What's new in Plone 4.2, 4.3, and beyond
 
Dexterity in the Wild
Dexterity in the WildDexterity in the Wild
Dexterity in the Wild
 
A Dexterity Intro for Recovering Archetypes Addicts
A Dexterity Intro for Recovering Archetypes AddictsA Dexterity Intro for Recovering Archetypes Addicts
A Dexterity Intro for Recovering Archetypes Addicts
 
Integrating Plone with E-Commerce and Relationship Management: A Case Study i...
Integrating Plone with E-Commerce and Relationship Management: A Case Study i...Integrating Plone with E-Commerce and Relationship Management: A Case Study i...
Integrating Plone with E-Commerce and Relationship Management: A Case Study i...
 
Building Content Types with Dexterity
Building Content Types with DexterityBuilding Content Types with Dexterity
Building Content Types with Dexterity
 
When Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
When Good Code Goes Bad: Tools and Techniques for Troubleshooting PloneWhen Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
When Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
 

Recently uploaded

The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideIEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideHironori Washizaki
 
UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5DianaGray10
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"DianaGray10
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...
All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...
All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...Daniel Zivkovic
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
99.99% of Your Traces Are (Probably) Trash (SRECon NA 2024).pdf
99.99% of Your Traces  Are (Probably) Trash (SRECon NA 2024).pdf99.99% of Your Traces  Are (Probably) Trash (SRECon NA 2024).pdf
99.99% of Your Traces Are (Probably) Trash (SRECon NA 2024).pdfPaige Cruz
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 

Recently uploaded (20)

The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideIEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
 
UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...
All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...
All in AI: LLM Landscape & RAG in 2024 with Mark Ryan (Google) & Jerry Liu (L...
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
99.99% of Your Traces Are (Probably) Trash (SRECon NA 2024).pdf
99.99% of Your Traces  Are (Probably) Trash (SRECon NA 2024).pdf99.99% of Your Traces  Are (Probably) Trash (SRECon NA 2024).pdf
99.99% of Your Traces Are (Probably) Trash (SRECon NA 2024).pdf
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 

Oops, where's my site?

  • 1. Oops, where's my site? How to install Plone add-ons and live to tell the tale
  • 2. Goals • Know the procedure for installing most Plone add-ons • Understand guidelines to prevent things from breaking • Recognize some common ways installation fails and know how to recover
  • 3. Starting on the same page
  • 4. The flavors of Plone installers (Available from plone.org) Windows installer Only option for Windows. OS X For Mac OS X. Doesn't require a C compiler. Unified installer Installation from source for all Unix-like systems (including OS X). Requires a C compiler to install. Your own custom buildout Most likely generated using ZopeSkel or based on a previous project. Provides the most flexibility.
  • 5. buildout root The directory that contains the rest of the installation. Windows C:Plone41 Unified installer /usr/local/Plone/zinstance or $HOME/zinstance Custom buildout Wherever you put it
  • 6. instance script Script used to start Plone: bin/instance fg Windows C:Plone41bininstance fg OS X & Unified installer ${ ${buildout_root}/bin/instance fg } or ${ ${buildout_root}/bin/client1 fg }
  • 8. multi-staged deployment • Keep at least one copy of the site separate from the production copy, to test changes. • Keep all changes in version control (svn, git, etc.) so you can reproduce your environment. • Use buildout's extends to handle differences between environments.
  • 9. Aspeli's rule of deployment Code & configuration flow from the development site to the production site; data flows from the production site to the development site.
  • 10. Back up your data before you make changes! 1. Make sure your buildout configuration is under version control. 2. Back up the data: $ bin/snapshotbackup -- or -- $ bin/backup (collective.recipe.backup is included in the Unified installer buildout.)
  • 11. Restoring from backup 1. Stop the instance 2. Use your version control system to revert to the old version of the buildout, and re-run it. 3. Restore the data: $ bin/snapshotrestore -- or -- $ bin/restore 4. Start the instance.
  • 12. The simplest backup Copy the entire buildout.
  • 14. Finding add-ons • Python Package Index (PyPI): http://pypi.python.org/pypi • Plone.org products directory: http://plone.org/products • Plone Open Comparison: http://plone.opencomparison.org
  • 16. Dependencies Simplest way to tell what it depends on is actually installing. :( Use the buildout.dumppickedversions extension: [buildout] extensions = buildout.dumppickedversions (Included in the Unified installer buildout.)
  • 17. What does it do? • Does it do some trivial customization, or introduce a brand new experimental subsystem? • Does it do anything malicious? • Is it possible to uninstall? Ask others about their experience with it (on IRC or the mailing lists).
  • 19. Buildout.cfg format Parts Each part has a header in square brackets: [buildout] Variables Each part contains multiple variables below the header: [buildout] extends = http://dist.plone.org/release/4.1.2/versions.cfg parts = instance Variables can interpolate other variables [instance] eggs = ${buildout:eggs}
  • 20. Adding PloneFormGen Add the name of the distribution to the eggs variable. Which part? [instance] eggs = Plone Products.PloneFormGen But in the Unified installer buildout the instance eggs are based on the buildout eggs: [instance] eggs = ${buildout:eggs} So you can add to buildout eggs: [buildout] eggs = Plone Products.PloneFormGen
  • 21. Run buildout $ bin/buildout For verbose info: $ bin/buildout -v Confirm it was installed Examine the instance script.
  • 22. Identifying picked versions If we used buildout.dumppickedversions, it shows us which versions were "picked": *************** PICKED VERSIONS **************** [versions] Products.PloneFormGen = 1.7b5 Products.PythonField = 1.1.3 Products.TALESField = 1.1.3 Products.TemplateFields = 1.2.5 #Required by: #Products.PloneFormGen 1.7b5 collective.js.jqueryui = 1.8.5.2
  • 23. Pinning picked versions Add them to the versions buildout part: [versions] Products.PloneFormGen = 1.7b5 Products.PythonField = 1.1.3 Products.TALESField = 1.1.3 Products.TemplateFields = 1.2.5 #Required by: #Products.PloneFormGen 1.7b5 collective.js.jqueryui = 1.8.5.2 Now if you re-run buildout, it should show no picked versions.
  • 24. Inferior pinning Why not do this? [buildout] eggs = Products.PloneFormGen==1.7b5 Because the version doesn't get used if PloneFormGen is a dependency of something else.
  • 25. Being strict about pinning Disallow picked versions: [buildout] allow-picked-versions = false
  • 26. Starting Zope Use the instance script in foreground mode to make failures obvious: $ bin/instance fg
  • 27. Activating the add-on Site Setup > Add-ons
  • 29. Installing Dexterity [buildout] extends = http://good-py.appspot.com/release/dexterity/1.0.3?plone=4.1.2 [instance] eggs = plone.app.dexterity
  • 30. good-py • A tool for building and distributing known good sets • One KGS can extend another • A KGS can be constrained by a particular platform
  • 31. Upgrading an add-on 1. Update the version pins for the add-on and any dependencies. 2. Re-run buildout and restart Zope. 3. Go to Add-ons control panel and check if there are upgrade steps to run.
  • 32. What could possibly go wrong?
  • 33. Incompatible version pins Example: The version, 1.1.2, is not consistent with the requirement, 'plone.app.jquerytools>=1.2dev'. While: Installing instance. Error: Bad version 1.1.2 Reason: PloneFormGen requires plone.app.jquerytools >= 1.2dev, but I have it pinned to 1.1.2. How did I know?: Getting required 'collective.js.jqueryui' required by Products.PloneFormGen 1.7b6. Picked: collective.js.jqueryui = 1.8.13.1 The version, 1.1.2, is not consistent with the requirement, 'plone.app.jquerytools>=1.2dev'. While: Installing instance. Error: Bad version 1.1.2 Solution: Upgrade plone.app.jquerytools (with care).
  • 34. PyPI times out Symptom: Error message about the egg not being available. Solution: Temporarily use a mirror of the package index: [buildout] index = http://d.pypi.python.org/simple
  • 35. ZCML not loaded Symptom: The product you installed doesn't show up in the Add-ons control panel. Reason: Many add-ons "announce" themselves to Plone so that Plone loads their configuration, but some are missing this. Solution: Include the package's ZCML in buildout, re-run buildout, and restart: [instance] zcml = my.package
  • 36. Other errors while starting up Seeking help: • Send the full traceback to the add-on's author • Ask in #plone channel on IRC • Ask on the plone-users mailing list
  • 39. "Dry run mode" for buildout
  • 40. Communal Known Good Set (KGS)
  • 41. UI for installing packages