You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by bu...@apache.org on 2012/12/11 16:16:54 UTC

svn commit: r841722 - in /websites/staging/vcl/trunk/content: ./ docs/UpgradePreviousVersions/UpgradeFrom2.2to2.3.1.html

Author: buildbot
Date: Tue Dec 11 15:16:52 2012
New Revision: 841722

Log:
Staging update by buildbot for vcl

Added:
    websites/staging/vcl/trunk/content/docs/UpgradePreviousVersions/UpgradeFrom2.2to2.3.1.html
Modified:
    websites/staging/vcl/trunk/content/   (props changed)

Propchange: websites/staging/vcl/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Dec 11 15:16:52 2012
@@ -1 +1 @@
-1420203
+1420214

Added: websites/staging/vcl/trunk/content/docs/UpgradePreviousVersions/UpgradeFrom2.2to2.3.1.html
==============================================================================
--- websites/staging/vcl/trunk/content/docs/UpgradePreviousVersions/UpgradeFrom2.2to2.3.1.html (added)
+++ websites/staging/vcl/trunk/content/docs/UpgradePreviousVersions/UpgradeFrom2.2to2.3.1.html Tue Dec 11 15:16:52 2012
@@ -0,0 +1,327 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/css/vcl.css" rel="stylesheet" type="text/css">
+  <link href="/css/code.css" rel="stylesheet" type="text/css">
+  <title>Apache VCL - Upgrade From 2.2 to 2.3.1</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+  <div id="sitetitle">
+    <table width="100%" border="0" cellspacing="0" cellpadding="5">
+      <tr>
+         <td><a href="/index.html"><img src="/img/vcl-logo.png" height="100" align="left" alt="Apache VCL logo"></a></td>
+         <td><a href="http://www.apache.org"><img src="/img/asf-logo.png" align="right" alt="Apache Software Foundation logo"></a></td>
+      </tr>
+    </table>
+  </div>
+
+  <div id="navigation"> 
+  <ul>
+<li>Information<ul>
+<li><a href="/info/about.html">What is VCL?</a></li>
+<li><a href="/info/features.html">Features</a></li>
+<li><a href="/info/architecture.html">Architecture</a></li>
+<li><a href="/info/use-cases.html">Use Cases</a></li>
+<li><a href="/downloads/download.cgi">Download</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0.html">License</a></li>
+<li><a href="/info/faq.html">FAQ</a></li>
+</ul>
+</li>
+<li><a href="/docs/index.html">Documentation</a><ul>
+<li><a href="/docs/using-vcl.html">Using VCL</a></li>
+<li><a href="/docs/image-creation.html">Image Creation</a></li>
+<li><a href="/docs/administration.html">Administration</a></li>
+<li><a href="/docs/installation.html">Installation</a></li>
+<li><a href="/docs/deployment-planning.html">Deployment Planning</a></li>
+</ul>
+</li>
+<li><a href="/comm/index.html">Community</a><ul>
+<li><a href="/comm/index.html#getInvolved">Getting Involved</a></li>
+<li><a href="/comm/index.html#mail-list">Mailing Lists</a></li>
+<li><a href="/comm/index.html#how-do-i-join-the-project">How can I Join</a></li>
+<li><a href="/comm/wiki.html">Wiki</a></li>
+<li><a href="/dev/index.html">Development</a><ul>
+<li><a href="/dev/jira.html">Issue Tracking</a></li>
+<li><a href="/dev/code-documentation.html">Code Documentation</a></li>
+<li><a href="/dev/roadmap.html">Roadmap</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="http://www.apache.org">Apache Software Foundation</a><ul>
+<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+<li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+</ul>
+</li>
+</ul>
+  </div>
+  
+  <div id="content">
+    <h1 class="title">Upgrade From 2.2 to 2.3.1</h1>
+    <p>This page provides information on how to upgrade from VCL 2.2 to VCL 2.3.1. Please note it only applies for the upgrade from 2.2 to 2.3.1, 
+this may or may not work for other versions.</p>
+<p><strong>The basic steps that will be performed</strong></p>
+<ul>
+<li>Download and Extract 2.3.1 code</li>
+<li>Shutdown httpd and vcld services</li>
+<li>Create backup of vcl database</li>
+<li>Update mysql schema</li>
+<li>Update Web code, create a backup, copy in new, make changes</li>
+<li>Restart httpd service</li>
+<li>Update Management node vcl code, create a backup, copy in new, make changes</li>
+<li>Restart vcld service</li>
+</ul>
+<h1 id="detailed-steps-for-upgrade-from-22-to-231">Detailed steps for upgrade from 2.2 to 2.3.1</h1>
+<ol>
+<li>follow instructions on VCL 2.3.1 Release page to download and verify apache-VCL-2.3.1.tar.bz2 and put in in /root</li>
+<li>
+<p><strong>extract VCL 2.3.1 code</strong></p>
+<div class="codehilite"><pre><span class="n">tar</span> <span class="n">xjf</span> <span class="n">apache</span><span class="o">-</span><span class="n">VCL</span><span class="o">-</span><span class="mf">2.3.1</span><span class="o">.</span><span class="n">tar</span><span class="o">.</span><span class="n">bz2</span>
+</pre></div>
+
+
+</li>
+<li>
+<p><strong>Shutdown</strong> the httpd and vcld services</p>
+<div class="codehilite"><pre><span class="n">service</span> <span class="n">httpd</span> <span class="n">stop</span> <span class="ow">or</span> <span class="sr">/etc/i</span><span class="n">nit</span><span class="o">.</span><span class="n">d</span><span class="o">/</span><span class="n">httpd</span> <span class="n">stop</span>
+<span class="n">service</span> <span class="n">vcld</span> <span class="n">stop</span> <span class="ow">or</span> <span class="sr">/etc/i</span><span class="n">nit</span><span class="o">.</span><span class="n">d</span><span class="o">/</span><span class="n">vcld</span> <span class="n">stop</span>
+</pre></div>
+
+
+</li>
+<li>
+<p>We will <strong>create a backup of the vcl database</strong>. This will provide a restore point if necessary.</p>
+<div class="codehilite"><pre><span class="n">mysqldump</span> <span class="n">vcl</span> <span class="o">&gt;</span> <span class="o">~/</span><span class="n">vcl</span><span class="o">-</span><span class="n">pre2</span><span class="mf">.3.1</span><span class="o">-</span><span class="n">upgrade</span><span class="o">.</span><span class="n">sql</span>
+</pre></div>
+
+
+</li>
+<li>
+<p>This step <strong>updates the mysql schema</strong>. <em>Note</em>: A new resource group is added in update-vcl.sql - <strong>all profiles</strong>. 
+Access to manage the group is added to the VCL-&gt;admin node in the privilege tree if that node exists. If not, you will 
+need to add it manually after starting httpd again. To add it manually, pick a node in the privilege tree, scroll to 
+Resources, click Add Resource Group, select serverprofile/all profiles from the drop-down box, check available, 
+administer, manageGroup, and manageMapping, and click Submit New Resource Group.</p>
+<div class="codehilite"><pre><span class="n">cd</span> <span class="sr">/root/</span><span class="n">apache</span><span class="o">-</span><span class="n">VCL</span><span class="o">-</span><span class="mf">2.3.1</span>
+<span class="n">mysql</span> <span class="n">vcl</span> <span class="o">&lt;</span> <span class="n">mysql</span><span class="o">/</span><span class="n">update</span><span class="o">-</span><span class="n">vcl</span><span class="o">.</span><span class="n">sql</span>
+</pre></div>
+
+
+</li>
+<li>
+<p>Grant CREATE TEMPORARY TABLES to mysql user
+The web code now requires access to create temporary tables in mysql. You need to grant the user your web code uses 
+to access mysql the "CREATE TEMPORARY TABLES" permission. Look at the secrets.php file in your web code for the user 
+and hostname. For example, if your web code is installed at /var/www/html/vcl, your secrets.php file would be 
+/var/www/html/vcl/.ht-inc/secrets.php. Look for $vclhost and $vclusername. The secrets.php file might have something like:</p>
+<div class="codehilite"><pre><span class="nv">$vclhost</span> <span class="o">=</span> <span class="s">&#39;localhost&#39;</span><span class="p">;</span>
+<span class="nv">$vcluser</span> <span class="o">=</span> <span class="s">&#39;vcluser&#39;</span><span class="p">;</span>
+</pre></div>
+
+
+</li>
+<li>
+<p>Then, you need to issue the grant command to mysql. Using the values from above as examples, connect to mysql and then issue the grant command:</p>
+<div class="codehilite"><pre><span class="n">mysql</span>
+<span class="n">GRANT</span> <span class="n">CREATE</span> <span class="n">TEMPORARY</span> <span class="n">TABLES</span> <span class="n">ON</span> <span class="sb">`vcl`</span><span class="o">.*</span> <span class="n">TO</span> <span class="s">&#39;vcluser&#39;</span><span class="nv">@</span><span class="err">&#39;</span><span class="nv">localhost</span><span class="err">&#39;</span><span class="p">;</span>
+<span class="nb">exit</span>
+</pre></div>
+
+
+</li>
+<li>
+<p><strong>Update the web code</strong>. This step we will move the 2.2 web directory out of the way, so we can copy in the new 
+web code base. After copying in the new code, we will migrate your configuration changes. These instructions assume 
+that you installed the vcl web code at /var/www/html/vcl. If you installed it elsewhere, replace /var/www/html/vcl 
+with your vcl web root.</p>
+<div class="codehilite"><pre><span class="n">cd</span> <span class="sr">/var/</span><span class="n">www</span><span class="o">/</span><span class="n">html</span>
+<span class="n">mv</span> <span class="n">vcl</span> <span class="o">~/</span><span class="n">vcl_2</span><span class="mf">.2_</span><span class="n">web</span>
+</pre></div>
+
+
+</li>
+<li>
+<p><strong>Copy the new code</strong> in place</p>
+<div class="codehilite"><pre><span class="n">cd</span> <span class="sr">/root/</span><span class="n">apache</span><span class="o">-</span><span class="n">VCL</span><span class="o">-</span><span class="mf">2.3.1</span>
+<span class="n">cp</span> <span class="o">-</span><span class="n">r</span> <span class="n">web</span> <span class="sr">/var/</span><span class="n">www</span><span class="sr">/html/</span><span class="n">vcl</span>
+</pre></div>
+
+
+</li>
+<li>
+<p><strong>Copy your 2.2 config files</strong></p>
+<div class="codehilite"><pre><span class="n">cd</span> <span class="o">~</span><span class="sr">/vcl_2.2_web/</span><span class="o">.</span><span class="n">ht</span><span class="o">-</span><span class="n">inc</span>
+<span class="n">cp</span> <span class="n">conf</span><span class="o">.</span><span class="n">php</span> <span class="n">secrets</span><span class="o">.</span><span class="n">php</span> <span class="n">pubkey</span><span class="o">.</span><span class="n">pem</span> <span class="nb">keys</span><span class="o">.</span><span class="n">pem</span> <span class="sr">/var/</span><span class="n">www</span><span class="sr">/html/</span><span class="n">vcl</span><span class="o">/.</span><span class="n">ht</span><span class="o">-</span><span class="n">inc</span>
+</pre></div>
+
+
+</li>
+<li>
+<p><strong>Make the maintenance directory writable by the web server user</strong>. Normally this is the apache user,  if using a 
+different user change below cmd accordingly.</p>
+<div class="codehilite"><pre><span class="nb">chown</span> <span class="n">apache</span> <span class="sr">/var/</span><span class="n">www</span><span class="sr">/html/</span><span class="n">vcl</span><span class="sr">/.ht-inc/m</span><span class="n">aintenance</span>
+</pre></div>
+
+
+</li>
+<li>
+<p><strong>Make changes to conf.php</strong>:</p>
+<p>a. A new user group permission that controls who can manage block allocations globally or for a specific affiliation 
+has been added. It can be granted to any user group under Privileges-&gt;Additional User Permissions-&gt;Manage Block Allocations. 
+Users with this permission are notified of new block allocation requests. <strong>Remove the following from conf.php</strong>.</p>
+<div class="codehilite"><pre>    <span class="nv">$blockNotifyUsers</span>
+</pre></div>
+
+
+<p>b. A new user group permission that controls who can look up users globally or for a specific affiliation has been 
+added. It can be granted to any user group under Privileges-&gt;Additional User Permissions-&gt;User Lookup. Users with this 
+permission can look up information about other users. <strong>Remove the following from conf.php</strong> </p>
+<div class="codehilite"><pre>    <span class="nv">$userlookupUsers</span>
+</pre></div>
+
+
+<p>c. <strong>Multilingualization</strong> has been added VCL. So, <strong>DEFAULTLOCALE</strong> has been added to conf.php to set the default 
+locale. <strong>Add the following to conf.php</strong>, changing en_US if needed to match your locale. You can look in 
+/var/www/html/vcl/locale to see which ones are available.</p>
+<div class="codehilite"><pre>    <span class="n">define</span><span class="p">(</span><span class="s">&quot;DEFAULTLOCALE&quot;</span><span class="p">,</span> <span class="s">&quot;en_US&quot;</span><span class="p">);</span>
+</pre></div>
+
+
+<p>d. Users authenticated using Shibboleth without also having an LDAP server can now be added before they log in. <strong>Add 
+the following to conf.php</strong>  If you are using Shibboleth and would like to be able to add users to groups before the user 
+has ever logged in to VCL, you can set this to 1. However, please note that if you typo the userid, there is no way to 
+verify it, and the user will be added with the typoed userid.</p>
+<div class="codehilite"><pre>    <span class="n">define</span><span class="p">(</span><span class="s">&quot;ALLOWADDSHIBUSERS&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+</pre></div>
+
+
+<p>e. LDAP related items have been simplified in the code using additional options in $authMechs. For any LDAP entries, 
+add two options. "lookupuserbeforeauth" is used if you need VCL to look up the full DN of a user and use that when doing 
+the bind that authenticates the user (if you don't know what this means, leave it set to 0). If you need to set it to 1, 
+then you will need to set "lookupuserfield" to what LDAP attribute to use when looking up the user's DN 
+(typically either 'cn', 'uid', or 'samaccountname'). In conf.php, <strong>Add the following to each LDAP</strong> array you have in the $authMech array.</p>
+<div class="codehilite"><pre>    <span class="s">&quot;lookupuserbeforeauth&quot;</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="p">,</span>
+    <span class="s">&quot;lookupuserfield&quot;</span> <span class="o">=&gt;</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
+</pre></div>
+
+
+<p>f. The way the authentication functions toward the bottom of conf.php are initialized has been simplified. Make the following changes:</p>
+<div class="codehilite"><pre><span class="o">*</span> <span class="n">REMOVE</span>
+
+        <span class="o">::</span><span class="p">:</span><span class="n">PhpLexer</span>
+        <span class="nv">$affilValFunc</span>
+        <span class="nv">$affilValFuncArgs</span> 
+        <span class="nv">$addUserFunc</span>
+        <span class="nv">$addUserFuncArgs</span>
+        <span class="nv">$updateUserFunc</span>
+        <span class="nv">$updateUserFuncArgs</span>
+
+<span class="o">*</span> <span class="n">ADD</span>
+
+        <span class="o">::</span><span class="p">:</span><span class="n">PhpLexer</span>
+        <span class="nv">$affilValFunc</span> <span class="o">=</span> <span class="n">array</span><span class="p">();</span>
+        <span class="nv">$affilValFuncArgs</span> <span class="o">=</span> <span class="n">array</span><span class="p">();</span>
+        <span class="nv">$addUserFunc</span> <span class="o">=</span> <span class="n">array</span><span class="p">();</span>
+        <span class="nv">$addUserFuncArgs</span> <span class="o">=</span> <span class="n">array</span><span class="p">();</span>
+        <span class="nv">$updateUserFunc</span> <span class="o">=</span> <span class="n">array</span><span class="p">();</span>
+        <span class="nv">$updateUserFuncArgs</span> <span class="o">=</span> <span class="n">array</span><span class="p">();</span>
+        <span class="k">foreach</span><span class="p">(</span><span class="nv">$authMechs</span> <span class="n">as</span> <span class="nv">$key</span> <span class="o">=&gt;</span> <span class="nv">$item</span><span class="p">)</span> <span class="p">{</span>
+             <span class="k">if</span><span class="p">(</span><span class="nv">$item</span><span class="p">[</span><span class="s">&#39;type&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s">&#39;ldap&#39;</span><span class="p">)</span> <span class="p">{</span>
+                <span class="nv">$affilValFunc</span><span class="p">[</span><span class="nv">$item</span><span class="p">[</span><span class="s">&#39;affiliationid&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="s">&#39;validateLDAPUser&#39;</span><span class="p">;</span>
+                <span class="nv">$affilValFuncArgs</span><span class="p">[</span><span class="nv">$item</span><span class="p">[</span><span class="s">&#39;affiliationid&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="nv">$key</span><span class="p">;</span>
+                <span class="nv">$addUserFunc</span><span class="p">[</span><span class="nv">$item</span><span class="p">[</span><span class="s">&#39;affiliationid&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="s">&#39;addLDAPUser&#39;</span><span class="p">;</span>
+                <span class="nv">$addUserFuncArgs</span><span class="p">[</span><span class="nv">$item</span><span class="p">[</span><span class="s">&#39;affiliationid&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="nv">$key</span><span class="p">;</span>
+                <span class="nv">$updateUserFunc</span><span class="p">[</span><span class="nv">$item</span><span class="p">[</span><span class="s">&#39;affiliationid&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="s">&#39;updateLDAPUser&#39;</span><span class="p">;</span>
+                <span class="nv">$updateUserFuncArgs</span><span class="p">[</span><span class="nv">$item</span><span class="p">[</span><span class="s">&#39;affiliationid&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="nv">$key</span><span class="p">;</span>
+            <span class="p">}</span>
+            <span class="n">elseif</span><span class="p">(</span><span class="nv">$item</span><span class="p">[</span><span class="s">&#39;type&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s">&#39;local&#39;</span><span class="p">)</span> <span class="p">{</span>
+                <span class="nv">$affilValFunc</span><span class="p">[</span><span class="nv">$item</span><span class="p">[</span><span class="s">&#39;affiliationid&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">create_function</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">,</span> <span class="s">&#39;return 0;&#39;</span><span class="p">);</span>
+                <span class="nv">$addUserFunc</span><span class="p">[</span><span class="nv">$item</span><span class="p">[</span><span class="s">&#39;affiliationid&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">create_function</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">,</span> <span class="s">&#39;return NULL;&#39;</span><span class="p">);</span>
+                <span class="nv">$updateUserFunc</span><span class="p">[</span><span class="nv">$item</span><span class="p">[</span><span class="s">&#39;affiliationid&#39;</span><span class="p">]]</span> <span class="o">=</span> <span class="n">create_function</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">,</span> <span class="s">&#39;return NULL;&#39;</span><span class="p">);</span>
+            <span class="p">}</span>
+        <span class="p">}</span>
+</pre></div>
+
+
+</li>
+<li>
+<p><strong>Restart httpd service</strong></p>
+<div class="codehilite"><pre>    <span class="n">service</span> <span class="n">httpd</span> <span class="n">start</span> <span class="ow">or</span> <span class="sr">/etc/i</span><span class="n">nit</span><span class="o">.</span><span class="n">d</span><span class="o">/</span><span class="n">httpd</span> <span class="n">start</span>
+</pre></div>
+
+
+</li>
+<li>
+<p><strong>Update management node code</strong> This step will make a backup copy of the 2.2 vcl code base and then copy the new code 
+over the existing code to preserve any drivers or other files you've added.</p>
+<div class="codehilite"><pre>    <span class="n">cd</span> <span class="o">&lt;</span><span class="n">your</span> <span class="n">vcl</span> <span class="n">MN</span> <span class="n">code</span> <span class="n">root</span> <span class="n">path</span><span class="o">&gt;</span>
+    <span class="n">ie</span><span class="o">.</span> <span class="n">cd</span> <span class="sr">/usr/</span><span class="nb">local</span><span class="o">/</span>
+    <span class="n">cp</span> <span class="o">-</span><span class="n">r</span> <span class="n">vcl</span> <span class="o">~/</span><span class="n">vcl_2</span><span class="mf">.2_</span><span class="n">managementnode</span>
+</pre></div>
+
+
+</li>
+<li>
+<p><strong>Copy in the 2.3.1 code base to /usr/local</strong>, copying in should preserve any drivers or other files you've added.</p>
+<div class="codehilite"><pre>    <span class="sr">/bin/c</span><span class="n">p</span> <span class="o">-</span><span class="n">r</span> <span class="sr">/root/</span><span class="n">apache</span><span class="o">-</span><span class="n">VCL</span><span class="o">-</span><span class="mf">2.3.1</span><span class="sr">/managementnode/</span><span class="o">*</span> <span class="sr">/usr/</span><span class="nb">local</span><span class="o">/</span><span class="n">vcl</span>
+</pre></div>
+
+
+</li>
+<li>
+<p><strong>Run install_perl_libs.pl</strong> to add any new perl library requirements:</p>
+<div class="codehilite"><pre>    <span class="sr">/usr/</span><span class="nb">local</span><span class="sr">/vcl/</span><span class="n">bin</span><span class="o">/</span><span class="n">install_perl_libs</span><span class="o">.</span><span class="n">pl</span>
+</pre></div>
+
+
+</li>
+<li>
+<p><strong>Restart vcld service</strong></p>
+<div class="codehilite"><pre>    <span class="n">service</span> <span class="n">vcld</span> <span class="n">start</span> <span class="ow">or</span> <span class="sr">/etc/i</span><span class="n">nit</span><span class="o">.</span><span class="n">d</span><span class="o">/</span><span class="n">vcld</span> <span class="n">start</span>
+</pre></div>
+
+
+</li>
+<li>
+<p>Make some test reservations and watch the vcld.log to verify everything is working correctly.</p>
+<div class="codehilite"><pre>    <span class="n">tail</span> <span class="o">-</span><span class="n">f</span> <span class="sr">/var/</span><span class="nb">log</span><span class="o">/</span><span class="n">vcld</span><span class="o">.</span><span class="nb">log</span>
+</pre></div>
+
+
+</li>
+</ol>
+  </div>
+  
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2012 The Apache Software Foundation, Licensed under 
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+  
+</body>
+</html>