HP3000-L Archives

December 1997, Week 3

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Mark Bixby <[log in to unmask]>
Reply To:
Date:
Thu, 18 Dec 1997 16:11:46 -0800
Content-Type:
text/plain
Parts/Attachments:
text/plain (466 lines)
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)

ATOM RSS1 RSS2