You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by wr...@locus.apache.org on 2000/10/05 03:40:55 UTC

cvs commit: apache-1.3/src/os/mpeix README

wrowe       00/10/04 18:40:55

  Modified:    src/os/mpeix README
  Log:
    Bring some notes up to date
  
  Submitted by:	Mark Bixby [mark_bixby@hp.com]
  
  Revision  Changes    Path
  1.2       +273 -4    apache-1.3/src/os/mpeix/README
  
  Index: README
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/os/mpeix/README,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- README	1999/12/10 11:03:58	1.1
  +++ README	2000/10/05 01:40:54	1.2
  @@ -1,5 +1,274 @@
  -For the latest info about Apache for MPE/iX, please see:
  +                        Using Apache With HP MPE/iX
   
  -	http://jazz.external.hp.com/src/apache/index.html
  -	or
  -	http://www.bixby.org/mark/apacheix.html
  +This document explains how to compile, install, configure and run Apache
  +1.3 under HP MPE/iX.
  +
  +The bug reporting page and new-httpd mailing list are NOT provided to
  +answer questions about configuration or running Apache. Before you submit a
  +bug report or request, first consult this document, the Frequently Asked
  +Questions page and the other relevant documentation topics. If you still
  +have a question or problem, post it to the comp.sys.hp.mpe newsgroup or the
  +associated HP3000-L mailing list, where many Apache users and several
  +contributors are more than willing to answer new and obscure questions
  +about using Apache on MPE/iX.
  +
  +deja.com's newsgroup archives offer easy browsing of previous questions.
  +Searching the newsgroup archives, you will usually find your question was
  +already asked and answered by other users!
  +
  +---------------------------------------------------------------------------
  +
  +   * Requirements
  +   * Implementation Considerations
  +   * Binary Distributions
  +   * Create the Accounting Structure
  +   * Downloading Apache
  +   * Compiling Apache
  +   * Installing Apache
  +   * Configuring Apache
  +   * Running Apache
  +   * Controlling Apache
  +
  +---------------------------------------------------------------------------
  +
  +Requirements
  +
  +Apache 1.3 requires MPE/iX 6.0 or greater.  It will NOT run on earlier
  +releases of MPE/iX.  The following MPE/iX patches (or their superseding
  +descendants) are relevant to Apache:
  +
  +   * MPE/iX 6.0:
  +        o MPEKXT3B - fixes an MPE bug that results in transient "permission
  +          denied" errors being returned by the server to the browser.
  +        o MPELX36A - enhances the kill() function so that MPE users with SM
  +          capability can send signals to Apache for shutdown, restart, etc.
  +        o MPELX44C - fixes an MPE bug that prevents DSO modules from being
  +          dynamically loaded.
  +        o MPELX51C - enhances the kill() function so that Apache can use it
  +          when the Apache parent UID is different from the Apache children
  +          UID (strongly recommended).
  +        o NSTxxxxx - the latest network transport patch should always be
  +          installed when using TCP/IP applications such as Apache.
  +   * MPE/iX 6.5:
  +        o MPELX44D - fixes an MPE bug that prevents DSO modules from being
  +          dynamically loaded.
  +        o MPELX51D - enhances the kill() function so that Apache can use it
  +          when the Apache parent UID is different from the Apache children
  +          UID (strongly recommended).
  +        o NSTxxxxx - the latest network transport patch should always be
  +          installed when using TCP/IP applications such as Apache.
  +
  +---------------------------------------------------------------------------
  +
  +Implementation Considerations
  +
  +While MPE has a very good POSIX implementation that enables fairly simple
  +porting of Unix applications such as Apache, there are some Unix concepts
  +which just don't exist or aren't fully implemented in MPE, and so this may
  +force some functionality changes in the package being ported.
  +
  +Significant MPE vs. Unix OS differences
  +
  +   * MPE lacks the concept of a Unix UID=0 root user with special
  +     privileges.  Where Unix functions require a user to be executing as
  +     root, MPE requires the user to be executing in priv mode, so the
  +     program file must be linked with PM (Priv Mode) capability, and the
  +     Unix function calls must be bracketed by GETPRIVMODE() and
  +     GETUSERMODE() calls.  The following Unix functions used by Apache are
  +     affected:
  +        o bind() for ports less than 1024
  +        o setgid()
  +        o setuid()
  +   * MPE's support for UIDs and GIDs is more limited than Unix.  Every MPE
  +     account maps to a unique GID.  Each MPE account can contain multiple
  +     MPE users, and every MPE user maps to a unique UID (UID 0 is not
  +     supported).  The current UID for a process must correspond to an MPE
  +     user within the MPE account that corresponds to the current GID of the
  +     process.
  +   * MPE child processes cannot survive the death of their parent.  When
  +     the parent terminates, any remaining children will be killed.
  +   * MPE doesn't initialize the envp parameter when invoking the main() of
  +     a new process.  Use the global variable environ instead of envp.
  +   * MPE link() exists, but always returns EIMPL.  Use rename() or symlinks
  +     instead of hard links.
  +   * MPE doesn't allow the @ character in filenames.
  +   * MPE lacks support for TCP_NODELAY, but that's the default anyway.
  +   * MPE lacks support for SO_KEEPALIVE.
  +   * MPE lacks support for process groups.
  +   * MPE inetd only passes stdin (and NOT stdout) to the invoked service.
  +     But you can write to stdin just fine.
  +
  +Major Apache functionality issues
  +
  +   * Beginning with HP-supported Apache 1.3.9 and HP WebWise MPE/iX Secure
  +     Web Server A.01.00 (based on Apache 1.3.9), the User and Group
  +     directives in httpd.conf are now unconditionally executed as
  +     corresponding setuid()/setgid() calls.  Previously this was only done
  +     if HTTPD was being run as MANAGER.SYS.  This functionality change was
  +     submitted back to the 1.3.13-dev source tree at www.apache.org.  The
  +     Apache for Unix behavior is to only honor User and Group if running as
  +     root.
  +   * Beginning with HP-supported Apache 1.3.9 and HP WebWise MPE/iX Secure
  +     Web Server A.01.00 (based on Apache 1.3.9), the SVIPC shared memory
  +     macros SHM_R and SHM_W have been modified from their traditional
  +     owner-only-read and owner-only-write values to be owner-and-group-read
  +     and owner-and-group-write on MPE/iX in order to allow increased
  +     parent/child flexibility in spite of MPE's limited POSIX UID/GID
  +     support.  This functionality change was submitted back to the
  +     1.3.13-dev source tree at www.apache.org.  The Apache for Unix
  +     behavior uses the traditional owner-only values of SHM_R and SHM_W.
  +
  +Minor Apache functionality issues
  +
  +   * Apache for Unix must be run as root to bind to TCP ports 1-1023.
  +     Apache for MPE 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 for Unix in standalone mode will detach itself and run in the
  +     background as a system-type process. Apache for MPE in standalone mode
  +     cannot detach itself and run in the background because MPE POSIX
  +     doesn't allow this (the detached child would be killed when the parent
  +     terminated).  Therefore you must use an MPE batch job to run Apache in
  +     standalone mode.
  +   * Apache for Unix uses process groups to manage child processes. Apache
  +     for MPE cannot use process groups because MPE POSIX doesn't support
  +     this. The implications of this are unknown.
  +   * Apache for Unix uses the setsockopt() option TCP_NODELAY. Apache for
  +     MPE does not, because MPE doesn't support it. But TCP_NODELAY is the
  +     default MPE behavior anyway.
  +   * Apache for Unix uses the setsockopt() option SO_KEEPALIVE.  Apache for
  +     MPE does not, because MPE doesn't support it.
  +   * Apache for Unix under inetd reads from the socket via stdin and writes
  +     via stdout. Apache for MPE 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 (not
  +     likely in the grand scheme of things), the existing Apache for MPE
  +     code will break.
  +   * Apache for Unix will use the @ character in proxy cache filenames, but
  +     since @ is illegal in MPE filenames, Apache for MPE uses the %
  +     character instead.
  +
  +---------------------------------------------------------------------------
  +
  +Binary Distributions
  +
  +HP ships a fully supported Apache binary distribution with the Fundamental
  +Operating System (FOS) in MPE/iX 6.5 and later.  This distribution can be
  +found in the APACHE account.
  +
  +HP supplies fully supported Apache binary distributions for MPE/iX 6.0 or
  +later available for downloading from
  +http://jazz.external.hp.com/src/apache/.
  +
  +Mark Bixby supplies Apache binary distributions for MPE/iX available for
  +downloading from http://www.bixby.org/mark/apacheix.html.  Binaries from
  +bixby.org are NOT supported by HP.  HP only supports binaries distributed
  +by HP.
  +
  +All of the binary distributions mentioned above may possibly include
  +functionality that hasn't yet been submitted back to the Apache Software
  +Foundation (though submitting back is the intended goal).  Please read the
  +documentation that comes with these binaries in order to determine
  +functionality differences (if any) compared to the latest sources available
  +from the ASF.
  +
  +If you will be using one of these binary distributions, please stop reading
  +this document and start reading the specific distribution documentation for
  +installation details.
  +
  +---------------------------------------------------------------------------
  +
  +Create the Accounting Structure
  +
  +Apache can be installed under the account of your choice.  For the purposes
  +of this document, the APACHE account will be used:
  +
  +  1. :HELLO MANAGER.SYS
  +  2. :NEWACCT APACHE,MGR
  +  3. :ALTACCT APACHE;PASS=xxxxxxxx;CAP=AM,AL,ND,SF,BA,IA,PM,PH
  +  4. :ALTGROUP PUB.APACHE;CAP=BA,IA,PM,PH;ACCESS=(R,L,X:AC;W,A,S:AL)
  +  5. :ALTUSER MGR.APACHE;CAP=AM,AL,ND,SF,BA,IA,PM,PH;HOME=PUB
  +  6. :NEWUSER SERVER.APACHE
  +  7. :ALTUSER SERVER.APACHE;CAP=ND,SF,BA,IA,PH;HOME=PUB
  +
  +Downloading Apache
  +
  +Use your web browser to download the Apache source tarball from
  +http://www.apache.org/dist/.  Then ftp upload the tarball to your e3000 as
  +show below:
  +
  +C:\Temp>ftp 3000.host.name
  +Connected to 3000.host.name.
  +220 HP ARPA FTP Server [A0009H09] (C) Hewlett-Packard Co. 1990
  +User (3000.host.name:(none)): MGR.APACHE
  +331 Password required for MGR.APACHE.  Syntax: acctpass
  +Password:xxxxxxxx
  +230 User logged on
  +ftp> quote type L 8
  +200 Type set to L (byte size 8).
  +ftp> put apache_v.u.ff.tar.Z /tmp/apache.tar.Z
  +200 PORT command ok.
  +150 File: /tmp/apache.tar.Z opened; data connection will be opened
  +226 Transfer complete.
  +ftp: 2685572 bytes sent in 2.75Seconds 976.57Kbytes/sec.
  +ftp> quit
  +221 Server is closing command connection
  +
  +Unpack the tarball:
  +
  +  1. :HELLO MGR.APACHE
  +  2. :XEQ SH.HPBIN.SYS -L
  +  3. $ mkdir src
  +  4. $ chmod 700 src
  +  5. $ cd src
  +  6. $ tar xvfopz /tmp/apache.tar.Z
  +
  +Compiling Apache
  +
  +It is STRONGLY recommended to use gcc instead of the HP C/iX compiler.  You
  +can obtain gcc from http://jazz.external.hp.com/src/gnu/gnuframe.html.
  +
  +  1. $ cd apache_v.uu.ff
  +  2. $ ./configure --prefix=/APACHE/PUB --enable-module=xxx
  +     --enable-module=yyy ...etc...
  +  3. $ make
  +
  +Installing Apache
  +
  +  1. $ make install
  +  2. $ cd /APACHE/PUB
  +  3. $ mv bin/httpd HTTPD
  +  4. $ ln -s HTTPD bin/httpd
  +  5. $ callci "xeq linkedit.pub.sys 'altprog HTTPD;cap=ia,ba,ph,pm'"
  +
  +Configuring Apache
  +
  +Edit /APACHE/PUB/conf/httpd.conf and customize as needed for your
  +environment.  Be sure to make the following mandatory changes:
  +
  +   * User SERVER.APACHE
  +   * Group APACHE
  +
  +Running Apache
  +
  +Simply create and :STREAM the following standalone server job in order to
  +start Apache:
  +
  +!JOB JHTTPD,MGR.APACHE;OUTCLASS=,2
  +!XEQ SH.HPBIN.SYS "-c 'umask 007; ./HTTPD -f /APACHE/PUB/conf/httpd.conf'"
  +!eoj
  +
  +Controlling Apache
  +
  +Log on as MGR.APACHE (or MANAGER.SYS or any other SM user if you've
  +installed MPELX36A on 6.0) in order to shutdown or restart Apache via the
  +use of signals.
  +
  +To shut down Apache from the POSIX shell:
  +
  +$ kill `cat /APACHE/PUB/logs/httpd.pid`
  +
  +To shut down Apache from the CI:
  +
  +:XEQ SH.HPBIN.SYS '-c "kill `cat /APACHE/PUB/logs/httpd.pid`"'