HP3000-L Archives

June 1997, Week 1

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, 5 Jun 1997 15:07:38 -0700
Content-Type:
text/plain
Parts/Attachments:
text/plain (345 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 June 5, 1997 @ 2145 UTC

---------------------------------------------------------------------------

What's New

   * 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.

---------------------------------------------------------------------------

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 0800-1700 PST
(1500-0000 UTC).

The platform I'm using to do this port is an HP 3000 969KS200 running
MPE/iX 5.5 and using the gcc compiler from
http://jazz.external.hp.com/src/gnu/gnu_tools/gnutools.html. This is my
only HP 3000, so I'm very interested to hear from people running MPE/iX 5.0
and using the HP c compiler.

---------------------------------------------------------------------------

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.2b11.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.2.0.mover.Z or
     ftp://ftp.cccd.edu/pub/mpe/apache_1.2.0.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
FHTTPD
     :STREAM this job to test local FastCGI at
     http://host:5556/examples/echo
FHTTPDX
     :STREAM this job while FHTTPD is still running to test remote FastCGI
     at http://host:5557/examples/remote-echo
HTTPD
     pre-compiled Apache binary
JHTTPD
     :STREAM this job to run Apache
apache_1.2.0/
     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
fastcgi-1.4.3-m/
     FastCGI server-side Apache module
fcgi-2.0b2-mpe/
     FastCGI client-side developer's kit libraries and examples
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.2.0/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.2.0/conf/*-dist and
     apache_1.2.0/conf/mime.types to see the original configuration
     templates that are distributed with the official version of Apache.
  2. :STREAM JHTTPD.PUB.APACHE (recommended) or configure it to run under
     inetd (possible, but slow!)
  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/pid`

---------------------------------------------------------------------------

How to Test FastCGI

  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/.

---------------------------------------------------------------------------

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.

---------------------------------------------------------------------------

Known Bugs Under Investigation

   * setsockopt() SO_KEEPALIVE fails. It's documented as supported in the
     Berkeley Sockets/iX manual.
   * Sometimes CGI program execution results in "lingering close" messages
     in logs/error. But the CGI still appears to execute OK and all data is
     returned to the client.

---------------------------------------------------------------------------

To-Do List

   * Squash all known bugs listed above.
   * Investigate network performance issues.
   * Attempt to compile these modules:
        o dbm_auth_module (will require porting GNU dbm)
        o proxy_module?
   * Attempt to compile support/suexec.
   * Implement the ability to run CGI shell scripts under MPE 5.0.
   * Attempt to rebuild Perl with FastCGI support.

---------------------------------------------------------------------------

Change History

   * 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               +1 714 438-4647
"You can tune a file system, but you can't tune a fish." - tunefs(1M)

ATOM RSS1 RSS2