Your SlideShare is downloading. ×
Oops, where's my site?
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Oops, where's my site?


Published on

How to install Plone add-ons and live to tell the tale

How to install Plone add-ons and live to tell the tale

Published in: Technology

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Oops, wheres my site?How to install Plone add-onsand 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 installer Only option for Windows.OS X For Mac OS X. Doesnt 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 rootThe directory that contains the rest of the installation.Windows C:Plone41Unified installer /usr/local/Plone/zinstance or $HOME/zinstanceCustom buildout Wherever you put it
  • 6. instance scriptScript used to start Plone:bin/instance fgWindows C:Plone41bininstance fgOS X & Unified installer ${ ${buildout_root}/bin/instance fg } or ${ ${buildout_root}/bin/client1 fg }
  • 7. First, do no harm
  • 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 buildouts extends to handle differences between environments.
  • 9. Aspelis rule of deploymentCode & configuration flow from the development site to the production site; dataflows 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 backup1. Stop the instance2. 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/restore4. Start the instance.
  • 12. The simplest backupCopy the entire buildout.
  • 13. Preparing to install
  • 14. Finding add-ons • Python Package Index (PyPI): • products directory: • Plone Open Comparison:
  • 15. Plone version compatibility
  • 16. DependenciesSimplest 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).
  • 18. A simple installation
  • 19. Buildout.cfg formatParts Each part has a header in square brackets: [buildout]Variables Each part contains multiple variables below the header: [buildout] extends = parts = instance Variables can interpolate other variables [instance] eggs = ${buildout:eggs}
  • 20. Adding PloneFormGenAdd the name of the distribution to the eggs variable.Which part?[instance]eggs = Plone Products.PloneFormGenBut in the Unified installer buildout the instance eggs are based on thebuildout eggs:[instance]eggs = ${buildout:eggs}So you can add to buildout eggs:[buildout]eggs = Plone Products.PloneFormGen
  • 21. Run buildout$ bin/buildoutFor verbose info:$ bin/buildout -vConfirm it was installedExamine the instance script.
  • 22. Identifying picked versionsIf we used buildout.dumppickedversions, it shows us which versions were"picked":*************** PICKED VERSIONS ****************[versions]Products.PloneFormGen = 1.7b5Products.PythonField = 1.1.3Products.TALESField = 1.1.3Products.TemplateFields = 1.2.5#Required by:#Products.PloneFormGen 1.7b5collective.js.jqueryui =
  • 23. Pinning picked versionsAdd them to the versions buildout part:[versions]Products.PloneFormGen = 1.7b5Products.PythonField = 1.1.3Products.TALESField = 1.1.3Products.TemplateFields = 1.2.5#Required by:#Products.PloneFormGen 1.7b5collective.js.jqueryui = if you re-run buildout, it should show no picked versions.
  • 24. Inferior pinningWhy not do this?[buildout]eggs = Products.PloneFormGen==1.7b5Because the version doesnt get used if PloneFormGen is a dependency ofsomething else.
  • 25. Being strict about pinningDisallow picked versions:[buildout]allow-picked-versions = false
  • 26. Starting ZopeUse the instance script in foreground mode to make failures obvious:$ bin/instance fg
  • 27. Activating the add-onSite Setup > Add-ons
  • 28. A complex installation
  • 29. Installing Dexterity[buildout]extends =[instance]eggs =
  • 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-on1. 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 pinsExample:The version, 1.1.2, is not consistent with the requirement,>=1.2dev.While: Installing instance.Error: Bad version 1.1.2Reason: PloneFormGen requires >= 1.2dev, but I have itpinned to 1.1.2.How did I know?:Getting required collective.js.jqueryui required by Products.PloneFormGen 1.7b6.Picked: collective.js.jqueryui = version, 1.1.2, is not consistent with the requirement,>=1.2dev.While: Installing instance.Error: Bad version 1.1.2Solution: Upgrade (with care).
  • 34. PyPI times outSymptom: Error message about the egg not being available.Solution: Temporarily use a mirror of the package index:[buildout]index =
  • 35. ZCML not loadedSymptom: The product you installed doesnt show up in the Add-ons controlpanel.Reason: Many add-ons "announce" themselves to Plone so that Plone loads theirconfiguration, but some are missing this.Solution: Include the packages ZCML in buildout, re-run buildout, and restart:[instance]zcml = my.package
  • 36. Other errors while starting upSeeking help: • Send the full traceback to the add-ons author • Ask in #plone channel on IRC • Ask on the plone-users mailing list
  • 37. Room for improvement
  • 38. plonelint tool
  • 39. "Dry run mode" for buildout
  • 40. Communal Known Good Set (KGS)
  • 41. UI for installing packages
  • 42. Questions