The WebGUI Runtime Environment

Roy Johnson Plain Black Corporation What is the WRE?

• All the supporting software required to host WebGUI

• Apache 2 / Mod_Perl 2

• MySQL 5

• Supporting Modules

• AWStats

• Utilities for administering WebGUI Sites Benefits

• Easier Installation

• Download

• Unzip

• Run Setup

• Done! Benefits

• Standardization

• Site Names

• Filenames

• Paths

• Templated Configuration Files Benefits

• Performance

• Pre-tuned Configuration

• Reverse Proxy by Default

• Mod_deflate Benefits

• Easier Administration

• 30 Seconds to create a site

• Automated Log Rotation / Backups / WebGUI Upgrades

• Service Monitoring and Automated Recovery with Notifications

• Demo ready (your own demo.plainblack.com) Binary Distributions Available

• Red Hat Enterprise Linux / Fedora Core 3/4

• Debian

• Mac OS X (PPC and i686)

• SuSe 9.3

• You can compile from source (and contribute it!) Installing with a WRE Binary

• Download for your OS and Unzip

• Create a data folder on / and copy wre folder to it

• Add a user, make it own /data/wre/prereqs/mysql recursively

• Shutdown and disable any prexisting Apache or Mysql from your distro.

• Remove or rename /etc/my.cnf if it exists

• Run Setup

• Start the WRE! What did Setup just do?

• Optionally setup a demo site for you

• Optionally setup a development environment for you

• Optionally Setup web statistics

• Downloaded and installed WebGUI Finishing up a Binary Install

• Setup your cron jobs

• Log Rotator

• Service Monitors

• Web Stats

• Demo Cleanup

• Use addsite script to setup a WebGUI

• Let’s install the WRE! Installing WRE From Source

• Ninjas Only

• Make sure you have the standard GNU build tools

• GCC/glibc/tar/gzip/binutils/bash/make/automake/autoconf

• Download wre-prereqs and wre-source to your home directory

• Unzip wre-source and wre-prereqs

• Move the prereqs folder into the wrebuild folder Installing WRE From Source

• Create a /data folder and make sure you have +rw to it

• Run build.sh

• Compiles all the dependencies

• Apache / MySQL / Perl / Perl Modules, etc

• Copies all scripts into place

• Can run one or more build manually (see --help for options)

• ./build.sh --perl --apache Installing WRE From Source

• Go watch a DVD or two =)

• When the build script finishes, zip up your build

• tar -cv /data/wre | gzip -c > wre-0.7.1-mydistro.tar.gz

• You want this for a few reasons

• Backup, you don’t want to build again if you have to setup a new server

• You can contribute this build so others can use it

• Don’t run setup until after you zip up your build! Finishing up a Source Install

• Same as finishing up a Binary Install

• Run setup

• Setup cron jobs

• Run addsite

Upgrading the WRE

• You need a WRE Binary to upgrade

• Download the latest WRE Binary for your distro

• If you built from source, you have to build the latest version

• Can’t do this on your production machine!

• You have a binary when you finish the zip step of a source build

• Contribute it! Upgrading the WRE

• Unzip the latest WRE Binary in /tmp

• Checkout the upgrade, install, and changelog documentation

• Disable WRE Monitor from crontab

• Shut down WRE (rc.webgui stop)

• Copy the new wre folder over the old one

• Run setup

• Update templates, config files as needed. Setup will tell you which ones. Upgrading the WRE

• Start the WRE

• Enable WRE Monitor in Cron

• Done! SSL with the WRE

• SSL Support is built into the WRE

• All you have to do is configure it for the domain you want to secure

• Step 1 -- Create a folder for your cert files

• Step 2 -- Generate a Certificate Signing Request (CSR) for the domain

• Step 3 -- Give your CSR to a trusted Certificate Authority (CA) for a cert

• sign your own cert if you don’t mind getting security errors in browser

• Step 4 -- Add a virtual host entry to the sites modproxy config file SSL with the WRE

• Step 5 -- Restart modproxy (rc.webgui restartmodproxy)

• Step 6 -- Goto https://www.yourdomain.com!

• Questions?

PHP with the WRE

• Install mod_php module into modperl instance of apache

• Two common configurations

• 1 -- User needs to serve a PHP based application on it’s own domain

• 2 -- User needs to serve PHP content on a WebGUI domain PHP with the WRE

• Serving PHP on it’s own domain (No Reverse Proxy)

• Install mod_php and enable it in httpd.modproxy.conf

• Add a virtualhost entry to /data/wre/etc

• www.sitename.com.modproxy

• Normal Apache Virtual Host

• Setup PHP to handle content as you wish

PHP with the WRE

• Serving PHP on it’s own domain (with Reverse Proxy)

• Install mod_php and enable it in httpd.modperl.conf

• Add two virtualhost entries to /data/wre/etc

• www.sitename.com.modproxy

• Will handle initial request and static content

• Will Proxy everything else to modperl instance (running mod_php) PHP with the WRE

• Serving PHP on it’s own domain (with Reverse Proxy)

• www.sitename.com.modperl

• Will contain PHP configuration

• Will handle PHP content and send it back to modproxy instance

• This works in exactly the same way as WebGUI/MP2 site setup

PHP with the WRE

• Serving PHP content in a WebGUI Domain

• Basic Setup is the same a PHP on it’s own domain with Reverse Proxy

• Differences:

• WebGUI passthru URLs allow the request to be served by PHP

• You don’t add vhost files to /data/wre/etc

• Use Alias directives to specify where the content is served from (on the FS) PHP with the WRE

• Questions? Load Balancing with the WRE

• Basic Idea

• Use a load balancer to split up the requests

• Hardware, Round Robin DNS, etc

• Apache on two or more servers

• Receives request from balancer

run on their own server(s)

• Apache Servers pull static content from a file server (or SAN) Load Balancing with the WRE

• Keeping it all in Sync

• Multiple DB Servers use MySQL Replication

• File Store is Centralized so it stays synchronized

• Use FibreChannel, NFS, or SMB to mount /data on your apache servers

Questions?

• Let’s setup the WRE