Apache/iX for HP 3000 MPE
http://www.cccd.edu/~markb/apacheix.html
The world's most popular (and free!) web server meets the world's best OLTP
server
Last updated December 18, 1997 @ 2345 UTC
---------------------------------------------------------------------------
What's New
* December 18, 1997
o Apache/iX updated to 1.3b3. This version of Apache runs on MPE,
Unix, Windows 95, Windows NT, and contains many new features.
Note that 1.3b3 is BETA code that should not be run for
mission-critical production purposes. The MPE port required a
few patches that have not yet been submitted to the official
Apache developers.
o FastCGI has been removed from Apache/iX 1.3b3 because the FastCGI
developers do not yet support Apache 1.3.
o Proxy support has now been included for the first time in
Apache/iX. It compiles cleanly, but I haven't personally tested
it.
* October 8, 1997
o Added various Apache/iX home page links to Perl/iX.
* October 3, 1997
o Modified the gcc link on the Apache/iX home page to point to the
Interex Freeware tape. Added the System Requirements section.
---------------------------------------------------------------------------
Welcome
This is the official home page for the HP 3000 MPE port of the Apache web
server. Check here for the latest news, implemented functionality, known
bugs, to-do list, etc. Status reports about major milestones will also be
posted to the HP3000-L mailing list and its associated gatewayed newsgroup
comp.sys.hp.mpe.
I'm doing this port because I need to be able to run a web server on the HP
3000 where all of our major databases live. I chose Apache because it's
free, and also because it's what I run under HPUX for the Coast Community
College District web site as well as my own personal Southland Ski Server
web site.
Please send your comments, questions, and bug reports directly to me, Mark
Bixby, by e-mailing to [log in to unmask] Or just post them to HP3000-L. You
can also telephone me at +1 714 438-4647 Monday-Friday 0815-1715 PDT
(1615-0115 UTC).
The platform I'm using to do this port is an HP 3000 969KS200 running
MPE/iX 5.5 and using the gcc C compiler from the Interex Freeware tape.
This is my only HP 3000, so I'm very interested to hear from people running
MPE/iX 5.0 and/or using the HP C compiler.
---------------------------------------------------------------------------
Newsflash from HPWorld97
August 26, 1997
HP announced today that Netscape's FastTrack web server will be bundled
with and supported on MPE as of sometime in 1998.
Features in FastTrack but not in Apache
The following is a partial list (if you know of others, let me know):
* Officially supported by HP.
* SSL v3 support that is legal in USA/Canada.
Features in Apache but not in FastTrack
The following is a partial list (if you know of others, let me know):
* Available now instead of waiting until sometime in 1998.
* Virtual host support via HTTP/1.1 hostname header.
* The optional ability to use Perl as a dynamic HTML scripting language.
Apache vs. FastTrack Benchmarks
Not yet known how the speed of the web servers will compare under MPE. When
I know, I'll let you know.
---------------------------------------------------------------------------
System Requirements
* Requires MPE/iX 5.0 or later. CGI scripts don't work on 5.0, but CGI
NMPRGs will. This is due to HP's limited exec() functionality on 5.0.
But I recommend 5.5 for serious CGI work anyway.
* CGI scripts require MPE/iX 5.5 or later.
* It's technically not required, but if you want to do CGI scripts, you
really should be using Perl and CGI.pm.
---------------------------------------------------------------------------
How to Obtain Apache/iX
1. Create the Apache account
2. Download Apache using either FTP.ARPA.SYS or some other client
3. Uncompress and extract
Create the Apache account on your HP 3000
:HELLO MANAGER.SYS
:NEWACCT APACHE,MGR;CAP=AL,ND,SF,IA,BA,PH,PM;PASS=somethingsecure
:ALTGROUP PUB.APACHE;ACCESS=(R,L,X:AC;W,A,S:AL)
:NEWUSER SERVER.APACHE;HOME=PUB;CAP=ND,SF,IA,BA,PH
Download Apache using FTP.ARPA.SYS from your HP 3000 (the preferred
method).....
:HELLO MGR.APACHE
:FTP.ARPA.SYS
open ftp.cccd.edu
anonymous
[log in to unmask]
bytestream
cd /pub/mpe
get mover55.prvxl.telesup mover55;code=nmprg;rec=128
get apache_1.3b3_mpe.mover.Z /tmp/apache.mover.Z
exit
.....Or download using some other generic web or ftp client (the alternate
method)
Download the following files (make sure that you use "binary mode" or
whatever client feature that is 8-bit clean):
* mover55 from http://www.cccd.edu/ftp/pub/mpe/mover55.prvxl.telesup or
ftp://ftp.cccd.edu/pub/mpe/mover55.prvxl.telesup
* apache from http://www.cccd.edu/ftp/pub/mpe/apache_1.3b3_mpe.mover.Z
or ftp://ftp.cccd.edu/pub/mpe/apache_1.3b3_mpe.mover.Z
Upload those files to your HP 3000 in an 8-bit clean bytestream manner to:
* /tmp/mover55
* /tmp/apache.mover.Z
Convert mover into something that is executable:
:HELLO MGR.APACHE
:FILE MOVER55;CODE=NMPRG
:FROMBYTE.HPBIN.SYS '-b /tmp/mover55 *MOVER55'
Then uncompress and extract the distribution (after both download methods)
:UNCOMPRE.HPBIN.SYS '/tmp/apache.mover.Z'
:MOVER55.PUB.APACHE '-x /tmp/apache.mover'
---------------------------------------------------------------------------
Distribution Contents
README
this file
HTTPD
pre-compiled Apache binary
JHTTPD
:STREAM this job to run Apache
apache_1.3b3_mpe/
the standard Apache distribution directory tree with integrated
patches for MPE
cgi-bin/
sample CGI scripts; anything placed in this directory will be executed
upon retrieval by Apache
conf/
run-time configuration files
htdocs/
a symbolic link to the HTML Apache documentation
icons/
a symbolic link to the standard Apache icons
logs/
run-time log files
misc/
encrypted passwords to demonstrate basic user authentication
public_html/
test files for demonstrating the http://your.host/~MGR.APACHE/ user
directory feature
---------------------------------------------------------------------------
How to Compile Apache
1. cd apache_1.3b3_mpe/src
2. Read the INSTALL file for the official instructions
3. vi Configuration
4. ./Configure
5. make
6. callci copy ./httpd, /APACHE/PUB/HTTPD
---------------------------------------------------------------------------
How to Run Apache
1. Examine conf/*.conf and conf/mime.types to see the run-time
configuration. These are very vanilla and reasonable for demo
purposes. Examine apache_1.3b3/conf/*-dist and
apache_1.3b3/conf/mime.types to see the original configuration
templates that are distributed with the official version of Apache.
2. :STREAM JHTTPD.PUB.APACHE
3. Start a web browser and visit the following URLs:
o Official Apache documentation: http://your.host/
o The public_html subdirectory of user MGR.APACHE:
http://your.host/~MGR.APACHE/
4. Examine the run-time log files in logs/*.
5. Stop Apache either by :ABORTJOB or kill `cat logs/httpd.pid`
---------------------------------------------------------------------------
How to Test FastCGI (not supported with Apache 1.3)
1. :STREAM JHTTPD.PUB.APACHE and read the documentation:
o http://your.host/~MGR.APACHE/mod_fastcgi.html
o http://your.host/~MGR.APACHE/fcgi/
2. :STREAM FHTTPD.PUB.APACHE and test local FastCGI at
http://your.host:5556/examples/echo
3. :STREAM FHTTPDX.PUB.APACHE while FHTTPD is still running and test
remote FastCGI at http://your.host:5557/examples/remote-echo
You will be amazed at the response time difference between traditional
forked CGI and FastCGI.
At the present time I have only tested FastCGI with the supplied C program
"echo", and the remote feature has only been tested between two separate
web servers running on the same machine (I only have one MPE machine).
I would like to attempt to rebuild Perl to support FastCGI, but that is a
very time-consuming task that I'd like to defer until other people have
exercised the client library from C programs. I only want to rebuild Perl
if I'm sure the FastCGI port is bug-free.
For more information about FastCGI, please visit http://www.fastcgi.com/.
Note that Apache/iX FastCGI support is somewhat outdated and really should
be re-ported from the latest & greatest FastCGI distributions from the
FastCGI web site.
---------------------------------------------------------------------------
Secure Socket Layer (SSL) (not supported with Apache 1.3)
SSL is the protocol used to provide end-to-end encryption between a web
browser and a web server during secure transactions. Because of a number
of sticky legal issues, SSL support has not been included with the standard
Apache/iX binary distribution. To learn more about these issues, you can
visit the following pages:
* http://www.apacheweek.com/features/ssl
* http://www.psy.uq.oz.au/~ftp/Crypto/#Is this legal
If after reading the above references you decide that your intended use of
SSL is legal in your country, you can build your own SSL support into
Apache/iX via source recompilation by following these steps:
1. Install the gcc FREEWARE compiler if you haven't already done so.
Perl is helpful too.
2. USA/Canada only: obtain and build the RSA rsaref library from
ftp://ftp.rsa.com/rsaref/.
3. Obtain SSLeay 0.8.1 from ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL/.
4. Obtain the MPE patches for SSLeay 0.8.1 from
ftp://ftp.cccd.edu/pub/mpe/SSLeay-0.8.1-mpe.patch. Apply this on top
of the vanilla SSLeay-0.8.1 source.
5. USA/Canada only: After running SSLeay Configure, tweak the top-level
Makefile to include -DRSAref and -lrsaref.
6. Build SSLeay.
7. Obtain Apache-1.2.0 from
ftp://ftp.apache.org/apache/dist/old/1.2/apache_1.2.0.tar.gz.
8. Obtain Apache-SSL from
ftp://ftp.ox.ac.uk/pub/crypto/SSL/apache_1.2.0+ssl_1.8.tar.gz. Install
the Apache-SSL patches on top of Apache-1.2.0 and build.
9. Follow the Apache-SSL directions to create your self-signed server
certificate.
10. Start the web server.
Note that Apache-SSL 1.8 is intended to patch Apache 1.2.0. The patch
increasingly diverges from reality with the newer versions of Apache.
Check the Apache-SSL documentation carefully for which versions of Apache
and SSLeay are supported.
---------------------------------------------------------------------------
MPE/iX Implementation Considerations
There some minor functionality issues to be aware of when comparing Apache
for Unix (Apache/UX) to Apache/iX:
* Apache/UX must be run as root to bind to TCP ports 1-1023. Apache/iX
must call GETPRIVMODE() to bind to TCP ports 1-1023; PM is not used
for ports greater than 1023. The standard web server HTTP port is 80.
* Apache/UX will call setuid()/setgid() to assume the run-time identity
of the User/Group specified in httpd.conf if httpd is started by root.
Apache/iX will call GETPRIVMODE() and setuid() to assume the run-time
identity of the User specified in httpd.conf if httpd is started by
MANAGER.SYS. MPE POSIX does not support setgid() at the present time.
* Apache/UX in standalone mode will detach itself and run in the
background as a system-type process. Apache/iX in standalone mode
cannot detach itself and run in the background because MPE POSIX
doesn't allow this.
* Apache/UX uses process groups to manage child processes. Apache/iX
cannot use process groups because MPE POSIX doesn't support this. At
this time, I don't know what the implications are.
* Apache/UX uses the setsockopt() options TCP_NODELAY and SO_REUSEADDR.
Apache/iX does not, because MPE doesn't support them. But TCP_NODELAY
is the default MPE behavior anyway.
* Apache/UX uses nice() to adjust the run-time priority of FastCGI
processes. Apache/iX does not because MPE POSIX doesn't support this.
* Apache uses the exec() functions to launch CGI programs and scripts.
MPE 5.0 exec() can execute compiled programs but cannot execute
scripts; MPE 5.5 exec() can execute both compiled programs and scripts
(see the 5.5 Communicator for details).
* Apache/UX under inetd reads from the socket via stdin and writes via
stdout. Apache/iX under inetd reads *AND* writes the socket via stdin.
I consider MPE 5.5 inetd to be broken and poorly documented, so I
submitted SR 5003355016 to address this. If HP ever alters the MPE
inetd to pass the socket the way HPUX inetd does, the existing
Apache/iX code will break.
* Apache/UX mod_usertrack.c generates a unique cookie ID by combining a
millisecond timestamp from gettimeofday() with other information.
Apache/iX is unable to use gettimeofday() because MPE doesn't have
this function, and so instead combines a seconds-resolution timestamp
from time() with CPU milliseconds from times().
* Apache/UX support/htpasswd and htdigest call getpass() to prompt the
user to enter a password with echo disabled. The getpass() function
does not exist under MPE, and so Apache/iX support/htpasswd and
htdigest read the password from stdin without disabling echo. I am
unware of any way to disable echo under MPE using strictly POSIX
functions. This should probably be rewritten to use FCONTROL() or
FDEVICECONTROL().
---------------------------------------------------------------------------
Known Bugs Under Investigation
* setsockopt() SO_KEEPALIVE fails. It's documented as supported in the
Berkeley Sockets/iX manual.
---------------------------------------------------------------------------
To-Do List
* Squash all known bugs listed above.
* Attempt to compile these modules:
o db_auth_module (will required porting Berkeley db)
o dbm_auth_module (will require porting GNU dbm)
* Attempt to compile support/suexec. This may or may not be possible
due to MPE's somewhat limited setuid/setgid support.
* Re-port FastCGI and submit the MPE diffs back to the official FastCGI
developers.
* Investigate IP network performance issues. The MPE TCP/IP stack
accessed via POSIX sockets calls seems to be *much* slower than the
HPUX TCP/IP stack, i.e. a 9000/800G30 burdened with two full Usenet
newsfeeds can serve large files with Apache/UX about 3-4 times faster
than a 3000/969KS200 with Apache/iX.
---------------------------------------------------------------------------
Change History
* August 27, 1997
o Newsflash from HPWorld97 in Chicago: HP plans to bundle Netscape
FastTrack Server with MPE.
* August 19, 1997
o Changed the status scoreboard feature to use SVIPC shared memory
instead of a disk file.
* August 18, 1997
o Rebuilt "straight out of the box" from the Apache 1.2.3 release
from the official developers. This is a bugfix release; 1.2.2
was never released to the general public.
o MPE porting bug fixed for the RFC1413 "IdentityCheck On"
configuration directive. This fix will be submitted to a future
official version (1.3?) of Apache.
o Included mod_auth_anon into the standard MPE build.
* July 15, 1997
o Took the first step towards implementing SSL by successfully
porting SSLeay-0.8.0. The next step will be to port the
Apache-SSL patches when I can find some time, hopefully before
the HPWorld conference next month. NOTE: the SSLeay port is
strictly an internal work-in-progress. The source has not been
included with the publicly available Apache/iX distribution, nor
have the porting diffs been submitted yet to the SSLeay authors.
Before you get overly excited about SSL, be aware that there are
some important legal issues that you should know about.
* July 8, 1997
o Rebuilt "straight out of the box" from the Apache 1.2.1 release
from the official developers.
* June 5, 1997
o Rebuilt "straight out of the box" from the Apache 1.2.0 release
from the official developers who consider 1.2.0 to be a
"production" release. The official developers will now be
concentrating on the future 2.0 architecture, and so the 1.2.*
code base won't be changing much. I still plan to test the few
remaining untested 1.2.* modules (db, dbm, proxy) under MPE, as
well as updating the FastCGI support once the OpenMarket folks
stabilize their code somewhat.
* May 30, 1997
o Rebuilt "straight out of the box" from the Apache 1.2b11 release
from the official developers. NOTE: this is the release
candidate for 1.2 (i.e. non-"beta") that is scheduled to be
released on June 5th, 1997.
* May 2, 1997
o Rebuilt "straight out of the box" from the Apache 1.2b10 release
from the official developers. No new MPE functionality.
* April 11, 1997
o Support for FastCGI. Now I understand why people are waiting for
FastCGI -- the performance is amazing compared to traditionally
forked CGI programs.
* April 10, 1997
o Compiles "straight out of the box" from the official Apache group
distribution. You should be able to build this on MPE from the
source downloaded from www.apache.org. No new MPE functionality,
but many generic Apache bug fixes from the official Apache
developers.
o Demo config files now stored in conf/ instead of
apache_1.2b8/conf/.
o Demo log files now written to logs/ instead of
apache_1.2b8/logs/.
* February 27, 1997
o A few minor portability patches were required to get the public
release of 1.2b7 to build on MPE. No new MPE functionality. If
you discover the FastCGI references in the Apache/iX
distribution, ignore them -- the code is definitely
non-functional and is dependent on the results of an open HP
Response Center call at this point.
* February 4, 1997
o I have compiled everything in support/ with the exception of
suexec (which, being complex and dangerous, explains why I
haven't worked on it yet).
o Basic user authentication works with password files created by
support/htpasswd. But see Implementation Considerations for
details.
o All of my porting patches to date have been submitted to the
Apache group for inclusion in the upcoming 1.2b7 that will be
available in source form at www.apache.org. My latest working
copy of the port (which contains both source and binaries) will
continue to be available from my own site as documented below in
How to Obtain.
* January 30, 1997
o MPE patches carried forward to the newly released 1.2b6.
o Support removed for mod_fastcgi. With 1.2b6, mod_fastcgi is no
longer bundled with the Apache source distribution. I will
provide support for both the server side and the client side at
the same time on a future date.
o APACHE account creation instructions modified to include
CAP=ND,SF,IA,BA,PH for SERVER.APACHE. The PH is required for CGI
to work.
* January 29, 1997
o Added support for inetd and mod_usertrack.c.
o APACHE account creation instructions modified.
o JHTTPD job changed to run under the new non-PM user
SERVER.APACHE.
* January 28, 1997
o Created this web page.
o Added support for setuid() and FastCGI.
---------------------------------------------------------------------------
Mark Bixby, [log in to unmask]
--
Mark Bixby E-mail: [log in to unmask]
Coast Community College Dist. Web: http://www.cccd.edu/~markb/
District Information Services 1370 Adams Ave, Costa Mesa, CA, USA 92626-5429
Technical Support Voice: +1 714 438-4647
"You can tune a file system, but you can't tune a fish." - tunefs(1M)
|