HP Secure Web Server for OpenVMS (based on Apache)  
November 2011 
Version 2.2 for OpenVMS Alpha, based on Apache 2.0.63 
Version 2.2 for OpenVMS Integrity servers, based on Apache 2.0.63 This document 
contains information about installing and configuring the HP Secure Web Server 
for OpenVMS. It also   
Version 2.2 Installation and 
Configuration Guide
CPQ-AXPVMS-CSWS-V0202--1.PCSI_SFX_AXPEXE
HP-I64VMS-CSWS-V0202--1.PCSI_SFX_I64EXE
includes information about running the web server, security 
information, and how to build and debug loadable Apache 
modules.
Software Version
 Secure Web Server for OpenVMS Version 2.
Hewlett-Packard Company
Contents 
Chapter 1
Installation Requirements and Prerequisites  
     1.1.1
ODS-5 Disk 
     1.1.2
Disk Space 
     1.2.1
MultiNet and TCPware Network Products
     1.2.2
CSWS_JAVA Requirements 
     1.2.3
CSWS_PHP Requirements 
     1.2.4 
CSWS_PERL Requirements
     1.2.5
Building the Apache HTTP Server from 
Source Code 
Chapter 2 
Installation and Configuration 
2.2 
Install the Secure Web Server
     2.2.1
Sample Installation
2.3 
Configure the Secure Web Server
     2.3.1
Configuration Menu 
     2.3.2
Configuring a Single Server
     2.3.3
Sample Configuration of a 
Single Server 
     2.3.4
Configuring Multiple Servers
     2.3.5
Sample Configuration of 
Multiple Servers 
     2.3.6
Delete Server Instance
     2.3.7
Managing suEXEC 
     2.3.8
Running the OpenSSL Certificate Tool
     2.3.9
Converting Files to Stream_LF
     2.3.10
Starting and Stopping the 
Secure Web Server 
     2.3.11
Showing the Status of an Apache 
Instance 
     2.3.12 
 Adding a Node to CSWS in a Cluster Environment 
     2.3.13
Managing Multiple Servers
          2.3.13.1
HTTPD.CONF 
          2.3.13.2
APACHE$SETUP.COM and LOGIN.COM
     2.3.14
Viewing the OpenSSL Certificate
2.4 
Post Configuration Checklist
     2.4.1
Configure CSWS_JAVA 
     2.4.2
Check the CSWS_PERL Configuration
     2.4.3
Check the CSWS_PHP Configuration
     2.4.4
Run AUTOGEN 
     2.4.5
Check Disk Quota 
     2.4.6
Check for SET TERMINAL/INQUIRE
     2.4.7
Disable Non-interactive Login Time
     2.5.1
Browser Test 
     2.5.2
TELNET Test 
     2.5.3
Troubleshooting 
2.6 
What's Next 
2.7 
Merge Changes to Files You Have 
Customized 
2.8 
Installing Optional Modules at a Later 
Time 
Chapter 3 
Running the Secure Web Server on OpenVMS 
3.1 
Starting and Stopping the Server 
     3.1.1
Starting the Server 
     3.1.2
Stopping the Server 
          3.1.2.1
Stopping the Server Using the 
Server Process Name 
3.2 
Server Log File 
3.3 
Performance Considerations
     3.3.1
Limits and Quotas 
     3.3.2
Server Experiencing Medium to High 
Usage 
     3.3.3
Global Pages and Global Sections
     3.3.4
Excessive File Build Up 
3.4 
Customizing the Server Environment
     3.5.1
Apache Modules 
     3.5.2
Apache 1.3 Modules Not Included
     3.5.3
OpenVMS Directives 
     3.5.4
Command Line Options
     3.5.5
Virtual Host Support 
     3.5.6
Dynamic Shared Object Support
     3.5.7
File Handlers 
     3.5.8
Content Negotiation 
     3.5.9
Apache API 
     3.5.10
WebDAV (Distributed Authoring and 
Versioning) Support 
          3.5.10.1
Testing DAV Operation
     3.5.11
suEXEC Support 
     3.5.12 
MOD_SSL
     3.5.12.1 
Setting up a Galaxy 
Shared-Memory SSL Session Cache
     3.5.13
Running MOD_OSUSCRIPT 
3.6 
File Formats 
3.7 
Managing File and Directory Access 
Controls 
     3.7.1
Outbound Access to Non-CSWS Files and 
Directories 
     3.7.2
Inbound Access to SWS Files and 
Directories 
3.8 
Logical Names 
3.9 
OpenVMS Cluster Considerations
     3.9.1
Individual System vs. Clusterwide 
Definition 
     3.9.2
Mixed-Architecture (Alpha and VAX) 
Cluster 
3.10 
Common Gateway Interface (CGI)
     3.10.1
CGI Environment Variables 
     3.10.2
Referencing Input 
     3.10.3
Executing CGI 
     3.10.4
Logicals for Debugging CGI Scripts
     3.10.5
Displaying Graphics with CGI Command 
Procedures 
Chapter 4 
Security Information 
4.1 
Process Model 
4.2 
Privileges Required to Start and Stop 
the Server 
4.3 
File Ownership and Protection 
4.4 
Authentication Using OpenVMS Usernames 
and Passwords (MOD_AUTH_OPENVMS) 
     4.4.1
The require group Directive
     4.4.2
The require user Directive
     4.4.3
Hiding Accounts 
     4.4.4
MOD_AUTH_OPENVMS Security 
Considerations 
     4.4.5
MOD_AUTH_OPENVMS Examples
4.5 
Server Extensions (CGI Scripts, PHP 
Scripts, Perl Modules) 
4.6 
suEXEC in the Secure Web Server
     4.6.1
suEXEC Security Model
     4.6.2
Configuring suEXEC 
          4.6.2.1
Using Paths with Logicals in UserDir Directive
          4.6.2.2
Using Paths with Device Names in UserDir Directive
4.7 
Protecting Server Certificate Keys
Chapter 5 
Building and Debugging Loadable Apache Modules for the 
Secure Web Server 
5.1 
The Apache API, Run-Time Library, and 
HTTP Request Processing 
     5.2.1
Defining Your Apache Module 
Data Structure Symbol 
     5.2.2
Compiling a Module 
     5.2.3
Linking a Module 
     5.2.4
Example: mod_rewrite
     5.2.5
Debugging a User-Built Apache 
Module 
          5.2.5.1
Preparing to debug your module
          5.2.5.2
Debugging your module
Chapter 6 
Open Source Licenses 
Chapter 1
Installation Requirements and Prerequisites
Before you can install the Secure Web Server (SWS) for OpenVMS (based on 
Apache), verify that your system meets the minimum hardware and software 
requirements described below. 
1.1  Hardware Requirements
You can install the SWS for OpenVMS on any 
AlphaServer
system running OpenVMS Version 7.3-2 or higher, or any Integrity server system 
running OpenVMS Integrity server Version 8.2 or higher.
HP requires that you install the Version 2.2 kit on an ODS-5 enabled disk. 
Important 
You must install the Version 2.2 kit on an ODS-5 target volume. If you attempt to install this kit on an ODS-2 
volume, the installation will fail. If you 
had an existing CSWS V1.3 installation, the failed operation will leave it in a 
corrupt state.
Verify that the destination device is an ODS-5 volume by entering a command 
similar to the following, where DISK$DKA200 is the disk where you want to 
install the SWS: 
$ SHOW DEV 
DISK$DKA200/FULL
Disk 
VARMIT$DKA200:, device type COMPAQ BB00923468, is online, mounted, file-oriented 
device, shareable, available to cluster, error logging is enabled.
Volume Status:  
ODS-5, subject to mount verification, file high-water marking, write-back 
caching enabled.
The SWS for OpenVMS Alpha compressed file contains 28,416 blocks. The expanded PCSI file requires approximately 45,000 blocks of working disk space to install. 
The SWS for OpenVMS Integrity servers compressed file contains 54,848 blocks. 
The expanded PCSI file requires approximately 65,000 blocks of working disk 
space to install. 
1.1.3       
Stream_LF File Format No Longer Required
The SWS Version 2.2 no longer requires that all served files must be in 
Stream_LF format. See 
Converting Files to Stream_LF
for information about a command procedure included in the kit that automatically 
converts your files if you choose to do so. 
The SWS requires the following software: 
·        
HP OpenVMS Alpha Version 7.3-2 or higher 
     
Or  
     
HP OpenVMS Integrity server Version 8.2 or higher
     
Be sure that your system has the latest required ECOs,
available from 
HP Services Software Patches.
·        
HP TCP/IP Services for OpenVMS Version 5.4 or higher (for SWS on 
OpenVMS Alpha Version 7.3-2)
     
Or  
     
HP TCP/IP Services for OpenVMS Version 5.5 or higher (for SWS on OpenVMS Alpha 
and OpenVMS Integrity  
     
servers Version 8.2 or higher)
1.2.1 MultiNet and 
TCPware
Network Products
If you are using MultiNet or 
TCPware
from Process Software Corporation instead of HP TCP/IP Services for OpenVMS, you 
should be aware of the following information. 
The SWS has been tested and verified using HP TCP/IP Services for OpenVMS. There 
are no known problems running the SWS with other TCP/IP network products such as 
MultiNet and TCPware, but HP has not formally tested and verified these 
other products. 
 
Note 
MultiNet and TCPware currently 
support IPv4 only. If you want to take advantage of the IPv6 support in the SWS, 
you must use HP TCP/IP Services for OpenVMS Version 5.3 or higher. 
MultiNet and TCPware require 
ECO kits for the SWS. These ECO kits are subject to change. For the latest ECO 
kit information, contact Process Software and ask for the ECO kits required to 
run the SWS for OpenVMS. Send network connectivity questions regarding the SWS 
on 
TCPware
and MultiNet via email to  
support@process.com.
CSWS_JAVA includes the following 
Apache Jakarta technologies: 
Tomcat
(JavaServer Pages 1.2, Java Servlet
2.3, MOD_JK, and MOD_JK2) and 
Ant. (Note: Ant is a partial implementation 
of the Jakarta Ant subproject and its use is limited to building the included 
sample web applications and simple user-written web applications for Tomcat.) 
CSWS_JAVA V3.0 provides Java Servlet 2.4 and JSP 2.0 technology, while CSWS_JAVA 
V2.x provides Java Servlet 2.3 and JSP 1.2 technology.
CSWS_JAVA has retired support for CSWS_JSERV. If you want to continue JSERV 
support, download CSWS_JAVA Version 1.1 from the CSWS_JAVA for HP SWS for 
OpenVMS web site at  
http://h71000.www7.hp.com/openvms/products/ips/apache/csws_java.html.
See the CSWS_JAVA for HP SWS for OpenVMS web site for CSWS_JAVA requirements. 
1.2.3 CSWS_PHP Requirements
PHP is a server-side, cross-platform, HTML embedded 
scripting language that lets you create dynamic web pages. PHP-enabled web pages 
are treated the same as regular HTML pages, and you can create and edit them the 
way you normally create regular HTML pages. 
See the CSWS_PHP for HP SWS for OpenVMS web site at 
http://h71000.www7.hp.com/openvms/products/ips/apache/csws_php.html
for CSWS_PHP requirements. 
1.2.4 CSWS_PERL Requirements
Perl has become the 
premier scripting language of the Web, as most CGI programs are written in Perl. 
The SWS for OpenVMS supports an optional kit, CSWS_PERL. CSWS_PERL includes 
MOD_PERL, an interface between Perl and the SWS which lets you write modules 
entirely in Perl.
See the 
CSWS_PERL for HP Secure Web Server for OpenVMS 
Installation Guide and Release Notes 
for CSWS_PERL requirements.
1.2.5 Building the Apache HTTP Server from Source Code
The SWS 
Version 2.2 kit is based on Apache 2.0.63. The SWS source code can be found at 
the SWS for OpenVMS web site at 
http://h71000.www7.hp.com/openvms/products/ips/apache/csws_source.html.
The 
build instructions are guidelines only and will require modification and 
customization for the OpenVMS environment used for the build. Other build 
prerequisites, such as compilers, might also exist.
Chapter 2
Installation and Configuration
Installation and configuration consists of the following steps: 
1.      
Read the release notes.
2.      
Install the server and optional modules. 
3.      
Configure the server. 
4.      
Review the post configuration checklist. 
5.      
Test the installation. 
Detailed instructions for completing each of these steps are provided in the 
following sections. 
Before 
you begin the installation, you should read the HP Secure Web Server for 
OpenVMS Release Notes available at 
http://h71000.www7.hp.com/openvms/products/ips/apache/csws_doc.html.
2.2 Install the Secure Web Server and Optional Modules
The following kits are intended to work together:  
·   
  SWS for OpenVMS (CSWS) Version 2.2 and higher 
or 1.3-1
·   
  CSWS_PHP Version 1.3 or higher
·   
  CSWS_PERL Version 2.1 or higher and PERL for 
OpenVMS Version 5.8.6 or higher
·   
  CSWS_JAVA Version 3.0 or higher
 
Note 
Earlier versions of these optional kits will not work with SWS 
Version 2.2. Current versions of these optional kits will not work with SWS 
Version 2.0. 
You can install the SWS by itself or with one or 
more of the optional modules. You can
install the optional modules later if you 
choose. 
Before you begin, do the following:
1.    Decide what you want to install. 
2.    Review the 
software requirements for the server and 
each optional module you are installing.  
3.      Decide where you want to install the kit. 
Note
The SWS and CSWS_PHP must 
be installed in the same directory (required). By default, the SWS and 
CSWS_PHP are installed in SYS$COMMON. However, HP recommends that you specify 
another location. CSWS_JAVA can be 
installed into a different disk or directory from the SWS. 
HP recommends that you shut down the SWS (and Tomcat, which runs as a separate process) before installing a 
new 
version of any component: CSWS, CSWS_PHP, CSWS_PERL, or CSWS_JAVA (Tomcat). 
Follow these instructions to install the SWS by itself or with the optional 
modules. 
 
1.    
The SWS for OpenVMS kit is provided as a compressed, 
self-extracting file. To download it from the OpenVMS 
web site, fill out and submit the registration form at SWS for OpenVMS web site at
     
http://h71000.www7.hp.com/openvms/products/ips/apache/csws.html.
     Download any optional modules you want to install. 
	
     
Download CSWS_JAVA from
    
http://h71000.www7.hp.com/openvms/products/ips/apache/csws_java_relnotes.html
     Download CSWS_PHP from
    
http://h71000.www7.hp.com/openvms/products/ips/apache/csws_php_relnotes.html
     Download CSWS_PERL from
    
http://h71000.www7.hp.com/openvms/products/ips/apache/csws_modperl_relnotes.html
     Download PERL for OpenVMS from 
	
  
http://h71000.www7.hp.com/openvms/products/ips/apache/csws_perl_relnotes.html
     Servers typically use the 
highest unused UIC group (for example, [370,1]). 
     To ensure that the UIC you chose for APACHE$WWW has READ and WRITE access to the 
intended login  
     device, use the SHOW DEVICE/FULL command.
     In the SHOW DEVICE/FULL output, the important piece of information is 
towards the bottom of the output: Vol 
     Prot.
 
The APACHE$WWW UIC must have RWD access to the volume as indicated in the 
Vol Prot field and at least E access to the destination directory on that volume 
where Apache is installed.
 
For example, if Apache is installed to DISK$APPS:[000000], then APACHE$WWW 
must have at least RWD access to the DISK$APPS disk volume and at least E access 
to the DISK$APPS:[000000]000000.DIR directory.
For example: 
 
