<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Apache Rivet Installation</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="index.html" title="Apache Rivet"><link rel="prev" href="index.html" title="Apache Rivet"><link rel="next" href="request.html" title="Apache Child Processes Lifecycle and Request Processing"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Apache Rivet Installation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html"><img src="images/prev.png" alt="Prev"></a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="request.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><div class="section"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="installation"></a>Apache Rivet Installation</h2></div></div></div><div class="procedure"><p style="width:90%"> 
            Rivet 2.2 runs with the Apache 2.2.x and 2.4.x HTTP web server. 
            It is known to build and run on various Linux distributions 
            (Debian &amp; Ubuntu, Redhat, SuSE and CentOS), FreeBSD and OpenBSD. For some
            of these Unix-like operative systems 
            <a class="ulink" href="http://tcl.apache.org/rivet/html/download.html" target="_top">binary packages</a> 
            are already available for download.
        </p><p style="width:90%">
            Currently there is no way to run Apache Rivet 2.2 on Windows© because            
            Rivet currently requires the 
            <a class="ulink" href="http://httpd.apache.org/docs/2.2/mod/prefork.html" target="_top">prefork</a>, which
            is supported only on Unix/Linux systems. Efforts are under way to extend the support to the 
            <a class="ulink" href="http://httpd.apache.org/docs/2.2/mod/worker.html" target="_top">worker</a> 
            and the
            <a class="ulink" href="http://httpd.apache.org/docs/2.2/mod/mpm_winnt.html" target="_top">winnt</a> MPMs.
            Check our
            <a class="ulink" href="http://tcl.apache.org/rivet/html/about.html" target="_top">development mailing list</a>
            for the latests updates about Rivet development
        </p><p style="width:90%">
            If you need to compile Apache Rivet yourself this is the procedure to follow
        </p><ol class="procedure" type="1"><li class="step"><p class="title"><b>Install Tcl</b></p><p style="width:90%">
                Installing Rivet is about endowing the Apache HTTP webserver with the ability
                of running scripts written with the Tcl programming language. 
                Therefore the 
                <a class="ulink" href="http://www.tcl.tk/" target="_top">Tcl</a> 
                shell (<span style="font-family:monospace"><span class="command"><strong>tclsh</strong></span></span>), its runtime and  
                development libraries (≥8.5.10) have to be installed. Building Rivet you will 
                have to tell the scripts where the Tcl libraries are located via the
                --with-tcl option to <span style="font-family:monospace"><span class="command"><strong>configure</strong></span></span> (see below).
            </p></li><li class="step"><p class="title"><b>Get Rivet</b></p><p style="width:90%">
                Download the sources at <a class="ulink" href="http://tcl.apache.org/rivet/html/download.html" target="_top">http://tcl.apache.org/rivet/html/download.html</a>.  
            </p></li><li class="step"><p class="title"><b>Get and Install Apache Sources</b></p><p style="width:90%">
                Rivet needs some of the include (.h) files shipped with the webserver source code. 
                The easiest way to get them is to download the Apache source.  
                If can build Rivet either statically (compiled into the Apache web
                server instead of loaded dynamically) or dynamically (as a loadable shared library).  
                We recommend that you build Rivet as a shared library, for maximum flexibility,
                meaning that you also build Apache to be able to load modules. Other than that, 
                the default Apache install is fine.  We will tell Rivet where it is located via the 
                --with-apxs option to <span style="font-family:monospace"><span class="command"><strong>configure</strong></span></span> (see below).
            </p><p style="width:90%">
                The source code for the Apache web server may be found by following the links here: 
                <a class="ulink" href="http://httpd.apache.org/" target="_top">http://httpd.apache.org/</a>.
            </p></li><li class="step"><p class="title"><b>Uncompress Sources</b></p><p style="width:90%">
              We will assume that you have Apache installed at this point.
              You must uncompress the Rivet sources in the directory where you
              wish to compile them.
              </p><pre class="programlisting">gunzip rivet-X.X.X.tar.gz
