A P A C H E I N S T A L L A T I O N NOTE: Windows users please read the documents ../README-WIN.TXT and http://httpd.apache.org/docs/windows.html, (or the htdocs/manual/windows.html file included with Apache). The following applies only to Unix users. Installing the Apache 1.3 HTTP server with APACI ================================================ For the out-of-the-box build and installation through the new Apache Autoconf-style Interface (APACI) see the file INSTALL in the parent directory. This document describes only the manual way of installing Apache. Installing the Apache 1.3 HTTP server manually ============================================== Unless you grabbed a binary distribution of Apache, you must compile it for your specific platform. In order to compile it, you must set compile-time options (in particular, system type) for your system by editing a Configuration file, run a script which generates a Makefile and a small piece of C code, and then compile it. Compilation ----------- Building the Apache Web server absolutely REQUIRES an ANSI C-compliant compiler. If your compiler does not meet this requirement, don't even bother trying to build the server; it won't work. The server may or may not build correctly with a C++ compiler. Making it compilable with C++ is not a goal at this point, so if it doesn't work please use a normal ANSI C compiler instead. This release of Apache supports the notion of "optional modules". However, the server has to know which modules are compiled into it, in order for those modules to be effective; this requires generation of a short bit of code ("modules.c") which simply has a list of them. It is also necessary to choose the correct options for your platform. To do this: 1) Copy the file "Configuration.tmpl" to "Configuration" and then edit "Configuration". This contains the list and settings of various "Rules" and an additional section at the bottom which lists the modules which have been compiled in, and also names the files containing them. You will need to: a) Adjust the Rules and EXTRA_CFLAGS|LIBS|LDFLAGS|INCLUDES if you feel so inclined. b) Uncomment lines corresponding to those optional modules you wish to include (among the Module lines at the bottom of the file), or add new lines corresponding to custom modules you have written. (See API.html for preliminary docs on how to do that). Note that DBM auth has to be explicitly configured in, if you want it --- just uncomment the corresponding line. 2) Run the "Configure" script: $ ./Configure Using config file: Configuration Creating Makefile + configured for <whatever> platform + setting C compiler to <whatever> + Adding selected modules + doing sanity check on compiler and options Creating Makefile in support Creating Makefile in main Creating Makefile in os/unix Creating Makefile in modules/standard $ _ This generates new versions of the Makefiles and of modules.c. (If you want to maintain multiple configurations, you can say, e.g., $ ./Configure -file Configuration.ai Using config file: Configuration.ai Creating Makefile + configured for <whatever> platform + setting C compiler to <whatever> + Adding selected modules + doing sanity check on compiler and options Creating Makefile in support Creating Makefile in main Creating Makefile in os/unix Creating Makefile in modules/standard $ _ 3) Now compile the program: $ make The modules we place in the Apache distribution are the ones we have tested and are used regularly by various members of the Apache development group. Additional modules contributed by members or third parties with specific needs or functions are available at http://www.apache.org/dist/contrib/modules/. There are instructions on that page for linking these modules into the core Apache code. If during compilation you get a warning about a missing 'regex.h', set WANTHSREGEX=yes in the 'Configuration', and let The Apache Group know you needed to do this for your OS by filling out a problem report form at http://bugs.apache.org/, or by sending a mail message to email@example.com. Include the output of the command "uname -a". Installation ------------ After compilation, you will have a binary called "httpd" in this src/ directory. If you received a binary distribution of apache, you should have this file already. The next step is to edit the configuration files for the server. In the top-level subdirectory called "conf" you should find distribution versions of the three configuration files: srm.conf-dist, access.conf-dist, and httpd.conf-dist. Copy them to srm.conf, access.conf, httpd.conf respectively. First edit httpd.conf. This sets up general attributes about the server - the port number, the user it runs as, etc. Next edit the srm.conf file - this sets up the root of the document tree, special functions like server-parsed HTML or internal imagemap parsing, etc. Finally, edit the access.conf file to at least set the base cases of access. Documentation for all of these is located at http://www.apache.org/docs/. Finally, make a call to httpd, with a -f to the full path to the httpd.conf file. I.e., the common case: $ /usr/local/apache/httpd -f /usr/local/apache/conf/httpd.conf And voila! The server should be running. By default the srm.conf and access.conf files are located by name - to specifically call them by other names, use the AccessConfig and ResourceConfig directives in httpd.conf. Set your system time properly! Proper operation of a public web server requires accurate time keeping, since elements of the HTTP protocol are expressed as the time of day. So, it's time to investigate setting up NTP or some other time synchronization system on your Unix box, or whatever the equivalent on NT would be. Upgrading an Existing Apache Environment ---------------------------------------- Between releases of Apache, there are several files that are likely to get changed (aside from the source, of course). These include: src/Makefile.tmpl src/Configuration.tmpl src/Configure conf/*.conf-dist conf/mime.types It's recommended that you unpack a new Apache version distribution into a different directory than the existing one, and check these files against the ones you already have for new or changed directives. It's almost certain that the Configure, Configuration.tmpl, and Makefile.tmpl files are going to change, so pay particular attention to merging your existing Configuration settings with the ones in the Configuration.tmpl file to make a new Configuration file in the new Apache src directory. Then follow the steps for a new installation to build and test the new server before replacing the existing Apache directory tree with the one from the new distribution.