Disk $DKB0:, device type COMPAQ BD03664545, is online, mounted, 
file-oriented device, shareable, available to cluster, error logging is enabled
   Owner process 		 ""    	Owner UIC                      [SYSTEM]
   Owner process ID        00000000     Dev Prot            S:RWPL,O:RWPL,G:R,W
   Reference count               29     Default buffer size                 512
   Total blocks            71132000     Sectors per track                   254
   Total cylinders            14003     Tracks per cylinder                  20
 
   Volume label            "BUILD1"     Relative volume number                0
   Cluster size                   3     Transaction count                    25
   Free blocks             52293678     Maximum files allowed           8891500
   Extend quantity                5     Mount count                           1
   Mount status              System     Cache name     "_ALPHA$DKA300:XQPCACHE"
   Extent cache size             64     Maximum blocks in extent cache  5229367
   File ID cache size            64     Blocks in extent cache		   2703
   Quota cache size               0     Maximum buffers in FCP cache       1730
   Volume owner UIC        [System]     Vol Prot     S:RWCD,O:RWCD,G:RWCD,W:RWCD
   Volume Status:  ODS-5, subject to mount verification, write-back caching enabled,
   access dates enabled, hard links enabled 
         
4.   Decompress the server kit with one of the following command, depending on which platform on which you will   
     
install the kit:
 
$ RUN CPQ-AXPVMS-CSWS-V0202--1.PCSI_SFX_AXPEXE ! for Alpha
$ RUN HP-I64VMS-CSWS-V0202--1.PCSI_SFX_I64EXE  ! for I64
HP-I64VMS-CSWS-V0202--1.PCSI. Do not rename the file. 
 
5. If you are upgrading from a previous version of the SWS and you modified the file [APACHE.CONF]MIME.TYPES,
copy the file to another location before you begin the installation. This file is removed during the installation. (HP
recommends that you use the AddTypes directive instead of modifying the MIME.TYPES file.) See the Merge
        
Changes to Files You Have Customized 
section for more information.
Start the installation 
with the PRODUCT INSTALL command. Use the /DESTINATION qualifier to specify a 
target device and directory for the installation. If you do not specify a 
destination, the software will be installed in SYS$COMMON. 
HP recommends that you specify another location. 
Note 
Once you enter a PRODUCT INSTALL CSWS/DESTINATION=[destination] command, you cannot change the installation location unless you remove CSWS and then reinstall it. To change the installation location when you upgrade to a new version of CSWS, you must first enter the PRODUCT REMOVE CSWS command, then enter PRODUCT INSTALL CSWS/DESTINATION=[new-destination].
Review the software 
requirements for the server and each optional module you are about to install. 
To prevent installation problems, make sure the required software is installed 
before you enter the PRODUCT INSTALL command. 
To install the server, 
enter the following command:
$ 
PRODUCT INSTALL CSWS /DESTINATION=device:[directory-name]
$ PRODUCT INSTALL CSWS, CSWS_PHP /DESTINATION=device:[directory-name]
Note 
Do not attempt to start 
the server or configure any optional modules before you have configured the 
server. 
Following is an example of the SWS product installation. 
$ PRODUCT INSTALL 
CSWS /DESTINATION=DKB300:[000000]
The following 
product has been selected:
CPQ AXPVMS CSWS V2.2                   
Layered Product
Do you want to 
continue? [YES]
Configuration 
phase starting ...
You will be asked 
to choose options, if any, for each selected product and for
any products that 
may be installed to satisfy software dependency requirements.
 
CPQ AXPVMS CSWS 
V2.2
Hewlett-Packard 
Company & The Apache Software Foundation.
* This product 
does not have any configuration options.
Execution phase 
starting ...
The following 
product will be installed to destination:
CPQ AXPVMS CSWS V2.2
USER$DISK3:[000000.]
Portion done: 
0%...10%...20%...30%...40%...50%...60%...70%...90%...100%
The following 
product has been installed:
CPQ AXPVMS CSWS V2.2                   
Layered Product
CPQ AXPVMS CSWS 
V2.2
Release notes are available 
in SYS$HELP:CSWS0202.RELEASE_NOTES.
HP highly recommends that you 
read these release notes.
For the most up-to-date documentation, 
including release notes,
Frequently Asked Questions (FAQs), and information about configuring
and running the HP SWS, 
please see the web pages at:
http://h71000.www7.hp.com/openvms/products/ips/apache/csws.html
Post-installation tasks are 
required for the HP Secure Web Server.
The OpenVMS Installation and 
Configuration Guide gives detailed directions.
This information is a brief 
checklist.
Configure OpenVMS aspects of the HP 
Secure Web Server by:
$ @SYS$MANAGER:APACHE$CONFIG
If the OpenVMS username APACHE$WWW does 
not exist, you will be
prompted to create 
that username.  File ownerships are set to UIC
[APACHE$WWW], etc.
After configuration, start the HP Secure 
Web Server manually by
entering:
      $ @SYS$STARTUP:APACHE$STARTUP
 Check that neither 
SYLOGIN.COM nor the LOGIN.COM write any output to
 SYS$OUTPUT:.  Look especially for a
$ SET TERMINAL/INQUIRE
 Start the HP Secure Web 
Server at system boot time by adding the
 following lines to 
SYS$MANAGER:SYSTARTUP_VMS.COM:
      $ file := SYS$STARTUP:APACHE$STARTUP.COM
      $ if f$search("''file'") 
.nes. "" then @'file'
 Shutdown the Apache server at system shutdown 
time by adding the
 following lines to 
SYS$MANAGER:SYSHUTDWN.COM:
      $ file := 
SYS$STARTUP:APACHE$SHUTDOWN.COM
      $ if f$search("''file'") 
.nes. "" then @'file'
 Test the 
installation using your favorite Web browser.
 Replace 
host.domain
in the following URL (Uniform Resource Locator)
 with the information for the 
HP Secure Web Server just installed,
 configured, and started.
 URL 
http://host.domain/ should display the standard introductory page
 from the Apache Software 
Foundation. This has the bold text "It
 Worked! The Apache Web Server 
is Installed on this Web Site!" at the
 top
and the Apache server logo prominently displayed at the bottom.
 If you do not see this page, 
check the HP Secure Web Server
 release notes, particularly 
the Frequently Asked Questions section.
 If you'd like to use secure connections with 
the HP Secure Web Server
 then you'll need 
to create a server certificate.  We 
recommend that
 you start by 
creating a 30 day self signed certificate using the
 following 
certificate tool:
    
 $ 
@APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM
 Once the certificate has been created 
you'll need to uncomment the
 following directive in the 
APACHE$COMMON:[CONF]HTTPD.CONF file to
 enable SSL.
    
Include /apache$root/conf/ssl.conf
 Thank you for using the HP 
Secure Web Server.
2.3 Configure the Secure Web Server
After you have installed 
the SWS, you are ready to configure it. The configuration tool ensures that a 
user account is available to run the server and that all of the files are owned 
by that user. It also allows the system manager 
flexibility in defining options for the installation. 
The configuration procedure gives you the opportunity to separate the server 
components —server application, server system files, and server content files — 
and store them wherever it is most appropriate in your environment. By default, 
they are all configured in SYS$COMMON or the destination you specified on the 
PRODUCT INSTALL command line. During configuration you are asked if you would 
like to specify different locations.
If you have an OpenVMS Cluster, see 
OpenVMS Cluster Considerations before you 
continue with the configuration.
2.3.1 Configuration Menu
Version 2.2 of the SWS 
includes a configuration menu that allows you to choose configuration functions. 
All of the functions listed can be run independently or through the menu driven 
procedure. The menu also allows you to start and stop instances of the SWS. 
To run the configuration 
menu, enter the following command: 
 
$ @APACHE$COMMON:[000000]APACHE$MENU
Following is an example 
of the configuration menu: 
            
Apache$Menu
     1. Configure the SWS
     2. Create an 
Apache instance
     3. Delete an 
Apache instance
     4. Manage suEXEC
users
     5. Run OpenSSL
Certificate tool
     6. Convert directory tree to Stream_LF
     7. Start up an Apache instance
     8. Shut down an Apache instance
     9. Show status of an Apache 
instance
    10. Add a node to CSWS in a cluster 
environment
    11. Exit
  Enter Menu Choice:
The menu choices correspond to running the following procedures or 
commands from the DCL command line: 
1.   SYS$MANAGER:APACHE$CONFIG.COM 
2.   APACHE$COMMON:[000000]APACHE$CREATE_ROOT.COM 
3.   APACHE$COMMON:[000000]APACHE$DELETE_ROOT.COM 
4.   APACHE$COMMON:[000000]APACHE$MANAGE_SUEXEC.COM 
5.   APACHE$COMMON:[000000]APACHE$CERT_TOOL.COM 
6.   APACHE$COMMON:[000000]APACHE$CONVERT_STREAMLF.COM 
7.   SYS$STARTUP:APACHE$STARTUP.COM 
8.   SYS$STARTUP:APACHE$SHUTDOWN.COM 
9. SHOW SYSTEM/PROCESS=APACHE$tag
10.  APACHE$COMMON:[000000]APACHE$ADDNODE.COM
2.3.2 
Configuring a Single Server
Choosing Option 1 from the SWS Configuration Menu starts the 
following command procedure, which configures a single server: 
Most users need only run a single server on a given system. When that server 
configuration is started, it usually exists as a main process and multiple child 
processes to handle multiple user requests. Those child processes may also 
generate subprocesses to handle certain types of 
requests (such as CGI scripts). 
For information about 
configuring multiple servers, see the 
Configuring Multiple Servers section. 
To configure a single server, enter one of the following commands: 
$ @APACHE$COMMON:[000000]APACHE$MENU and select Option 1
2.3.3 Sample Configuration of a Single Server
This section shows a 
sample configuration dialog. 
$ @SYS$MANAGER:APACHE$CONFIG
                  
 HP Secure Web 
Server for OpenVMS
                         
 
[based on Apache]
           This procedure helps you define the 
operating environment
          
 
required to run the Secure Web Server on this system.
  
 To operate 
successfully, the server processes must have read access
   to the installed files and read-write 
access to certain other files
   and directories.  HP recommends that you use this procedure 
to
   set the owner UIC on the CSWS files and 
directories to match the server.
   You should do this each time the product 
is installed, but it only has
   to be done once for each installation on 
a cluster.
   Set owner UIC on CSWS files? [YES]
   Do you want to enable the impersonation 
features provided by suEXEC?
   If so, the server will support running CGIs using specified usernames.
   Enable suEXEC? 
[YES]
   Setting ownership on files.  This could take a minute or two.  . . .
   Enabling suEXEC
configuration.  This could take a 
minute or two.  . . .
        
 
APACHE$MANAGE_SUEXEC
    
This procedure allows the system 
manager to grant
    
users the ability to utilize the suEXEC feature of
    
the Secure Web Server.  Users will be granted/revoked
    
VMS rights identifiers to allow 
access.
   Continue [YES]?
   Enter '?' for help
   Manage suEXEC 
user accounts (SHOW/GRANT/REVOKE/DONE/?): [DONE] GRANT
   Enter Username: USER1
   %UAF-I-GRANTMSG, 
identifier
APACHE$SUEXEC_USER granted to USER1
   Manage suEXEC 
user accounts (SHOW/GRANT/REVOKE/DONE/?): [DONE] GRANT
   Enter Username: USER2
   %UAF-I-GRANTMSG, 
identifier
APACHE$SUEXEC_USER granted to USER2
   Manage suEXEC 
user accounts (SHOW/GRANT/REVOKE/DONE/?): [DONE]
   Configuration is complete.  To start the server:
  $ 
@SYS$STARTUP:APACHE$STARTUP.COM
2.3.4 Configuring Multiple Servers
For some advanced 
configurations it may be necessary to run two or more servers on the same 
system. For example, you may decide to run multiple virtual hosts on the same 
system and have each virtual host serviced by a separate server.
For each server process, 
run the APACHE$CONFIG.COM command procedure to define the OpenVMS operating 
environment. In particular, each server must have its own APACHE$SPECIFIC 
directory into which it writes its output files.
Version 2.2 of the SWS 
supports running multiple servers monitoring different ports. This is 
accomplished by defining an alternate root that is defined as APACHE$SPECIFIC. 
These instances are created by entering one of the following commands:
 
$ 
@APACHE$COMMON:[000000]APACHE$CREATE_ROOT
$ 
@APACHE$COMMON:[000000]APACHE$MENU
and select Option 2
This procedure defines a 
new server root with a different user that runs the server, monitors a different 
port, and has unique startup and shutdown procedures. The instance can also be 
restricted as to what kinds of privileged routines can be accessed. The user 
that is defined is automatically granted access to the APACHE$COMMON area.
2.3.5 Sample Configuration of Multiple Servers
Following is an example 
of creating a new server root:
   
$ @APACHE$COMMON:[000000]APACHE$CREATE_ROOT
    
 APACHE$CREATE_ROOT
   
 Create a set of 
directories and files where a Secure
   
 Web Server can 
run.  You will be prompted for the
    
location of the root, the user to 
run under, the
    
TCP/IP port to monitor, the unique 
server tag, the
   
 privileged 
routines the user will be allowed to use,
    and optional startup and shutdown procedures.
   
 Continue [YES]?
   
 Root location:  Give the location of where to create the 
directory
    
tree and configuration template 
file for the new instance of the server.
      
 
e.g.
USER2:[SMITH.CSWS]
    This will create a series of directories 
under the USER2:[SMITH.CSWS]
    
directory.
This will become the new APACHE$SPECIFIC location.
       
$ DIRECTORY 
USER2:[SMITH.CSWS]
       
Directory 
USER2:[SMITH.CSWS]
       
BIN.DIR;1          
CGI-BIN.DIR;1      CONF.DIR;1         
HTDOCS.DIR;1
       
ICONS.DIR;1        
KIT.DIR;1          
LOGS.DIR;1         
MODULES.DIR;1
       
OPENSSL.DIR;1
       
Total of 9 files.
   
  Root Location: 
DISK1:[JOE.APACHE]
    
Username: Enter the user that will 
own and control the content of
    
this root.
The ownership of the directories and files will be set
    
to the given user.  The user must be a valid user in the 
SYSUAF.
   Username: JOE
    
The Secure Web Server has several 
privileged routines to allow the
    
server to run in a basic fashion.  These routines can be blocked from
    
other users of the web server to 
run in a more restrictive mode.
    
These routines are protected by a 
series of rights identifiers:
       
APACHE$APR_ALL           
Allow access to all of the protected routines
      APACHE$APR_CREMBX        Allow 
access to create a groupwide mailbox
       
APACHE$APR_GETPWNAM      Allow access to 
other user's information
       
APACHE$APR_SETSOCKOPT    Allow user to set socket 
options
       
APACHE$APR_SOCKET        Allow 
creation of a privileged socket
       
APACHE$APR_AUTH_OPENVMS  Allow user to authorize using SYSUAF
       
APACHE$APR_GALAXY_GBLSEC Allow user to manage galactic memory sections
    
    
Grant access to ALL routines? 
n
    
Grant access to 
CreMbx? y
    
Grant access to 
GetPwNam? n
    
Grant access to 
SetSockOpt? n
    
Grant access to Create a 
Priveleged
Socket? y
    
Grant authorization via SYSUAF? y
    
Grant user ability to access 
galactic sections? y
    
Each instance of the Secure Web 
Sever must have a unique TCP/IP port
    
to monitor as it runs.  If you have not granted this user the 
Socket
    
privilege, then the port must be 
greater than 1024 (non-privileged).
    
Note that this routine does not 
keep track of previously specified
    
ports to other instances.  It is the system manager's responsibility 
to
    
maintain this information.
   Port number: 81
    
Each instance of the Secure Web 
Server must have a unique tag associated
    
with it on the system.  The tag is 1 to 4 characters (A-Z, 0-9).
   Unique Tag:  
Tst
    
The instance of Secure Web Server 
can have a startup and a shutdown
    
