APACHE TRAFFIC SERVER UNIX QUICKSTART
-------------------------------------

For complete installation documentation, see the on-line documentation at

    http://trafficserver.apache.org/docs


Various popular platforms have up-to-date build instructions available
online, at

    https://cwiki.apache.org/confluence/display/TS/Building


BUILD AND INSTALLATION
----------------------

Configure & Build from Git source tree:
    $ autoreconf -if  # generate the configure script and Makefile.in files

On Linux, OSX:
    $ ./configure [--prefix=PREFIX]
    $ make

On OpenSolaris and FreeBSD:
    $ ./configure [--prefix=PREFIX]
    $ gmake

To install:
    $ sudo make install

* Building on FreeBSD requires GNU make. This is the preferred make
  on all platforms.

* Replace PREFIX with the filesystem path under which Traffic Server
  should be installed.  Default PREFIX is "/usr/local" (without the
  quotes).

* If you want to build using different layout see the config.layout
  file for possible alternatives. You can create your own layout
  and enable it with ./configure --enable-layout=ID, where ID is
  the layout name you have created.

* The easiest way to find all of the configuration flags
  for Traffic Server is to run ./configure --help.


By default the build will use the highest level of compiler
optimization. To alter this, specify your own optimizer flags at
configuration time:

    $ ./configure CXXFLAGS=-Os CFLAGS=-Os

To compile with an alternate set of compilers, e.g. LLVM/Clang

    $ ./configure CC=clang CXX=clang++


To start the Traffic Server process stack (TC, TM, TS):
    $ sudo PREFIX/bin/trafficserver start


INSTALLATION HELP
-----------------

The Apache Traffic Server group cannot field user's installation
questions.  There are many valuable forums to help you get started.
Please refer your questions to the appropriate forum, such as the
Users Mailing List at

    http://cwiki.apache.org/confluence/display/TS/Traffic+Server

Thanks for using the Apache Traffic Server, version 5.

             The Apache Software Foundation
             http://www.apache.org/
