<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 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.
-->

<manualpage metafile="rpm.xml.meta">
  <parentdocument href="./">Platform Specific Notes</parentdocument>

  <title>Using Apache With RPM Based Systems (Redhat / CentOS / Fedora)</title>

  <summary>

    <p>While many distributions make Apache httpd available as operating system
    supported packages, it can sometimes be desirable to install and use the
    canonical version of Apache httpd on these systems, replacing the natively
    provided versions of the packages.</p>

    <p>While the Apache httpd project does not currently create binary RPMs
    for the various distributions out there, it is easy to build your own
    binary RPMs from the canonical Apache httpd tarball.</p>

    <p>This document explains how to build, install, configure and run
    Apache httpd 2.4 under Unix systems supporting the RPM packaging format.</p>

  </summary>

  <section id="creating">
    <title>Creating a Source RPM</title>

    <p>The Apache httpd source tarball can be converted into an SRPM as
    follows:</p>

    <example>
      rpmbuild -ts httpd-2.4.x.tar.bz2
    </example>

  </section>

  <section id="building">
    <title>Building RPMs</title>

    <p>RPMs can be built directly from the Apache httpd source tarballs using
    the following command:</p>

    <example>
      rpmbuild -tb httpd-2.4.x.tar.bz2
    </example>

    <p>Corresponding "-devel" packages will be required to be installed on your
    build system prior to building the RPMs, the <code>rpmbuild</code> command
    will automatically calculate what RPMs are required and will list any
    dependencies that are missing on your system. These "-devel" packages will
    not be required after the build is completed, and can be safely removed.</p>

    <p>If successful, the following RPMs will be created:</p>

    <dl>
    <dt>httpd-2.4.x-1.i686.rpm</dt>
    <dd>The core server and basic module set.</dd>

    <dt>httpd-debuginfo-2.4.x-1.i686.rpm</dt>
    <dd>Debugging symbols for the server and all modules.</dd>

    <dt>httpd-devel-2.4.x-1.i686.rpm</dt>
    <dd>Headers and development files for the server.</dd>

    <dt>httpd-manual-2.4.x-1.i686.rpm</dt>
    <dd>The webserver manual.</dd>

    <dt>httpd-tools-2.4.x-1.i686.rpm</dt>
    <dd>Supporting tools for the webserver.</dd>

    <dt>mod_authnz_ldap-2.4.x-1.i686.rpm</dt>
    <dd><module>mod_ldap</module> and <module>mod_authnz_ldap</module>, with
    corresponding dependency on openldap.</dd>

    <dt>mod_lua-2.4.x-1.i686.rpm</dt>
    <dd><module>mod_lua</module> module, with
    corresponding dependency on lua.</dd>

    <dt>mod_proxy_html-2.4.x-1.i686.rpm</dt>
    <dd><module>mod_proxy_html</module> module, with
    corresponding dependency on libxml2.</dd>

    <dt>mod_socache_dc-2.4.x-1.i686.rpm</dt>
    <dd><module>mod_socache_dc</module> module, with
    corresponding dependency on distcache.</dd>

    <dt>mod_ssl-2.4.x-1.i686.rpm</dt>
    <dd><module>mod_ssl</module> module, with
    corresponding dependency on openssl.</dd>

    </dl>

  </section>

  <section id="installing">
    <title>Installing the Server</title>

    <p>The <code>httpd</code> RPM is the only RPM necessary to get a basic
    server to run. Install it as follows:</p>

    <example>
      rpm -U httpd-2.4.x-1.i686.rpm
    </example>

    <p>Self contained modules are included with the server. Modules that
    depend on external libraries are provided as separate RPMs to install
    if needed.</p>

  </section>

  <section id="default">
    <title>Configuring the Default Instance of Apache httpd</title>

    <p>The default configuration for the server is installed by default
    beneath the <code>/etc/httpd</code> directory, with logs written by
    default to <code>/var/log/httpd</code>. The environment for the
    webserver is set by default within the optional
    <code>/etc/sysconfig/httpd</code> file.</p>

    <p>Start the server as follows:</p>

    <example>
      service httpd restart
    </example>

  </section>

  <section id="additional">
    <title>Configuring Additional Instances of Apache httpd on the Same Machine</title>

    <p>It is possible to configure additional instances of the Apache
    httpd server running independently alongside each other on the same
    machine. These instances can have independent configurations, and
    can potentially run as separate users if so configured.</p>

    <p>This was done by making the httpd startup script aware of its own
    name. This name is then used to find the environment file for the
    server, and in turn, the server root of the server instance.</p>

    <p>To create an additional instance called
    <code>httpd-additional</code>, follow these steps:</p>

    <ul>
      <li>Create a symbolic link to the startup script for the additional
      server:

      <example>
        ln -s /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd-additional<br />
        chkconfig --add httpd-additional
      </example>

      </li>

      <li>Create an environment file for the server, using the
      <code>/etc/sysconfig/httpd</code> file as a template:

      <example>
        # template from httpd<br />
        cp /etc/sysconfig/httpd /etc/sysconfig/httpd-additional
      </example>
      
      <example>
        # blank template<br />
        touch /etc/sysconfig/httpd-additional
      </example>

      Edit <code>/etc/sysconfig/httpd-additional</code> and pass the
      server root of the new server instance within the
      <code>OPTIONS</code> environment variable.

      <example>
        OPTIONS="-d /etc/httpd-additional -f conf/httpd-additional.conf"
      </example>

      </li>

      <li>Edit the server configuration file
      <code>/etc/httpd-additional/conf/httpd-additional.conf</code> to
      ensure the correct ports and paths are configured.
      </li>

      <li>Start the server as follows:

      <example>
        service httpd-additional restart
      </example>

      </li>

      <li>Repeat this process as required for each server instance.</li>
    </ul>

  </section>

</manualpage>