command procedure defined to run 
accordingly.
    
Define a startup or shutdown 
procedure? y
    
Startup procedure filename [NONE]: 
DISK1:[JOE.APACHE]Test_Start.com
    
Shutdown procedure filename [NONE]:
    
Granting rights to JOE UAF 
account...
    
Creating directory tree under 
DISK1:[JOE.APACHE]
    
Generating Apache configuration 
file DISK1:[JOE.APACHE.CONF]httpd.conf
    
Updating the configuration database
    
Root created: DISK1:[JOE.APACHE]
    
Template server configuration file 
created:
   DISK1:[JOE.APACHE.CONF]httpd.conf
    
Please review this file for 
accuracy.
The output of this 
procedure is a directory tree that matches that found under APACHE$COMMON. 
Populated in that tree are three files:
a template configuration file
a mime type file
an SSL configuration file
These are all placed in 
the configuration directory and should be reviewed before attempting to start 
the server. 
2.3.6 Delete Server Instance
Choosing Option 3 from 
the SWS Configuration Menu deletes an instance of the server. Choosing this 
option starts the following command procedure: 
APACHE$COMMON:[000000]APACHE$DELETE_ROOT.COM
An example of the output 
from this procedure is as follows: 
$ @APACHE$COMMON:[000000]APACHE$DELETE_ROOT
      
 APACHE$DELETE_ROOT
   
 Deletes a 
previously defined set of directories and
    
all files contained therein.  Also revokes all user
    
rights granted when the root was 
created.
  
 Continue [YES]?
  Apache Instances available for deletion
      1. 
Tst     DISK1:[JOE.APACHE.CONF]httpd.conf
      2. Exit
      Choice: 1
  
 Revoking rights 
from JOE UAF account...
   Deleting all files under DISK1:[JOE.APACHE...]
   Updating the configuration database...
   Root deleted: DISK1:[JOE.APACHE]
2.3.7 Managing suEXEC
Choosing Option 4 from 
the SWS Configuration Menu starts the suEXEC management command procedure: 
APACHE$COMMON:[000000]APACHE$MANAGE_SUEXEC.COM
Part of the SWS 
configuration involves enabling the suEXEC feature. If you enable suEXEC
during configuration, the accounts using the feature are managed from 
APACHE$MANAGE_SUEXEC.COM. The APACHE$CONFIG.COM procedure automatically calls 
the suEXEC management procedure. 
This procedure can also 
be run directly (by choosing Option 4) to add or subtract users with the ability 
to use suEXEC. 
See the 
suEXEC in the SWS section for more information. 
2.3.8 Running the OpenSSL Certificate Tool
Choosing Option 5 from 
the SWS Configuration Menu starts the following command procedure, which runs 
the OpenSSL
certificate tool: 
APACHE$COMMON:[000000]APACHE$CERT_TOOL.COM
The 
OpenSSL certificate tool enables you to view certificates and certificate 
requests, create certificate requests, sign your own certificate, create your 
own certificate authority, and sign client certificate requests. Additional hash 
functions are included. 
The 
OpenSSL certificate tool is described in the 
HP 
SWS SSL User Guide. 
2.3.9 Converting Files to Stream_LF
Choosing Option 6 from 
the SWS Configuration Menu starts the following command procedure, which 
converts your files to Stream_LF
format: 
APACHE$COMMON:[000000]APACHE$CONVERT_STREAMLF.COM
Note 
The SWS Version 2.2 no longer requires that all served files be in Stream_LF format. The EnableMMAP directive must be set to OFF to lift the Stream_LF restriction. In Version 2.2, EnableMMAP is set to OFF by default. (In Version 2.0, the default for EnableMMAP was ON.)
If you want your files in 
STREAM_LF format, you can use the APACHE$CONVERT_STREAMLF command procedure to 
recursively search down a directory tree for sequential files and convert them 
to Stream_LF. The command procedure excludes some 
sequential files; in particular, it ignores directory files, executable files 
(such as command procedures, OpenVMS images, CGI, PHP, and Perl scripts), object 
files, indexed files, and relative files. 
The procedure is non-destructive and will create a newer version of the 
converted file and leave the original in place. The results of the conversion 
are stored in SYS$SCRATCH:CONVERT_DIR.LOG. 
Note 
The 
APACHE$CONVERT_STREAMLF command procedure converts all sequential files (with 
the exceptions listed above) to Stream_LF format, 
including sequential files currently in Stream format. After you run the 
procedure, be sure to check the SYS$SCRATCH:CONVERT_DIR.LOG 
file for files that should not be in Stream_LF
format, and delete the newest version of those files. 
The following is an 
example output of the convert utility: 
 $ @APACHE$COMMON:[000000]APACHE$CONVERT_STREAMLF
 Top Directory: 
USER1:[APACHE.HTDOCS]
 Starting 
conversion of USER1:[APACHE.HTDOCS...]
 This could take a 
while...
 Conversions 
complete.
 See 
SYS$SCRATCH:Convert_Dir.Log
for a log of transactions.
2.3.10 Starting and Stopping the Secure Web Server
Choosing Option 7 and Option 8 from the SWS Configuration Menu runs the 
following command procedures which start up and shut down instances of the SWS: 
SYS$STARTUP:APACHE$STARTUP.COM
SYS$STARTUP:APACHE$SHUTDOWN.COM
See 
Starting and Stopping the Server for more information. 
2.3.11 Showing the Status of an Apache 
Instance
Choosing Option 9 from 
the SWS Configuration Menu runs the following command:
$ SHOW SYSTEM/PROCESS=APACHE$tag
Server processes have a 
process tag of the form APACHE$ssss, where ssss is up to four alphanumeric characters defined in 
the VMSServerTag directive. The default is APACHE$SWS. 
Similarly, child 
processes have a process name of the form APACHE$ssssnnnn, 
where APACHE$ssss is the server name and nnnn is the child server process number represented 
as a hex value. 
The SHOW SYSTEM/PROCESS=APACHE$tag command lists a menu of the current 
instances of the server. You choose the instance for which you want to see 
status
The following is an 
example output showing the status of a running server: 
Registered Apache Instances
 1. SWS
APACHE$COMMON:[CONF]HTTPD.CONF
 2. Exit
 Choice: 1
Status of SWS 
instance of Apache...
OpenVMS V7.3-2 on 
node APSERV   1-AUG-2005 15:55:34.09  Uptime  67  
   Pid    Process Name   State   Pri      I/O    
CPU         
Page flts  Pages
2020026D 
APACHE$SWS      
LEF      6     
2526   0 00:00:11.35       839  
1016
2020026F 
APACHE$SWS0000  LEF      6     
2556   0 00:00:12.69       824   
979
20200270 
APACHE$SWS0001  LEF      6     
2530   0 00:00:09.41       834  
1010
20200271 
APACHE$SWS0002  LEF      6     
2493   0 00:00:14.00       811   
978
20200272 
APACHE$SWS0003  LEF      6     
2499   0 00:00:13.66       822   
988
20200273 
APACHE$SWS0004  LEF      6     
2487   0 00:00:12.01       832  
1002
20200274 
APACHE$SWS0005  LEF      6     
2501   0 00:00:15.22       810   
994
End status.
The following is an 
example output showing the status of a server that has been shut down: 
   Registered Apache Instances
     1. SWS
APACHE$COMMON:[CONF]HTTPD.CONF
     2. Exit
     Choice: 1
Status of SWS 
instance of Apache...
End status.
Choosing Option 10 from 
the SWS Configuration Menu starts the following command procedure, which adds a 
node to the SWS in a cluster environment.
APACHE$COMMON:[000000]APACHE$ADDNODE.COM
You must log into the system you want to add as a CSWS 
cluster member before you choose Option 10. For example, perform the initial 
installation and configuration of CSWS on NODE1. 
Then log into NODE2 and enter the following commands:
  $ 
@SYS$STARTUP:APACHE$LOGICALS
  $ @APACHE$COMMON:[000000]APACHE$MENU
      Apache$Menu
                1. Configure the Secure Web Server
                2. Create an Apache instance
                3. Delete an Apache instance
                4. Manage suEXEC users
                5. Run OpenSSL Certificate 
tool
                6. Convert directory tree to Stream_LF
                7. Start up an Apache instance
                8. Shut down an Apache instance
                9. Show status of an Apache instance
               10. Add a node to CSWS in a cluster environment
               11. Exit
Enter Menu Choice: 10
      APACHE$ADDNODE
Create a set of directories and files on another node 
in a cluster environment for the Secure Web Server.  The node name used is that defined by 
TCPIP$INET_HOST.  A directory by that 
name will be created under the APACHE$SPECIFIC: area.  The top level directories under 
APACHE$COMMON are essentially duplicated here.
A new version of HTTPD.CONF is created in 
APACHE$ROOT:[CONF].  This will be 
used by default.  The common 
configuration in APACHE$COMMON:[CONF] remains untouched. Remove this new 
configuration if you wish to use the common one.
The rights identifiers for the user account 
APACHE$WWW on this node are set to the defaults.  If this is a common SYSUAF/RIGHTSLIST, 
then the account should be checked as it might be changed.
Continue [YES]?
yes
Granting rights to APACHE$WWW UAF account...
Creating directory tree under 
device:[000000.APACHE.SPECIFIC.node-name]
Generating Apache configuration file 
device:[000000.APACHE.SPECIFIC.node-name.CONF]httpd.conf
Node node added 
successfully
Node specific 
directories created: device:[000000.APACHE.SPECIFIC.node-name]
Configuration 
files created in: device:[000000.APACHE.SPECIFIC.node-name.CONF]
Please review 
these files for accuracy.
Press return to continue...
Exit the configuration menu, and then enter the following 
command to start the SWS on NODE2:
$ @sys$startup:apache$startup
2.3.13 Managing Multiple Servers
This section discusses 
the issues you may encounter when managing multiple servers. 
2.3.13.1 HTTPD.CONF
Because there are multiple servers at work, there must be some 
differences in the HTTPD.CONF file for each server. 
To create and maintain 
multiple HTTPD.CONF files, you rely on the fact that each server has a separate 
configuration-specific root directory. You can set the 
processwide
logical name APACHE$SPECIFIC to the configuration-specific directory. You then 
edit the file APACHE$SPECIFIC:[CONF]HTTPD.CONF. 
2.3.13.2 APACHE$SETUP.COM and LOGIN.COM
APACHE$COMMON:[000000]APACHE$SETUP.COM is run for every server (parent and 
child) and server instance. This command procedure defines the necessary Apache 
symbols and executes any subsequent product setups if they exist (for example, 
PHP and Perl). It also defines the CRTL logicals
needed to allow the SWS to run correctly with extended command parsing and file 
specifications.
The APACHE$ROOT:[000000]LOGIN.COM command procedure is executed after 
APACHE$SETUP.COM and is determined by the LGICMD stored in SYSUAF for the Apache 
server user (for example, APACHE$WWW).
The SWS includes 
APACHE$SETUP.COM so that each instance of the server can use its own LOGIN.COM 
procedure, and not have to maintain server critical definitions. 
2.3.14 Viewing the 
OpenSSL
Certificate
You need a valid server 
certificate to run the SWS in SSL mode. Configuration creates a self-signed 
certificate and installs it. If you want to view the certificate before starting 
the server, use the OpenSSL
Certificate Tool as described in the 
HP SWS SSL User Guide.
After configuring the 
SWS, do not start the server. Follow the instructions in the 
Post 
Configuration Checklist section. 
2.4 Post Configuration Checklist
After you configure the 
SWS, perform the following tasks to ensure a successful startup: 
Configure CSWS_JAVA, if you have just installed it.
	
	Optionally check the CSWS_PHP configuration now or later.
	
	
	
	Optionally check the CSWS_PERL configuration now or later
	
	Run AUTOGEN. 
	
	
	Check disk quota. 
	
Check for SET TERMINAL/INQUIRE.
Disable non-interactive login time.
Each of these tasks is 
explained below. Once you have completed them, you can test the installation by 
starting the SWS. 
2.4.1 Configure CSWS_JAVA
If you installed the 
CSWS_JAVA module, you must configure it before you can start the server. For 
instructions, see the 
CSWS_JAVA for HP Secure Web 
Server for OpenVMS Installation Guide and Release Notes.
2.4.2 Check the 
CSWS_PERL Configuration
You are not required to 
configure CSWS_PERL before starting the server. CSWS_PERL is preconfigured with 
default values. If you want to change the default configuration, edit APACHE$COMMON:[CONF]MOD_PERL.CONF. 
For more information, see 
the 
CSWS_PERL for HP Secure Web Server for OpenVMS 
Installation Guide and Release Notes. 
2.4.3 Check the CSWS_PHP Configuration
You are not required to 
configure CSWS_PHP before starting the server. CSWS_PHP is preconfigured with 
default values. If you want to change the default configuration, edit 
APACHE$ROOT:[CONF]MOD_PHP.CONF. 
For more information, see 
the 
CSWS_PHP for HP Secure Web Server for OpenVMS Installation 
Guide and Release Notes. 
2.4.4 Run AUTOGEN
After the installation, 
run SYS$UPDATE:AUTOGEN.COM (AUTOGEN) to evaluate your 
system parameters and make adjustments based on your hardware configuration and 
system workload. Because of the SWS installation, AUTOGEN will probably increase 
the page file size and the number of swap file pages. 
2.4.5 Check Disk Quota
If the disk quota is too 
low, the SWS will not start. Either raise the disk quota for the user account 
APACHE$WWW, or grant the account the EXQUOTA privilege, thus allowing it to 
bypass disk quota restrictions. Use the following commands: 
$ SHOW QUOTA/USER=[server-uic]/DISK=device-name
$ SET DEFAULT SYS$SYSTEM
$ RUN AUTHORIZE
$ 
MOD APACHE$WWW/PRIV=EXQUOTA
$ 
EXIT
Stop and restart the SWS 
so that the APACHE$WWW account picks up the new privilege. 
2.4.6 Check for SET TERMINAL/INQUIRE
When the SWS for OpenVMS 
is started, the command procedure APACHE$SETUP is executed. The following login 
files are executed: 
·        
SYLOGIN.COM (system login file)
·        
LOGIN.COM (login file for APACHE$WWW) 
Check these files to make 
sure that any SET TERMINAL/INQUIRE statements are executed only in INTERACTIVE 
mode. For example: 
$ 
IF F$MODE() .eqs
"INTERACTIVE" then $ SET TERMINAL/INQUIRE
Failure to do so might 
result in ill-formed HTML intermittently being returned to clients. This problem 
might also appear when executing CGI scripts. 
2.4.7 Disable Non-interactive Login Time
To disable non-interactive login time update feature define the following logical: 
$ DEFINE/SYSTEM APACHE$UAF_LOGINUPDATE_RATE -1
     The SSL/TLS-aware 
Apache webserver was
     
successfully
installed on this website."
The Apache logo is 
displayed at the bottom. 
2.5.2 TELNET Test
You can also use TELNET 
on the local host to test the installation.
(In TCP/IP Services Version 5.3 for OpenVMS and higher, user input is not 
echoed. 
Use the following 
procedure to test the installation.
	Enter the following 
command: 
	
   $ 
TELNET 0 80
    The following text is 
displayed: 
%TELNET-I-SESSION, Session 01, host 
localhost, port 80 
-TELNET-I-ESCAPE, Escape character is ^] 
	Press ENTER 
and enter the following HTTP command: 
	
	
HEAD / HTTP/1.0
	Press ENTER twice. Text 
similar to the following is displayed: 
	
