Apache Mirroring Resources

This page describes the requirements and an ideal strategy for mirroring Apache Software Foundation releases. More information can be obtained from the infrastructure@apache.org mailing list.

Any project willing to use the ASF infrastructure to distribute source, binary and documentation builds must adhere to the following guidelines.

These guidelines have been developed so that a consistent way to mirror our distributions can be achieved, therefore lowering the impact of the enormous amount of bandwidth consumed by our downloads.

Goals

  • Current ASF releases must be accessible from participating mirrors.
  • The mirrors should be used by default.
  • www.apache.org/dist/ and www.eu.apache.org/dist/ may be used only as fallback/backup mirrors.
  • A best-guess determination of which mirror to use should be performed.
  • Any system should allow the user to override the mirror selection.
  • All releases must be signed by the release manager.
  • PGP/MD5 signature links from project sites may not point to mirrors.
  • Only current, recommended releases should be mirrored. Old releases are automatically archived to archive.apache.org/dist/ and can be deleted from the main distribution directory.

Location of files on main server

Software distributions should not be kept on the project's website. Instead, they should be moved to the appropriate central site. There are three types of software distributions with three different locations:

Current public releases: http://www.apache.org/dist/
Current, official releases that have been approved by the PMC and are targetted at end-users should be placed on www.apache.org. This is the main public release site and the site that is mirrored world-wide. [minotaur.apache.org:/www/www.apache.org/dist/]
Non-public releases: http://svn.apache.org/
Releases that are not intended for general public consumption should be placed on people.apache.org. This includes automated test builds (svn.apache.org/builds/) and pre-releases aimed at the developer community, but not at end users (svn.apache.org/dist/). Essentially, any release that you do not consider ready for prime time should go here. [people.apache.org:/www/cvs.apache.org/]
Old releases: http://archive.apache.org/dist/
Older releases that you would no longer recommend to the general public should be placed on archive.apache.org. This site automatically contains all the content of www.apache.org/dist/, but nothing is ever deleted. Therefore it should rarely be necessary to touch this site, except during a reorganization. Once a release is no longer recommended to the public, simply delete it from www.apache.org/dist/, and it will remain on archive.apache.org/dist/. [minotaur.apache.org:/www/archive.apache.org/dist/]

How can my project use mirrors?

Do not point your download links directly at www.apache.org. Instead, point these links at the mirrors. Also note that you should wait around 24 hours between placing your files in the download directories and sending out announcements with links to the mirrors. This is the time necessary for the majority of mirrors to grab the files.

Read these instructions thoroughly before configuring your project mirror. See also the ASF and Ant Step-By-Step guides to mirroring, and the excellent mirroring, PGP and MD5 resources by Henk. Review how other ASF projects do their mirrors.

The HTTP Server project is using the following system to achieve its mirroring goals. Please see it in action at http://httpd.apache.org/download.cgi.

This page uses a templating system that replaces links of the form <a href="[preferred]/httpd/">link</a> with <a href="http://www.apache.org/dist/httpd/">link</a>. Please look at the source for the download.xml page. Please pay attention to the [location], [preferred], [http], [ftp], [backup] tags.

An alternative that is quicker to setup, but less elegant, is to use the http://www.apache.org/dyn/closer.cgi script. This script understands the PATH_INFO environment variable which can be used to point to particular directories on the mirrors. For example, http://www.apache.org/dyn/closer.cgi/httpd/docs/ points to documentation distributions for the HTTP Server project.

Read this for more information on creating download pages.

If you are unable to wait 24 hours before announcing your release, then you can pass a date and time to the download script to indicate that only mirrors that have updated since that time should be selected. This works by adding update=YYYYMMDDhhmm to the query string. For example, you can use http://httpd.apache.org/download.cgi?update=200407051415 to request only mirrors that have updated after 2:15pm on July 5, 2004 Pacific time. Please use this option sparingly, since it can result in excessive load on particular mirrors. It would be appropriate, for example, in an emailed release announcement for an important security release, but should not usually be used as a main website link.

Questions?

If you have any questions or comments, please email the infrastructure@apache.org mailing list or have a look at the ASF and Ant Step-By-Step guides to mirroring.