apache.1.3.6.1.m.README
April 2, 1999

This archive contains an Installer.app package for the apache
webserver v1.3.6 (port #1) for OpenStep for Mach 4.x, including 
loadable addon modules mod_perl, mod_php3, and mod_ssl (SSL support)

file:	apache.1.3.6.1.m.NIS.bs.tar.gz
desc:	apache binary+source distribution.  
sum:   	12648  6733
md5sum:	65d54e220533dcda368610464aae3cc8

(**
 to be placed at
  http://www.peak.org/openstep/mach/apps/internet/www/
  ftp://next-ftp.peak.org/pub/openstep/mach/apps/internet/www/
**)

INSTALLATION

Unpack and use Installer.app to install to /usr/local
(or elsewhere, but you'll need to fixup the config files if
you do move it).  Root access is required to install.


NOTES

This version of apache was built using a new feature called DSO,
Dynamic Shared Objects.  Apache, by default, didn't have support
for this out-of-the-box, but it turns out Apple had provided DSO
support for MacOSX Server and the same code also happens to work
with OpenStep.  The patch I used to enable for OpenStep is found
in this archive:
apache/src/apache_1.3.x.OpenStep-DSO.patch
The included source has already been patched.

This build of apache has the following modules built-in:
> /usr/local/apache/bin/httpd -l
Compiled-in modules:
  http_core.c
  mod_env.c
  mod_log_config.c
  mod_mime.c
  mod_negotiation.c
  mod_status.c
  mod_include.c
  mod_autoindex.c
  mod_dir.c
  mod_cgi.c
  mod_asis.c
  mod_imap.c
  mod_actions.c
  mod_userdir.c
  mod_alias.c
  mod_access.c
  mod_auth.c
  mod_so.c
  mod_setenvif.c

There are more modules available at run-time:
> ls /usr/local/apache/libexec
libperl-1.18-1.so*      mod_auth_dbm.so*        mod_ssl-2.2.6-1.so*
libperl.so@             mod_expires.so*         mod_ssl.so@
libphp-3.0.7-1.so*      mod_info.so*            mod_unique_id.so*
libphp.so@              mod_proxy.so            mod_usertrack.so*
mod_auth_anon.so*       mod_rewrite.so*
mod_auth_db.so*         mod_speling.so*

These can be enabled using the LoadModule directive within 
the http.conf configuration file.

Several of these loadable modules require auxiliary frameworks 
to function:
module name	Framework (and recommended version)	
---------------------------------------------------	
mod_auth_db	DB (1.86.4.2)
mod_perl	Perl (5.005_02.1)
mod_ssl  	OpenSSL* (0.9.2.1)

* If using the US version of OpenSSL, you also need to install 
the RSAref framework.  This is a OpenSSL/RSA licensing restriction.

Frameworks must be installed to /LocalLibrary/Frameworks.

These frameworks can be found at
 http://www.peak.org/openstep/mach/sourcelibrary/frameworks/
 ftp://next-ftp.peak.org/pub/openstep/mach/sourcelibrary/frameworks/


SSL NOTES

OK, so you don't want to read the documentation, and you want an
SSL-enabled server NOW!  No problem... (-; The following procedure will
make a (non-authoritative) server certificate, and get you started.If
you want real-deal one, you'll need to contact THAWT or VERISIGN.

1.  Make a server certificate
cd apache/src/apache_1.3.6
make certificate
make install-config

2.  Load mod_ssl module
Uncomment the line in apache/src/httpd.conf:
LoadModule ssl_module libexec/libssl.so

3.  Start server in SSL mode
apache/bin/apachectl startssl

If all went well, you now have a server running in SSL mode.  If this
didn't work, the reason will be listed in apache/logs/error_log.


DSO module memory usage: Not essential, but interesting reading.

Here's an example of the memory usage upon startup of each httpd process
on my test machine.  Following are snippets from the output of:
ps aux | grep httpd
The interesting numbers are VSIZE and RSIZE.  VSIZE is the virtual size
of the process, including any shared memory (including dylibs) and RSIZE
is the current real (actual) memory usage.  Keep in mind that at any given
time, if apache is to bind to ports < 1000 and/or if you want apache to run
as another (virtual) user (here, nobody), the "master" apache process will
need to run as root.  The master process will be bigger than the children, 
as shown below.

no DSO modules
USER       PID  %CPU %MEM VSIZE RSIZE TT STAT  TIME COMMAND
root     24069   0.6  1.4 2.56M  904K p4 SW    0:00 httpd
nobody   24071   0.1  0.7 2.56M  488K p4 S     0:00 httpd

ssl module
USER       PID  %CPU %MEM VSIZE RSIZE TT STAT  TIME COMMAND
root     24112   0.6  2.6 4.30M 1.69M p4 SW    0:01 httpd
nobody   24114   0.3  0.9 4.30M  560K p4 S     0:00 httpd

ssl, perl modules
USER       PID  %CPU %MEM VSIZE RSIZE TT STAT  TIME COMMAND
root     24052   0.6  4.7 7.80M 3.01M p4 SW    0:00 httpd
nobody   24053   0.0  1.3 7.80M  840K p4 SW    0:00 httpd

auth_db, expires, proxy, perl, ssl modules
USER       PID  %CPU %MEM VSIZE RSIZE TT STAT  TIME COMMAND
root     24084  11.9  5.2 8.88M 3.33M p4 SW    0:01 httpd
nobody   24087   0.0  1.3 8.88M  824K p4 SW    0:00 httpd


CHANGELOG.

pending
- NEXTSTEP 3.x port (will exclude mod_ssl).

April 2, 1999	(1.3.6 port #1)
- Now that I now how to use apxs to build and install DSO modules,
  rename *.bundle to *.so.
- Update to apache 1.3.6, still needs patching for DSO 
  (apache bug ID mod_so/3997)
- Update mod_ssl (2.2.6) loadable module to use OpenSSL 0.9.2b (990324).
  mod_ssl's author strongly suggests OpenSSL over SSLeay because of
  security concerns.
- Include php-3.0.7 loadable module.

not released	(1.3.4 port #2)
- Made default httpd.conf file bind to non privledged ports
  by default: 8080 (and 8443 if using mod_ssl).
- Update to mod_ssl(2.2.5): fixed SSL restart bug.
- Should I release external modules separately (like mod_perl, mod_ssl)?
  It makes sense, especially for modules that get updated often.

Mar 4, 1999	(1.3.4 port #1)
- enable DSO mode.  Submitted DSO feature report and patch to apache.org, 
  ID mod_so/3997 
- include many loadable modules, namely, mod_ssl(2.2.3) and mod_perl(1.18).
  Making these was pretty hairy, and certainly not straight-forward.
  Kiddie's don't try this at home.  (-;
- first attempt at apache_1.3.4


CREDITS

Apache home page
http://www.apache.org/

Apache + SSL = mod_ssl
http://www.engelschall.com/sw/mod_ssl/

Apache-SSL
Alternative SSL implementation (not used in this package)
http://www.apache-ssl.org/

Apache + Perl = mod_perl
http://perl.apache.org/

Package
Rex Dieter <rdieter@math.unl.edu>
Computer System Manager
University of Nebraska-Lincoln
Department of Mathematics and Statistics
http://www.math.unl.edu/~rdieter/