HTTP/1.1 200 OK
Date: Wed, 21 Sep 2005 
Server: Apache/2.0.52 (OpenVMS) mod_ssl/2.0.52 
OpenSSL/0.9.7d
Content-Location:  
index.html.en
Vary: 
negotiate,accept-language,accept-charset
TCN: choice
Last-Modified: Thu, 08 Sep 2005 
ETag: "2e4550-5b2-b12cef40"
Accept-Ranges: bytes
Content-Length: 1458
Connection: close
Content-Type: text/html; charset=ISO-8859-1
Content-Language: en
 
%TELNET-S-REMCLOSED, Remote 
connection closed 
-TELNET-I-SESSION, Session 01, 
host localhost, port 80 
$
You should receive 
several lines of text from the SWS. 
2.5.3 Troubleshooting
If you do not receive a 
response from the SWS, check the following: 
Look in your SYLOGIN.COM file and make sure there is no SET TERMINAL/INQUIRE statement for NETWORK processes.
Make sure the APACHE$WWW account exists and is not disabled.
Look for the following files: 
 
APACHE$ROOT:[000000]APACHE$tag 
APACHE$ROOT:[LOGS]ERROR_LOG 
	If you have trouble starting the server, enable the logical 
APACHE$SPL_DISABLED systemwide, then 
	restart the 
server. 
	
	
If you have trouble stopping the server using the APACHE$SHUTDOWN command and APACHE$WWW is still running, use the following command to stop it. You should then be able to shut down the server.
$ STOP PROCESS/ID=<apache-pid>
2.6 What's Next
After you have 
successfully tested the installation, perform any of the following tasks that 
are relevant for you: 
·        
If you are upgrading from a previous version of the SWS, you can 
merge the previous versions of files commonly   
      modified by system administrators 
with the newly installed versions of these files. See the
Merge 
Changes to 
      Files You Have Customized section. 
·        
If you enabled MOD_SSL, follow the instructions for verifying SSL 
in the 
HP 
Secure Web Server SSL User Guide. 
·        
Read 
Chapter 3 for information on starting and 
stopping the server, using HTTPD.CONF to customize the server
      environment, and 
other OpenVMS specific topics.
2.7 Merge 
Changes to Files You Have Customized
If you have installed a 
previous version or field test kit of the SWS, it is removed automatically 
before the new kit is installed. 
When the previous version 
of the SWS is removed, the PCSI utility removes only the files and directories 
it installed. Any files you have created are not affected.
Note 
Files installed by the SWS that are commonly modified by system administrators are not removed. However, the new kit contains updated versions of these files. Be sure to transfer any edits you made to the previous versions of these files to the new versions.
These commonly modified 
files are as follows: 
·        
[APACHE]LOGIN.COM 
·        
APACHE.HTDOCS]INDEX.HTML  
·        
[APACHE.CONF]HTTPD.CONF 
 
If you modified the file 
[APACHE.CONF]MIME.TYPES, you need to copy the file to 
another location before you begin the installation. This file is removed during 
the installation. (HP recommends that you use the AddTypes
directive instead of modifying the MIME.TYPES file.) 
The new kit contains an 
updated version of this file. After you save your current version, restore the 
file and incorporate your local modifications with the new version. 
2.8 Installing Optional Modules at a 
Later Time
If you did not install 
the optional modules (CSWS_JAVA, CSWS_PERL, or CSWS_PHP) when you installed the 
server, follow these instructions for installing them at a later time. Before 
you begin, make sure:
·        
You have installed the required software.  
·        
You have already installed the SWS. 
· You install CSWS_PHP in the same directory as you installed the server. You do not need to install CSWS_JAVA or CSWS_PERL into the same disk or directory as the SWS.
Use the appropriate 
command from the list below. 
To install CSWS_JAVA, use the following command: 
$ PRODUCT INSTALL CSWS_JAVA 
/DESTINATION=device:[directory-name]
To install CSWS_PHP, use 
the following command:
$ PRODUCT INSTALL 
CSWS_PHP/DESTINATION=device:[directory-name]
To install CSWS_PERL, use 
the following command:
$ PRODUCT INSTALL 
CSWS_PERL/DESTINATION=device:[directory-name]
The installation is 
complete when the dollar sign prompt ($) is displayed. 
After you install 
CSWS_JAVA, you must configure it. For more information, see 
Configure 
CSWS_JAVA. 
CSWS_PHP and CSWS_PERL 
are preconfigured, but you can change the configurations. For more information, 
see 
Check the CSWS_PHP Configuration and 
Check the CSWS_PERL 
Configuration.
Chapter 3
Running the Secure Web Server on OpenVMS
In general, you can run 
the SWS on OpenVMS as you would run Apache with MOD_SSL on any platform. 
However, there are some exceptions. This chapter describes the functions that 
behave differently or are not available, as well as any enhancements that are 
specific to OpenVMS. 
3.1 Starting and Stopping the Server 
Starting and stopping the 
SWS requires enhanced privileges (DETACH, SYSNAM, WORLD, etc.). Start and stop 
the server from a privileged account such as SYSTEM.
3.1.1 
Starting the Server 
Start the SWS with the 
following command: 
$ 
@SYS$STARTUP:APACHE$STARTUP [startup-value] [configuration-file]
Startup-value is optional and can have 
the following values:
| 
   Value   | 
  
   Description   | 
 
| 
   
	START
    | 
  
   
	Creates the SWS as a detached network process; default value   | 
 
| 
   
	GRACEFUL
    | 
  
   
	Sends a restart signal to the server, but existing client connections are 
	not interrupted. Idle child processes are immediately deleted and replaced. 
	Busy child processes are replaced when the connection is terminated   | 
 
| 
   
	RESTART
    | 
  
   
	Sends a restart signal to the server to have it reread 
	APACHE$ROOT:[CONF]HTTPD.CONF
    | 
 
| 
   
	RUN
    | 
  
   
	Runs the server on the current process   | 
 
  
Configuration-file is an optional file specification for a configuration file. If you 
do not specify a value for configuration-file, HTTPD.CONF is the default.
 
To automate the startup 
of the SWS when the system is booted, add the following commands to the 
SYS$MANAGER:SYSTARTUP_VMS.COM file:
$ FILE :=
SYS$STARTUP:APACHE$STARTUP.COM
$ 
IF F$SEARCH("''FILE'") .NES. "" THEN @'FILE'
3.1.2 
Stopping the Server 
You can shut down the SWS 
with the following command:
$ 
@SYS$STARTUP:APACHE$SHUTDOWN [startup-value] [configuration-file]
Startup-value is optional and can have 
the following values: 
| 
   Value   | 
  
   Description   | 
 
| 
   
	GRACEFUL
    | 
  
   
	Sends a restart signal to the server, but existing client connections are 
	not interrupted. Idle child processes are immediately deleted and replaced. 
	Busy child processes are replaced when the connection is terminated   | 
 
| 
   
	RESTART
    | 
  
   
	Sends a restart signal to the server to have it reread 
	APACHE$ROOT:[CONF]HTTPD.CONF
    | 
 
| 
   
	SHUTDOWN
    | 
  
  
   Stops the detached network process; default value  | 
 
| 
  STOP
   | 
  
  Same as SHUTDOWN  | 
 
Configuration-file is an optional file specification for a configuration file. If you 
do not specify a value for configuration-file, HTTPD.CONF is the default.  
To automate the shutdown 
of the SWS when the system is shut down, add the following commands to the 
SYS$MANAGER:SYSHUTDOWN.COM file: 
$ FILE :=
SYS$STARTUP:APACHE$SHUTDOWN.COM
$ 
IF F$SEARCH("''FILE'") .NES. "" THEN @'FILE'
Note 
The SWS will not shut 
down as long as the APACHE$WWW process is running. 
If you are unable to shut down the server, use the following command to check 
whether APACHE$WWW processes are still running: 
$ 
SHOW SYSTEM/OWNER_UIC=[APACHE$WWW]
3.1.2.1 Stopping the Server Using the Server Process Name
If you are unable to shut 
down the server using the APACHE$SHUTDOWN command, and APACHE$WWW is still 
running, you can use the server PID to stop it. To determine the server PID, 
enter the following command (or choose Option 9 from the configuration menu): 
$ 
SHOW SYSTEM/PROCESS=APACHE$tag
Server processes have a 
process tag of the form APACHE$ssss, where ssss is up to four alphanumeric characters defined in 
the VmsServerTag directive. The default is APACHE$SWS. 
You should then be able 
to shut down the server by entering the following command: 
$ 
STOP PROCESS/ID=<apache-pid>
The server log file for APACHE$WWW is written to: 
APACHE$SPECIFIC:[000000]APACHE$tag
Server processes have a 
process tag of the form APACHE$ssss, where ssss is up to four alphanumeric characters defined in 
the VMSServerTag directive. The default is APACHE$SWS. 
Similarly, child 
processes have a process name of the form APACHE$ssssnnnn, 
where APACHE$ssss is the server name and nnnn is the child server process number represented 
as a hex value. For example: 
Parent
APACHE$SWS
Child 1
APACHE$SWS0000
Child 2
APACHE$SWS0001
Child 3
APACHE$SWS0002
You should have prior 
experience tuning the performance of the OpenVMS operating system. For general 
information on OpenVMS performance, see the OpenVMS Performance Management 
Manual in the OpenVMS documentation website.
Recommendations for 
improving performance on a SWS are provided in the following sections. 
3.3.1 Limits and Quotas
The following table shows 
sample values for the APACHE$WWW system user account (SYSUAF) from a working and 
exercised SWS with a light to moderate load. These values are presented as an 
example of a system performing well within its context. 
If you should experience 
performance difficulties, refer to this table for guidelines in making 
adjustments. For heavier loads, we point out which values, in our experience, 
need to be increased as load increases. Keep in mind that no one set of values 
will be appropriate for all situations. 
 
| 
   Parameter   | 
  
   Default   | 
  
   On SWS   | 
 
| 
   ASTLM (NonPooled)   | 
  
   
	250
    | 
  
   
	610
   Or BIOLM + DIOLM + 10   | 
 
| 
   BIOLM (NonPooled)   | 
  
   
	150
    | 
  
   
	300
   You might also need to 
	increase the SYSGEN parameter CHANNELCNT because it limits BIOLM,DIOLM, and 
	FILLM.   | 
 
| 
   BYTLM (Pooled)   | 
  
   
	64000
    | 
  
   
	200000
   Increase this value for 
	a heavy load.   | 
 
| 
   DIOLM (NonPooled)   | 
  
   
	150
    | 
  
   
	300
   You might also need to 
	increase the SYSGEN parameter CHANNELCNT because it limits BIOLM,DIOLM, and 
	FILLM.   | 
 
| 
   ENQLM (Pooled)   | 
  
   
	2000
    | 
  
   
	2000
    | 
 
| 
   FILLM (Pooled)   | 
  
   
	100
    | 
  
   
	300
   Increase this value for 
	a heavy load. You might also need to increase the SYSGEN parameter 
	CHANNELCNT because it limits BIOLM,DIOLM, and FILLM.   | 
 
| 
   JTQUOTA (Pooled)   | 
  
   
	4096
    | 
  
   
	8192
    | 
 
| 
   PGFLQUO (Pooled)   | 
  
   
	50000
    | 
  
   
	250000
   If you increase PGFLQUO, 
	you should monitor the free size of the system page and swap files; they may 
	need to be increased.   | 
 
| 
   PRCLM (Pooled)   | 
  
   
	8
    | 
  
   
	20
   You should increase this 
	value for a heavy load.   | 
 
| 
   TQELM (Pooled)   | 
  
   
	10
    | 
  
   
	610
   Or BIOLM + DIOLM + 10   | 
 
To change the quotas for 
the APACHE$WWW SYSUAF, use the system manager account and run the AUTHORIZE 
utility. For example:
 
$ SET DEFAULT SYS$SYSTEM
$ RUN AUTHORIZE
UAF> SHOW APACHE$WWW
Username: 
APACHE$WWW                    
Owner: APACHE WEBSERVER
   ...
Maxjobs:       0 
Fillm:     100 Bytlm:      64000
Maxacctjobs:   0 Shrfillm:    0 Pbytlm:         
0
Prclm:         
8 DIOlm:     150 
WSdef:       2000
   ...
UAF>  
MODIFY APACHE$WWW/FILLM=300/PRCLM=20
%UAF-I-MDFYMSG, 
user record(s) updated
UAF>  
EXIT
          $
Periodically, check the 
server’s log file for errors of the "cannot open" variety. Errors of this type 
often indicate you need to modify system parameters. Try the following: 
·        
Set FILLM to limit the number of files a user's process can have 
open.
·        
Set the SYSGEN parameter CHANNELCNT to 1024 (unless it is already 
set to a higher value). 
Note 
Whenever you change 
system parameters, you must reboot the system to enable the new settings. 
3.3.3 Global Pages and Global Sections
If a browser installation 
stalls, this could be an indication that the number of global pages or global 
sections is too low. Run AUTOGEN to evaluate the number of global pages and 
global sections you need. Some browsers might need more.
3.3.4 Excessive File Build Up
A large number of .LOG 
and .PID files can amass over time in the directories APACHE$ROOT:[000000] 
and APACHE$ROOT:[LOGS]. Purging these files can become a burden on application 
or system managers. 
System managers should 
manually use explicit SET DIRECTORY/VERSION commands on these two directories. 
3.4 Customizing the Server Environment
The installation 
procedure creates a file named HTTPD.CONF and places it in APACHE$ROOT:[CONF]. 
The HTTPD.CONF file stores information that the SWS uses to set up the server 
environment. HTTPD.CONF has been tailored to use OpenVMS syntax, but its overall 
functionality is essentially identical to HTTPD.CONF on the UNIX platform. 
HTTPD.CONF contains an 
explanation for each line that it can execute. You can refer to these 
explanations when customizing the file for your environment. You can also refer 
to any generally available Apache documentation on HTTPD.CONF.
Note the following about 
HTTPD.CONF on OpenVMS: 
·        
No directives have been deleted or added to the Apache template 
except an Include directive for MOD_SSL.   
      Installing CSWS_JAVA, CSWS_PHP, or 
CSWS_PERL will also append Include directives specific to these 
      modules. 
·        
MOD_OSUSCRIPT has been added to enable CGI scripts originally 
written for the OSU server. 
·        
MOD_AUTH_OPENVMS enables authentication using OpenVMS usernames and 
passwords.
·        
UNIX style path names are recognized by OpenVMS. You can use either 
UNIX style or OpenVMS style path names in the configuration file. However, you 
cannot intermix the two styles within a specification. HP recommends UNIX style 
path names. 
·        
In an OpenVMS cluster, you can specify either 
clusterwide
or system-specific files. For more information, see Individual System vs.Clusterwide Definition. 
 
Following is a list of 
the modules included in the SWS for OpenVMS Version 2.2 kit. The SWS Version 2.2 
includes all of the Apache 2.0 modules and directives as well as two 
OpenVMS-specific modules, MOD_AUTH_OPENVMS and MOD_OSUSCRIPT. The Apache modules 
and directives function as documented in 
Apache Version 2.0 Modules and 
Apache Version 2.0 Directives. 
The server documentation from the 
Apache Software Foundation
provides the information needed to use the modules and directives. 
 
Note 
In SWS Version 2.2, many loadable modules are no longer loaded by default. You must uncomment the modules in httpd.conf to load them. (See the file httpd-vms.conf for other modules you may want to load.)
All modules are loadable, 
with the exception of those that are marked as built into the server.
CORE
  (Built into server) 
