diff options
Diffstat (limited to 'APACHE_1_3_42/htdocs/manual/mpeix.html')
-rw-r--r-- | APACHE_1_3_42/htdocs/manual/mpeix.html | 420 |
1 files changed, 420 insertions, 0 deletions
diff --git a/APACHE_1_3_42/htdocs/manual/mpeix.html b/APACHE_1_3_42/htdocs/manual/mpeix.html new file mode 100644 index 0000000000..14d7a58549 --- /dev/null +++ b/APACHE_1_3_42/htdocs/manual/mpeix.html @@ -0,0 +1,420 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta name="generator" content="HTML Tidy, see www.w3.org" /> + <meta http-equiv="Content-Type" + content="text/html; charset=iso-8859-1" /> + <meta name="GENERATOR" + content="Mozilla/4.75 [en] (Win98; U) [Netscape]" /> + <meta name="Author" content="Mark Bixby - mark@bixby.org" /> + + <title>Using Apache with HP MPE/iX</title> + <!-- Background white, links blue (unvisited), navy (visited), red (active) --> + </head> + + <body text="#000000" bgcolor="#FFFFFF" link="#0000FF" + vlink="#000080" alink="#FF0000"> + <!--#include virtual="header.html" --> + + <center> + <h1>Using Apache With HP MPE/iX</h1> + </center> + This document explains how to compile, install, configure and + run Apache 1.3 under HP MPE/iX. + + <p>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 <a href="misc/FAQ.html">Frequently + Asked Questions</a> page and the other relevant documentation + topics. If you still have a question or problem, post it to the + <a href="news:comp.sys.hp.mpe">comp.sys.hp.mpe</a> newsgroup or + the associated <a + href="http://jazz.external.hp.com/papers/hp3000-info.html">HP3000-L + mailing list</a>, where many Apache users and several + contributors are more than willing to answer new and obscure + questions about using Apache on MPE/iX.</p> + + <p><a + href="http://groups.google.com/groups?hl=en&lr=&safe=off&group=comp.sys.hp.mpe"> + groups.google.com's newsgroup archive</a> offers easy browsing + of previous questions. Searching the newsgroup archives, you + will usually find your question was already asked and answered + by other users!</p> + <hr /> + + <ul> + <li><a href="#req">Requirements</a></li> + + <li><a href="#implement">Implementation + Considerations</a></li> + + <li><a href="#binaries">Binary Distributions</a></li> + + <li><a href="#accounting">Create the Accounting + Structure</a></li> + + <li><a href="#down">Downloading Apache</a></li> + + <li><a href="#compile">Compiling Apache</a></li> + + <li><a href="#inst">Installing Apache</a></li> + + <li><a href="#config">Configuring Apache</a></li> + + <li><a href="#run">Running Apache</a></li> + + <li><a href="#control">Controlling Apache</a></li> + </ul> + <hr /> + + <h2><a id="req" name="req"></a>Requirements</h2> + 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: + + <ul> + <li>MPE/iX 6.0:</li> + + <li style="list-style: none"> + <ul> + <li>MPEKXT3B - fixes an MPE bug that results in transient + "permission denied" errors being returned by the server + to the browser.</li> + + <li>MPELX36A - enhances the kill() function so that MPE + users with SM capability can send signals to Apache for + shutdown, restart, etc.</li> + + <li>MPELX44C - fixes an MPE bug that prevents DSO modules + from being dynamically loaded.</li> + + <li>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).</li> + + <li>NSTxxxxx - the latest network transport patch should + always be installed when using TCP/IP applications such + as Apache.</li> + </ul> + </li> + + <li>MPE/iX 6.5:</li> + + <li style="list-style: none"> + <ul> + <li>MPELX44D - fixes an MPE bug that prevents DSO modules + from being dynamically loaded.</li> + + <li>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).</li> + + <li>NSTxxxxx - the latest network transport patch should + always be installed when using TCP/IP applications such + as Apache.</li> + </ul> + </li> + </ul> + <hr width="100%" /> + + <h2><a id="implement" name="implement"></a>Implementation + Considerations</h2> + 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. + + <h3>Significant MPE vs. Unix OS differences</h3> + + <ul> + <li>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:</li> + + <li style="list-style: none"> + <ul> + <li>bind() for ports less than 1024</li> + + <li>setgid()</li> + + <li>setuid()</li> + </ul> + </li> + + <li>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.</li> + + <li>MPE child processes cannot survive the death of their + parent. When the parent terminates, any remaining + children will be killed.</li> + + <li>MPE doesn't initialize the envp parameter when invoking + the main() of a new process. Use the global variable + environ instead of envp.</li> + + <li>MPE link() exists, but always returns EIMPL. Use + rename() or symlinks instead of hard links.</li> + + <li>MPE doesn't allow the @ character in filenames.</li> + + <li>MPE lacks support for TCP_NODELAY, but that's the default + anyway.</li> + + <li>MPE lacks support for SO_KEEPALIVE.</li> + + <li>MPE lacks support for process groups.</li> + + <li>MPE inetd only passes stdin (and NOT stdout) to the + invoked service. But you can write to stdin just + fine.</li> + </ul> + + <h3>Major Apache functionality issues</h3> + + <ul> + <li>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.</li> + + <li>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.</li> + </ul> + + <h3>Minor Apache functionality issues</h3> + + <ul> + <li>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.</li> + + <li>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.</li> + + <li>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.</li> + + <li>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.</li> + + <li>Apache for Unix uses the setsockopt() option + SO_KEEPALIVE. Apache for MPE does not, because MPE + doesn't support it.</li> + + <li>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.</li> + + <li>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.</li> + </ul> + <hr width="100%" /> + + <h2><a id="binaries" name="binaries"></a>Binary + Distributions</h2> + 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. + + <p>HP supplies fully supported Apache binary distributions for + MPE/iX 6.0 or later available for downloading from <a + href="http://jazz.external.hp.com/src/apache/">http://jazz.external.hp.com/src/apache/</a>.</p> + + <p>Mark Bixby supplies Apache binary distributions for MPE/iX + available for downloading from <a + href="http://www.bixby.org/mark/apacheix.html">http://www.bixby.org/mark/apacheix.html</a>. + Binaries from bixby.org are NOT supported by HP. HP only + supports binaries distributed by HP.</p> + + <p>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.</p> + + <p>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.</p> + <hr width="100%" /> + + <h2><a id="accounting" name="accounting"></a>Create the + Accounting Structure</h2> + Apache can be installed under the account of your choice. + For the purposes of this document, the APACHE account will be + used: + + <ol> + <li><tt><font size="+1">:HELLO MANAGER.SYS</font></tt></li> + + <li><tt><font size="+1">:NEWACCT APACHE,MGR</font></tt></li> + + <li><tt><font size="+1">:ALTACCT + APACHE;PASS=xxxxxxxx;CAP=AM,AL,ND,SF,BA,IA,PM,PH</font></tt></li> + + <li><tt><font size="+1">:ALTGROUP + PUB.APACHE;CAP=BA,IA,PM,PH;ACCESS=(R,L,X:AC;W,A,S:AL)</font></tt></li> + + <li><tt><font size="+1">:ALTUSER + MGR.APACHE;CAP=AM,AL,ND,SF,BA,IA,PM,PH;HOME=PUB</font></tt></li> + + <li><tt><font size="+1">:NEWUSER + SERVER.APACHE</font></tt></li> + + <li><tt><font size="+1">:ALTUSER + SERVER.APACHE;CAP=ND,SF,BA,IA,PH;HOME=PUB</font></tt></li> + </ol> + + <h2><a id="down" name="down"></a>Downloading Apache</h2> + Use your web browser to download the Apache source tarball from + <a + href="http://www.apache.org/dist/httpd/">http://www.apache.org/dist/httpd/</a>. + Then ftp upload the tarball to your e3000 as show below: +<pre> +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 +</pre> + Unpack the tarball: + + <ol> + <li><tt>:HELLO MGR.APACHE</tt></li> + + <li><tt>:XEQ SH.HPBIN.SYS -L</tt></li> + + <li><tt>$ mkdir src</tt></li> + + <li><tt>$ chmod 700 src</tt></li> + + <li><tt>$ cd src</tt></li> + + <li><tt>$ tar xvfopz /tmp/apache.tar.Z</tt></li> + </ol> + + <h2><a id="compile" name="compile"></a>Compiling Apache</h2> + It is STRONGLY recommended to use gcc instead of the HP C/iX + compiler. You can obtain gcc from <a + href="http://jazz.external.hp.com/src/gnu/gnuframe.html">http://jazz.external.hp.com/src/gnu/gnuframe.html</a>. + + + <ol> + <li><tt>$ cd apache_v.uu.ff</tt></li> + + <li><tt>$ ./configure --prefix=/APACHE/PUB + --enable-module=xxx --enable-module=yyy ...etc...</tt></li> + + <li><tt>$ make</tt></li> + </ol> + + <h2><a id="inst" name="inst"></a>Installing Apache</h2> + + <ol> + <li><tt>$ make install</tt></li> + + <li><tt>$ cd /APACHE/PUB</tt></li> + + <li><tt>$ mv bin/httpd HTTPD</tt></li> + + <li><tt>$ ln -s HTTPD bin/httpd</tt></li> + + <li><tt>$ callci "xeq linkedit.pub.sys 'altprog + HTTPD;cap=ia,ba,ph,pm'"</tt></li> + </ol> + + <h2><a id="config" name="config"></a>Configuring Apache</h2> + Edit /APACHE/PUB/conf/httpd.conf and customize as needed for + your environment. Be sure to make the following mandatory + changes: + + <ul> + <li>User SERVER.APACHE</li> + + <li>Group APACHE</li> + </ul> + + <h2><a id="run" name="run"></a>Running Apache</h2> + Simply create and :STREAM the following standalone server job + in order to start Apache: +<pre> +!JOB JHTTPD,MGR.APACHE;OUTCLASS=,2 +!XEQ SH.HPBIN.SYS "-c 'umask 007; ./HTTPD -f /APACHE/PUB/conf/httpd.conf'" +!eoj +</pre> + + <h2><a id="control" name="control"></a>Controlling Apache</h2> + 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. + + <p>To shut down Apache from the POSIX shell:</p> +<pre> +$ kill `cat /APACHE/PUB/logs/httpd.pid` +</pre> + To shut down Apache from the CI: +<pre> +:XEQ SH.HPBIN.SYS '-c "kill `cat /APACHE/PUB/logs/httpd.pid`"' +</pre> + <!--#include virtual="footer.html" --> + </body> +</html> + |