Posts Tagged ‘Plone’

Hi all,

after many months and working hours, I finally very happy to comunicate about a new release of munin_plugins. 

This version is the forth major release and it is a very heavy refator of this software. First of all, the sources are available on GitHub (as usual) and on Pypi (only verions >=4). I’m very excited about the last one.

Change log:

 

  • egg
  • removed symlinks with complex naming 
  • only one sensor for all nginx measuring
  • expandable nginx plugin developing class
  • plone sensors based on psutil (really hard to do)
  • multigraph usage
  • cache a lot

To submit issues, you ca use GitHub issue tracker.

Cheers.

 

Advertisements

Hi All,

In these days I studied about HA of Plone. Some years ago I tested the same things using Oracle in an Enterprise context, so with licenced support of Oracle. Oracle has a client called instantclient, who hide any problem about the presence of more than a dbserver, so relstorage makes no difference between a local db and a cluster. So it was very easy.

With Postgres there’s pgpool, a tool to make the same thing, but I want to take some time to study repmgr, some kind of wrapper around PostgreSQL Hot standby.

The configuration is not so complicated but a little bit long and I don’t want to repeat every step, so: this is the guide about configure repmgr and postgresql:

https://github.com/2ndQuadrant/repmgr/blob/master/autofailover_quick_setup.rst

About this guide, I have to say a couple of words:

  • promote_command.sh is never shown but it may be something like this:
#!/bin/bash
repmgr -f /etc/repmgr/repmgr.conf --verbose standby promote
/etc/init.d/postgresql restart
  • repmgr try to use pg_ctl: in debian this is not necessary available, so after clone command or promote (see before) is necessary to restart postgres by hand

If everything goes well, we now have 2 dbservers in Master/Slave mode using Streaming Replication. Well a few steps are necessary:

  • take a buildout for Plone: a new one or your favorite
  • locate the instance or the instances (sections with recipe plone.recipe.zope2instance)
  • add as usual, the relstorage support (be sure you get at least 1.5.1)
  • remove from DSN relstorage option, ‘host=…’
  • add option replica-conf (see relstorage documentation)
  • write a file in the root of buildout with the list of dbase ips, one for line
  • Buildout and enjoy

To get a really HA, you have to build at least two dbservers and two plone servers with public ip and a round robin DNS (are always in HA) to manage two or more ips for the same domain. To avoid the single point of failure is necessary to get a real HA.

Cheers

Nginx is the actual choice, talking about webserver. It is easy to configure and can serve high levels of parallel requests. Apache, long loved webserver, is losing fan… until now.

Google develop a very interesting module called pagespeed who transform a site in a optimized site using PageSpeed,analyzer. A simple example would be images: every time you analyze a site, PageSpeed shown you how your images are bad, fat a bandwidth eager. This module perform the optimization on the image and keep it a local cache to serve any request.

The site you have to read is https://developers.google.com/speed/pagespeed/mod.

Setup is very easy, use apt, rpm or what_you_like toi install Apache. After that, you can download mod_pagespeed directly from the previous url, and install it.

Now you are ready to fight: start your backend, start apache and test it. Usually I user pagespeed plugin for firefox, because the one for chromium doesn’t works.

If you use Plone as backend, many problems are easy fixed installing plone.app.caching. Strong caching for static resources and no-cache for else may be a good way. Remember to enable gzip compression. Forget all about cache invalidation, it doesn’t works and I’m able to explain why. Contact me if you want to know.

After setting content expiration, the big problem is optimize all images: this link show you how you ca do that cut & pasting few rows in apache cfg file.

My test was made using a production website that obtain 84/100 with pagespeed using varnish as frontend and Plone as backend. I installed apache instead varnish and applied the image optimization: the ne score is 93/100.

Nice fly for 15 working minutes.

Diazo: advanced use

Posted: 09/07/2012 in Develop
Tags: , , , ,

Here, there’a an article related an advanced use of Diazo. Soon, I will translate it from italian.

Chameleon and Plone

Posted: 16/01/2012 in Develop
Tags: , , ,

Plone uses page templates in a intensive way, so they have to work very fast. Chameleon is not a new solution for this kind of problems but it works on a Plone Vanilla out of the box. Some years ago I tested it on Plone 3.x but too much work was needed to fix all page templates, so it was aborted. I do not want to spend a time to explain how it works, you can read all about that at pagetemplates.org.

I made some tests comparing Plone Vanilla with Plone + five.pt and these are the results:

Plone Vanilla
 
Plone Five.pt
(first call)
Plone Five.pt
(following calls)
Real 2.075 8.292 1.699
User 0.013 0.007 0.010
Sys 0.017 0.027 0.023

Times are in seconds and they are a result multiple invocation of

$ time wget -r -np http://plone.me:8080/PloneSite

It is impressive, 15% faster than a Vanilla. A great strike in the match Compilers vs Interpreters 🙂 .

Cheers.

collective.plone.mailer

Posted: 15/11/2011 in Develop
Tags: , ,

Hi all,

after publication of collective.plone.reader (see previous post for details) I published an extension called collective.plone.mailer. This one looks for all aggregators and for each ones create periodically an email reporting last updates to the owner. Recurrence is configurable for each aggregator.

There’s no configuration available on site, but every user can choose if he wants to receive the email.

It was develop for plone 3.5 so I’m no sure it works correctly on other versions.

Please report any experience.

Cheers.

collective.plone.reader

Posted: 15/11/2011 in Develop
Tags: , ,

Hi All,

I uploaded on github a project of mine called collective.plone.reader.

This product realize a something like a plone topic (collection) not based on criteria but folder subscription.

It is very easy to use:

  • add to your working plone this product
  • install into plone the product (quickinstall)
  • every user needs to create an aggregator (portal type) keeping ownership

Now every user can navigate through the site and add contents to the aggregator using the related action (a star icon).

If you need, you can manipulate the setup of the product using portal_properties: access to ZMI/portal_properties, select  collective.plone.reader_properties properties sheet.

Here you can customize what you like:

  • enabled_types: list of content types you want to aggregate
  • visible_contents: list of visible contents in the aggregator
  • mapping_content_to_index: list of mapping from portal types to catalog indexes, this is very useful when you use facets
  • other_options: list of options for solr, they are static

It was develop for plone 3.5, so I’m not sure it works correctly on following versions, if you got an experience please contact me.

An extension is available, it is called collective.plone.mailer. This package allows to send periodically an e-mail to the owner of an aggregator a report related aggregated contents.

Cheers.