HTTP_CORE
  (Built 
into server) 
MOD_ACCESS
MOD_ACTIONS
MOD_ALIAS
MOD_AUTH_ANON 
MOD_ASIS
MOD_AUTH
MOD_AUTH_DBM
MOD_AUTH_DIGEST 
MOD_AUTH_KERB
MOD_AUTH_LDAP 
MOD_AUTH_OPENVMS  (OpenVMS 
specific)
MOD_AUTOINDEX 
MOD_CACHE
MOD_CASE_FILTER   
MOD_CASE_FILTER_IN   
MOD_CERN_META  
MOD_CHARSET_LITE  
MOD_CGI
MOD_DAV
MOD_DAV_FS
MOD_DEFLATE
MOD_DIR
MOD_DISK_CACHE 
MOD_ECHO
MOD_ENV
MOD_EXAMPLE
MOD_EXPIRES
MOD_FILE_CACHE 
MOD_EXT_FILTER 
MOD_HEADERS
MOD_IMAP
MOD_INCLUDE
MOD_INFO
MOD_LOG_CONFIG 
MOD_LOGIO
MOD_MIME
MOD_MIME_MAGIC 
MOD_NEGOTIATION 
MOD_OSUSCRIPT 
 
 (OpenVMS 
specific)
MOD_PROXY
MOD_PROXY_CONNECT 
MOD_PROXY_FTP 
MOD_PROXY_HTTP 
MOD_REWRITE
MOD_SETENVIF
MOD_SO
 (Built into server) 
MOD_SPELING
MOD_SSL
MOD_STATUS
MOD_SUEXEC
MOD_UNIQUE_ID 
MOD_USERDIR
MOD_USERTRACK 
MOD_VHOST_ALIAS 
PREFORK
 (Built into server) 
 
3.5.2 Apache 1.3 Modules Not Included
The following modules 
were part of the Apache 1.3 stream, but are not included in Apache 2.0. 
Therefore, these modules are not included in the SWS Version 2.2 kit. 
·        
MOD_AUTH_DB 
·        
MOD_DEFINE 
·        
MOD_ISAPI 
·        
MOD_LOG_AGENT 
·        
MOD_LOG_REFERER 
·        
MOD_MMAP_STATIC 
The following directives 
are specific to the SWS for OpenVMS.
VMSServerTag
This directive is a 
replacement for the APACHE$SERVER_TAG logical name used in the SWS Version 1.3. 
This required directive distinguishes multiple instances of the Apache server, 
and contains between 1 and 4 alphanumeric characters. This server tag will be 
used in the server process names for the given instance (for example, 
APACHE$SWS).
Default:                       
SWS
Example:     VMSServerTag    SWS1
VMSServerStartup 
This directive is a 
replacement for the APACHE$SERVER_STARTUP logical name used in the SWS Version 
1.3. This optional directive specifies a user-developed command procedure that 
should be executed prior to the activation of each Apache server process.
Default:        none
Example:     
VMSServerStartup APACHE$COMMON:[000000]APACHE$SERVER_STARTUP.COM
VMSServerShutdown 
This directive is a 
replacement for the APACHE$SERVER_SHUTDOWN logical name used in the SWS Version 
1.3. This optional directive specifies a user-developed command procedure that 
should be executed after the activation of each Apache server process. 
Default:        none 
Example: 
VMSServerShutdown APACHE$COMMON:[000000]APACHE$SERVER_SHUTDOWN.COM
This section describes 
the command line options supported in the SWS. You must run APACHE$SETUP.COM 
before using the command line interface or any other Apache image (such as 
htpasswd), as follows: 
$ 
@APACHE$COMMON:[000000]APACHE$SETUP
You can use the command 
line interface for managing multiple servers or for performing complex 
operations. HP recommends using the startup and shutdown procedures for simple 
management of a single server environment. See Starting and Stopping the 
Server for more information. 
Use the following format 
to enter a command line option: 
$ 
HTTPD –option
where 
-option is one of the following:
 
| 
   Option   | 
  
   Description   | 
 
| 
   -D name  | 
  
   
	Define a name for use in directives   | 
 
| 
   -d directory  | 
  
   
	Specify an alternate initial ServerRoot   | 
 
| 
   -f file  | 
  
   
	Specify an alternate ServerConfigFile   | 
 
| 
   -C "directive"  | 
  
   
	Process directive before reading config files   | 
 
| 
   -c "directive"  | 
  
   
	Process directive after reading config files   | 
 
| 
   -e level  | 
  
   
	Show startup errors of level (see LogLevel)   | 
 
| 
   -E file  | 
  
   
	Log startup errors to file   | 
 
| 
   -v  | 
  
   
	Display the HTTPD version and its build date   | 
 
| 
   -V  | 
  
   
	Display the HTTPD base version, its build date, and a list of compile 
	settings that influence the behavior and performance of the server   | 
 
| 
   -h  | 
  
   
	Display a list of the HTTPD options   | 
 
| 
   -l  | 
  
   
	Display a list of all modules compiled into the server   | 
 
| 
   -L  | 
  
   
	Display a list of directives with expected arguments and places where the 
	directive is valid   | 
 
| 
   -t -D DUMP_VHOSTS  | 
  
   
	Show parsed settings (currently only vhost settings)   | 
 
| 
   -S  | 
  
   
	A synonym for -t -D DUMP_VHOSTS   | 
 
| 
   -t  | 
  
   
	Run syntax check for config files   | 
 
Enter the following 
command to see a list of available options, as follows: 
    
$ 
httpd
-?
Usage: 
dka200:[apache]apache$httpd.exe;1 [-D name] [-d directory] [-f file]
[-C "directive"] 
[-c "directive"]
[-k 
start|restart|graceful|stop]
[-v] [-V] [-h] 
[-l] [-L] [-t] [-S]
Options:
   -D name           
: define a name for use  in  directives
   -d directory      : specify an 
alternate initial  ServerRoot
   -f file           
: specify an alternate  ServerConfigFile
   -C "directive"    : process directive before 
reading config files
   -c "directive"    : process directive after 
reading config files
   -e level          
: show startup errors of level (see LogLevel)
   -E file           
: log startup errors to file
   -v                
: show version number
   -V               
: show compile settings
   -h                
: list available command line options (this page)
   -l                
: list compiled in modules
   -L                
: list available configuration directives
   -t -D DUMP_VHOSTS : show parsed settings 
(currently only vhost settings)
   -S                
: a synonym for -t -D DUMP_VHOSTS
   -t                
: run syntax check for config files
3.5.5 Virtual 
Host Support
The term 
virtual host 
refers to the practice of maintaining a single server to serve pages for 
multiple virtual hosts. Both IP-based and name-based virtual host support are 
available on the SWS for OpenVMS. 
Note 
On OpenVMS, the security 
profile of the running server is the same on all virtual hosts. 
For more information, see 
Apache Virtual Host Documentation. 
3.5.6 Dynamic Shared Object Support
Dynamic shared object 
support provides a way to format code so that it will load into the address 
space of an executable program at run time. This functionality is supported on 
OpenVMS. 
For more information, see 
Dynamic Shared Object (DSO) Support. 
The SWS for OpenVMS 
supports the ability to use file handlers explicitly. 
3.5.8 Content Negotiation
The MOD_NEGOTIATION 
module provides content negotiation. This module lets you specify language 
variants of HTML files. 
Note 
Beginning with the SWS 
Version 2.0, you must specify language variants on OpenVMS systems in the same 
way as you do on UNIX systems, using multiple dots in the filename. For example, 
the French variant of a filename is 
filename.html.fr. 
In previous versions of 
the SWS, you would use an underscore instead of a dot before the language 
extension (for example, 
filename.html_fr). 
For more information, see 
Content Negotiation Documentation.
3.5.9 Apache API
You can use the standard 
Apache API to write your own modules that will run on the SWS for OpenVMS. For 
more information, see 
Apache API Documentation.
The SWS for OpenVMS 
includes MOD_DAV to provide DAV (Distributed Authoring and Versioning) 
capabilities. 
DAV is a set of 
extensions to the HTTP protocol that allows users to collaboratively edit and 
manage files on remote web servers using DAV-enabled client applications. 
MOD_DAV is an Apache module that provides DAV capabilities (RFC 2518) for the 
Apache web server. 
Note 
To change the database 
manager type, set the logical name APACHE$DAV_DBM_TYPE so that it is visible to 
Apache, such as in APACHE$COMMON:[000000]LOGIN.COM.  
For more information, see the 
MOD_DAV website. 
3.5.10.1 Testing DAV Operation
You can test DAV 
operation using Microsoft Internet Explorer.
Recent versions of 
Windows come DAV-enabled. Older versions, such as Windows NT 4.0, require 
Internet Explorer 5.5 or later. You may need to DAV-enable Internet Explorer 5.5 
using the Control Panel application's Add/Remove Programs option. Double-click 
on Microsoft Internet Explorer 5.5 and Internet Tools, and select Add Component 
and click OK. Scroll down to Web Publishing Components and select Web Folders 
and complete the configuration.
Run Internet Explorer and 
select File/Open. Select "Open as web folder" and enter the URL of the DAV 
folder (for example: http://your-server/webdav/). Internet Explorer will open 
your DAV folder and display its contents. In addition, Windows Explorer may now 
show a Web Folders folder that you can use like a local or network drive. 
Note 
Not all Windows 
applications are DAV-enabled. Recent versions of Microsoft Word and Microsoft 
Office are DAV-enabled, which may allow you to open and edit a DAV document 
directly in the application. For other applications, you may need to copy the 
DAV file to a local directory in Windows, edit the document and copy it back to 
the DAV folder using Windows Explorer. 
The 
suEXEC feature provides the ability to run CGI programs under user IDs 
different from the user ID of the calling web server. 
See 
suEXEC in 
the SWS for configuration information. 
3.5.12 MOD_SSL
You can improve SSL cache performance in a Galaxy cluster by 
placing a memory-based SSL session cache in a Galaxy shared-memory partition. 
After the partition is created, use the steps in the following section to 
configure SWS to use the Galaxy partition for the session cache.
3.5.12.1 
Setting up a Galaxy Shared-Memory SSL Session Cache
The SSLSessionCache directive on 
all GALAXY members must be the same:
 SSLSessionCache cshm:logs/ssl_scache(512000) 
 SSLMutex          csem:<anythingyouwant>
These directives create the Galaxy global section APACHE$SSL_CSHM_logs/ssl_scache and use the 
APACHE$SSL_CSHM_<anythingyouwant> mutex to synchronize access to the section. The number in 
parentheses is the size in bytes of the cache.
These directives are supported only 
when the system is running as both a Galaxy member and a member of a cluster.
3.5.13 Running MOD_OSUSCRIPT
The SWS for OpenVMS 
provides a CGI script environment. However, it also includes MOD_OSUSCRIPT, an 
optional module that enables the server to run scripts that were written for the 
OSU http server's script environment (which is not CGI). 
 
Note 
Apache logical names must 
be defined systemwide (not processwide) in order for MOD_OSUSCRIPT to work properly. 
MOD_OSUSCRIPT does not 
need to communicate with a running OSU server to work properly. It needs only 
the following OSU http distribution files:
·        
WWWEXEC.COM 
·        
CLI_ENV_RM.COM 
·        
CGI_SYMBOLS.EXE 
·        
MINIPERL.EXE 
The 
WWW_SYSTEM:MINIPERL.EXE image is required unless you use a different Perl 
interpreter. To use the Perl interpreter provided with CSWS, define the 
following foreign command in APACHE$ROOT:[000000]LOGIN.COM:
$ PERL :== 
$PERL_ROOT:[000000]PERL.EXE
You can download and 
install these files to run and test OSU scripts, as follows: 
1.  Create a directory for the OSU script 
files with the following command. The 
     APACHE$WWW 
username must be able to read this directory and its files. 
  $ 
CREATE/DIRECTORY device:[directory.BIN]
2.  Create a logical name pointing to the OSU 
script root directory, as follows: 
  $ 
DEFINE/SYSTEM WWW_ROOT device:[directory.]/TRANS=CONCEAL
3.  Copy CLI_ENV_RM.COM and CGI_SYMBOLS.EXE 
from an OSU system to the
     following 
location. (CLI_ENV_RM.COM can be extracted from the OSU source code
     distribution 
found at http://www.er6.eng.ohio-state.edu/www/targazer/, but 
     CGI_SYMBOLS.EXE must be compiled and linked.)
   
  WWW_ROOT:[BIN]
 
4.  Copy WWWEXEC.COM from an OSU system to 
the following location, or extract it 
     from the OSU 
source code distribution*:
  APACHE$ROOT:[000000]
 
Note
The standard version of 
WWWEXEC.COM does not support the use of Alias/<Directory> directives. You must 
use a <Location> container with mod_osuscript. 
5.  
Use the SHOW SECURITY command to ensure that APACHE$WWW can read these
     files. If needed, 
use the SET SECURITY command to change the security settings. 
6.  Edit HTTPD.CONF to add the following 
lines: 
    <Location /htbin>
           
SetHandler osuscript-handler
           
OSUscript
0::"0=WWWEXEC" www_root:[bin]
           
Order allow,deny
           Allow from all
    </Location>
     
DECnet
Phase IV node name. 
      $ SET DEFAULT SYS$SYSTEM
$ RUN AUTHORIZE
UAF>
ADD/PROXY node::APACHE$WWW
APACHE$WWW/DEFAULT
UAF>  EXIT
     If you are running 
DECnet-Plus, replace 
namespace:.abc.xyz with your system's full
     name, for 
example, DEC:.ZKO.NODE22::APACHE$WWW. 
$ SET DEFAULT SYS$SYSTEM
         
  $ 
RUN AUTHORIZE
            UAF> 
ADD/PROXY namespace:.abc.xyz::APACHE$WWW
            APACHE$WWW/DEFAULT
            UAF> 
EXIT
8.  To 
use MOD_OSUSCRIPT, you must load the image during Apache startup by
     
uncommenting
the following line in the APACHE$COMMON:[CONF]HTTPD.CONF
     file supplied by 
the installation (or add the uncommented line to your existing 
     configuration 
file):
 
      #LoadModule
osuscript_module modules/mod_osuscript.exe
9. To test, execute the simple OSU script CLI_ENV_RM.COM. To do this, replace myhostname in the following URL
     
 with your server's domain name:
 
http://myhostname/htbin/CLI_ENV_RM.COM
MOD_OSUSCRIPT does the 
following:
1.      
Opens a DECnet connection using task 0 
for the APACHE$WWW username entered in the proxy command. 
2.      
Executes WWWEXEC.COM using the default HTTPD.CONF directives.
3.      
Searches the WWW_ROOT:[BIN] directory for 
the script name entered in the URL.
MOD_OSUSCRIPT supports 
all of the script server protocol commands, except the following: 
·        
<DNETREUSE> Reuse logical link for subsequent scripts.
·        
<DNETINVCACHE> Invalidate internal cache (the SWS does not have a 
cache). 
·        
<DNETMANAGE> Send management command, OSU server specific.
· <DNETFORCEKA> Put client link in keep-alive mode.
3.6 File 
Formats
The SWS Version 2.2 kit 
no longer requires
all served files to be in Stream_LF format. If you 
still want your files in Stream_LF format, see 
Converting files to Stream_LF for information about a 
command procedure that automatically converts your files. 
The EnableMMAP
directive must be set to OFF to lift the Stream_LF
restriction. In Version 2.2, EnableMMAP is set to OFF by default.  (In Version 2.0, the default for 
EnableMMAP was ON.)
Note
In the SWS Version 2.2, the Web browser status bar shows page 
loading progress, which requires an accurate byte count.  To obtain an 
accurate byte count for Variable and VFC format files, the SWS reads each file 
twice.  You can get better efficiency 
from a Stream_LF format file because the SWS reads it 
only once.
3.7 Managing 
File and Directory Access Controls
The OpenVMS operating 
system controls read/write/execute/delete access to files and directories at two 
levels. (See the 
OpenVMS Guide to System Security for more details on the OpenVMS security model.) 
These two levels are as follows: 
·        
System:Owner:Group:World (SOGW) protection 
through user/group identifier codes (UIC) based on file ownership. 
     
 This is 
conceptually similar to standard UNIX file protection. 
·        
User-id/access pairs stored as Access Control Entries (ACE) within 
a file's (or directory's) Access Control List     
(ACL). ACLs can be used to provide fine-grained access control to files and directories that are not owned by the
     
