The zopeproject contains tools and scripts for creating development sandboxes for web applications that primarily use Zope.
You can start a new Zope-based web application from scratch with just two commands:
$ easy_install zopeproject
$ zopeproject HelloWorld
The second command will ask you for a name and password for an initial administrator user. It will also ask you where to put the Python packages ("eggs") that it downloads. This way multiple projects created with zopeproject can share the same packages and won't have to download them each time (see also Sharing eggs among sandboxes below).
(Note: Depending on how they installed Python, Unix/Linux users may have to invoke easy_install with sudo. If that's not wanted or possible, easy_install can be invoked with normal privileges inside a virtual-python or workingenv).
After asking these questions, zopeproject will download the zc.buildout package that will be used to build the sandbox, unless it is already installed locally. Then it will invoke buildout to download Zope and its dependencies. If you're doing this for the first time or not sharing packages between different projects, this may take a while.
When zopeproject is done, you will find a typical Python package development environment in the HelloWorld directory: the package itself (helloworld) and a setup.py script. There's also a bin directory that contains scripts, such as paster which can be used to start the application:
$ cd HelloWorld
$ bin/paster serve deploy.ini
You may also use the helloworld-ctl script which works much like the zopectl script from Zope instances:
$ bin/helloworld-ctl foreground
After starting the application, you should now be able to go to http://localhost:8080 and see the default start screen of Zope. You will also be able to log in with the administrator user account that you specified earlier.
- Use Zope 3.4.0 KGS in the default deployment buildout.cfg.
- Added blobstorage proxy to default ZODB config in zope.conf.
- Use ZopeSecurityPolicy from zope.securitypolicy instead of zope.app.securitypolicy, which is a deprecated place for that.
- The zope.securitypolicy uses a special role name, the zope.Anonymous that every user has, define it in site.zcml and grant view permissions to it, instead of zope.Anybody unauthenticated group.