A free open source content management system and web application framework. The most widely deployed mod_perl application on the planet.
Perl JavaScript CSS
Failed to load latest commit information.
docs Revert "testenvironment does not check for correct perl version (#123… Nov 12, 2012
eg Add a missing newline. Jun 24, 2010
etc Remove admin console off link since it's trapped by the admin console… Sep 11, 2013
sbin deal with Package::Stash changing its API Jan 7, 2014
selenium added install parameter Sep 20, 2012
share Revert "when flipping between Tree and View tabs with edit on, clear … Sep 12, 2013
t remove load of nonexistant, unused modules from a test Nov 17, 2012
www New Content in Tree view needed to use showView() instead of gotoAsse… Sep 27, 2013
.gitignore Fixed #10967: Using a round bracket (parenthesis) in a macro. Unbalan… Sep 14, 2009
README more details in the concise instructions Apr 16, 2012
TODO Minor improvements Apr 18, 2010
app.psgi use Plack::Util instead of relying on someone leaking it. Feb 10, 2012
benchmark.pl Logging fallback Apr 13, 2010


This is the PSGI branch of WebGUI8

To try this out:

 0) Start from WebGUI 7.10.23 or the example .conf and create.sql that comes with WebGUI 8.
 1) Run testEnvironment.pl to install all new requirements.
 2) Get a new wgd from http://haarg.org/wgd
 3) Copy etc/WebGUI.conf.original to www.whatever.com.conf; edit it and set dbuser, dbpass, 
    dsn, uploadsPath (eg to /data/domains/www.example.com/public/uploads/), extrasPath, 
    maintenancePage and siteName
 4) Set WEBGUI_CONFIG to point at your new config file
 5) $ export PERL5LIB='/data/WebGUI/lib'
 6) $ wgd reset --upgrade
 7) $ cd /data/WebGUI (or whereever you unpacked it)
 8) $ rsync -r -a (or cp -a) /data/WebGUI/www/extras /data/domains/www.example.com/public/
    (from whereever you unpacked it to whereever you pointed extrasPath to; note 'extras'
    goes inside 'public', both under where extrasPath points to)

To start it:

 8) $ plackup app.psgi

See docs/install.txt for more detailed installation instructions.

Currently, the best performance is achieved via:

 plackup -E none -s Starman --workers 10 --disable-keepalive

You can benchmark your server via:

 ab -t 3 -c 10 -k http://dev.localhost.localdomain:5000/ | grep Req

I'm currently getting 370 requests/second, whereas I'm getting 430/second on the non-PSGI WebGUI8 branch.


* The root level app.psgi file loads all the config files found and
  loads the site specific psgi file for each, linking them to the
  proper host names.
* The site psgi file uses the WEBGUI_CONFIG environment variable to find the config.
* It instantiates the $wg WebGUI object (one per app).
* $wg creates and stores the WebGUI::Config (one per app)
* $wg creates the $app PSGI app code ref (one per app)
* WebGUI::Middleware::Session is wrapped around $app at the outer-most layer so that it can open and
  close the $session WebGUI::Session. Any other wG middleware that needs $session should go in between
  it and $app ($session created one per request)
* $session creates the $request WebGUI::Session::Request and $response WebGUI::Session::Response
  objects (one per request)