user who is attempting access. 
When the SWS is 
installed, all files and directories under the APACHE$ROOT:[*...] directory tree are owned by the SWS UIC 
[AP_HTTPD,APACHE$WWW]. Most of these files and directories are given the SOGW 
protection of (S:RWED,O:RWED,G,W), which allows read+write+execute+delete
access to system and owner UICs ([SYSTEM] and 
[AP_HTTPD,APACHE$WWW]). This allows the SWS processes to access their own files 
and directories. 
There are instances when 
you will need to modify file and directory protections. In most cases, you 
should use ACLs to grant or deny access, because 
ACLs provide you better control and security. In general, 
you should not modify file and directory UICs unless 
there is good reason to do so. 
The following sections 
explain situations when you need to modify file and directory protections. 
3.7.1 Outbound Access to Non-CSWS Files 
and Directories
If, for example, you 
allow users to host document files from their home directories (see the 
UserDir directive
for more information), and you have the following directive defined in your 
HTTPD.CONF file:
   UserDir
public_html
In this case, a user is 
allowed to define a subdirectory called 
public_html under their default 
login directory (for example, [JOE.PUBLIC_HTML]). For SWS to serve those 
documents from that directory, it needs access to that directory and its 
contents, as well as all upper-level directories leading to it. 
The correct way to 
accomplish this for user "Joe" is as follows: 
    $ SET SECURITY/ACL=(IDENT=APACHE$WWW,ACCESS=READ) 
-
    _$ dev:[000000]JOE.DIR
    $ SET 
SECURITY/ACL=(IDENT=APACHE$WWW,ACCESS=READ+EXECUTE) -
    _$ dev:[JOE]PUBLIC_HTML.DIR
    
$ SET 
SECURITY/ACL=(IDENT=APACHE$WWW,ACCESS=READ+EXECUTE) -
    _$ dev:[JOE.PUBLIC_HTML]*.*
When accessing SWS files 
and directories from another user account (UIC), make sure the ACL for the 
target directory and file allows access by that UIC. 
For example, if you are 
performing a File Transfer Process (FTP) operation to transfer new files to a 
CSWS directory, protect the files as follows: 
    $ SET SECURITY/ACL=(IDENTIFIER=yourFTPname,ACCESS=READ+WRITE) -
    _$ [directory]
    $ SET 
SECURITY/ACL=(IDENTIFIER=yourFTPname,ACCESS=READ+WRITE) -
    _$ 
[directory]*.*
3.8 Logical 
Names
The SWS for OpenVMS 
creates the following logical names. 
 
| 
		 
		
		Logical Name 
		  | 
		
		 
		
		Description 
		  | 
	
| 
		 
		APACHE$APU_SHR   | 
		
		
		 
		System executive mode 
	logical name that points to the Apache Runtime Utility shared image that 
	provides common utility routines needed by the SWS. 
		 
		If no logical is 
	specified, the default is APACHE$COMMON:[000000]APACHE$APU_SHR.EXE. 
		  | 
		
	
| 
		 
		
		APACHE$APR_SHR   | 
		
		
		 System executive mode logical name that points to the Apache Runtime Utility shared image that provides common routines needed by the SWS. 
		If no logical is 
	specified, the default is APACHE$COMMON:[000000]APACHE$APR_SHR.EXE. 
		  | 
		
	
| 
		 
		
		APACHE$APR_SHRP   | 
		
		
		 
		
		System executive mode 
	logical name that points to the Apache Runtime protected shared image which 
	provides privileged access routines needed by the SWS. 
		 
		If no logical is 
	specified, the default is APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE. 
		  | 
		
	
| 
		 
		
		APACHE$COMMON 
		  | 
		
		
		 
		
		Concealed logical name 
	that defines clusterwide files in APACHE$ROOT (device:[APACHE]). 
		  | 
		
	
| 
		 
		
		APACHE$HTTPD_SHR   | 
		
		
		 System executive mode logical name that points to the Apache HTTPD shared image that provides server routines needed by the SWS. 
		If this logical is not 
	set, the default is APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE. 
		  | 
		
	
| 
		 
		
		Logical Name 
		  | 
		
		
		 
		
		Description 
		  | 
		
	
| 
		 
		
		APACHE$ROOT 
		  | 
		
		
		 
		
		System executive mode 
	logical name defined during startup that points to the top-level directory. 
	(device:[APACHE], device:[APACHE.SPECIFIC.node-name]). 
		  | 
		
	
| 
		 
		
		APACHE$SERVER_PID   | 
		
		
		 
		
		Created by the 
	APACHE$CONFIG.COM READ function to identify the running server process that 
	corresponds to a particular configuration file. This logical name is 
	equivalent to the process ID of the running server, or a blank space (" ") 
	if there is no running server for the specified configuration file. 
		  | 
		
	
| 
		 
		
		APACHE$SERVER_TAG 
		
		(Obsolete in Version 2.x)    | 
		
		
		 
		Defines the currently 
	running server's tag and is intended for reference only. This logical 
	contains the 1-4 character server tag defined via the VmsServerTag 
	directive. If no logical is 
	specified, the default is SWS. 
		  | 
		
	
| 
		 
		
		APACHE$SPECIFIC 
		  | 
		
		
		 
		
		Concealed logical name 
	that defines system-specific files in APACHE$ROOT 
	(device:[APACHE.SPECIFIC.node-name]). 
		  | 
		
	
Note
The APACHE$COMMON, 
APACHE$SPECIFIC, and APACHE$ROOT logical names are no longer defined 
systemwide. They are process logical names defined for each server 
process and its child processes. 
Because the SWS supports 
multiple server processes on the same system, each server process can have its 
own definitions for these logical names. Therefore, these logical names cannot 
be made systemwide. 
The process logical names 
are made by APACHE$CONFIG.COM, APACHE$STARTUP.COM, and APACHE$SHUTDOWN.COM. You 
can edit a clusterwide
version of HTTPD.CONF by entering the following command: 
    $ 
EDIT APACHE$COMMON:[CONF]HTTPD.CONF
If you attempt to use the 
preceding command on a process that has not run APACHE$CONFIG.COM, 
APACHE$STARTUP.COM, or APACHE$SHUTDOWN.COM, the command will fail because the 
logical name APACHE$COMMON is not defined for that process.
 
| 
		 
		
		Logical Name 
		  | 
		
		
		 
		
		Description 
		  | 
		
	||||||||
| 
		 
		
		APACHE$BG_PIPE_BUFFER_SIZE
  		  | 
		
		
		 
		
		System logical name that 
	is used to set the socket pipe buffer size for exec functions. 
		 
		If this logical is not 
	set, the default is 32767. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$CGI_BYPASS_OWNER_ 
	CHECK   | 
		
		
		 
		
		If defined to any value, 
	this logical name causes the SWS to bypass the file owner check of the CGI 
	script file. The default is to enforce the owner check on CGI script files 
	for security purposes. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$CGI_MODE 
		  | 
		
		
		 
		
		System logical name that 
	controls how CGI environment variables are defined in the executing CGI 
	process. There are three different options. Note that only one option is 
	available at a time. 
		  | 
		
	||||||||
| 
		 
		
		  
		  | 
		
		
		 
		
		  
		 
 
		
		  | 
		
	||||||||
| 
		 
		
		APACHE$CREATE_SYMBOLS_ 
	GLOBAL 
		  | 
		
		
		 
		
		If defined, this system 
	logical name causes CGI environment symbols to be defined globally. They are 
	defined locally by default. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$DAV_DBM_TYPE   | 
		
		
		 
		
		Used to define the 
	desired DBM organization to use for MOD_DAV. The valid options for this 
	logical are: GDBM, SDBM, VDBM. 
		 
		If this logical is not 
	set, the default is VDBM. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$DEBUG_DCL_CGI 
		  | 
		
		
		 
		
		If defined, this system 
	logical name enables APACHE$VERIFY_DCL_CGI and APACHE$SHOW_CGI_SYMBOL. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$DL_CASE   | 
		
		
		 
		
		System logical name that 
	controls how Apache will locate shareable entry points. There are four 
	different options. Note that only one option is available at a time. 
		  | 
		
	||||||||
| 
		 
		
		  
		  | 
		
		
		 
		
		  
		 
 
		
		  | 
		
	||||||||
| 
		 
		
		APACHE$DL_FORCE_UPPERCASE
  		  | 
		
		
		 
		
		If defined to be true 
	(1, T, or Y), this system logical name forces case-sensitive dynamic image 
	activation symbol lookups. By default, symbol lookups are first done in a 
	case-sensitive manner and then, if failed, a second attempt is made using 
	case-insensitive symbol lookups. This fallback behavior can be disabled with 
	APACHE$DL_NO_UPPERCASE_FALLBACK. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$DL_NO_UPPERCASE_ 
	FALLBACK   | 
		
		
		 
		
		If defined to be true 
	(1, T, or Y), this system logical name disables case-insensitive symbol name 
	lookups whenever case-sensitive lookups fail. See APACHE$DL_FORCE_UPPERCASE. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$FIXBG   | 
		
		
		 System executive mode logical name pointing to installed, shareable images. Not intended to be modified by the user. Replaced by APACHE$SET_CCL.EXE.  | 
		||||||||
| 
		 
		
		APACHE$FLIP_CCL   | 
		
		 Used by APACHE$SET_CCL.EXE, which replaces APACHE$FIXBG.EXE.  | 
		
		||||||||
| 
		 
		
		APACHE$INPUT 
		  | 
		
		
		 
		
		Used by CGI programs for 
	PUT/POST methods of reading the input stream. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$MB_PIPE_BUFFER_SIZE
  		  | 
		
		
		 
		
		Used to set the mailbox 
	pipe buffer size for exec functions. 
		 
		If this logical is not 
	set, the default is 4096. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$PLV_ENABLE_<username>
  		  | 
		
		
		 
		
		System executive mode 
	logical name defined during startup and used to control access to the 
	services provided by the APACHE$PRIVILEGED image. Not intended to be 
	modified by the user. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$PLV_LOGICAL   | 
		
		
		 
		
		System executive mode 
	logical name defined during startup and used to control access to the 
	services provided by the APACHE$PRIVILEGED image. Not intended to be 
	modified by the user. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$PREFIX_DCL_CGI_ 
	SYMBOLS_WWW 
		  | 
		
		
		 
		
		If defined, this system 
	logical name prefixes all CGI environment variable symbols with "WWW_". By 
	default, no prefix is used. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$PRIVILEGED   | 
		
		
		 
		
		System executive mode 
	logical name pointing to installed, shareable images. Not intended to be 
	modified by the user. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$READDIR_NO_DOT_FILES
  		  | 
		
		
		 
		
		Used to disable the 
	simulating of dot files when processing directories. There is no default 
	value. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$READDIR_NO_NULL_TYPE
  		  | 
		
		
		 
		
		Used to disable the 
	elimination of the null type which contains a single dot when processing 
	directories. There is no default value. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$READDIR_NO_UNIX_OPEN
  		  | 
		
		
		 
		
		Used to disable the 
	processing of unix files when processing directories. There is no default 
	value. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$SET_CCL   | 
		
		 Used by APACHE$SET_CCL.EXE, which replaces APACHE$FIXBG.EXE.  | 
		
		||||||||
| 
		 
		
		APACHE$SHOW_CGI_SYMBOL 
		  | 
		
		
		 
		
		If defined, this system 
	logical name provides information for troubleshooting the CGI environment by 
	dumping all of the symbols and logicals (job/process) for a given CGI. Use 
	with APACHE$DEBUG_DCL_CGI. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$SSL_DBM_TYPE   | 
		
		
		 
		
		Used to define the 
	desired DBM organization to use for MOD_SSL. The valid options for this 
	logical are: GDBM, SDBM, VDBM. 
		 
		If this logical is not 
	set, the default is VDBM. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$SPL_DISABLED   | 
		
		
		 
		
		Used to determine 
	whether Shared Process Logging is to be disabled. There is no default value. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$SPL_MAX_BUFFERS 
		  | 
		
		
		 
		
		Used to determine the 
	maximum buffer quota for each Shared Process Logging mailbox. 
		 
		If this logical is not 
	set, the default is 10. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$SPL_MAX_MESSAGE 
		  | 
		
		
		 
		
		Used to determine the 
	maximum message size for each Shared Process Logging mailbox. 
		 
		If this logical is not 
	set, the default is 1024. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$SPL_FLUSH_INTERVAL
  		  | 
		
		
		 Used to determine the maximum message count per Shared Process Logging file before data is flushed to disk. 
		If this logical is not 
	set, the default is 256. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$USE_CUSTOM_STAT 
		  | 
		
		
		 
		
		System logical name that 
	is used to indicate that the custom apache stat function should be used 
	rather than the run-time stat function. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$USER_HOME_PATH_ 
	UPPERCASE   | 
		
		
		 
		
		If defined to be true 
	(1, T, or Y), this system logical name uppercases device and directory 
	components for user home directories when matching pathnames in <DIRECTORY> 
	containers. This provides backward compatibility for sites that specify 
	these components in uppercase within <DIRECTORY> containers. See the UserDir 
	directive in 
		Modules and Directives
  section for more information. 
		  | 
		
	||||||||
| 
		 
		
		APACHE$VERIFY_DCL_CGI 
		  | 
		
		
		 
		
		If defined, this system 
	logical name provides information for troubleshooting DCL command procedure 
	CGIs by forcing a SET VERIFY before executing any DCL CGI. Use with 
	APACHE$DEBUG_DCL_CGI. 
		  | 
		
	||||||||
3.9 OpenVMS Cluster Considerations
Note
The SWS runs and has been 
tested in Alpha-only, Integrity server only, and mixed-architecture (Alpha and 
VAX) clusters.  (The SWS does not run 
on VAX systems but runs on Alpha systems in an Alpha and VAX cluster.)  
Although HP expects that 
SWS will also run in a mixed-architecture (Alpha and Integrity server) cluster, 
the Version 2.2 kit has not been tested in that configuration. 
The configuration 
procedure lets you specify where you want to store the server software, the 
server system files (configuration, startup, and shutdown files), and your HTML 
files (content). By default, everything will go in SYS$COMMON or the device and 
directory you specified with the PRODUCT INSTALL command. 
Where you put each server 
component depends on your OpenVMS cluster environment and how much you want to 
integrate or segregate the SWS and its activities. You can install the server 
once on a disk that is visible to multiple systems in the cluster. You have the 
option of: 
·        
Using one configuration for all systems, or 
·        
Configuring individual systems, provided 
they all share a common system disk. 
In the latter case, a 
common system disk is needed so that all the systems have access to the server 
system files on the system disk. If a system has access to a clusterwide directory where the SWS is installed, but does not share a 
system disk with the other systems, you might need an additional installation. 
If you have more than one 
installation, you must make sure that the APACHE$WWW account has the same UIC 
across the entire cluster. The installation procedure automatically assigns the 
APACHE$WWW UIC to all the files under [APACHE], regardless of their actual 
physical locations. One UIC definition for APACHE$WWW for all installations 
ensures that all files are visible at all times. 
·       
APACHE$READ
· APACHE$EXECUTE
· APACHE$SUEXEC_SRVR
·       
APACHE$SUEXEC_USER  
These identifiers are used in ACLs and are attached to disk files that might be shared in 
a cluster.
3.9.1 Individual System vs. 
Clusterwide Definition
To define 
clusterwide vs. individual configuration files, APACHE$ROOT 
uses the following concealed logical names: 
·   
   APACHE$COMMON defines 
clusterwide
files. 
·   
   APACHE$SPECIFIC defines system-specific 
