<div id="maincontent">
		
	<div id="midcolumn">
		<h1>$pageTitle</h1>
		<p>
			<div class="right">
	            Last modified on:<span class="date"> April 29th<sup>th</sup>, 2007</span>
	        </div>
 		</p>
 
 
 Here are the steps necessary to edit and check the content on www.eclipse.org/bpel/ locally on 
 your development workstation.
 
 <h2>Pull source</h2>
 
 Create a project in your Eclipse workbench called <b>www</b> and checkout into it the following modules from
 the repository <b>dev.eclipse.org:/cvsroot/org.eclipse</b>. 
 
 <ol>
   <li><tt>www/bpel</tt> - the main bpel web content tree</li>
   <li><tt>www/eclipse.org-common</tt> - some common things that you need</li>
   <li><tt>www/images</tt> - images</li>
   <li><tt>www/projects</tt> - project related stuff</li>
 </ol>
 
 For example, this is what I see ...
 
 <p style="margin-left: 20px;">
 	<img src="images/www-project.png"/>
 </p>
 
 <p>
  You will need the CVS username and password to commit things to this repository. 
 </p>
 
 
 <h2>Get PHPEclipse</h2>
 
 If you <i>do not dream in PHP code</i>
 then this is probably a <b>good</b> thing to do. You can download from 
 <a class="www" href="http://sourceforge.net/projects/phpeclipse" target="_download">http://sourceforge.net/projects/phpeclipse</a>.
 After installing, restart your eclipse environment, and pressumably you should be able to
 open and browse the repository and perhaps even see colors when editing those PHP files.
 
 <p style="margin-left: 20px;">
 <img src="images/php-editor.png"/>
 </p>
  
 <p>
 This concludes the eclipse end setup. Now onto running the <b>www.eclipse.org/bpel/</b> 
 locally on your workstation.
 </p>
 <h2>Install XAMPP</h2>
 
 Install the XAMPP stack on your workstation (MySQL + Apache + PHP and Perl).
 You download it from 
 <a class="www" href="http://www.apachefriends.org/en/xampp.html" target="_download">http://www.apachefriends.org/en/xampp.html</a>.
 <p>
 Installation ought to self explantory if you can came this far.
 </p>
 <p>
 If you do not want to do this, then you are on your own. I used my own installation of Apache 
 and re-used the XAMPP instllation of the rest. 
 </p>
 
 <h2>Modify Apache Configuration</h2>
 
 You need to modify the apache configuration so that it uses <b>virtual hosts</b>
 and specifically defines one that we will use for the local eclipse.org environment. 
 There two steps here:
 
 <ol>
  <li> Edit your <tt>/etc/hosts</tt> or 
                 <tt>\windows\system32\drivers\etc\hosts</tt>
                 file to include this entry
      <pre class="code">
  127.0.0.1		local.eclipse.org
      </pre>
      or create an alias for localhost as in ...
      <pre class="code">
  127.0.0.1		localhost local.eclipse.org
      </pre>
   </li>
      
  <li> Edit your apache configuration to include the <b>local.eclipse.org</b>
  virtual host. This should be in the configuration file <tt>etc/extras/httpd-vhosts.conf</tt> in your XAMPP home directory.  
  
      <pre class="code">
NameVirtualHost *:80
#
&lt;VirtualHost *:80>
    ServerName local.eclipse.org
    ServerAdmin admin@email.com
    DocumentRoot c:/ws/eclipse.org/www    
    ServerAlias www.local.eclipse.org
    ErrorLog logs/local.eclipse.org-error.log
    CustomLog logs/local.eclipse.org-access.log common
&lt;/VirtualHost>
      </pre>
            
    The <b>DocumentRoot</b> for your virtual local.eclipse.org host should be pointing
    to where-ever you had created the <b>www</b> project (and where <b>www/bpel</b> exists).
    </li>        
 </ol>
 
 Now restart the apache configuration and see how things work.

 
 You should be able to point to <b>http://local.eclipse.org/bpel/</b>
 and get the BPEL home page.
 	</div>
 	
 	$rightcolumn_links
 </div>