Apache Traffic Server Traffic Server is a high-performance building block for cloud services. It's more than just a caching proxy server; it also has support for plugins to build large scale web applications. 1. DIRECTORY STRUCTURE traffic/ ............... top src dir |-- ci/ ................ quality assurance and other CI tools and configs |-- contrib ............ various contributed auxiliary pieces |-- cop/ ............... traffic_cop application |-- doc/ ............... |-- admin/ ......... Admin guide documentations |-- dot/ ........... Graphviz source files for docs pictures |-- man/ ........... Unix style man-pages |-- plugins ........ Documentation for our core plugins |-- sdk/ ........... Plugin developer guide |-- example/ ........... example plugins |-- install/ ........... installation programs and scripts |-- iocore/ ............ |-- aio/ ........... Asynchronous I/O core |-- cache/ ......... Disk and RAM cache |-- cluster/ ....... Cache and configuration clustering |-- dns/ ........... DNS (asynchronous) |-- hostdb/ ........ Internal DNS cache |-- net/ ........... Network |-- lib/ ............... |-- cpp11api ....... C++ '11 wrapper for plugin developers |-- records/ ....... library for config files |-- perl/ .......... Perl libraries for e.g. mgmt access and configurations |-- ts/ ............ Base / core library |-- tsconfig/....... New config parser and library (experimental) |-- wccp/ .......... WCCP implementation |-- m4/ ................ custom macros for configure.ac |-- mgmt/ .............. Management server and tools (including traffic_manager) |-- cli ............ Command line utilities and API |-- plugins/ ........... Core plugins (stable and experiemental) |-- proxy/ ............. HTTP proxy logic |-- api/ ........... Plugin API includes |-- config/ ........ Configurations |-- congest/ ....... Congestion control |-- hdrs/ .......... Headers parsing and management |-- http/ .......... The actual HTTP protocol implementation |-0 logging/ ....... Flexible logging |-- README ............. intro, links, build info |-- README-EC2 ......... info on EC2 support |-- REVIEWERS .......... (incomplete) list of areas with committer interest |-- LICENSE ............ full license text `-- NOTICE ............. copyright notices 2. REQUIREMENTS This section outlines build requirements for different OS distributions. This may be out of date compared to the on-line requirements at <https://cwiki.apache.org/confluence/display/TS/Building>. Fedora 12-19 / CentOS / RHEL: autoconf automake pkgconfig libtool perl-ExtUtils-MakeMaker gcc-c++ glibc-devel openssl-devel tcl-devel expat-devel pcre pcre-devel libcap-devel (optional, highly recommended) flex (optional, needed for e.g. WCCP) hwloc-devel (optional, highly recommended) lua-devel (optional) Fedora 8 EC2 (Kernel: 2.6.21.7-2.ec2.v1.2.fc8xen): FC8 on EC2 requires unique configure declarations, please see that section below. NOTE: Alternately you may use the install scripts in 'contrib' which automate this or use the pre-built public Fedora Core 8 EC2 AMI with ATS installed. Both of which are HIGHLY RECOMMENDED. See 'README-EC2' for further details. autoconf automake pkgconfig libtool perl-ExtUtils-MakeMaker gcc-c++ glibc-devel openssl-devel tcl-devel expat-devel pcre Ubuntu 8.* - 13.*: autoconf automake pkg-config libtool libmodule-install-perl g++ libssl-dev tcl-dev expat libexpat-dev libpcre3-dev libcap-dev (optional, highly recommended) flex (optional, required for e.g. WCCP) libhwloc-dev (optional, highly recommended) liblua5.1-dev or libluajit-5.1-dev (optional) libncurses5-dev (optional, required for e.g.: tstop) libcurl4-openssl-dev (optional, required for e.g.: tstop) Ubuntu EC2 9.10: NOTE: Alternately you may use the install scripts in 'contrib' which automate this or use the pre-built public Ubuntu EC2 AMI with ATS installed. Both of which are HIGHLY RECOMMENDED. See 'README-EC2' for further details. Install these packages: autoconf automake pkg-config libtool libmodule-install-perl g++ libssl-dev tcl-dev expat libexpat-dev libpcre3-dev flex (optional) libhwloc-dev (optional, highly recommended) liblua-dev (optional) libncurses5-dev (optional, required for e.g.: tstop) libcurl3-openssl-dev (optional, required for e.g.: tstop) FreeBSD 7.2,8.0,9.0,9.1 GCC 4.2.1 compiler suite or clang. You can install the following packages either from ports or via pkg_add or pkgng: devel/gmake devel/autoconf devel/automake devel/pkgconf devel/libtool lang/tcl85 textproc/expat (or expat2) security/openssl devel/pcre textproc/flex (optional, install newer version from ports, fix PATH) devel/hwloc (optional, highly recommended) lang/lua (optional, on x64 don't use LuaJIT!) OmniOS: developer/gcc46 developer/build/gnu-make developer/build/autoconf developer/build/automake-111 developer/build/libtool omniti/runtime/tcl-8 library/expat library/security/openssl library/pcre OSX 10.5: GCC 4.2.4 compiler suite (ports collection) autoconf automake pkgconfig libtool tcl expat openssl pcre 3. Building from distribution You can download the latest source code from the official Apache Traffic Server site: http://trafficserver.apache.org/downloads (or via the URL shortener: http://s.apache.org/uG). Once downloaded, follow the instructions: tar xf trafficserver-2.1.8-unstable.tar.bz2 cd trafficserver-2.1.8-unstable ./configure # configure the build environment to create Makefiles make # execute the compile This will build with a destination prefix of /usr/local. You can finish the installation with sudo make install 4. BUILDING FROM GIT REPO mkdir -p ~/dev # make yourself a development dir cd ~/dev # enter your development dir git clone ... # get the source code from ASF Git repo cd trafficserver # enter the checkout dir autoreconf -if # generate the configure script and Makefile.in files ./configure # configure the build environment to create Makefiles make # execute the compile 4b. Instructions for building on EC2 NOTE: Alternately you may use the scripts under 'contrib' which will automate the install for trafficserver under EC2 which is HIGHLY RECOMMENDED. See 'README-EC2' for further details. # As root do the following when using Ubuntu mkdir -p /mnt #EC2 Storage Mount, where storage is located cd /mnt git clone ... # get the source code from ASF Git repo cd trafficserver # enter the checkout dir autoreconf -i --force # generate the configure script and Makefile.in files ./configure make # As root do the following when using Fedora Core 8 kernel mkdir -p /mnt #EC2 Storage Mount, where storage is located cd /mnt git clone ... # get the source code from ASF Git repo cd trafficserver # enter the checkout dir autoreconf -i --force # generate the configure script and Makefile.in files ./configure --disable-eventfd make 4c. Instructions for building on FreeBSD The only difference is how to run configure and make: MAKE=gmake ./configure # make sure that gmake is the make we use gmake 5. INSTALLATION DEFAULT DIR CONTENTS /usr/local/var/log/trafficserver log files created at runtime /usr/local/var/trafficserver runtime files /usr/local/etc/trafficserver configuration files /usr/local/bin executable binaries /usr/local/libexec/trafficserver plugins 6. CRYPTO NOTICE This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See <http://www.wassenaar.org/> for more information. The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code. The following provides more details on the included cryptographic software: The functionality of OpenSSL <http://www.openssl.org/> is utilized in parts of the software. 7. ADDITIONAL INFO Web page: http://trafficserver.apache.org/ Wiki: http://cwiki.apache.org/confluence/display/TS/ User mailing list: users@trafficserver.apache.org