diff options
Diffstat (limited to 'usr.sbin/httpd/htdocs/manual/mpeix.html')
-rw-r--r-- | usr.sbin/httpd/htdocs/manual/mpeix.html | 430 |
1 files changed, 430 insertions, 0 deletions
diff --git a/usr.sbin/httpd/htdocs/manual/mpeix.html b/usr.sbin/httpd/htdocs/manual/mpeix.html new file mode 100644 index 00000000000..d7c053dea8b --- /dev/null +++ b/usr.sbin/httpd/htdocs/manual/mpeix.html @@ -0,0 +1,430 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <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"> +<DIV ALIGN="CENTER"> + <IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]"> + <H3> + Apache HTTP Server + </H3> +</DIV> + +<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><a href="http://www.deja.com/group/comp.sys.hp.mpe">deja.com's newsgroup +archives</a> offer 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 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> + +<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> +MPE/iX 6.5:</li> + +<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> +</ul> + +<h2> + +<hr WIDTH="100%"></h2> + +<h2> +<a 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> + +<ul> +<li> +bind() for ports less than 1024</li> + +<li> +setgid()</li> + +<li> +setuid()</li> +</ul> + +<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> + +<h2> + +<hr WIDTH="100%"></h2> + +<h2> +<a 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>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>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>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. +<h2> + +<hr WIDTH="100%"></h2> + +<h2> +<a 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 NAME="down"></a>Downloading Apache</h2> +Use your web browser to download the Apache source tarball from <a href="http://www.apache.org/dist/">http://www.apache.org/dist/</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 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 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 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 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 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: +<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> +<HR> + <H3 ALIGN="CENTER"> + Apache HTTP Server + </H3> + +<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A> + +</body> +</html> |