files. 
When reading a file, the 
server first looks for a system-specific version of the file in APACHE$SPECIFIC:[directory]. If it does not find one, it looks for a 
clusterwide file in APACHE$COMMON:[directory].
To avoid confusion, 
always use the appropriate concealed logical name to specify the file you want 
to edit. For example, to edit a clusterwide version of 
HTTPD.CONF, refer to: 
    $ 
EDIT APACHE$COMMON:[CONF]HTTPD.CONF
If you referred to: 
    $ 
EDIT APACHE$ROOT:[CONF]HTTPD.CONF
the server would open the 
clusterwide file but save it as a system-specific version. 
The latest version of HTTPD.CONF would then be visible only to the individual 
node it was saved on. 
Within HTTPD.CONF itself, 
you should make this distinction whenever you refer to a path or file location. 
This improves performance and ensures the server will return a complete 
directory listing. For example, you should specify APACHE$COMMON or 
APACHE$SPECIFIC (instead of APACHE$ROOT) with Directory directives. 
The following extract, 
from the HTTPD.CONF file distributed with the OpenVMS kit, refers to 
APACHE$COMMON because the content for the default web page is in the 
clusterwide directories. 
DocumentRoot "/apache$common/htdocs"
        . . .
    <Directory "/apache$common/htdocs">
        Options Indexes 
FollowSymLinks Multiviews
        
AllowOverride
None
        Order 
allow,deny
        Allow from 
all
    </Directory>
3.9.2 Mixed-Architecture (Alpha and VAX) 
Cluster
In a mixed-architecture 
cluster of Alpha and VAX systems, do not use a cluster alias IP address with the 
SWS. Because the VAX systems will not have the SWS running, they will not be 
able to service HTTP requests. 
3.10 Common Gateway Interface (CGI)
Common Gateway Interface 
(CGI) programs execute within the DCL shell on the SWS for OpenVMS. Please note 
the following OpenVMS specific information. 
3.10.1 CGI Environment Variables
By default, an 
environment variable symbol takes the form designated by the name of the 
environment variable. You can determine how environment variables are set when 
the server executes a CGI program. 
You can define the 
APACHE$PREFIX_DCL_CGI_SYMBOLS_WWW logical name to prefix all environment 
variable symbols with "WWW_". By default, no prefix is used. 
The APACHE$CGI_MODE 
logical name controls how CGI environment variables are defined in the executing 
CGI program, as follows: 
    APACHE$CGI_MODE option
where 
option can have 
one of the following values 
at a time: 
| 
		 
		
		0 
		  | 
		
		
		 
		
		Default. Environment 
	variables are defined as local symbols and are truncated at 970 (limitable 
	with DEC C).
  		  | 
		
	
| 
		 
		
		1 
		  | 
		
		
		 
		
		Environment variables 
	are defined as local symbols unless they are greater than 970 characters. If 
	the environment value is greater than 970 characters, it is defined as a 
	multi-item logical. 
		  | 
		
	
| 
		 
		
		2 
		  | 
		
		
		 
		
		Environment variables 
	are defined as logicals. If the environment value is greater than 255 
	characters, it is defined as a multi-item logical. 
		  | 
		
	
APACHE$DCL_ENV is a 
foreign symbol that lets you define CGI environment variables as follows: 
    APACHE$DCL_ENV [-c] [-d] [-e 
env-file] [-l]
where: 
| 
		 
		
		-c 
		  | 
		
		
		 
		
		Default. Indicates 
	create environment variables. 
		  | 
		
	
| 
		 
		
		-d 
		  | 
		
		
		 
		
		Indicates delete 
	environment variables. 
		  | 
		
	
| 
		 
		
		-e env-file 
		  | 
		
		
		 
		
		Specifies an alternate 
	environment file. The environment file does not need to be specified by the 
	caller because the parent derives it (it is easily be determined by 
	default).
  		  | 
		
	
| 
		 
		
		-l 
		  | 
		
		
		 
		
		Allows you to list the 
	contents of the environment file. This option is used to display the 
	enviroment variables when you specify the APACHE$DEBUG_DCL_CGI and the 
	APACHE$SHOW_CGI_SYMBOLS logical names. 
		  | 
		
	
An example of the output 
of an environment file is as follows: 
(CGI Environment 
Variables)
 "DOCUMENT_ROOT" = "/apache$common/htdocs"
 "HTTP_ACCEPT" = "image/gif, image/x-xbitmap, 
