diff options
Diffstat (limited to 'APACHE_1_3_42/src/os/mpeix/README')
-rw-r--r-- | APACHE_1_3_42/src/os/mpeix/README | 274 |
1 files changed, 274 insertions, 0 deletions
diff --git a/APACHE_1_3_42/src/os/mpeix/README b/APACHE_1_3_42/src/os/mpeix/README new file mode 100644 index 0000000000..81c23bc950 --- /dev/null +++ b/APACHE_1_3_42/src/os/mpeix/README @@ -0,0 +1,274 @@ + Using Apache With HP MPE/iX + +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`"' |