tar -xvf rivet-X.X.X.tar.gz</pre><p style="width:90%">
            </p></li><li class="step"><p class="title"><b>Building Rivet</b></p><ol type="a" class="substeps"><li class="step"><p style="width:90%">
	       On Linux or Unix systems, Rivet uses the standard <span style="font-family:monospace"><span class="command"><strong>./configure ; make ; make install</strong></span></span>
	       sequence which installs to their target directories the Apache module, the binary libraries and the
	       Tcl code
	    </p><p style="width:90%">
	      There are several rivet specific options to configure that might be useful (or needed):
	      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">--with-tcl</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
		              This points to the directory where the
		              <code class="filename">tclConfig.sh</code> file is located.
		          </div></div></dd><dt><span class="term">--with-tclsh</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">This points to the location of the
		      <code class="filename">tclsh</code> executable.</div></div></dd><dt><span class="term">--with-apxs</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">The location of the <code class="filename">apxs</code>
		      program that provides information about the
		      configuration and compilation options of Apache modules.</div></div></dd><dt><span class="term">--with-apache-include[=DIR]</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
			    Locates the Apache include files on your computer, if they're not in standard directory. 
		    </div></div></dd><dt><span class="term">--enable-version-display=[yes|no]</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
			This option enables Rivet to display its version in the logfiles when Apache is started. 
			The default is to keep Rivet version hidden.
		    </div></div></dd><dt><span class="term">--with-rivet-target-dir=DIR</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
			    This option tells the install script where Rivet's Tcl packages have to be copied. 
			</div></div></dd><dt><span class="term">--with-upload-dir=DIR</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
		          Configures Rivet's default upload directory 
		      </div></div></dd><dt><span class="term">--enable-head-requests</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
		          By default HEAD requests don't go through the usual request processing which leads
		          to script execution and therefore resource consumption and Rivet returns a
		          standard hardcoded HTML header to save CPU time. --enable-head-requests
		          changes this default (see also <a class="link" href="directives.html" title="Rivet Apache Directives">Rivet Directives</a>)
		      </div></div></dd><dt><span class="term">--disable-rivet-commands-export</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
		          By default Rivet's commands are put on the export list of the <code class="code">::rivet</code>
		          namespace. With this option you may prevent it thus forcing the programmer to
		          fully qualify <a class="link" href="commands.html" title="Rivet Tcl Commands and Variables">these commands</a>
		      </div></div></dd><dt><span class="term">--disable-import-rivet-commands</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
		          Likewise commands in the Rivet's namespace when exported are then by default imported
		          into the global namespace for compatibility with previous version of Rivet.
		          (Enabling the import of Rivet's commands overrides the switch --disable-rivet-commands-export
		          and forces the export from <code class="code">::rivet</code>). This switch overrides the default and
		          prevents the import into the global namespace 
		      </div></div></dd></dl></div><p style="width:90%">
	    </p><p style="width:90%">
		  Example: configuring the build system to compile Rivet for an apache 2.x server, using tcl8.5 and
		  specifying a custom name for the apxs program. 
	    </p><pre class="programlisting">./configure --with-tcl=/usr/lib/tcl8.5/ --with-tclsh=/usr/bin/tclsh8.5 \
	    --with-apxs=/usr/bin/apxs2 --with-apache=/usr --with-apache-version=2</pre></li><li class="step"><p class="title"><b>Run make</b></p><p style="width:90%">
	      At this point, you are ready to run make, which should
	      run to completion without any errors (a warning or two
	      is ok, generally).
	    </p></li><li class="step"><p class="title"><b>Install</b></p><p style="width:90%">
	      Now, you are ready to run the
	    </p><pre class="programlisting">make install</pre><p style="width:90%"> 
	       to install the resulting files. The <code class="code">install</code> target
	       actually fires the <code class="code">install-binaries</code> and 
	       <code class="code">install-packages</code> targets which in turn 
	       copy the binary modules and Tcl packages to their destination
	       directories. This commands create a functional Rivet environment with its
		   core language.
	    </p></li></ol></li><li class="step"><p class="title"><b>Apache Configuration Files</b></p><p style="width:90%">
	  Rivet is relatively easy to configure - we start off by
	  adding the module itself:
	</p><pre class="programlisting">LoadModule rivet_module	<em class="replaceable"><code>/usr/lib/apache2/modules/mod_rivet.so</code></em></pre><p style="width:90%">
	  This tells Apache to load the Rivet shared object, wherever
	  it happens to reside on your file system.  Now we have to
	  tell Apache what kind of files are "Rivet" files and how to
	  process them:
	</p><pre class="programlisting">AddType application/x-httpd-rivet .rvt
AddType application/x-rivet-tcl .tcl</pre><p style="width:90%">
	  These tell Apache to process files with the
	  <code class="filename">.rvt</code> and <code class="filename">.tcl</code>
	  extensions as Rivet files.
	</p><p style="width:90%">
	  The characters encoding can be changed using the <span style="font-family:monospace"><span class="command"><strong>header type</strong></span></span> command,
	  but you can also change the default charset for the whole site:
	</p><pre class="programlisting">AddType 'application/x-httpd-rivet;charset=utf-8' rvt</pre><p style="width:90%">
	   All the pages generated by Rivet on this site will be sent with a 
	    <span style="font-family:monospace"><span class="command"><strong>Content-Type:'text/html;charset=utf-8'</strong></span></span> header.
	</p><p style="width:90%">You may also wish to use Rivet files as index files for
	directories.  In that case, you would do the following:</p><pre class="programlisting">DirectoryIndex index.html index.htm index.shtml index.cgi index.tcl index.rvt</pre><p style="width:90%">
	  For other directives that Rivet provides for Apache
	  configuration, please see <a class="xref" href="directives.html" title="Rivet Apache Directives">the section called “Rivet Apache Directives”</a>.
	</p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html"><img src="images/prev.png" alt="Prev"></a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="request.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">Apache Rivet </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top"> Apache Child Processes Lifecycle and Request Processing</td></tr></table></div></body></html>