image/jpeg, image/pjpeg, */*"
 "HTTP_ACCEPT_LANGUAGE" = "en-us"
 "HTTP_CONNECTION" = "Keep-Alive"
 "HTTP_HOST" = "husky2.zko.dec.com"
The following example 
deletes the environment and then recreates it: 
  Example:
diff_mode_cgi.com
  $ APACHE$DCL_ENV -d
  $ Define 
APACHE$PREFIX_DCL_CGI_SYMBOLS_WWW 1
  $ APACHE$DCL_ENV –c
CGI scripts that 
reference input to the SWS must refer to APACHE$INPUT. 
3.10.3 Executing CGI
On OpenVMS, CGI images 
execute within a DCL process. You cannot execute CGI images directly. 
3.10.4 Logicals
for Debugging CGI Scripts
Use the following logical 
to debug CGI scripts. 
| 
		 
		
		Logical Name 
		  | 
		
		
		 
		
		Description 
		  | 
		
	
| 
		 
		
		APACHE$DEBUG_DCL_CGI 
		  | 
		
		
		 
		
		If defined, this system 
	logical name enables APACHE$VERIFY_DCL_CGI and APACHE$SHOW_CGI_SYMBOL. 
		  | 
		
	
| 
		 
		
		APACHE$VERIFY_DCL_CGI 
		  | 
		
		
		 
		
		If defined, this system 
	logical name provides information for troubleshooting DCL command procedure 
	CGIs by forcing a SET VERIFY before executing any DCL CGI. Enabled by 
	APACHE$DEBUG_DCL_CGI. 
		  | 
		
	
| 
		 
		
		APACHE$SHOW_CGI_SYMBOL 
		  | 
		
		
		 
		
		If defined, this system 
	logical name provides information for troubleshooting the CGI environment by 
	dumping all of the symbols and logicals (job/process) for a given CGI. 
	Enabled by APACHE$DEBUG_DCL_CGI. 
		  | 
		
	
3.10.5 Displaying Graphics with CGI Command Procedures
To display a graphics 
file with a CGI command procedure, use the APACHE$DCL_BIN foreign symbol in the 
following format: 
    APACHE$DCL_BIN [-s bin-size] bin-file
where
| 
		 
		
		-s bin-size 
		  | 
		
		
		 
		
		Specifies the actual or 
	approximate file size in bytes. Bin-size is automatically determined if the 
	image file is larger than 32768K (default value). If the image file is 
	smaller than 32768K, you can provide an approximate (or actual) size (this 
	will boost performance). 
		  | 
		
	
| 
		 
		
		bin-file 
		  | 
		
		
		 
		
		Specifies the file to be 
	displayed. 
		  | 
		
	
For example: 
    $ APACHE$FLIP_CCL
    $ WRITE SYS$OUTPUT 
F$FAO("!as!/!/","CONTENT-TYPE: IMAGE/GIF")
    $ APACHE$DCL_BIN 
APACHE$ROOT:[ICONS]APACHE_PB.GIF
    $ EXIT
 
Chapter 4
Security Information
The SWS for OpenVMS is a 
non-privileged, user-mode, socket-based network application. TMPMBX and NETMBX 
are the only privilege requirements. The server runs under its own unique UIC 
and user account (APACHE$WWW). 
4.1 Process Model
The SWS runs as a single 
job which consists of: 
·        
A master process (APACHE$ssss) 
·        
Several detached processes 
Note
Although the Apache 2.0 
stream contains support for running the server in a hybrid multiprocess, multithreaded mode, the SWS Version 2.2 kit is built on a 
process-based model. A threads-based version of the 
SWS is under investigation and may be included in a subsequent 
release. 
Server processes have a 
process name of the form APACHE$ssss, where 
ssss is up to four 
alphanumeric characters defined in the VmsServerTag
directive. The default is APACHE$SWS. 
Similarly, child 
processes have a process name of the form APACHE$ssssnnnn, 
where 
APACHE$ssss is the server name and 
nnnn is the child server process number 
represented as a hex value. For example: 
  Parent
APACHE$SWS
  Child 1
APACHE$SWS0000
  Child 2
APACHE$SWS0001
  Child 3
APACHE$SWS0002
The CSWS_JAVA Java 
servlet engine creates a process (APACHE$TOMCAT) to execute 
Java programs. CSWS_PERL does not create any processes. 
The OpenVMS security 
profile for each process is identical and no enhanced mechanism is required for 
these processes to communicate with one another. Resource utilization is 
controlled by a single user account (APACHE$WWW) where pooled quotas are 
defined. 
4.2 Privileges Required 
to Start and Stop the Server
The SWS runs under the 
APACHE$WWW username and UIC and is started as a detached, network process. 
During startup, protected images are installed and logical names are placed in 
the system logical name table. Shutdown is accomplished by sending a KILL signal 
to the master process and its subprocess.
These actions require 
enhanced privileges (DETACH, SYSNAM, WORLD, etc.) and are usually performed from 
a suitably privileged account. 
4.3 File Ownership and Protection 
All of the server's files 
reside under its root directories pointed to by the APACHE$ROOT logical name. 
During installation, file protection is set to (S:RWED, 
O:RWED, G, W). During configuration, all files are set to be owned by 
APACHE$WWW. 
4.4 Authentication Using OpenVMS 
Usernames and Passwords
    (MOD_AUTH_OPENVMS)
The MOD_AUTH_OPENVMS 
module supports authentication using the usernames and passwords contained in 
the system authorization file (SYS$SYSTEM:SYSUAF.DAT). 
You can optionally load the new module at startup. The module is located in: 
    APACHE$COMMON:[MODULES]MOD_AUTH_OPENVMS.EXE
Note
The HTTP password authentication protocol transmits username and password information in plain text. When you enable mod_auth_openvms, you are potentially exposing your user's passwords to password sniffing attacks. If your application is intended to be used over external network connections, consider placing your password-protected pages within an SSL-protected directory so usernames and passwords are encrypted before they are transmitted.
To enable 
mod_auth_openvms, edit the HTTPD.CONF file to include the following 
directive: 
    LoadModule
auth_openvms_module
    /apache$common/modules/mod_auth_openvms.exe
This module supports the 
following directives: 
·        
AuthOpenVMSUser {On,Off} 
This directive controls whether user authentication and authorization using 
MOD_AUTH_OPENVMS are enabled or disabled (On or Off, respectively). By default,
AuthOpenVMSUser is set to On if the MOD_AUTH_OPENVMS 
module is loaded. 
The syntax is similar to the 
AuthUserFile directive 
provided by MOD_AUTH and the AuthDBUserFile directive 
provided by MOD_AUTH_DB.
 
Note
Versions of the SWS prior to Version 1.3 defined the AuthUserOpenVMS directive, which is equivalent to AuthOpenVMSUser. The AuthUserOpenVMS directive is still supported; however, HP recommends that you use the new syntax. By default, the module is enabled once it is loaded.
·        
AuthOpenVMSGroup {On,Off} 
 
This directive controls whether group authorization using MOD_AUTH_OPENVMS is enabled or disabled (On or Off,
respectively). By default, AuthOpenVMSGroup is set to On if the MOD_AUTH_OPENVMS module is loaded. (If
AuthOpenVMSUser is disabled, then AuthOpenVMSGroup is also disabled, even if AuthOpenVMSGroup On is
specified.)
The syntax is similar to the AuthGroupFile directive provided by MOD_AUTH and the AuthDBGroupFile directive
provided by MOD_AUTH_DB.
For example, if a 
directory is protected using an .HTACCESS file, the contents of that file might 
contain: 
 AuthType Basic
    AuthName
"OpenVMS authentication"
    AuthOpenVMSUser
On
    require valid-user
When a user seeks to open 
a file in that directory, the user will be prompted for a username and password. 
That username and password must match entries in the SYSUAF.DAT file. 
Furthermore, the SYSUAF.DAT entry must allow a network login for that username 
at the time of the request. If an invalid authentication request occurs, an 
intrusion record is written. 
An authentication request 
can be rejected for the following reasons: 
·        
Username is blank or invalid. 
·        
Password is blank or invalid. (Note: The SWS does not allow blank 
or null passwords, even though blank or null 
      passwords are allowed by OpenVMS.) 
·        
Password is valid, but target account is flagged as an intruder. 
(Account is flagged after 5 consecutive failures in a 
     
given time period; see the DCL commands SHOW INTRUSION and DELETE INTRUSION.) 
·        
Target account has a secondary password defined. (HTTP password 
protocol does not support secondary  
passwords.)
· Account is marked for external authentication (see AUTHORIZE /FLAGS=EXTAUTH qualifier).
· Password has expired (see AUTHORIZE /FLAGS=PWD_EXPIRED qualifier).
· Account has expired (see AUTHORIZE /EXPIRATION qualifier).
· Account is disabled (see AUTHORIZE /FLAGS=DISUSER qualifier).
· Access restrictions prevent a network access for this time of day (see AUTHORIZE /ACCESS and /PRIMEDAYS
     
qualifiers). 
When you use 
MOD_AUTH_OPENVMS for authentication, the software accepts one or more require 
group directives. Each require group directive can contain one or more group 
names or identifiers. (Note that the software treats the values specified in the 
require group directives in a case-insensitive manner.) 
After a user has been 
authenticated using the specified password, MOD_AUTH_OPENVMS compares the UIC of 
the user to determine if the account is a member of a group that was included in 
the list of require group directives. If so, the user is allowed access. If not, 
the module looks to see if the SYSUAF account has been granted any of the 
specified identifiers. 
4.4.2 The require user Directive
For simplicity and for 
consistency with the require group directive, MOD_AUTH_OPENVMS uses a 
case-insensitive comparison when processing values specified by the require user 
directive. 
System administrators can 
specify the accounts that MOD_AUTH_OPENVMS will use for authentication and 
authorization. In particular, system administrators may want to prevent users 
from attempting to authenticate using certain accounts. 
By default, any account 
in the SYSUAF file can be used by the MOD_AUTH_OPENVMS module. However, if the 
system administrator uses the AUTHORIZE utility to create an identifier called 
APACHE$MOD_AUTH_OPENVMS_ENABLE, then MOD_AUTH_OPENVMS only utilizes accounts 
that have APACHE$MOD_AUTH_OPENVMS_ENABLE granted to them. Any account that does 
not have that identifier granted to it is effectively hidden. 
If the 
APACHE$MOD_AUTH_OPENVMS_ENABLE identifier has not been defined, then the system 
administrator can define an identifier called APACHE$MOD_AUTH_OPENVMS_DISABLE. 
If that identifier exists, then any account in the SYSUAF file can be used by 
MOD_AUTH_OPENVMS provided that account does not hold the 
APACHE$MOD_AUTH_OPENVMS_DISABLE identifier. Any account that has 
APACHE$MOD_AUTH_OPENVMS_DISABLE granted to it is hidden. This identifier might 
be used in cases where the system administrator wants to use MOD_AUTH_OPENVMS 
for all accounts except certain specific ones.
APACHE$MOD_AUTH_OPENVMS_DISABLE is ignored. For example, if the system 
administrator has been using the APACHE$MOD_AUTH_OPENVMS_ENABLE identifier to 
specify individual accounts that can be used by MOD_AUTH_OPENVMS, then the 
administrator will have to remove that identifier from all accounts and remove 
the definition of that identifier before the administrator can define the 
APACHE$MOD_AUTH_OPENVMS_DISABLE identifier. Otherwise the software will see the 
definition of APACHE$MOD_AUTH_OPENVMS_ENABLE and will require that that 
identifier be granted for any account that can be used by MOD_AUTH_OPENVMS. 
An account that is hidden 
is treated by MOD_AUTH_OPENVMS as if the account does not exist. If 
AuthOpenVMSAuthoritative is on, a security request for a 
hidden account is rejected. If AuthOpenVMSAuthoritative
is off, the request is declined, and some other security facility can be used to 
process the request. 
Installing a privileged 
shareable image library such as 
APACHE$APR_SHRP adds some risk to 
system security. In particular, with APACHE$APR_SHRP 
installed, certain users will be able to tell which accounts 
are valid and will be able to check to see if certain accounts hold certain 
identifiers. However, only user accounts that are granted the appropriate 
APACHE$APR_* rights identifiers are allowed to run these routines. Frequently, this means that only the SWS 
server process account (APACHE$WWW) is allowed to call these 
privileged functions. 
Furthermore, the system 
administrator can use the APACHE$MOD_AUTH_OPENVMS_ENABLE or 
APACHE$MOD_AUTH_OPENVMS_DISABLE identifier to hide some accounts, particularly 
privileged accounts, from the SWS software. 
The following directives 
demonstrate MOD_AUTH_OPENVMS authentication and authorization. 
In the following portion 
of an HTTPD.CONF file, MOD_AUTH_OPENVMS is used for authentication and 
authorization: 
      
AuthType      Basic
      require       user
j_smith m_jones
      require       group
db_read_ident db_write_ident
      require       group
db_maint db_systems
db_admin
      require       group
testing customer_support
      require       group
accounting travel
    </Location>
Some of the specified 
user names and groups names may not be defined in the 
SYSUAF file. Instead, the user may be in the PASSWD.DAT file. If so, authentication will be performed by MOD_AUTH using the groups 
defined in the GROUPS.DAT file.
      
AuthType      Basic
      
AuthUserFile  /private/passwd.dat
      AuthGroupFile
/private/groups.dat
      AuthOpenVMSGroup
Off
      require       user
j_smith m_jones
      require       group
db_maint db_systems
db_admin
      require       group
testing customer_support
      require       group
accounting travel
    </Location>
Server extensions, such 
as CGI scripts, PHP scripts, and Perl modules, run within the context of the 
SWS's process or its subprocesses. These extensions 
have complete control over the server environment. You can configure the server 
to allow execution of arbitrary user scripts, but standard practice is to limit 
such activity to scripts written by completely trusted users. 
The SWS includes 
directives that allow a web administrator to control script execution and client 
access. The use of these directives is described in numerous books and is not 
duplicated here. 
4.6 suEXEC in 
the Secure Web Server
The following sections 
discuss the implementation of suEXEC in the SWS.
suEXEC in the SWS uses rights identifiers to indicate 
authorized users to run suEXEC
as well as users to be run via suEXEC. 
The SWS does not use 
UID/GID minimums to determine the validity of the calling user. The use of the 
SETUID/SETGID restrictions on the invoked CGI or SSI program is currently not 
implemented. 
suEXEC in the SWS supports the use of the User and 
UserDir directives within virtual hosts, and also supports the EXEC CGI 
mod_include directive.
There are no restrictions 
on OpenVMS account privileges or MAXSYSGROUP for suEXEC programs. 
You can configure 
suEXEC using the configuration utility provided with the 
installation (APACHE$COMMON:[000000]APACHE$MENU.COM). This 
utility allows you to enable or disable the suEXEC
feature for a given server. 
Note
Before you enable 
suEXEC, be sure that the user accounts that are to be run 
via suEXEC have been created. 
To enable 
suEXEC, run SYS$MANAGER:APACHE$CONFIG.COM and 
answer Yes to the question about enabling the suEXEC
feature. 
The suEXEC
image is installed with privileges. 
When you enable 
suEXEC, the following occur: 
·        
The APACHE$SUEXEC_SRVR and APACHE$SUEXEC_USER rights identifiers 
are created in the rights  
database, if they do not already exist.
· The APACHE$SUEXEC_SRVR rights identifier is granted to the server account, and the user is prompted to enter
user accounts that are to be run via suEXEC. These user accounts are granted the APACHE$SUEXEC_USER
rights identifier.
· An suEXEC directory is created within the htdoc root (APACHE$COMMON:[HTDOCS.SUEXEC]) and set with the
     
appropriate default ACEs that allow the 
Apache server read access to the suEXEC CGI/SSI 
programs. 
After you have enabled 
suEXEC, manually perform the following steps: 
·        
For each user account to be run via suEXEC, 
create a directory owned by that user under the suEXEC
directory. 
For example, if you create a directory named user, it will be located in APACHE$COMMON:
[HTDOCS.SUEXEC.user].
· Within each virtual host configuration, use the Alias or ScriptAlias directive to define a location for the suEXEC
      
CGI/SSI programs to be used.
To disable 
suEXEC, run SYS$MANAGER:APACHE$CONFIG.COM 
and answer No to the question about enabling the suEXEC
feature. 
Execute the command below to assign the APACHE$WWW user with read and execute access privileges for each directory in the entire directory tree where individual user directories reside:
$ Set security/acl=(IDENTIFIER=[AP_HTTPD,APACHE$WWW],ACCESS=READ+EXECUTE) <directory name>
Note 
You 
must perform this step for all directories above the respective user 
directories. 
Ensure that all users have ownership for their respective user directories.
Assign the APACHE$WWW user with read and execute access privileges to the user directory.
Assign respective suEXEC users with read access privilege to all container directories.
	Configure either the
	device name
	or the 
	logical name.
 
Note 
suEXEC receives the user’s home 
directory details from UAF. 
The example below shows a directory 
structure with user directories as well as the privileges required for each 
directory. 
| 
		 
		       
		xyz$dka0 
		              
		| 
		 
		          
		   A 
		              
		| 
		             
		B 
		                
  		________|________ 
		                
		|             
		               
		| 
		             
		User1                      
		User2 
		                
		|             
		               
		| 
		        
		public_html               
		public_html 
		 
		 
		
		·        
  		
		APACHE$WWW user should have read and execute access 
	privileges to A, B, User1, User2, and 2 public_html directories. 
		
		·        
  		
		User1 and User2 should have read access privileges to A and 
	B directories. 
		
		·        
  		
		User1 should own the User1 directory. · User2 should own the User2 directory.  | 
		
4.6.2.1 Using Paths with Logicals in 
UserDir Directive
When you disable suEXEC, 
the following occur: 
· The APACHE$SUEXEC_SRVR rights identifier is revoked from the server account (APACHE$WWW) and the user
     
is prompted about whether to disable all suEXEC servers. 
·        
The user is prompted about whether to disable all suEXEC users. 
· If no server accounts remain enabled, the APACHE$SUEXEC_SRVR rights identifier is removed from the rights
     
database. 
· If no user accounts remain enabled, the APACHE$SUEXEC_USER rights identifier is removed from the rights
     
database.
The SWS's certificate 
keys must be protected against disclosure. The keys, by default, are owned by 
APACHE$WWW, and protected as (S:RWED, O:RWED, G, W). As an additional measure of 
security, the keys can be encrypted. When using encrypted keys, a password must 
be entered during startup to decrypt the keys.
A second threat for key 
disclosure exists during script execution because scripts run in the context of 
the server and have complete access to key files no matter where they exist (as 
long as they exist in a directory accessible to APACHE$WWW). Therefore, it is 
not advisable to allow the execution of arbitrary user scripts when using SSL.
Chapter 5
Building and Debugging Loadable Apache Modules for the SWS
Note
The instructions in this chapter have not been tested by HP on the SWS Version 2.2.
The SWS for OpenVMS is ported from the Apache Web Server and includes 
all of the standard Apache modules as well as several optional modules. The 
Apache Web Server design architecture allows new modules to be added to the 
server at the following times: 
·        Dynamically at run-time using the Apache Dynamic Shared Object 
(DSO) feature 
5.1 The Apache API, Run-Time Library, and 
HTTP Request Processing
A module must conform to 
the Apache API, which dictates how the server and module communicate with one 
another and how HTTP requests are represented and processed. The Apache module 
data structure is an important component of this communication because it 
provides information to the server about the module and its capabilities. 
5.2 Building a Module
The natural language for 
building Apache modules is C. This is the only language for which Apache 
provides data structure definitions and function prototypes. You can write an 
Apache module in any language you choose, but you will need to provide your own 
language-specific header files or C-wrappers. In the rest of this section, we 
use C as the implementation language.
Your module must include 
the Apache module data structure pointed to by a universal symbol of your 
choice. During startup, the server dynamically activates your module by calling 
LIB$FIND_IMAGE_SYMBOL with the name of your module's Apache Module Data 
Structure (obtained from the LoadModule directive in 
your httpd.conf file). 
The following compiler 
switch is used to build the server: 
Note
Beginning with the SWS Version 2.0, the EAPI macro /DEFINE=(EAPI) is no longer required. SSL is built into the Apache base code by default and is no longer patched.
5.2.3 Linking a Module
A loadable module is 
implemented as an OpenVMS shareable image. Link your module with the /SHARE 
qualifier. 
Note
Your shareable image must 
not contain any linker warnings or errors in order to be properly loaded at 
run-time by LIB$FIND_IMAGE_SYMBOL.
For guidelines on how to 
design and write a shareable image, see the 
OpenVMS Linker Utility Manual and 
Guide to Creating OpenVMS Modular 
Procedures. 
mod_rewrite provides powerful URL-rewriting capabilities. 
(See http://httpd.apache.org/docs/mod/mod_rewrite.html for a description of 
mod_rewrite capabilities). You can include 
mod_rewrite with SWS by building it as a DSO module from 
sources. 
$!
$! Copy the following files from the CSWS source kit to your default directory:
$!$!
$! 
mod_rewrite.h
$!
$! Copy rewriteguide.html from the CSWS source kit to
$! 
apache$common:[htdocs.manual.misc].
$!
$! Once mod_rewrite.exe is built, copy it to 
apache$common:[modules] 
and
$! add the following line to your 
httpd.conf file:
$!
$! 
LoadModule rewrite_module
/apache$common/modules/mod_rewrite.exe
$!
$! Restart the server.
$!
$ cc/lis/define=eapi/prefix=all -
/include=(apache$common:[src.include],apache$common:[src.os.openvms]) -
mod_rewrite
$!
$ link/share/map 
mod_rewrite,sys$input:/option
!
! Linker options
!
GSMATCH=LEQUAL,1,0
SYMBOL_VECTOR=(REWRITE_MODULE=DATA)
! Run SYS$STARTUP:APACHE$CONFIG to setup the following logical name.
!
APACHE$HTTPD_SHR/SHARE
$!
$ exit
This section describes 
two methods for debugging a user-built Apache DSO module using the standard 
server provided with the SWS. The instructions assume the SWS Version 1.1 or 
later, but the same techniques can be used with earlier versions with slight 
modifications. 
There are two methods of 
running the server for debugging purposes: 
·        
Running the server image in a detached process (normal) 
·        
Running the server image directly 
The first method requires 
a separate terminal device to send and receive debugger input/output. A 
DECterm device is used in this example. If 
DECwindows is not available, any terminal device that allows 
read/write access to APACHE$WWW can be used (such as a logged-in TELNET 
terminal), but APACHE$WWW will need SHARE privilege to access the device if it 
is already assigned to another process. 
The second method does 
not require a separate terminal device. This technique can only be used to debug 
the main process, so you must run the server with the "-X" option. If this 
context is not appropriate for the problem you are debugging, the other method 
of debugging can be used (a separate terminal window will be required for each 
child process). 
Before you begin 
debugging your module, perform the following steps: 
1.  Insert the following code sequence as the 
first lines of your module's initialization routine to activate the OpenVMS 
debugger at run-time: 
       #include <ssdef.h>
       #endif
   
    lib$signal
(SS$_DEBUG);
2.  Build a debug version of your module. 
Compile with /DEBUG=(TRACEBACK,SYMBOLS) and link with /DEBUG, 
     
then copy the 
image to an appropriate directory. For example: 
    
  apache$common:[modules]mod_rewrite.exe_debug
     You may also want to copy 
the source code files here so that the debugger can find them (DBG> set 
     source/latest  t apache$common:[modules]).
3.  In httpd.conf, 
load the debug version of the module. For example: 
      LoadModule
rewrite_module /apache$common/modules/mod_rewrite.exe_debug
4.  Allow interactive logins to APACHE$WWW: 
      UAF> mod 
apache$www/inter/pass=<password>/nopwdexpir
5.2.5.2 
Debugging your module
Choose one of the 
following two methods to debug your module, depending on how you run the Apache 
server. These two methods are as follows: 
    context) 
·     Method B: Direct execution of server image (runs the Apache server 
image in your 
    current 
process) 
This method allows the 
Apache server to run in its normal, detached context. The only difference from 
the standard configuration is that the APACHE$WWW process possesses GRPNAM 
privilege (in order to define DBG$INPUT and DBG$OUTPUT logical names in the 
LNM$GROUP table). In this example, the "-X" option is used so that no child 
processes are created. 
To debug a normal 
detached server process, perform the following steps: 
     UAF> mod 
apache$www/priv=grpnam/inter
2.  From the APACHE$WWW account, run: 
     $ set proc/priv=grpnam
     $ set 
display/create/node=<domain-name-of-debug-window-client>/trans=tcpip
     $ create/term/noprocess/define=(table=lnm$group,dbg$input,dbg$output)
     $ @sys$startup:apache$config ! (specify "-X" for server options)
    
 $ @sys$startup:apache$startup
 
Note
If the problem you are 
debugging requires child processes, you will need a separate terminal device for 
each process with process-specific dbg$input and 
dbg$output logical names defined for each child process. One 
way to do this is to create one DECterm window for 
each child process (in this example, MaxSpareServers
is set to 1): 
    $ create/term/noprocess/define=(table=lnm$group,apache$00000_dbg)
    $ create/term/noprocess/define=(table=lnm$group,apache$00001_dbg)
    
$ define/job 
dbg$input
'f$process()'_dbg
    $ define/job 
dbg$output
'f$process()'_dbg
Method B - Direct Execution of Server Image
This method runs the 
Apache server image in your current process. One advantage of this method is 
that GRPNAM is not required nor is a separate debugger window needed. 
To debug for direct 
execution of a server image, perform the following steps: 
1.  From the SYSTEM (or suitably privileged) 
account: 
    $ @sys$startup:apache$config ! (specify
system-wide logicals)
2.  From the APACHE$WWW account, run: 
    $ 
mcr apache$root:[000000]apache_httpd.exe "-X"
Beginning in the SWS Version 2.0, a parameter to 
the SYS$STARTUP:APACHE$STARTUP command procedure is 
provided to execute the server in a single process.
      
   
@SYS$STARTUP:APACHE$STARTUP RUN  ! (execute SWS in a 
single process)
This allows the user to debug the new module as 
all requests will be directed to the one server process.
This can be shown as an 
alternative to the step 2 in starting the server.
Debugger Session
    DBG> set image 
mod_rewrite
    DBG> set module/all
    DBG> set source/latest apache$root:[modules]mod_rewrite.c
This chapter provides open 
source license acknowledgements and license references. 
This product includes 
software developed by the 
Apache Software Foundation. 
This product includes 
software developed by the 
This product includes software developed by Ralf S. Engelschall <rse@engelschall.com> for use in the Mod_SSL Project.
This product includes 
software developed by the 
OpenSSL 
Project. 
This product includes cryptographic software written by Eric Young. 
This product includes 
software developed by the 
Apache/Perl Integration Project. 
This product includes 
software developed by the 
Perl Project. 
This product includes software developed by the PHP Group.
» Return to the Secure Web Server for OpenVMS home page
			
  | 
	|||||||||||||||