<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.vmssoftware.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Axel.elfving</id>
	<title>VSI OpenVMS Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.vmssoftware.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Axel.elfving"/>
	<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/Special:Contributions/Axel.elfving"/>
	<updated>2026-04-16T23:55:35Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2460</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2460"/>
		<updated>2022-01-26T17:34:53Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Running APACHE$CONFIG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the [https://wiki.vmssoftware.com/Open_Source_Software_for_OpenVMS Open Source Software for OpenVMS] page.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
&lt;br /&gt;
:Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;  The quotas assigned to the APACHE$WWW account are the minimum recommended resources to start the Apache Web Server. However, each installation will be unique based on the intended use of the Apache web server and, thus, the resources will need to be increased according to what the web server is used for. Some UAF resources may also require that SYSGEN parameters be adjusted as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Maxjobs:         0  Fillm:      8192  Bytlm:       1000000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         32768&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      32768&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:     2500000&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The example above shows what a heavily used Apache Web Server that supports multiple directives and web-based applications. The FILLM resource requires the SYSGEN parameter CHANNELCNT be increased equal to or greater than the FILLM value in this example. Some SYSGEN parameters may require being added to MODPARAMS.DAT, and an Autogen/Reboot be performed. CHANNELCNT is one such parameter. See [https://wiki.vmssoftware.com/Tomcat_(CSWS_JAVA)_-_Easy_Installation_Guide#Setting_System_Parameters Tomcat - Easy Installation Guide] for detailed instructions on how to change the CHANNELCNT parameter.&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up and Shutdown Commands==&lt;br /&gt;
&lt;br /&gt;
In this section we will set up commands for Apache to automatically shut down and start back up when the system is rebooted.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSTARTUP_VMS.COM and insert the following lines towards the bottom of the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit the file SYS$MANAGER:SYSHUTDWN.COM and insert the lines shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000]APACHE$CREATE_ROOT.COM, which will guide you through the process (will create directories).&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure APACHE$CERT_TOOL.COM and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. &lt;br /&gt;
&lt;br /&gt;
:On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. &lt;br /&gt;
&lt;br /&gt;
To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Axis2_-_Easy_Installation_Guide&amp;diff=2436</id>
		<title>Axis2 - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Axis2_-_Easy_Installation_Guide&amp;diff=2436"/>
		<updated>2021-10-20T07:13:33Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide that will take you through how to install and configure Apache Axis2 for use with the Tomcat web server on OpenVMS. Before starting the installation, it is a good idea to read through the “Tomcat (CSWS JAVA) - Easy Installation Guide” and make sure that you have you installed and configured Tomcat correctly.&lt;br /&gt;
 &lt;br /&gt;
The document also contains instructions for how to set up an AJP Connector between CSWS Apache Web Server and Apache Axis2 on Tomcat. If that is something you wish to do, you need to already have Apache installed and fully configured on your system. For instructions on how to install and configure Apache, consult either the Apache release notes or the “Apache (CSWS) - Easy Installation Guide”.&lt;br /&gt;
&lt;br /&gt;
For more guides like this, check out the [https://wiki.vmssoftware.com/Open_Source_Software_for_OpenVMS Open Source Software for OpenVMS] page.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Go through the following steps to install Axis2.&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit with the $ RUN command &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-AXIS2-V0107-3-1.ZIPEXE &lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Then, install Axis2 with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product install axis2&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.AXIS2] &lt;br /&gt;
vsi-i64vms-axis2-v0107-3-1.pcsi$compressed;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected &lt;br /&gt;
product and for any products that may be installed to satisfy &lt;br /&gt;
software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS AXIS2 V1.7-3&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. and The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Minimum JDK software version not found on system, abort installation&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;This kit requires the minimum Java version of 1.8.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Terminating is strongly recommended.  Do you want to terminate? [YES] &amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=background:yellow&amp;gt;NO&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS AXIS2 V1.7-3                DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
%PCSIUI-I-COMPWERR, operation completed after explicit continuation &lt;br /&gt;
from errors&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Comment for the highlighted part of the installation output:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; If you have OpenJDK8 installed on a system that previously did not have JAVA installed on it, you will want to answer no to this question and allow the installation to complete. It will complete successfully. This will be fixed in a future release of VSI CSWS_JAVA and Axis2.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
These instructions will guide you through how to define the necessary Axis2 logicals on start-up before showing you how to set up the AJP Connector.&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up Commands==&lt;br /&gt;
&lt;br /&gt;
Follow these instructions if you want Axis2 logicals to be defined automatically when rebooting the system.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYLOGICALS.COM add the lines specified below (in the section where you are asked to define site-specific logicals) to define the Axis2 logicals on start-up. Make sure to specify the correct node for your system (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit sys$manager:sylogicals.com&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$! ******************************************************************&lt;br /&gt;
$! Define any site-specific logical names below:&lt;br /&gt;
$! ******************************************************************&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$  IF NODE .EQS. &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOUR_NODE_NAME&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
$  THEN&lt;br /&gt;
$    file := SYS$COMMON:[SYSMGR]AXIS2$DEFINE_LOGICALS.COM&lt;br /&gt;
$    &amp;lt;nowiki&amp;gt;if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
$ ENDIF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Defining Axis2 Logicals==&lt;br /&gt;
&lt;br /&gt;
Now is a good time to manually define the Axis2 logicals.&lt;br /&gt;
 &lt;br /&gt;
* Run the same file you included in the start-up procedure in the previous section. Most notably, this will define the logical AXIS2$ROOT – giving us easy access to the Axis2 root directory.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @SYS$COMMON:[SYSMGR]AXIS2$DEFINE_LOGICALS.COM&lt;br /&gt;
$ show logical *axis*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_89235900)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;AXIS$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;AXIS2$ROOT&amp;quot; = &amp;quot;DISK$SYS1:[SYS0.SYSCOMMON.axis2.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deploying Axis2 WAR File in Tomcat==&lt;br /&gt;
&lt;br /&gt;
To enable Axis2 and integrate it with Tomcat, we need to deploy the Axis2 WAR file in the directory TOMCAT$ROOT:[WEBAPPS].&lt;br /&gt;
&lt;br /&gt;
* Copy the file AXIS2$ROOT:[OPENVMS]axis2.war to TOMCAT$ROOT:[WEBAPPS] and make sure the file has TOMCAT$WWW as owner and the appropriate protections.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy /log axis2$root:[openvms]axis2.war tomcat$root:[webapps]&lt;br /&gt;
%COPY-S-COPIED, AXIS2$ROOT:[OpenVMS]axis2.war;1 copied to TOMCAT$ROOT:[webapps]axis2.war;1 (19.27MB)&lt;br /&gt;
&lt;br /&gt;
$ dir /sec tomcat$root:[webapps]axis2.*&lt;br /&gt;
&lt;br /&gt;
Directory TOMCAT$ROOT:[webapps]&lt;br /&gt;
&lt;br /&gt;
axis2.DIR;1          [TOMCAT$WWW]                     (RWED,RWED,RE,)&lt;br /&gt;
axis2.war;1          [TOMCAT$WWW]                     (RWED,RWED,RE,RE)&lt;br /&gt;
&lt;br /&gt;
Total of 1 file.&lt;br /&gt;
&lt;br /&gt;
$ set file /prot=(S:RWE,O:RWED,G,W) tomcat$root:[webapps]axis2.* /log&lt;br /&gt;
%SET-I-PROTECTED, TOMCAT$ROOT:[webapps]axis2.DIR;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
%SET-I-PROTECTED, TOMCAT$ROOT:[webapps]axis2.war;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
%SET-I-PROTECTED, TOMCAT$ROOT:[webapps.axis2]axis2-web.DIR;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If automatic deployment is configured correctly for Tomcat, the WAR file should be unpacked automatically during runtime, resulting in the creation of TOMCAT$ROOT:[WEBAPPS]axis2.DIR.&lt;br /&gt;
&lt;br /&gt;
* If you are in a production environment, or for some other reason do not wish to use automatic deployment, you may wish to deploy your WAR files using the Tomcat interface – this will allow you to deploy WAR files from a separate directory and thus run a lower risk of unexpectedly overwriting files in use. &lt;br /&gt;
&lt;br /&gt;
:You may also wish to disable automatic deployment, so that WAR files placed in your TOMCAT$ROOT:[WEBAPPS] directory do not automatically deploy and overwrite your existing configuration files. To do this, edit TOMCAT$ROOT:[CONF]server.xml and set autoDeploy to “false”, as shown below. Then restart Tomcat to implement the changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]server.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Host name=&amp;quot;localhost&amp;quot;  appBase=&amp;quot;webapps&amp;quot;&lt;br /&gt;
          unpackWARs=&amp;quot;true&amp;quot; autoDeploy=&amp;quot;&amp;lt;span style=background:yellow&amp;gt;false&amp;lt;/span&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DefaultContext reloadable=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Lastly, to manually deploy AXIS2$ROOT:[OPENVMS]axis2.war directly from its directory, visit your Tomcat server and enter the Manager App. Under “Deploy directory or WAR file located on server”, enter the information shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Context Path (required):		/axis2&lt;br /&gt;
XML Configuration file path:	&lt;br /&gt;
WAR or Directory path:		axis2$root:[openvms]axis2.war&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Although you set autoDeploy to “false”, Tomcat will still deploy WAR files on start-up. Therefore, to avoid unexpected deployment, it is advisable to keep WAR files you do not wish to deploy outside your TOMCAT$ROOT:[WEBAPPS] directory.&lt;br /&gt;
&lt;br /&gt;
==Enabling HTTPS for Axis2==&lt;br /&gt;
&lt;br /&gt;
* Change the Axis2 Administrator account username and password, edit the file TOMCAT$ROOT:[000000.webapps.axis2.WEB-INF.conf]axis2.xml and make sure that you change these two lines (located close to the top of the file) and set a secure password.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[000000.webapps.axis2.web-inf.conf]axis2.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;parameter name=&amp;quot;userName&amp;quot;&amp;gt;admin&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&amp;lt;parameter name=&amp;quot;password&amp;quot;&amp;gt;axis2&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the same file, if you wish to use HTTPS with Axis2, scroll down until you find the section that reads&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ================================================= --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Transport Ins --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- ================================================= --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- The default configuration assumes that AxisServlet only receives requests&lt;br /&gt;
         through HTTP. To allow HTTPS as well, configure a second AxisServletListener&lt;br /&gt;
         with name=&amp;quot;https&amp;quot; and specify the port parameter on both receivers.&lt;br /&gt;
         For more information, please have a look at the servlet transport documentation:&lt;br /&gt;
         http://axis.apache.org/axis2/java/core/docs/servlet-transport.html --&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Edit the lines directly underneath, adding the transportReceiver for HTTPS (highlighted in yellow), so that the two transportReceiver directives read&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;transportReceiver name=&amp;quot;http&amp;quot; &lt;br /&gt;
     class=&amp;quot;org.apache.axis2.transport.http.AxisServletListener&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;transportReceiver name=&amp;quot;https&amp;quot; &lt;br /&gt;
     class=&amp;quot;org.apache.axis2.transport.http.AxisServletListener&amp;quot;/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Make sure to restart Tomcat so that the configuration changes are implemented.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown.com&lt;br /&gt;
$ submit/user=tomcat$www/queue=sys$batch/parameters=(tomcat$www) -&lt;br /&gt;
_$ sys$startup:tomcat$startup.com&lt;br /&gt;
&lt;br /&gt;
$ show system&lt;br /&gt;
...&lt;br /&gt;
0000046F APACHE$TOMCAT   HIB      4    70149   0 00:00:53.85     56117  47489 M&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Lastly, connect to Axis2 using the HTTPS to test the connection with the URL shown below. If the connections fails, you may want to review this guide as well as the “Tomcat (CSWS JAVA) – Easy Installation Guide” or review the log files in TOMCAT$ROOT:[000000.logs].&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://your.server.com:8443/axis2/&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting up the AJP Connector==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up the AJP Connector, which will allow you to integrate Tomcat into an existing Apache Web Server installation so that you can access Axis2 through Apache. Thus, it is necessary for Apache to be installed and working correctly. For instruction on how to install Apache, see the “Apache (CSWS) - Easy Installation Guide”.&lt;br /&gt;
&lt;br /&gt;
* Edit the file TOMCAT$ROOT:[CONF]server.xml and confirm that the following directive is uncommented and that redirectPort points to the HTTPS port you have specified for Tomcat. If any of the information is incorrect, make the necessary changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]server.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Define an AJP 1.3 Connector on port 8009 --&amp;gt;&lt;br /&gt;
    &amp;lt;Connector port=&amp;quot;8009&amp;quot; protocol=&amp;quot;AJP/1.3&amp;quot; redirectPort=&amp;quot;8443&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next edit Apache’s main configuration file APACHE$ROOT:[000000.CONF]HTTPD.CONF and scroll down until you reach the list of loadable modules. Uncomment the following modules by removing the number signs (#) in front of the LoadModule directives.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule proxy_module                 modules/mod_proxy.exe&lt;br /&gt;
LoadModule proxy_ajp_module             modules/mod_proxy_ajp.exe&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Next, add the &amp;lt;Location&amp;gt; directive shown below at the very bottom of the same file. The DNS name highlighted in yellow should match that of your server. It is possible to use your IP address instead, though that might by-pass the certificate you have in place for your server and unable you from establishing an HTTPS connection to Axis2.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Location &amp;quot;/axis2&amp;quot;&amp;gt;&lt;br /&gt;
ProxyPass &amp;quot;ajp://&amp;lt;span style=background:yellow&amp;gt;example.eng.vmssoftware.com&amp;lt;/span&amp;gt;:8009/axis2&amp;quot;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Lastly, for Apache to implement these changes, it needs to be restarted. You can do this with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the AJP connector has been set up correctly, connect to Axis2 on either port 80 (HTTP) or port 443 (HTTPS). The 8009 port specified for the AJP Connector is used internally.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com:80/axis2/&lt;br /&gt;
https://example.eng.vmssoftware.com:443/axis2/&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To remove Axis2, follow these instructions. If you also want to remove Tomcat, make sure you remove Axis2 first.&lt;br /&gt;
&lt;br /&gt;
* First, shut down Tomcat.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown&lt;br /&gt;
%DCL-I-SUPERSEDE, previous value of JAVA$CLASSPATH has been superseded&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, uninstall Axis2 using the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove axis2&lt;br /&gt;
	&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    		VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    		VSI I64VMS AXIS2 V1.7-3                DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: &lt;br /&gt;
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    		VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you do not wish to remove Tomcat, but want to do a complete removal of Axis2, you can selectively remove the files belonging to Axis2 to inside TOMCAT$ROOT:[000000.webapps].&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ delete tomcat$root:[webapps]axis2.war;1 /conf&lt;br /&gt;
DELETE TOMCAT$ROOT:[webapps]axis2.war;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If using the $ DELETE /TREE command when deleting the Axis2.DIR directory structure inside TOMCAT$ROOT:[000000.webapps], make sure that you are not deleting any files by mistake before executing this command. All files will be deleted instantaneously, so use the command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ delete /tree TOMCAT$ROOT:[000000.webapps.AXIS2...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]error.jsp;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]HappyAxis.jsp;1 deleted &lt;br /&gt;
(24KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]index.jsp;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]listFaultyService.jsp;1 &lt;br /&gt;
deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]listGroupService.jsp;1 &lt;br /&gt;
deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]listServices.jsp;1 &lt;br /&gt;
deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$ delete TOMCAT$ROOT:[000000.webapps]AXIS2.DIR;1 /conf&lt;br /&gt;
DELETE TOMCAT$ROOT:[000000.webapps]axis2.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In addition to deleting the Axis2 files, you should also go through the configuration changes made earlier in this document and revert the relevant changes.&lt;br /&gt;
* If you want to completely remove any traces of Axis2 you should know that the AXIS2$ROOT logical is still defined, although it now points to a non-existent directory. You can remove the logical using the $ DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *axis2*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892FB880)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;AXIS2$ROOT&amp;quot; = &amp;quot;DISK$SYS1:[SYS0.SYSCOMMON.axis2.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
$ deassign /sys axis2$root&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you have a look inside SYS$STARTUP, you can see that there are also some Axis2 remnants remaining in there. You can either remove these files individually or with a wildcard qualifier (as shown below) together with the /CONFIRM qualifier. It is always advisable to use extra caution when deleting files, especially in system directories, since deleted files are not recoverable unless backed up. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir sys$startup:*axis2*&lt;br /&gt;
&lt;br /&gt;
Directory SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
&lt;br /&gt;
axis2$define_logicals.LOG;2             axis2$define_logicals.LOG;1&lt;br /&gt;
axis2-tmp-8889454529806580694^.tmp.DIR;1&lt;br /&gt;
&lt;br /&gt;
Total of 3 files.&lt;br /&gt;
&lt;br /&gt;
Directory SYS$COMMON:[SYSMGR]&lt;br /&gt;
&lt;br /&gt;
axis2$define_logicals.com;1&lt;br /&gt;
&lt;br /&gt;
Total of 1 file.&lt;br /&gt;
&lt;br /&gt;
Grand total of 2 directories, 3 files.&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]axis2$define_logicals.LOG;2 ? [N]: Y&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]axis2$define_logicals.LOG;1 ? [N]: Y&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]axis2-tmp-8889454529806580694^.tmp.DIR;1 ? [N]: Y&lt;br /&gt;
%DELETE-W-FILNOTDEL, error deleting SYS$SYSROOT:[SYSMGR]axis2-tmp-8889454529806580694^.tmp.DIR;1&lt;br /&gt;
-RMS-E-MKD, ACP could not mark file for deletion&lt;br /&gt;
-SYSTEM-F-DIRNOTEMPTY, directory file is not empty&lt;br /&gt;
DELETE SYS$COMMON:[SYSMGR]axis2$define_logicals.com;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Tomcat_(CSWS_JAVA)_-_Easy_Installation_Guide&amp;diff=2435</id>
		<title>Tomcat (CSWS JAVA) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Tomcat_(CSWS_JAVA)_-_Easy_Installation_Guide&amp;diff=2435"/>
		<updated>2021-10-20T07:13:09Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up a Tomcat web server. As such, it will not go into explicit detail or offer any lengthy explanations. Rather, it should function as a check list to make sure nothing important was missed during the base install. For more guides like this, check out the [https://wiki.vmssoftware.com/Open_Source_Software_for_OpenVMS Open Source Software for OpenVMS] page.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before Tomcat is installed, make sure these pre-requisites are met for your server:&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
&lt;br /&gt;
* VSI’s OpenJDK 8 Development Kit V1.8 Update 222b or later. &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;***&amp;lt;/nowiki&amp;gt;Please note:  HPE Java™ JDK V1.8u_144* is not recommended.***&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;***&amp;lt;/nowiki&amp;gt;In addition, HPE Java™ JDK V1.6 and earlier versions will not work and are not supported with VSI’s CSWS_JAVA V8.5-50A .***&lt;br /&gt;
&lt;br /&gt;
* Another requirement is that you install CSWS_JAVA on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Tomcat on is ODS-5 enabled is to use the following command on a mounted disk:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Towards the bottom of the output, you should see in plain text&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Although not required, it is recommended that you have a recent version of the Apache web server (CSWS) installed on your system as well as a recent version of OpenSSL (SSL111). Apache will be used to provide a CGI example and OpenSSL will be used to set up HTTPS for the Tomcat web server.&lt;br /&gt;
&lt;br /&gt;
Before you install VSI’s CSWS_JAVA V8.5-50a software, if you are running any existing, earlier versions of Tomcat on your system, you will be required to&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. Most importantly, make sure to save a copy of the following configuration files. After the upgrade, you can use these files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation.&lt;br /&gt;
&lt;br /&gt;
::TOMCAT$ROOT:[CONF]tomcat-users.xml&lt;br /&gt;
::TOMCAT$ROOT:[CONF]context.xml&lt;br /&gt;
::TOMCAT$ROOT:[CONF]web.xml&lt;br /&gt;
::TOMCAT$ROOT:[CONF]server.xml&lt;br /&gt;
&lt;br /&gt;
* Shut down the Tomcat webserver with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Tomcat with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws_java&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To completely remove Tomcat, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
To install Tomcat, download the installation kit for CSWS_JAVA (Tomcat) to your server and read through the release notes before starting the installation. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS_JAVA-V0805-50A-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Tomcat using the PCSI application.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product install csws_java&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.openJDK8u222b]VSI&lt;br /&gt;
-I64VMS-CSWS_JAVA-V0805-50A-1.PCSI$COMPRESSED;2 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS_JAVA V8.5-50A          Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS_JAVA V8.5-50A&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Minimum Java software version not found on system, abort installation.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;This kit requires Java 1.8 for OpenVMS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Terminating is strongly recommended.  Do you want to terminate? [YES] NO&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS_JAVA V8.5-50A          DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS_JAVA V8.5-50A          Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS_JAVA V8.5-50A&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
    To start the Tomcat web server at system boot time, add the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:TOMCAT$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    To shutdown Tomcat at system shutdown time, add the following lines to&lt;br /&gt;
    SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:TOMCAT$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Note that default installation uses the SYSTEM account to run the the&lt;br /&gt;
    Web server process. It is recommended that you run the web server as&lt;br /&gt;
    using a less privileged account. This may be done by supplying the&lt;br /&gt;
    account name as a parameter to tomcat$startup.com or by defining the&lt;br /&gt;
    logical name tomcat$user as the desired account name. It is also&lt;br /&gt;
    recommended that you  change the tomcat$root:[000000...] directory tree&lt;br /&gt;
    ownership to this account.&lt;br /&gt;
%PCSIUI-I-COMPWERR, operation completed after explicit continuation from errors&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Comment for the highlighted part of the installation output above:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; If you have OpenJDK8 installed on a system that previously has not had JAVA installed, you will want to answer no to this question and allow the installation to complete. It will complete successfully. This will be fixed in a future release of VSI CSWS_JAVA.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
There is a lot to the configuration of Tomcat. For this configuration guide, it is assumed that you already have CSWS (Apache web server) installed on your server. Although this is no longer a requirement for versions CSWS_JAVA V8.5-50 and later, the two are often used in tandem. It is further assumed that you also have VSI SSL 1.1.1 (OpenSSL) or later installed so that you can set up HTTPS for Tomcat.&lt;br /&gt;
&lt;br /&gt;
==Creating java$80_setup.com==&lt;br /&gt;
&lt;br /&gt;
If you have OpenJDK8 installed on your system without having a version of Java installed previously, you might be missing the file SYS$MANAGER:JAVA$80_SETUP.COM – without this file, Tomcat will not start. This issue will be fixed in a future release of Tomcat. The file exists in the OPENJDK8 top directory and can be copied over to SYS$MANAGER or it can be created manually. It should look like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$!***SYS$SYSROOT:[SYSMGR]JAVA$80_SETUP.COM***&lt;br /&gt;
$!&lt;br /&gt;
$ @sys$sysdevice:[sys0.syscommon.openjdk$80.com]java$setup.com &#039;P1&#039;&lt;br /&gt;
$ exit&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that the path to JAVA$SETUP.COM matches your configuration.&lt;br /&gt;
&lt;br /&gt;
==Setting System Parameters==&lt;br /&gt;
&lt;br /&gt;
The next natural step in the installation is to create the username TOMCAT$WWW in the SYSUAF. Before doing so, however, it is a good idea to make sure that the system parameters will allow the settings chosen for the Tomcat user account. The table below shows the quotas that will be used in the creation of TOMCAT$WWW. They should be adequate for most purposes; although, resource usage should always be monitored closely and quotas adjusted as necessary. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Maxjobs:         0  Fillm:     32767  Bytlm:       3000000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:      1024  JTquota:       40000&lt;br /&gt;
Prclm:         100  DIOlm:      1024  WSdef:        100000&lt;br /&gt;
Prio:            4  ASTlm:       300  WSquo:        200000&lt;br /&gt;
Queprio:         4  TQElm:       400  WSextent:     800000&lt;br /&gt;
CPU:        (none)  Enqlm:     32767  Pgflquo:    10000000&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system parameters of importance are the channel count CHANNELCNT (which caps the file limit parameter FILLM) and the working set maximum WSMAX (which caps the working set extent WSEXTENT).&lt;br /&gt;
&lt;br /&gt;
* First, enter the System Generation Utility and have a look at the two parameters by entering the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set default sys$system&lt;br /&gt;
$ mcr sysgen&lt;br /&gt;
SYSGEN&amp;gt;  USE CURRENT&lt;br /&gt;
SYSGEN&amp;gt;  SHOW CHANNELCNT&lt;br /&gt;
Parameter Name            Current    Default     Min.       Max.   Unit  Dynamic&lt;br /&gt;
--------------            -------    -------   -------    -------  ----  -------&lt;br /&gt;
CHANNELCNT                  32767        512        64      65535 Channels&lt;br /&gt;
SYSGEN&amp;gt;  SHOW WSMAX&lt;br /&gt;
Parameter Name            Current    Default     Min.       Max.   Unit  Dynamic&lt;br /&gt;
--------------            -------    -------   -------    -------  ----  -------&lt;br /&gt;
WSMAX                      900000     131072     16384  134217728 Pagelets&lt;br /&gt;
 internal value             56250       8192      1024    8388608 Pages&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The current CHANNELCNT should have a value that is at least equal to your chosen FILLM value. If required, CHANNELCNT can safely be set to its maximum value of 65535.&lt;br /&gt;
&lt;br /&gt;
* The current value of WSMAX must be set equal to or greater than the chosen value of WSEXTENT. In the example output above the current value of WSMAX is set to 900000 and thus slightly greater than the chosen value of 800000 for WSEXTENT. You should set this value according to your own environment, which may require it to be higher or lower.&lt;br /&gt;
&lt;br /&gt;
* Use the following commands to set the system parameters, changing the values as necessary.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
SYSGEN&amp;gt; USE CURRENT&lt;br /&gt;
SYSGEN&amp;gt; SET CHANNELCNT 32767&lt;br /&gt;
SYSGEN&amp;gt; SET WSMAX 900000&lt;br /&gt;
SYSGEN&amp;gt; WRITE ACTIVE&lt;br /&gt;
SYSGEN&amp;gt; WRITE CURRENT&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; It is important to note that the system parameters CHANNELCNT and WSMAX are not dynamic (otherwise the letter D would be present in rightmost column in the example output earlier). Therefore, the system must be &amp;lt;b&amp;gt;rebooted&amp;lt;/b&amp;gt; for the parameters to change.&lt;br /&gt;
&lt;br /&gt;
* Another important matter to take into consideration is that running AUTOGEN using the FEEDBACK option might alter the system parameters you set directly in SYSGEN. To ensure that the parameters will not be altered by AUTOGEN, you should also specify the parameters in the file MODPARAMS.DAT. One option is to set MIN_CHANNELCNT and MIN_WSMAX if you want to make it possible for AUTOGEN to set higher values than the CHANNELCNT and WSMAX needed for Tomcat. For more details, see the OpenVMS System Management Manual.&lt;br /&gt;
&lt;br /&gt;
* Bear in mind that the quotas proposed in the table are merely suggestions, although they are a good starting point. If the number of page faults for the Tomcat process grows larger than 50000, you may wish to increase the quotas for the TOMCAT$WWW account. To optimize the performance of Tomcat, you can change the values of WSQUO, WSEXTENT, and PGFLQUO together in increments of 50000, 100000, and 1000000, respectively, while making sure that WSMAX is still greater than or equal to WSEXTENT. Both too much and too little resources can have a negative impact on performance.&lt;br /&gt;
&lt;br /&gt;
==Creating TOMCAT$WWW Username in SYSUAF==&lt;br /&gt;
&lt;br /&gt;
Setting up TOMCAT$WWW in the SYSUAF can be done by following these instructions.&lt;br /&gt;
&lt;br /&gt;
* Enter the following command to open the SYSUAF:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set default sys$system&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If an account for Apache already exists on your web server, you can use APACHE$WWW to create the user TOMCAT$WWW by copying and pasting (choosing your desired UIC, highlighted below) the command shown below. The resources given to the TOMCAT$WWW account are the same recommended initial values as those specified in the table in the previous section (you can copy the command line by line by including the dash – press Enter to start a new line).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
UAF&amp;gt; copy apache$www tomcat$www &amp;lt;span style=background:yellow&amp;gt;/uic=[555,555]&amp;lt;/span&amp;gt; /dir=000000 /device=tomcat$root -&lt;br /&gt;
_UAF&amp;gt; /account=tomcat /prclm=100 /fillm=32767 /biolm=1024 /diolm=1024 /astlm=300 -&lt;br /&gt;
_UAF&amp;gt; /tqelm=400 /enqlm=32767 /bytlm=3000000 /jtquota=40000 /wsdef=100000 -&lt;br /&gt;
_UAF&amp;gt; /wsquo=200000 /wsextent=800000 /pgflquo=10000000 /batch –&lt;br /&gt;
_UAF&amp;gt; /defpr=(sysprv,bypass,impersonate) &lt;br /&gt;
%UAF-I-COPMSG, user record copied&lt;br /&gt;
%UAF-W-DEFPWD, copied or renamed records must receive new password&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier TOMCAT$WWW value [000555,000555] added &lt;br /&gt;
to rights database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The TOMCAT$WWW username should now look something like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
UAF&amp;gt; show tomcat$www&lt;br /&gt;
&lt;br /&gt;
Username: TOMCAT$WWW                      Owner:&lt;br /&gt;
Account:  TOMCAT                           UIC:    [555,555] ([TOMCAT$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  TOMCAT$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    ##### Full access ######            ##### Full access ######&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:     32767  Bytlm:       3000000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:      1024  JTquota:       40000&lt;br /&gt;
Prclm:         100  DIOlm:      1024  WSdef:        100000&lt;br /&gt;
Prio:            4  ASTlm:       300  WSquo:        200000&lt;br /&gt;
Queprio:         4  TQElm:       400  WSextent:     800000&lt;br /&gt;
CPU:        (none)  Enqlm:     32767  Pgflquo:    10000000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  BYPASS       IMPERSONATE  NETMBX       SYSPRV       TMPMBX&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If an account for Apache does not exist, you can create the account from scratch like so:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
UAF&amp;gt; add tomcat$www &amp;lt;span style=background:yellow&amp;gt;/uic=[555,555]&amp;lt;/span&amp;gt; /dir=000000 /device=tomcat$root /account=tomcat -&lt;br /&gt;
_UAF&amp;gt; /flags=(dismail,disnewmail,disreport,lockpwd,nodisuser) /lgicmd=login -&lt;br /&gt;
_UAF&amp;gt; /prclm=100 /fillm=32767 /biolm=1024 /diolm=1024 /astlm=300 /tqelm=400 -&lt;br /&gt;
_UAF&amp;gt; /enqlm=32767 /bytlm=3000000 /jtquota=40000 /wsdef=100000 /wsquo=200000 - &lt;br /&gt;
_UAF&amp;gt; /wsextent=800000 /pgflquo=10000000 /nolocal /nodialup /noremote –&lt;br /&gt;
_UAF&amp;gt; /defpr=(sysprv,bypass,impersonate)&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier TOMCAT$WWW value [000555,000555] added to rights database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Defining Required Tomcat Logicals==&lt;br /&gt;
&lt;br /&gt;
Having created the TOMCAT$WWW username, it is now a good time to create the logicals needed to run Tomcat. You can do so by running the command procedure shown below from a sufficiently privileged account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$manager:tomcat$define_logicals.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Running this file will create the required logical TOMCAT$ROOT, which is needed for Tomcat to run. It will also give you easy access to the Tomcat root directory.&lt;br /&gt;
	$ show logical *tomcat*&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_89326240)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;TOMCAT$ROOT&amp;quot; = &amp;quot;DISK$SYS1:[SYS0.SYSCOMMON.tomcat.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up and Shutdown Commands==&lt;br /&gt;
&lt;br /&gt;
In this section we will set up commands for Tomcat to automatically shut down and start back up when the system is rebooted.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSTARTUP_VMS.COM and insert the following lines towards the bottom of the file to start Tomcat under the TOMCAT$WWW account. Make sure to specify the correct node name highlighted below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$!&lt;br /&gt;
$  IF NODE .EQS. &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOUR_NODE_NAME&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
$  THEN&lt;br /&gt;
$    if f$search(&amp;quot;SYS$STARTUP:TOMCAT$STARTUP.COM&amp;quot;) .nes. &amp;quot;&amp;quot;&lt;br /&gt;
$    then&lt;br /&gt;
$       submit/USER=TOMCAT$WWW/QUEUE=SYS$BATCH/PARAMETERS=(TOMCAT$WWW)&lt;br /&gt;
SYS$STARTUP:TOMCAT$STARTUP.COM&lt;br /&gt;
$    endif&lt;br /&gt;
$  ENDIF&lt;br /&gt;
$!&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;There should be no line break for the $ SUBMIT command above. If you cannot fit the entire command on your screen, consider setting a wider terminal width. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set terminal /width=132&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSHUTDWN.COM and insert the following lines:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$!&lt;br /&gt;
$ file := SYS$STARTUP:TOMCAT$SHUTDOWN.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
$!&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting File Ownership and Permissions==&lt;br /&gt;
&lt;br /&gt;
Since the username TOMCAT$WWW has been created, you can set it as owner to Tomcat’s files in addition to specifying the file permissions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* First, set the file ownership for the Tomcat root directory- the location of which you can find by doing a $ SHOW LOGICAL TOMCAT$ROOT. Then set Tomcat as owner for the root directory as well as the entire directory structure. Make sure that you use the UIC you specified for TOMCAT$WWW (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical tomcat$root&lt;br /&gt;
   &amp;quot;TOMCAT$ROOT&amp;quot; = &amp;quot;YOURDISK:[SYS0.SYSCOMMON.tomcat.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ set default YOURDISK:[SYS0.SYSCOMMON]&lt;br /&gt;
$ set file &amp;lt;span style=background:yellow&amp;gt;/owner=[555,555]&amp;lt;/span&amp;gt; tomcat.DIR /log&lt;br /&gt;
%SET-I-MODIFIED, YOURDISK:[SYS0.SYSCOMMON]tomcat.DIR;1 modified &lt;br /&gt;
&lt;br /&gt;
$ set file &amp;lt;span style=background:yellow&amp;gt;/owner=[555,555]&amp;lt;/span&amp;gt; [.tomcat...]*.*;* /log&lt;br /&gt;
%SET-I-MODIFIED, YOURDISK:[SYS0.SYSCOMMON.tomcat]bin.DIR;1 modified&lt;br /&gt;
%SET-I-MODIFIED, YOURDISK:[SYS0.SYSCOMMON.tomcat]BUILDING.txt;1 modified&lt;br /&gt;
%SET-I-MODIFIED, YOURDISK:[SYS0.SYSCOMMON.tomcat]conf.DIR;1 modified&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Second, set the file permissions. First for the root directory and then for the rest of the directory structure.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set file /prot=(S:RWE,O:RWED,G,W) tomcat.DIR /log&lt;br /&gt;
%SET-I-PROTECTED, YOURDISK:[SYS0.SYSCOMMON]tomcat.DIR;1 file protection changed to S:RWE,O:RWED,G:,W:&lt;br /&gt;
&lt;br /&gt;
$ set file /prot=(S:RWE,O:RWED,G,W) [.tomcat...]*.*;* /log&lt;br /&gt;
%SET-I-PROTECTED, YOURDISK:[SYS0.SYSCOMMON.tomcat]bin.DIR;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
%SET-I-PROTECTED, YOURDISK:[SYS0.SYSCOMMON.tomcat]BUILDING.txt;1 file protection &lt;br /&gt;
changed to S:RWE,O:RWED,G:,W:&lt;br /&gt;
%SET-I-PROTECTED, YOURDISK:[SYS0.SYSCOMMON.tomcat]conf.DIR;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To verify that the owner and file protections were set correctly, you can issue the command&lt;br /&gt;
$ dir [.tomcat] /owner /prot&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Directory YOURDISK:[SYS0.SYSCOMMON.tomcat]&lt;br /&gt;
&lt;br /&gt;
bin.DIR;1            [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
BUILDING.txt;1       [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
conf.DIR;1           [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
CONTRIBUTING.md;1    [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
lib.DIR;1            [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
LICENSE.;1           [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
logs.DIR;1           [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
NOTICE.;1            [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
README.md;1          [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
RELEASE-NOTES.;1     [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
RUNNING.txt;1        [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
sbin.DIR;1           [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
temp.DIR;1           [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
webapps.DIR;1        [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
work.DIR;1           [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LOGIN.COM for Tomcat==&lt;br /&gt;
&lt;br /&gt;
To define the ODS-5 filesystem, set the extended filename parsing required by both Java and Tomcat, and define the logicals needed to support the runtime of Tomcat, you need to make some changes to the LOGIN.COM file of Tomcat.&lt;br /&gt;
&lt;br /&gt;
* Create the file TOMCAT$ROOT:[000000]LOGIN.COM and add these lines:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$!********************************************&lt;br /&gt;
$ ! Login.Com for Tomcat Web Server&lt;br /&gt;
$ !&lt;br /&gt;
$ ! exit&lt;br /&gt;
$ !&lt;br /&gt;
$ set process/parse =extend                     ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                     ! ODS-5 Support (optional)&lt;br /&gt;
$ DEFINE JAVA$DONT_PRESET_LOGICALS &amp;quot;TRUE&amp;quot;       ! TURN LOGICAL DEFS OFF IN LIB$INITIALIZE&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE           ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE          ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot; -             ! Used to aid in Apache startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;           ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;    ! Use for Removing Open Files during shutdown&lt;br /&gt;
$ DEFINE JAVA$FILENAME_CONTROLS &amp;quot;8&amp;quot;             ! Needed for Filename attributes for OpenVMS.&lt;br /&gt;
$ DEFINE JAVA$FSYNC_INTERVAL &amp;quot;50&amp;quot;               ! Flush RMS Buffers.&lt;br /&gt;
$ DEFINE SYS$SCRATCH TOMCAT$ROOT:[000000.TEMP]  ! Needs to point to ODS-5 formatted device&lt;br /&gt;
$ EXIT&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Starting Tomcat==&lt;br /&gt;
&lt;br /&gt;
It is now possible to start Tomcat under the TOMCAT$WWW account. As explained towards the bottom of the installation output it is for security reasons recommended that you run Tomcat under a less privileged account than the system account, which is used by default when SYS$STARTUP: TOMCAT$STARTUP.COM is executed directly (assuming you are logged in as system or under a privileged user account). &lt;br /&gt;
&lt;br /&gt;
* Before starting Tomcat, first edit the file SYS$STARTUP:TOMCAT$DEFS_LOCAL.COM and insert the lines shown below so that the logical TOMCAT$USER is defined during start-up. It should look something like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$!***** SYS$STARTUP:TOMCAT$DEFS_LOCAL.COM*****&lt;br /&gt;
$! Add any site-specific logical definitions here&lt;br /&gt;
$!&lt;br /&gt;
$ define /system tomcat$user tomcat$www&lt;br /&gt;
$ who = f$trnlnm(&amp;quot;tomcat$user&amp;quot;)&lt;br /&gt;
$ write sys$output &amp;quot;tomcat$user is: &#039;&#039;who&#039;&amp;quot;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, use the system account to submit the following command to start Tomcat under the TOMCAT$WWW account. The account you use to do this must have the appropriate privileges.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ submit /user=tomcat$www /queue=sys$batch/parameters=(tomcat$www) -&lt;br /&gt;
_$ sys$startup:tomcat$startup.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Unless any errors have been made up until this point, you should be able to access the Tomcat webserver in your browser by connecting to port 8080. If you cannot connect, it advisable that you have a look at the log files in TOMCAT$ROOT:[LOGS] to see where things went wrong. If your browser refuses to connect to your web server via HTTP, it might be a good idea to clear the cache to make sure you are loading the page anew. Remember that you must restart Tomcat after making your configuration changes in order for them to be implemented.&lt;br /&gt;
&lt;br /&gt;
:If Tomcat does start, you can make sure that it is running under the correct username and with the correct privileges with the commands below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system&lt;br /&gt;
...&lt;br /&gt;
00000444 APACHE$TOMCAT   HIB      6   128324   0 00:00:59.89     25597  28525 M&lt;br /&gt;
...&lt;br /&gt;
	&lt;br /&gt;
$ show proc/id=444 /priv&lt;br /&gt;
&lt;br /&gt;
26-MAY-2021 02:29:44.39   User: TOMCAT$WWW       Process ID:   00000444&lt;br /&gt;
                          Node: YOURNODE         Process name: &amp;quot;APACHE$TOMCAT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Authorized privileges:&lt;br /&gt;
 NETMBX       TMPMBX&lt;br /&gt;
&lt;br /&gt;
Process privileges:&lt;br /&gt;
 BYPASS               may bypass all object access controls&lt;br /&gt;
 IMPERSONATE          may impersonate another user&lt;br /&gt;
 NETMBX               may create network device&lt;br /&gt;
 SYSPRV               may access objects via system protection&lt;br /&gt;
 TMPMBX               may create temporary mailbox&lt;br /&gt;
&lt;br /&gt;
Process rights:&lt;br /&gt;
 TOMCAT$WWW                        resource&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you want to shut down Tomcat, you can do so with the following command from a privileged account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enabling Access to Tomcat Manager and Host Manager==&lt;br /&gt;
&lt;br /&gt;
To use the Tomcat Manager-GUI and Host Manager-GUI, you need to set them up. You can do so by following the instructions below.&lt;br /&gt;
&lt;br /&gt;
* Edit the file TOMCAT$ROOT:[CONF]tomcat-users.xml. Add the highlighted lines to the very bottom of the document and make sure to substitute the example passwords with your own.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]tomcat-users.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;!--&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;tomcat&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;role1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;tomcat&amp;quot; password=&amp;quot;&amp;lt;must-be-changed&amp;gt;” &amp;quot;roles=&amp;quot;tomcat&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;both&amp;quot; password=&amp;quot;&amp;lt;must-be-changed&amp;gt;&amp;quot; roles=&amp;quot;tomcat,role1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;role1&amp;quot; password=&amp;quot;&amp;lt;must-be-changed&amp;gt;&amp;quot; roles=&amp;quot;role1&amp;quot;/&amp;gt;&lt;br /&gt;
--&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;tomcat&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;role1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;manager-gui&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;admin-gui&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;manager-script&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;admin-script&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;admin&amp;quot; password=&amp;quot;admin&amp;quot; roles=&amp;quot;admin-gui,manager-gui&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;tomcat&amp;quot; password=&amp;quot;tomcat&amp;quot; roles=&amp;quot;tomcat&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;both&amp;quot; password=&amp;quot;tomcat&amp;quot; roles=&amp;quot;tomcat,role1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;role1&amp;quot; password=&amp;quot;tomcat&amp;quot; roles=&amp;quot;role1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;user username=&amp;quot;tcscript&amp;quot; password=&amp;quot;tomcat&amp;quot; roles=&amp;quot;manager-gui,manager-script,admin-script&amp;quot;/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/tomcat-users&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To allow access to Admin and Manager, permissions must be set to allow for connections. Edit these two files:&lt;br /&gt;
&lt;br /&gt;
::TOMCAT$ROOT:[webapps.host-manager.META-INF]context.xml&lt;br /&gt;
::TOMCAT$ROOT:[webapps.manager.META-INF]context.xml&lt;br /&gt;
&lt;br /&gt;
:Then add the comment delimiters highlighted in the lines below to both context.xml files, so that the relevant lines read&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Context antiResourceLocking=&amp;quot;false&amp;quot; privileged=&amp;quot;true&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;Valve className=&amp;quot;org.apache.catalina.valves.RemoteAddrValve&amp;quot;&lt;br /&gt;
     allow=&amp;quot;127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;nowiki&amp;gt;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;Manager sessionAttributeValueClassNameFilter=&lt;br /&gt;
     &amp;quot;java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.c`&lt;br /&gt;
&amp;lt;/Context&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Finally, restart Tomcat with the commands below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown.com&lt;br /&gt;
$ submit /user=tomcat$www /queue=sys$batch /parameters=(tomcat$www) -&lt;br /&gt;
_$ sys$startup:tomcat$startup.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enable CGIs in Tomcat==&lt;br /&gt;
&lt;br /&gt;
For CGI scripts to work with Tomcat they must first be set up, which these instructions will show you how to do. They will also show you how to use Apache to create working CGI example.&lt;br /&gt;
&lt;br /&gt;
===CGI Configuration===&lt;br /&gt;
&lt;br /&gt;
* Edit the file TOMCAT$ROOT:[CONF]web.xml and make the changes highlighted below in the code for &amp;lt;servlet-name&amp;gt;cgi&amp;lt;/servlet-name&amp;gt;. Make sure that you uncomment this section by removing the comment delimiter “--&amp;gt;” at the bottom and adding it to the top.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]web.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;servlet&amp;gt;&lt;br /&gt;
  &amp;lt;servlet-name&amp;gt;cgi&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
  &amp;lt;servlet-class&amp;gt;org.apache.catalina.servlets.CGIServlet &lt;br /&gt;
  &amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
  &amp;lt;init-param&amp;gt;&lt;br /&gt;
    &amp;lt;param-name&amp;gt;debug&amp;lt;/param-name&amp;gt;&lt;br /&gt;
    &amp;lt;param-value&amp;gt;0&amp;lt;/param-value&amp;gt;&lt;br /&gt;
   &amp;lt;/init-param&amp;gt;&lt;br /&gt;
   &amp;lt;span style=background:yellow&amp;gt;&amp;lt;init-param&amp;gt;&lt;br /&gt;
     &amp;lt;param-name&amp;gt;executable&amp;lt;/param-name&amp;gt;&lt;br /&gt;
     &amp;lt;param-value&amp;gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt;
   &amp;lt;/init-param&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;init-param&amp;gt;    &lt;br /&gt;
     &amp;lt;param-name&amp;gt;cgiPathPrefix&amp;lt;/param-name&amp;gt;&lt;br /&gt;
     &amp;lt;param-value&amp;gt;WEB-INF/cgi&amp;lt;/param-value&amp;gt;&lt;br /&gt;
   &amp;lt;/init-param&amp;gt;&lt;br /&gt;
   &amp;lt;load-on-startup&amp;gt;5&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;
&amp;lt;/servlet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Down further in the same file, uncomment the following lines for the CGI Gateway Servlet by removing the comment delimiter “--&amp;gt;” at the bottom and adding it to the top.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The mapping for the CGI Gateway servlet --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
  &amp;lt;servlet-name&amp;gt;cgi&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
  &amp;lt;url-pattern&amp;gt;/cgi-bin/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In addition, edit the file TOMCAT$ROOT:[CONF]context.xml and add the highlighted portions below to the &amp;lt;Context&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]context.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Context &amp;lt;span style=background:yellow&amp;gt;reloadable=&amp;quot;true&amp;quot; privileged=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CGI Example===&lt;br /&gt;
&lt;br /&gt;
* Create the directory structure TOMCAT$ROOT:[WEBAPPS.CGI.WEB-INF.CGI]. While in TOMCAT$ROOT, run the following command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create /dir [.webapps.cgi.web-inf.cgi] /log&lt;br /&gt;
%CREATE-I-CREATED, TOMCAT$ROOT:[000000.webapps.cgi.web-inf.cgi] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The files TEST-CGI-VMS.EXE and TEST-CGI-VMS.CGI need to be copied over from APACHE$ROOT: [CGI-BIN] to TOMCAT$ROOT:[WEBAPPS.CGI.WEB-INF.CGI].&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir apache$root:[cgi-bin]&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$COMMON:[CGI-BIN]&lt;br /&gt;
&lt;br /&gt;
TEST-CGI-VMS.COM;1  TEST-CGI-VMS.EXE;1&lt;br /&gt;
&lt;br /&gt;
Total of 2 files.&lt;br /&gt;
&lt;br /&gt;
$ copy /log apache$root:[cgi-bin]test-cgi-vms.exe – &lt;br /&gt;
_$ tomcat$root:[webapps.cgi.web-inf.cgi]test-cgi-vms.exe&lt;br /&gt;
%COPY-S-COPIED, APACHE$COMMON:[CGI-BIN]TEST-CGI-VMS.EXE;1 copied to TOMCAT$ROOT:&lt;br /&gt;
[webapps.cgi.web-inf.cgi]test-cgi-vms.exe;1 (13KB)&lt;br /&gt;
&lt;br /&gt;
$ copy /log apache$root:[cgi-bin]test-cgi-vms.com -&lt;br /&gt;
_$ tomcat$root:[webapps.cgi.web-inf.cgi]test-cgi-vms.cgi&lt;br /&gt;
%COPY-S-COPIED, APACHE$COMMON:[CGI-BIN]TEST-CGI-VMS.COM;1 copied to TOMCAT$ROOT:&lt;br /&gt;
[webapps.cgi.web-inf.cgi]test-cgi-vms.cgi;1 (4KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Set the correct file ownership and protection and make sure to use the correct UIC for the TOMCAT$WWW user account. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ set file&amp;lt;span style=background:yellow&amp;gt;/owner=[555,555]&amp;lt;/span&amp;gt; tomcat$root:[webapps...]*.*;* /log&lt;br /&gt;
%SET-I-MODIFIED, TOMCAT$ROOT:[webapps.cgi]web-inf.DIR;1 modified&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$ set file/prot=(S:RWE,O:RWED,G,W) tomcat$root:[webapps...]*.*;* /log&lt;br /&gt;
%SET-I-PROTECTED, TOMCAT$ROOT:[webapps]cgi.DIR;1 file protection changed to S:RW&lt;br /&gt;
E,O:RWED,G:,W:&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:And as a last step, make sure that ownership and permissions are correct.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir /sec tomcat$root:[webapps.cgi.web-inf.cgi]&lt;br /&gt;
&lt;br /&gt;
Directory TOMCAT$ROOT:[webapps.cgi.web-inf.cgi]&lt;br /&gt;
&lt;br /&gt;
test-cgi-vms.cgi;1   [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
test-cgi-vms.exe;1   [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
&lt;br /&gt;
Total of 2 files.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the file TOMCAT$ROOT:[WEBAPPS.CGI]index.html.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create tomcat$root:[webapps.cgi]index.html&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, you need to change its record format from Variable Length to STREAM_LF. One way to do this is with the file STREAM_LF.FDL, which you can create on your own. Use the $ EDIT command to create the file and then copy and paste the contents shown below. Press Ctrl-Z to exit the editor.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[000000]STREAM_LF.FDL&lt;br /&gt;
FILE&lt;br /&gt;
        ALLOCATION              4&lt;br /&gt;
        BEST_TRY_CONTIGUOUS     yes&lt;br /&gt;
        EXTENSION               0&lt;br /&gt;
        ORGANIZATION            sequential&lt;br /&gt;
RECORD&lt;br /&gt;
        BLOCK_SPAN              yes&lt;br /&gt;
        CARRIAGE_CONTROL        carriage_return&lt;br /&gt;
        FORMAT                  stream_LF&lt;br /&gt;
        SIZE                    0&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Using this file, the conversion can now be performed with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ convert /fdl=tomcat$root:[000000]stream_lf.fdl -&lt;br /&gt;
_$ tomcat$root:[webapps.cgi]index.html tomcat$root:[webapps.cgi]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:This will create a new version of the file for which you can verify that the record format is correct with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir /full tomcat$root:[webapps.cgi]index.html;2&lt;br /&gt;
...&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 0 bytes&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Make sure that the ownership and permissions of the index.html file are as follows.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir /sec tomcat$root:[webapps.cgi]&lt;br /&gt;
&lt;br /&gt;
Directory TOMCAT$ROOT:[webapps.cgi]&lt;br /&gt;
&lt;br /&gt;
index.html;2         [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
index.html;1         [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
web-inf.DIR;1        [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
&lt;br /&gt;
Total of 3 files.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Edit the file TOMCAT$ROOT:[WEBAPPS.CGI]index.html, using an editor of your choosing, and insert the following HTML code into the empty file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;$ edit index.html&lt;br /&gt;
&amp;lt;HTML&amp;gt;&lt;br /&gt;
  &amp;lt;HEAD&amp;gt;&lt;br /&gt;
    &amp;lt;TITLE&amp;gt;CGI Application Example&amp;lt;/TITLE&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;hpweb_styles_win_ie6.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot;&lt;br /&gt;
        type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!--&lt;br /&gt;
    .style3 {font-size: 12px}&lt;br /&gt;
    .style4 {font-size: 12px; color: #003366;&lt;br /&gt;
    --&amp;gt;&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;/HEAD&amp;gt;&lt;br /&gt;
  &amp;lt;BODY&amp;gt;&lt;br /&gt;
    &amp;lt;h2&amp;gt; &amp;lt;class=&amp;quot;colorE7E7E7bg color003366&amp;quot;&amp;gt;&amp;lt;strong&amp;gt; CGI Application Example&amp;lt;/strong&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt; &amp;lt;class=&amp;quot;colorE7E7E7bg color003366&amp;quot;&amp;gt;&amp;lt;strong&amp;gt; CGI from the TOMCAT Server&amp;lt;/strong&amp;gt;&amp;lt;/h3&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;https://&amp;lt;/nowiki&amp;gt;&amp;lt;span style=background:yellow&amp;gt;10.10.100.0:8443&amp;lt;/span&amp;gt;&amp;lt;nowiki&amp;gt;/cgi/cgi-bin/test-cgi-vms.exe&amp;quot;&amp;gt;CGI-EXE from the TOMCAT Server. &amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;https://&amp;lt;/nowiki&amp;gt;&amp;lt;span style=background:yellow&amp;gt;10.10.100.0:8443&amp;lt;/span&amp;gt;&amp;lt;nowiki&amp;gt;/cgi/cgi-bin/test-cgi-vms.cgi&amp;quot;&amp;gt;CGI-COM from the TOMCAT Server. &amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;hr&amp;gt;&lt;br /&gt;
    &amp;lt;/hr&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt; &amp;lt;class=&amp;quot;colorE7E7E7bg color000066&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;CGI from the APACHE Web Server&amp;lt;/strong&amp;gt; &amp;lt;/h3&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;https://&amp;lt;/nowiki&amp;gt;&amp;lt;span style=background:yellow&amp;gt;10.10.100.0:443&amp;lt;/span&amp;gt;&amp;lt;nowiki&amp;gt;/cgi-bin/test-cgi-vms.exe&amp;quot;&amp;gt;CGI-EXE from the APACHE Web Server.&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;https://&amp;lt;/nowiki&amp;gt;&amp;lt;span style=background:yellow&amp;gt;10.10.100.0:443&amp;lt;/span&amp;gt;&amp;lt;nowiki&amp;gt;/cgi-bin/test-cgi-vms.com&amp;quot;&amp;gt;CGI-COM from the APACHE Web Server. &amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
    &amp;lt;P&amp;gt;&lt;br /&gt;
      Or you can Use the non-SSL URL of: http://&amp;lt;/nowiki&amp;gt;&amp;lt;span style=background:yellow&amp;gt;10.10.100.0:8080&amp;lt;/span&amp;gt;&amp;lt;nowiki&amp;gt;/cgi/cgi-bin/test-cgi-vms.exe and the non-SSL URL of: http://&amp;lt;/nowiki&amp;gt;&amp;lt;span style=background:yellow&amp;gt;10.10.100.0:80&amp;lt;/span&amp;gt;&amp;lt;nowiki&amp;gt;/cgi-bin/test-cgi-vms&lt;br /&gt;
      &amp;lt;/br&amp;gt;&lt;br /&gt;
      Thank you! /VSI Support Team &amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/P&amp;gt;&lt;br /&gt;
  &amp;lt;/BODY&amp;gt;&lt;br /&gt;
&amp;lt;/HTML&amp;gt;&lt;br /&gt;
[End of file]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Make sure to change the IP addresses and port numbers highlighted in yellow to match your current configuration. &lt;br /&gt;
&lt;br /&gt;
* Create the file TOMCAT$ROOT:[webapps.cgi.web-inf]web.xml, convert its record format to STREAM_LF, and make sure that the file owner and file permissions are set correctly. Then edit the new converted file and insert the following lines.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit TOMCAT$ROOT:[webapps.cgi.web-inf]web.xml&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;web-app xmlns=&amp;quot;http://java.sun.com/xml/ns/j2ee&amp;quot;&lt;br /&gt;
    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
    xsi:schemaLocation=&amp;quot;http://java.sun.com/xml/ns/j2ee&lt;br /&gt;
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&amp;quot;&lt;br /&gt;
    version=&amp;quot;2.4&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;display-name&amp;gt; A VSI CGI Example... &amp;lt;/display-name&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
    Used as an example for showing how CGI apps can work with Tomcat V8.5-50&lt;br /&gt;
  &amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;session-config&amp;gt;&lt;br /&gt;
    &amp;lt;session-timeout&amp;gt;&lt;br /&gt;
      30&lt;br /&gt;
    &amp;lt;/session-timeout&amp;gt;&lt;br /&gt;
  &amp;lt;/session-config&amp;gt;&lt;br /&gt;
  &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;
    &amp;lt;welcome-file&amp;gt;&lt;br /&gt;
      index.html&lt;br /&gt;
    &amp;lt;/welcome-file&amp;gt;&lt;br /&gt;
  &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;
&amp;lt;/web-app&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* With this, CGIs should now be working with Tomcat. You can test the examples that were set up in the index.html file by visiting your specified location in a web browser. Since HTTPS has not yet been set up, you will only be able to connect using HTTP. Remember that you must restart Tomcat for the configuration changes to be detected.&lt;br /&gt;
&lt;br /&gt;
==Enable Functionality for Automatically Deploying WAR Files==&lt;br /&gt;
&lt;br /&gt;
To enable the automatic deployment of WAR files, follow the instructions below. Be careful, however, about enabling automatic deployment in a production environment as you will run the risk of unintentionally deploying WAR files and, by doing so, overwrite important changes made to the deployed files.&lt;br /&gt;
&lt;br /&gt;
* Edit the file TOMCAT$ROOT:[CONF]server.xml. Close to the bottom of the, add the highlighted line shown below in the specified location.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]server.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Host name=&amp;quot;localhost&amp;quot;  appBase=&amp;quot;webapps&amp;quot;&lt;br /&gt;
          unpackWARs=&amp;quot;true&amp;quot; autoDeploy=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;DefaultContext reloadable=&amp;quot;true&amp;quot;/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set Up Tomcat HTTPS Support with OpenSSL==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, we will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
Follow these instructions to create a self-signed certificate.&lt;br /&gt;
&lt;br /&gt;
* Create the subdirectories TOMCAT$ROOT:[SSLCERTS] and TOMCAT$ROOT:[SSLKEYS]&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create/dir tomcat$root:[sslcerts] /log&lt;br /&gt;
%CREATE-I-CREATED, TOMCAT$ROOT:[000000.sslcerts] created&lt;br /&gt;
&lt;br /&gt;
$ create/dir tomcat$root:[sslkeys] /log&lt;br /&gt;
%CREATE-I-CREATED, TOMCAT$ROOT:[000000.sslkeys] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Double-check owner and permissions so they match the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir /sec ssl*.*&lt;br /&gt;
sslcerts.DIR;1       [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
sslkeys.DIR;1        [TOMCAT$WWW]                     (RWE,RWED,,) &lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Generate a self-signed certificate. Do not put a password on your certificate or key (you will be prompted for information) as this could hinder the automatic start-up of Tomcat. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:4096 -keyout -&lt;br /&gt;
_$ /tomcat$root/sslkeys/server.key -out tomcat$root/sslcerts/server.crt&lt;br /&gt;
Generating a RSA private key&lt;br /&gt;
...................++++&lt;br /&gt;
................++++&lt;br /&gt;
writing new private key to &#039;/tomcat$root/sslkeys/server.key&#039;&lt;br /&gt;
-----&lt;br /&gt;
You are about to be asked to enter information that will be incorporated&lt;br /&gt;
into your certificate request.&lt;br /&gt;
What you are about to enter is what is called a Distinguished Name or a DN.&lt;br /&gt;
There are quite a few fields but you can leave some blank&lt;br /&gt;
For some fields there will be a default value,&lt;br /&gt;
If you enter &#039;.&#039;, the field will be left blank.&lt;br /&gt;
-----&lt;br /&gt;
Country Name (2 letter code) [AU]:US&lt;br /&gt;
State or Province Name (full name) [Some-State]:Massachusetts&lt;br /&gt;
Locality Name (eg, city) []:Burlington&lt;br /&gt;
Organization Name (eg, company) [Internet Widgits Pty Ltd]:VMS SOFTWARE INC.&lt;br /&gt;
Organizational Unit Name (eg, section) []:OPENVMS SUPPORT&lt;br /&gt;
Common Name (e.g. server FQDN or YOUR name) []:NODE1.eng.vmssoftware.com&lt;br /&gt;
Email Address []:webmaster@NODE1.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, you can verify that the certificate and key were created, that they ended up in the correct locations, and that they have the correct owner and permissions set.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir [.ssl*] /sec&lt;br /&gt;
&lt;br /&gt;
Directory TOMCAT$ROOT:[000000.sslcerts]&lt;br /&gt;
&lt;br /&gt;
server.crt;1	[TOMCAT$WWW]			(RWE,RWED,,)&lt;br /&gt;
&lt;br /&gt;
Total of 1 file.&lt;br /&gt;
&lt;br /&gt;
Directory TOMCAT$ROOT:[000000.sslkeys]&lt;br /&gt;
&lt;br /&gt;
server.key;1	[TOMCAT$WWW]			(RWD,RWED,,)&lt;br /&gt;
&lt;br /&gt;
Total of 1 file.&lt;br /&gt;
&lt;br /&gt;
Grand total of 2 directories, 2 files.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
 &lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in tomcat$root:[sslcerts]server.crt -out -&lt;br /&gt;
_$ tomcat$root:[sslcerts]server_crt.der&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -outform der -in tomcat$root:[sslkeys]server.key -out -&lt;br /&gt;
_$ tomcat$root:[sslkeys]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in tomcat$root:[sslcerts]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in tomcat$root:[sslkeys]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in tomcat$root:[sslcerts]server_crt.der -out -&lt;br /&gt;
_$ tomcat$root:[sslcerts]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in tomcat$root:[sslkeys]server_key.der -out -&lt;br /&gt;
_$ tomcat$root:[sslkeys]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the server key and server certificate into the same certificate file. The easiest way to combine certificates, keys, and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache.&lt;br /&gt;
  &lt;br /&gt;
:On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL “$ APPEND” command. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create tomcat$root:[sslcerts]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append tomcat$root:[sslkeys]server_key.pem, - &lt;br /&gt;
_$ tomcat$root:[sslcerts]server_crt.pem tomcat$root:[sslcerts]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, TOMCAT$ROOT:[sslkeys]server.key;1 (input) and TOMCAT$ROOT:[sslcerts]cert_and_key.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The warning message warning about incompatible attributes can be safely ignored. If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create tomcat$root:[sslcerts]cert_key_and_CA.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append tomcat$root:[sslkeys]server_key.pem, tomcat$root:[sslcerts]server_crt.pem, - &lt;br /&gt;
_$ tomcat$root:[sslcerts]CAcrt.pem tomcat$root:[sslcerts]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, TOMCAT$ROOT:[sslkeys]server_key.pem;1 (input) and TOMCAT$ROOT:[sslcerts]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Configure Tomcat for HTTPS on Port 8443===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, it is now possible to set up HTTPS. Pay special attention to the file names server.key and server.crt in the configuration below, as the files have been kept as they are and not converted to DER encoding or combined into a single file.&lt;br /&gt;
&lt;br /&gt;
* Edit the file TOMCAT$ROOT:[CONF]SERVER.XML. At an appropriate position somewhere under the section that asks you to define an SSL/TLS HTTP/1.1 Connector, add the following lines of code (highlighted in yellow). Make sure the paths and names for your certificate and certificate key files are correct. You may also customize the HTTPS port.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]server.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2&lt;br /&gt;
     This connector uses the APR/native implementation. When using the&lt;br /&gt;
     APR/native implementation or the OpenSSL engine with NIO or NIO2 then&lt;br /&gt;
     the OpenSSL configuration attributes must be used.&lt;br /&gt;
--&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;!--  Port 8443 SSL111 Configuration  --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;Connector port=&amp;quot;8443&amp;quot;&lt;br /&gt;
connectionTimeout=&amp;quot;20000&amp;quot;&lt;br /&gt;
enableLookups=&amp;quot;false&amp;quot;&lt;br /&gt;
maxKeepAliveRequests=&amp;quot;1000&amp;quot;&lt;br /&gt;
maxThreads=&amp;quot;200&amp;quot;&lt;br /&gt;
scheme=&amp;quot;https&amp;quot;&lt;br /&gt;
secure=&amp;quot;true&amp;quot;&lt;br /&gt;
SSLEnabled=&amp;quot;true&amp;quot;&lt;br /&gt;
SSLCertificateFile=&amp;quot;/tomcat$root/000000/sslcerts/server.crt&amp;quot; &lt;br /&gt;
SSLCertificateKeyFile=&amp;quot;/tomcat$root/000000/sslkeys/server.key&amp;quot;               &lt;br /&gt;
SSLVerifyClient=&amp;quot;none&amp;quot;&lt;br /&gt;
SSLProtocol=&amp;quot;TLSv1.1+TLSv1.2+TLSv1.3&amp;quot;/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may now restart Tomcat and attempt to connect to the port you specified.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Optional – Test HTTPS Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your self-signed certificates through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:8443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Tomcat, do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Tomcat with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown&lt;br /&gt;
%DCL-I-SUPERSEDE, previous value of JAVA$CLASSPATH has been superseded&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you have AXIS2 or other Java plugins that make use of Tomcat, you should remove them now before you proceed.&lt;br /&gt;
&lt;br /&gt;
* Uninstall Tomcat using the $ PRODUCT REMOVE command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws_java&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS_JAVA V8.5-50A          Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS_JAVA V8.5-50A          DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: &lt;br /&gt;
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS_JAVA V8.5-50A          Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Tomcat, you should know that there are still files located in TOMCAT$ROOT:[000000] that have not been removed. The TOMCAT$ROOT logical should still be defined – something you can test with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *tomcat*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892B9EC0)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;TOMCAT$ROOT&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.tomcat.]&amp;quot;&lt;br /&gt;
  &amp;quot;TOMCAT$USER&amp;quot; = &amp;quot;tomcat$www&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If the logical is no longer there, you can still access the directory with the path shown above, that is if Tomcat was installed in its default location.&lt;br /&gt;
&lt;br /&gt;
* To remove the entire Tomcat directory tree, you can use the command below while inside the YOURDISK:[SYS0.SYSCOMMON] directory. Because all files are deleted without mercy, it is important to double-check and make sure you do not have any important files inside the directory tree and that the correct directory tree is specified. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.tomcat...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000]LOGIN.COM;2 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000]LOGIN.COM;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000]STREAM_LF.FDL;1 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Next, you can delete the directory YOURDISK:[SYS0.SYSCOMMON.tomcat] with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON]tomcat.DIR;1 /conf&lt;br /&gt;
DELETE YOURDISK:[SYS0.SYSCOMMON]tomcat.DIR;1 ? [N]: y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:There are also Tomcat files located in SYS$MANAGER. Use this command to find them&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir sys$manager:*tomcat*&lt;br /&gt;
	&lt;br /&gt;
Directory SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
&lt;br /&gt;
TOMCAT$ARGS.DAT;2   TOMCAT$ARGS.DAT;1   TOMCAT$ARGS_LOCAL.DAT;2&lt;br /&gt;
TOMCAT$ARGS_LOCAL.DAT;1                 tomcat$startup.LOG;1&lt;br /&gt;
tomcat-users_xml.TPU$JOURNAL;1&lt;br /&gt;
&lt;br /&gt;
Total of 6 files.&lt;br /&gt;
&lt;br /&gt;
Directory SYS$COMMON:[SYSMGR]&lt;br /&gt;
&lt;br /&gt;
tomcat$define_logicals.com;1&lt;br /&gt;
&lt;br /&gt;
Total of 1 file.&lt;br /&gt;
&lt;br /&gt;
Grand total of 2 directories, 7 files.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:When deleting these files, make sure that you use the /CONFIRM qualifier or specify them individually so that you do not delete any files by mistake while using wildcard characters. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ delete sys$manager:*tomcat*.*;* /conf&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]TOMCAT$ARGS.DAT;2 ? [N]: Y&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]TOMCAT$ARGS.DAT;2 ? [N]: Y&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Lastly, there is also the file SYS$SYSDEVICE:[SYS0]TOMCAT$ARGS_LOCAL.DAT.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ del SYS$SYSDEVICE:[SYS0]TOMCAT$ARGS_LOCAL.DAT;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[SYS0]TOMCAT$ARGS_LOCAL.DAT;1 ? [N]: y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Tomcat are its username TOMCAT$WWW inside the SYSUAF and the TOMCAT$USER and TOMCAT$ROOT logicals. To delete the username account, do the following.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove tomcat$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier TOMCAT$WWW value [000555,000555] &lt;br /&gt;
   removed from rights database&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier TOMCAT value [000555,177777] removed &lt;br /&gt;
   from rights database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To delete the logicals, use the $ DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /sys tomcat$user&lt;br /&gt;
$ deassign /sys tomcat$root&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2434</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2434"/>
		<updated>2021-10-20T07:12:47Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the [https://wiki.vmssoftware.com/Open_Source_Software_for_OpenVMS Open Source Software for OpenVMS] page.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
&lt;br /&gt;
:Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up and Shutdown Commands==&lt;br /&gt;
&lt;br /&gt;
In this section we will set up commands for Apache to automatically shut down and start back up when the system is rebooted.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSTARTUP_VMS.COM and insert the following lines towards the bottom of the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit the file SYS$MANAGER:SYSHUTDWN.COM and insert the lines shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. &lt;br /&gt;
&lt;br /&gt;
:On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. &lt;br /&gt;
&lt;br /&gt;
To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Open_Source_Software_for_OpenVMS&amp;diff=2433</id>
		<title>Open Source Software for OpenVMS</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Open_Source_Software_for_OpenVMS&amp;diff=2433"/>
		<updated>2021-10-19T11:35:55Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Open Source&#039;&#039;&#039; refers to software whose source code is made freely available for modification and/or distribution. Below is a list of open source software that works with OpenVMS, as well as some links to instructional open source material that can be found on this wiki.&lt;br /&gt;
&lt;br /&gt;
=Open Source Software Developed by VSI=&lt;br /&gt;
* [https://vmssoftware.com/products/activemq/ ActiveMQ]&lt;br /&gt;
* [https://vmssoftware.com/products/apache-ant/ Apache ANT]&lt;br /&gt;
* [https://vmssoftware.com/products/maven/ Apache Maven]&lt;br /&gt;
* [https://vmssoftware.com/products/axis2/ AXIS2]&lt;br /&gt;
* [https://vmssoftware.com/products/civetweb/ CivetWeb]&lt;br /&gt;
* [https://vmssoftware.com/products/curl/ cURL]&lt;br /&gt;
* [https://vmssoftware.com/products/gearman/ Gearman]&lt;br /&gt;
* [https://vmssoftware.com/products/gnuplot/ Gnuplot]&lt;br /&gt;
* [https://vmssoftware.com/products/gnv/ GNV (GNU&#039;s not VMS)]&lt;br /&gt;
* [https://vmssoftware.com/products/haproxy/ HAProxy]&lt;br /&gt;
* [https://vmssoftware.com/products/kerberos/ Kerberos]&lt;br /&gt;
* [https://vmssoftware.com/products/libmariadb/ LibMariaDB]&lt;br /&gt;
* [https://vmssoftware.com/products/libpq/ LibPQ]&lt;br /&gt;
* [https://vmssoftware.com/products/librabbitmq/ LibRabbitMQ]&lt;br /&gt;
* [https://vmssoftware.com/products/librd-kafka/ LibRDkafka]&lt;br /&gt;
* [https://vmssoftware.com/products/lua/ Lua]&lt;br /&gt;
* [https://vmssoftware.com/products/mariadb/ MariaDB]&lt;br /&gt;
* [https://vmssoftware.com/products/memcached/ Memcached]&lt;br /&gt;
* [https://vmssoftware.com/products/mosquitto/ Mosquitto]&lt;br /&gt;
* [https://vmssoftware.com/products/openjdk/ OpenJDK]&lt;br /&gt;
* [https://vmssoftware.com/products/openldap/ OpenLDAP]&lt;br /&gt;
* [https://vmssoftware.com/products/paho-c/ PAHO-C]&lt;br /&gt;
* [https://vmssoftware.com/products/perl/ Perl]&lt;br /&gt;
* [https://vmssoftware.com/products/php/ PHP]&lt;br /&gt;
* [https://vmssoftware.com/products/python/ Python]&lt;br /&gt;
* [https://vmssoftware.com/products/redis/ Redis]&lt;br /&gt;
* [https://vmssoftware.com/products/ruby/ Ruby]&lt;br /&gt;
* [https://vmssoftware.com/products/samba-cifs/ Samba/CIFS]&lt;br /&gt;
* [https://vmssoftware.com/products/scala/ Scala]&lt;br /&gt;
* [https://vmssoftware.com/products/secure-web-server/ Secure Web Server]&lt;br /&gt;
* [https://vmssoftware.com/products/simplified-wrapper-and-interface-generator/ Simplified Wrapper and Interface Generator]&lt;br /&gt;
* [https://vmssoftware.com/products/sql-relay/ SQL Relay Client]&lt;br /&gt;
* [https://vmssoftware.com/products/svn/ SVN]&lt;br /&gt;
* [https://vmssoftware.com/products/syslogd/ syslogd]&lt;br /&gt;
* [https://vmssoftware.com/products/tomcat/ Tomcat]&lt;br /&gt;
* [https://vmssoftware.com/products/vgit/ vGit]&lt;br /&gt;
* [https://vmssoftware.com/products/vms-ide/ VMS IDE]&lt;br /&gt;
* [http://vmssoftware.com/products/xpdf-file-viewer/ XPDF File Viewer]&lt;br /&gt;
* [https://vmssoftware.com/products/zeromq/ ZeroMQ]&lt;br /&gt;
&lt;br /&gt;
==Instructional Material==&lt;br /&gt;
&lt;br /&gt;
In this section you can find links to wiki pages that contain instructional open source material.&lt;br /&gt;
&lt;br /&gt;
===Installation Guides===&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.vmssoftware.com/Apache_(CSWS)_-_Easy_Installation_Guide OpenVMS Apache installation guide]&lt;br /&gt;
* [https://wiki.vmssoftware.com/Tomcat_(CSWS_JAVA)_-_Easy_Installation_Guide OpenVMS Tomcat installation guide]&lt;br /&gt;
* [https://wiki.vmssoftware.com/Axis2_-_Easy_Installation_Guide OpenVMS Axis2 installation guide]&lt;br /&gt;
&lt;br /&gt;
=Community software=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;col&amp;quot; | Name&lt;br /&gt;
! colspan=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
! colspan=&amp;quot;col&amp;quot; | Language&lt;br /&gt;
! colspan=&amp;quot;col&amp;quot; | Architectures&lt;br /&gt;
! colspan=&amp;quot;col&amp;quot; | Author&lt;br /&gt;
! colspan=&amp;quot;col&amp;quot; | Year&lt;br /&gt;
! colspan=&amp;quot;col&amp;quot; | Link&lt;br /&gt;
|-&lt;br /&gt;
| ACE&lt;br /&gt;
| C++ framework for developing distributed networked applications&lt;br /&gt;
| C++&lt;br /&gt;
| [[Alpha]], [[Integrity]]&lt;br /&gt;
| DOCGroup, ported by Remedy IT&lt;br /&gt;
| &lt;br /&gt;
| [https://github.com/DOCGroup/ACE_TAO Github]&lt;br /&gt;
|-&lt;br /&gt;
| Adventure game &lt;br /&gt;
| A magic/exploration simulation game.&lt;br /&gt;
| Fortran&lt;br /&gt;
| [[VAX]], [[Alpha]]&lt;br /&gt;
| Willie Crowther&lt;br /&gt;
| 1970s&lt;br /&gt;
| [https://github.com/whitten/m-adventure Github], [https://www.digiater.nl/openvms/decus/lt90a/mumpssig/games/ Code from DECUS 1990 L&amp;amp;T SIG Tape], [https://www.digiater.nl/openvms/freeware/v10/adventure/ OpenVMS Freeware]&lt;br /&gt;
|-&lt;br /&gt;
| BORG calendar&lt;br /&gt;
| BORG Calendar is a personal information manager written in Java and published under GPL. It is a combination of calendar, ToDo list, address book and task/project tracking system.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso&lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=borg OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| BatchFileConversion&lt;br /&gt;
| This is a Synergy/DE console application that will convert Workbench build files from Windows batch files to Unix script files or OpenVMS command files.&lt;br /&gt;
| Bash&lt;br /&gt;
| &lt;br /&gt;
| Unknown&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/SynSupport/BatchFileConversion Github]&lt;br /&gt;
|-&lt;br /&gt;
| C developer tools for OpenVMS&lt;br /&gt;
| This repo contains developer tools running on OpenVMS operating system&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| Rafiq Ahamed K&lt;br /&gt;
| 2017&lt;br /&gt;
| [https://github.com/rafiqkattangere/vms_utils Github]&lt;br /&gt;
|-&lt;br /&gt;
| C survival kit &lt;br /&gt;
| A set of useful functions, data structures, and macros aimed at allowing more expressive and reliable C code. Portability targets are OpenVMS and Linux.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/chadjoan/C-Survival-Kit Github]&lt;br /&gt;
|-&lt;br /&gt;
| CGP_PMAS&lt;br /&gt;
| CommuniGate Pro and PreciseMail Anti-Spam Gateway Integration on OpenVMS systems &lt;br /&gt;
| Perl&lt;br /&gt;
|&lt;br /&gt;
| Thomas Morstein&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/ztmr/CGP_PMAS Github]&lt;br /&gt;
|-&lt;br /&gt;
| CMS-EXPORT&lt;br /&gt;
| A utility for OpenVMS to export CMS library content and revisions history. CMS is a version control system commonly used in OpenVMS environment (part of DECset). Valued for being efficient and time-proven, CMS also has its share of drawbacks -- lack of export options being one of these. cms-export utility allows export of a specified CMS library (or a set of library elements) into a file in git-fast-export format, which subsequently can be used to create a repository with an alternative version management system such as git, fossil etc.&lt;br /&gt;
| DCL&lt;br /&gt;
| [[VAX]], [[Alpha]]&lt;br /&gt;
| Artur Shepilko&lt;br /&gt;
| 2018&lt;br /&gt;
| [https://github.com/nomadbyte/cms-export Github]&lt;br /&gt;
|-&lt;br /&gt;
| Convert OpenVMS text files to Unix &lt;br /&gt;
| Convert openvms textfiles into UNIX/DOS format&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| Andika Triwidada&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/atriwidada/openvms-to-unix Github]&lt;br /&gt;
|-&lt;br /&gt;
| Cython&lt;br /&gt;
| The most widely used Python to C compiler&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| VMS Software&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/vmssoftware/cython Github]&lt;br /&gt;
|-&lt;br /&gt;
| DBCHECK &lt;br /&gt;
| Very fast check the health of a RDB database&lt;br /&gt;
| [[DCL]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/NLA0/DCL/blob/master/dbcheck Github]&lt;br /&gt;
|-&lt;br /&gt;
| DiskFree &lt;br /&gt;
| An implementation of the Linux df command (view disk usage)&lt;br /&gt;
| &lt;br /&gt;
| [[VAX]], [[Alpha]], [[Integrity]] (untested)&lt;br /&gt;
| Alan Fay&lt;br /&gt;
| &lt;br /&gt;
| [https://github.com/alan-fay/openvms Github]&lt;br /&gt;
|-&lt;br /&gt;
| DrJava&lt;br /&gt;
| DrJava is a lightweight Java IDE written in Java and published under the BSD license. It has the usual features such as editing with syntax coloring, automatic indentation, brace matching…, compiling, debugging, testing using JUnit…&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso&lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=drjava OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| EPICS on OpenVMS&lt;br /&gt;
| Port of EPICS to OpenVMS&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| Clemens Wermelskirchen, maintained by Freddie Akeroyd&lt;br /&gt;
| &lt;br /&gt;
| [https://github.com/FreddieAkeroyd/EPICS-VMS Github]&lt;br /&gt;
|-&lt;br /&gt;
| ES40 emulator &lt;br /&gt;
| A portable emulator for the ES40 Alpha&lt;br /&gt;
| C++&lt;br /&gt;
| [[Linux]]&lt;br /&gt;
| Github repository maintained by Dmitry Kalinkin&lt;br /&gt;
| 1994&lt;br /&gt;
| [https://github.com/veprbl/es40 Github]&lt;br /&gt;
|-&lt;br /&gt;
| FTPD server &lt;br /&gt;
| An FTP server with support for UNIX file lists&lt;br /&gt;
|&lt;br /&gt;
| [[VAX]], [[Alpha]]&lt;br /&gt;
| Alan Fay&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/alan-fay/openvms Github]&lt;br /&gt;
|-&lt;br /&gt;
| Python&lt;br /&gt;
| Port of Python to OpenVMS&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| VMS Software&lt;br /&gt;
| &lt;br /&gt;
| [https://github.com/vmssoftware/python_3_8_2 Github] &lt;br /&gt;
|-&lt;br /&gt;
| FileTypeDetector for OpenVMS files&lt;br /&gt;
| Java NIO.2 FileTypeDetector Implementations for OpenVMS Specific Files&lt;br /&gt;
| Java&lt;br /&gt;
|&lt;br /&gt;
| Mark Wickens&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/urbancamo/openvms-filetype-detectors Github]&lt;br /&gt;
|-&lt;br /&gt;
| Fixfilenames &lt;br /&gt;
| A simple program to fix filenames copied from OpenVMS system&lt;br /&gt;
| Go&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 2013&lt;br /&gt;
| [https://github.com/marben/vmsfixfilenames Github]&lt;br /&gt;
|-&lt;br /&gt;
| FreeMind&lt;br /&gt;
| FreeMind is a mind mapping tool written in Java and published under GPL. FreeMind can be used to take notes, build a knowledge base or keep track of projects.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso&lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=freemind OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| GNU for OpenVMS &lt;br /&gt;
| The GNV Project implements a port of the GNU utilities to OpenVMS with the intent of providing a framework for porting open source software to OpenVMS. A complementary SourceForge Project is VMS-Ports (https://sourceforge.net/projects/vms-ports/), there are discussions of process and procedure there as well as regular conference calls with recordings to review progress and assess how to improve the environment.&lt;br /&gt;
| C&lt;br /&gt;
|&lt;br /&gt;
| John Malmberg and others&lt;br /&gt;
|&lt;br /&gt;
| [https://sourceforge.net/projects/gnv/ Github]&lt;br /&gt;
|-&lt;br /&gt;
| GT.M for Alpha&lt;br /&gt;
| GT.M[tm] is a vetted industrial strength, transaction processing application platform consisting of a key-value database engine optimized for extreme transaction processing throughput &amp;amp; business continuity.&lt;br /&gt;
|&lt;br /&gt;
| [[Alpha]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [https://sourceforge.net/projects/fis-gtm/files/GT.M-Alpha-OpenVMS/ Github]&lt;br /&gt;
|-&lt;br /&gt;
| GhostScript&lt;br /&gt;
| GhostScript for OpenVMS&lt;br /&gt;
| &lt;br /&gt;
| [[Alpha]], [[Integrity]]&lt;br /&gt;
| Github repositpries maintained by Troy Makaro&lt;br /&gt;
| 2000&lt;br /&gt;
| [https://github.com/OpenVMSGhostScript/ executables], [https://sourceforge.net/projects/ghostscript/files/AFPL%20Ghostscript/8.54/ sources]&lt;br /&gt;
|-&lt;br /&gt;
| Gnulib Assist&lt;br /&gt;
| The Gnulib Assist project is a set of routines and header files needed to try to get GNULIB to build on OpenVMS / Ia64.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| John Malmberg&lt;br /&gt;
|&lt;br /&gt;
| [https://sourceforge.net/p/gnv/wiki/Gnulib%20Assist/ Sourceforge]&lt;br /&gt;
|-&lt;br /&gt;
| ImageJ&lt;br /&gt;
| ImageJ is a tool for image processing and analysis written in Java and placed in the public domain. ImageJ supports the usual formats (GIF, JPEG, XPM, PNG, TIFF…) and may be extended by plugins (more than 300 plugins are available).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso&lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=imagej OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| JNA&lt;br /&gt;
| JNA (Java Native Access) is a Java library published under LGPL which provides Java programs easy access to native shared libraries (RTL, System services on OpenVMS) without writing anything but Java code – no JNI or native code is required.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Phillippe Vouters&lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=jnaJNA OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| JOnAS&lt;br /&gt;
| JOnAS is a J2EE application server published under LGPL.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Jean-Yves Bourlès and Thierry Uso&lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=jonas Jonas on OpenVMS Free softwares], [http://vmsfree.ouvaton.org/freen/index.php?s=jonas5 Jonas5 on OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| JRuby&lt;br /&gt;
| A port of JRuby to VMS (possibly frozen)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Philippe Vouters&lt;br /&gt;
| 2012 &lt;br /&gt;
| [https://github.com/Vouters/jruby-openvms Github]&lt;br /&gt;
|-&lt;br /&gt;
| JRuby&lt;br /&gt;
| JRuby is a Java implementation of the Ruby programming language, which means that the Ruby programs run atop the JVM. JRuby is released under a three-way CPL/GPL/LGPL license.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso and Philippe Vouters &lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=jruby OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| JRuby&lt;br /&gt;
| A port of JRuby to VMS (possibly frozen)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Philippe Vouters&lt;br /&gt;
| 2012 &lt;br /&gt;
| [https://github.com/Vouters/jruby-openvms Github]&lt;br /&gt;
|-&lt;br /&gt;
| JRuby&lt;br /&gt;
| JRuby is a Java implementation of the Ruby programming language, which means that the Ruby programs run atop the JVM. JRuby is released under a three-way CPL/GPL/LGPL license.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso and Philippe Vouters &lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=jruby OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| JTrac&lt;br /&gt;
| JTrac is an issue-tracking web application written in Java under Apache License. The application is fast, easy to use and highly customizable for any kind of issues (bugs, tasks…).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso&lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=jtrac OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| JXplorer&lt;br /&gt;
| JXplorer is a LDAP client written in Java and published under a standard OSI-style open source licence. It allows to browse and modify any LDAP directory or any X500 directory with a LDAP interface.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso &lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=jxplorer OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| JabRef&lt;br /&gt;
| JabRef is a bibliography reference manager written in Java and published under GPL. It uses BibTeX as bibliography file format and has advanced features (BibTeX editor, search function, classification of entries, import/export of various formats, launch of external viewers…).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso&lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=jabref OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| JavaRDP&lt;br /&gt;
| JavaRDP is a client for Windows Terminal Server written in Java and published under GPL. It is faster than VNC and can be used as a remote control tool.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso&lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=javardp OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| Jetty&lt;br /&gt;
| Jetty is a Web server (HTTP server and servlet container) for static and dynamic content written in Java under Apache 2.0 license.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso &lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=jetty Jetty on OpenVMS Free softwares], [http://vmsfree.ouvaton.org/freen/index.php?s=jetty6 Jetty 6 on OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| Jperf &lt;br /&gt;
| Jperf is a graphical frontend for Iperf written in Java. Iperf measures TCP and UDP performance (bandwidth, delay, jitter, loss). JPerf is released under a LGPL license.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso&lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=jperf OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| Jsynoptic&lt;br /&gt;
| Jsynoptic is a tool dedicated to render data graphically. It is written in Java under LGPL. Data can come from different sources (files, network…) and can be static or dynamic.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso &lt;br /&gt;
| &lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=jsynoptic OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| LIBVMS &lt;br /&gt;
| This package is a reimplementation of the OpenVMS system services for use in a POSIX environment.&lt;br /&gt;
| C&lt;br /&gt;
|&lt;br /&gt;
| Tim Sneddon&lt;br /&gt;
| 2013&lt;br /&gt;
| [https://github.com/tesneddon/libvms Github]&lt;br /&gt;
|-&lt;br /&gt;
| Lucane&lt;br /&gt;
| Lucane is a groupware platform written in Java and published under LGPL. It offers the usual groupware functions such as calendar, forum, instant messaging, file sharing… and may be easily extended by plugins. Lucane has an embedded database (hsqldb) but an external database (mySQL…) can be used instead of hsqldb. Users access Lucane by a Java client or a browser (IE, Mozilla…).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso &lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=lucane OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| MD5 sum &lt;br /&gt;
| A utility to print or check MD5 checksums (RFC 1321)&lt;br /&gt;
| &lt;br /&gt;
| [[VAX]], [[Alpha]]&lt;br /&gt;
| Alan Fay&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/alan-fay/openvms Github]&lt;br /&gt;
|-&lt;br /&gt;
| MMK/MAKE &lt;br /&gt;
| MMK is a &amp;quot;make&amp;quot; utility for VMS systems&lt;br /&gt;
| C, Macro&lt;br /&gt;
| [[VAX]], [[Alpha]], [[Integrity]]&lt;br /&gt;
| Matthew Madison&lt;br /&gt;
| 1992&lt;br /&gt;
| [https://github.com/endlesssoftware/mmk V5.1 on Github], V3.9-9 featured in [https://www.digiater.nl/openvms/freeware/v80/make-mmk/ Freeware CD V80]&lt;br /&gt;
|-&lt;br /&gt;
| MX &lt;br /&gt;
| Email-exchange software&lt;br /&gt;
| C, C++&lt;br /&gt;
| [[VAX]], [[Alpha]], [[Integrity]]&lt;br /&gt;
| Matthew Madison&lt;br /&gt;
| 1994&lt;br /&gt;
| [https://github.com/endlesssoftware/mx Version 6.0 on Github], featured in Freeware CD ([https://www.digiater.nl/openvms/freeware/v10/mx041/ V4.1], [https://www.digiater.nl/openvms/freeware/v30/mx041/ V4.2])&lt;br /&gt;
|-&lt;br /&gt;
| MakeShare&lt;br /&gt;
| Creates a command procedure to link a shared imaged from an object library&lt;br /&gt;
| DCL&lt;br /&gt;
| [[Alpha]] and [[Integrity]]&lt;br /&gt;
| Steve Ives&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/SteveIves/MakeShare Github]&lt;br /&gt;
|-&lt;br /&gt;
| Martineg&#039;s DCL scripts&lt;br /&gt;
| Miscellaneous DCL scripts: batch resubmit, LOGIN.COM, etc.&lt;br /&gt;
| DCL&lt;br /&gt;
| &lt;br /&gt;
| Martin Eggen&lt;br /&gt;
| &lt;br /&gt;
| [https://github.com/martineg/openvms-dcl Github]&lt;br /&gt;
|-&lt;br /&gt;
| MibbleBrowser&lt;br /&gt;
| MibbleBrowser is a SNMP MIB browser written in Java and published under GPL. It uses the Mibble library as SMI parser and supports SNMPv1, SNMPv2c and SNMPv3.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso &lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=mibble OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| NETLIB &lt;br /&gt;
| A library for writing TCP/IP based network applications. NETLIB provides a consistent, VMS-style interface for TCP/IP-based network programs, operating with all of the currently available TCP/IP packages available today for VMS (with one minor exception).  In addition, NETLIB allows for flexibility in in the use of a TCP/IP package, by selecting the vendor-dependent library code at run-time, rather than link-time.&lt;br /&gt;
| C, Visual Basic&lt;br /&gt;
| [[VAX]], [[Alpha]]&lt;br /&gt;
| Hunter Goatley&lt;br /&gt;
| &lt;br /&gt;
| [https://github.com/endlesssoftware/netlib Github]&lt;br /&gt;
|-&lt;br /&gt;
| NRPE daemon for OpenVMS &lt;br /&gt;
| A you to remotely execute Nagios plugins on OpenVMS machines.&lt;br /&gt;
| C&lt;br /&gt;
| [[VAX]], [[Alpha]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/ordenador/nrpevms Github]&lt;br /&gt;
|-&lt;br /&gt;
| Net-SNMP 5.0.1 port to OpenVMS&lt;br /&gt;
| Net-SNMP v5.0.1 port to OpenVMS&lt;br /&gt;
| C&lt;br /&gt;
| [[Alpha]]&lt;br /&gt;
| Ported to OpenVMS by Stewart M. Smith for Siemens AG, released by Giles Burrows (Siemens AG)&lt;br /&gt;
| 2016&lt;br /&gt;
| [https://github.com/tenox7/net-snmp-v501-vms Github]&lt;br /&gt;
|-&lt;br /&gt;
| NetElf &lt;br /&gt;
| Run the client side of NetELF to download and execute a program over the network from a server. The server sends an arbitrary binary and command-line arguments.&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| Harry Roberts&lt;br /&gt;
| 2017&lt;br /&gt;
| [https://github.com/XiphosResearch/netelf Github]&lt;br /&gt;
|-&lt;br /&gt;
| NetWhistler&lt;br /&gt;
| NetWhistler is a network mapping and monitoring tool written in Java and published under GPL. It includes network discovery and diagnostic tools (ping, services monitoring, MIB browser, SNMP trap receiver console, MRTG console…).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso &lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=netwhistler OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| ODS2 File System readers &lt;br /&gt;
| ODS2 is a program to read VMS disk volumes written in VMS ODS2 format. Provides cut down DIRECTORY, COPY and SEARCH commands for VMS volumes on non-VMS systems. These can be used to find out what is on a VMS volume, and copy files onto the local file sytem.&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| Paul Nankervis, maintained on Github by Oleg Pyzin&lt;br /&gt;
| 1998&lt;br /&gt;
| [https://github.com/FreeBSD-pzn/ods2 Github]&lt;br /&gt;
|-&lt;br /&gt;
| OMI&lt;br /&gt;
| A menu interpreter for OpenVMS, entirely written in DCL (OMI) &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Oscar van Eijk&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/oveas/OMI Github]&lt;br /&gt;
|-&lt;br /&gt;
| OmniORB for OpenVMS &lt;br /&gt;
| omniORB is a CORBA object request broker for C++ and Python. It is very fast, robust, and standards-compliant.&lt;br /&gt;
| C++&lt;br /&gt;
| [[Alpha]]&lt;br /&gt;
| Duncan Grisby&lt;br /&gt;
|&lt;br /&gt;
| [https://sourceforge.net/p/omniorb/svn/6253/tree/trunk/omniORB/readmes/README.openvms Github]&lt;br /&gt;
|-&lt;br /&gt;
| OpenBmx &lt;br /&gt;
| A Vagrantfile for a OpenVMS porting box using the alphavm emulator on a Ubuntu Linux box.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Martin Borgman&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/martinborgman/portingbox Github]&lt;br /&gt;
|-&lt;br /&gt;
| OpenSDL &lt;br /&gt;
| Open version of the OpenVMS Structure Definition Language (SDL).&lt;br /&gt;
| C, Yacc, Lex&lt;br /&gt;
|&lt;br /&gt;
| Jonathan Belanger&lt;br /&gt;
| 2007&lt;br /&gt;
| [https://github.com/JonathanBelanger/OpenSDL Github]&lt;br /&gt;
|-&lt;br /&gt;
| OpenVMS migration utilities &lt;br /&gt;
| A utility that converts a OpenVMS Variable Length (VL) format file into a stream of bytes with additional line endings if required.&lt;br /&gt;
| C, bash&lt;br /&gt;
| &lt;br /&gt;
| Freddie Akeroyd&lt;br /&gt;
| 2016&lt;br /&gt;
| [https://github.com/FreddieAkeroyd/VMS-utils Github]&lt;br /&gt;
|-&lt;br /&gt;
| OpenVMS-DCL-Sublime-Lang-Support&lt;br /&gt;
| This repository contains code necessary to make Sublime Text 3 aware of the &#039;DIGITAL Command Language&#039; used by HP&#039;s OpenVMS operating system.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Gleb Nikonorov&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/gnikonorov/OpenVMS-DCL-Sublime-Lang-Support Github]&lt;br /&gt;
|-&lt;br /&gt;
| OpenVMS-DCL-VSCODE-Lang-Support&lt;br /&gt;
| This extension is for DCL batch scripts. These are typically ran on OpenVMS systems, and are similar to BASH scripts&lt;br /&gt;
| TypeScript&lt;br /&gt;
|&lt;br /&gt;
| Tom Esparson based on work by Gleb Nikonorov&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/tomesparon/OpenVMS-DCL-VSCODE-Lang-Support Github]&lt;br /&gt;
|-&lt;br /&gt;
| OpenVMS-Oracle-Rdb-Toolset&lt;br /&gt;
| Ready to use procedures for a database administrator of Oracle Rdb databases on OpenVMS.  &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Luc Allemeersch&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/LucAllemeersch/OpenVMS-Oracle-Rdb-Toolset Github]&lt;br /&gt;
|-&lt;br /&gt;
| OpenVMS-RMS-DecBasic-Macro64&lt;br /&gt;
| Try to create a OpenVMS project from memory using RMS-FDL-DECBasic on a OpenVMS system. (notes)&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| Jason Loewecke&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/jloewecke/OpenVMS-RMS-DecBasic-Macro64 Github]&lt;br /&gt;
|-&lt;br /&gt;
| Openfire&lt;br /&gt;
| Openfire is an instant messaging written in Java and published under GPL. It uses the XMPP (also called Jabber) protocol.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso &lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=openfire OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| PLIBSYS&lt;br /&gt;
| A cross-platform system C library with some helpful routines. It has zero third-party dependencies and uses only native system calls.&lt;br /&gt;
| C, C++&lt;br /&gt;
|&lt;br /&gt;
| Alexander Saprykin&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/saprykin/plibsys Github], [https://github.com/saprykin/plibsys/wiki wiki]&lt;br /&gt;
|-&lt;br /&gt;
| REST API component of OVMS&lt;br /&gt;
| REST API component of the OVMS platform.&lt;br /&gt;
| Javascript&lt;br /&gt;
|&lt;br /&gt;
| Nathan (najowhit)&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/najowhit/nodeAPI_OpenVMS Github]&lt;br /&gt;
|-&lt;br /&gt;
| Ruby &lt;br /&gt;
| A port of Ruby for OpenVMS based on Ruby 1.8.2 (MRI). This work is in early alpha development stage and not suitable for release yet&lt;br /&gt;
| C, Ruby, HTML, Yacc&lt;br /&gt;
| [[Alpha]]&lt;br /&gt;
| Ben Armstrong&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/bg/vmsruby Github]&lt;br /&gt;
|-&lt;br /&gt;
| Ruby for openvms webpage archive&lt;br /&gt;
| Web pages dedicated to Ruby for OpenVMS&lt;br /&gt;
| HTML&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/xiaotuanzi/vmsruby Github]&lt;br /&gt;
|-&lt;br /&gt;
| SDL&lt;br /&gt;
| A portable processor for Structure Definition Language (a child of the OpenVMS SDL) &lt;br /&gt;
| C&lt;br /&gt;
|&lt;br /&gt;
| Ruslan Laishev&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/SysMan-One/SDL Github]&lt;br /&gt;
|-&lt;br /&gt;
| SIMH VAX VMS &lt;br /&gt;
| A MicroVAX 3900 simulator&lt;br /&gt;
|&lt;br /&gt;
| Docker&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/k3ck3c/simh_vax_vms Github]&lt;br /&gt;
|-&lt;br /&gt;
| SQLite 3 &lt;br /&gt;
| This is a native port of the SQLite database package to OpenVMS. It delivers the SQLite database to OpenVMS using the following native features:&lt;br /&gt;
* Thread support using the tis library.  This allows support for multi-threading without having to link against the pthreads RTL.&lt;br /&gt;
* Direct file access.  All files access is performed using the $QIO [[System Service|system services]], rather than the C RTL or even [[RMS]].&lt;br /&gt;
* Native locking.  All locking is handled using the OpenVMS [[Distributed Lock Manager|distributed lock manager]], allowing database access to be coordinated across [[Cluster|cluster]] nodes (of all architectures).&lt;br /&gt;
Despite these OpenVMS-specific improvements the database file maintained by SQLite is still portable to other SQLite-based applications running on other systems.&lt;br /&gt;
| C&lt;br /&gt;
| [[VAX]], [[Alpha]], [[Integrity]]&lt;br /&gt;
| Tim Sneddon&lt;br /&gt;
| 2013&lt;br /&gt;
| [https://github.com/endlesssoftware/sqlite3/blob/master/readme.txt Github]&lt;br /&gt;
|-&lt;br /&gt;
| SQuirreL&lt;br /&gt;
| SQuirreL is a SQL client written in Java and published under LGPL. It allows to view the structure of a JDBC compliant database, browse the data in tables, issue SQL commands…&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso&lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=squirrel OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| SYSUAF authentication for the Mosquito MQTT broker&lt;br /&gt;
| A simple plugin for the Mosquitto MQTT broker (http://mosquitto.org) that provides the ability for the broker to authenticate users via standard OpenVMS means (namely checking the supplied credentials against those in SYSUAF).&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| Brett Cameron&lt;br /&gt;
| &lt;br /&gt;
| [https://github.com/brc859844/mosquitto-auth-plugin-vms Github]&lt;br /&gt;
|-&lt;br /&gt;
| Scala&lt;br /&gt;
| Scala is a general purpose programming language published under a BSD-style license. It combines functional and object-oriented techniques, provides a number of powerful features (closures, actors…) and is fully interoperable with Java.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso&lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=scala OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| StarLet File Transfer Utility &lt;br /&gt;
| This is a utility to transfering VMS&#039;s files over the TCP/IP network to a remote non-VMS hosts, a like the FTP or SFTP but with additional features: resuming broken transfers and generating FDL file to help restoring RMS&#039;s attributes on VMS hosts.&lt;br /&gt;
| C&lt;br /&gt;
|&lt;br /&gt;
| Ruslan Laishev&lt;br /&gt;
| &lt;br /&gt;
| [https://github.com/SysMan-One/SFTU Github]&lt;br /&gt;
|-&lt;br /&gt;
| Superversion&lt;br /&gt;
| Superversion is a version control system written in Java and published under GPL. It is an alternative to free solutions (CVS, Subversion…) running on Unix or commercial solutions (CMS…) running on OpenVMS. The stable version (Superversion 1.2) is a standalone and single-user application. The following version (Superversion 2.0) will be a client-server and multi-user application.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso&lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=suv OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| T4 monitor &lt;br /&gt;
| t4Monitor is a module for Windows and Linux that allows easy collection, preprocessing and reporting of generic OpenVMS&#039; T4 compliant counters stored in Format-1 or Format-2 Comma Separated Values (CSV) files.&lt;br /&gt;
| Python&lt;br /&gt;
| &lt;br /&gt;
| J.M. Fernández&lt;br /&gt;
| 2014&lt;br /&gt;
| [https://github.com/fernandezcuesta/t4Monitor Github]&lt;br /&gt;
|-&lt;br /&gt;
| TAIL &lt;br /&gt;
| Performs a Variation of TYPE/TAIL on a File&lt;br /&gt;
| C&lt;br /&gt;
|&lt;br /&gt;
| Oleg Pyzin&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/FreeBSD-pzn/tail Github]&lt;br /&gt;
|-&lt;br /&gt;
| TAO&lt;br /&gt;
| CORBA implementation&lt;br /&gt;
| C++&lt;br /&gt;
| [[Alpha]], [[Integrity]]&lt;br /&gt;
| DOCGroup, ported by Remedy IT&lt;br /&gt;
| &lt;br /&gt;
| [https://github.com/DOCGroup/ACE_TAO Github]&lt;br /&gt;
|-&lt;br /&gt;
| UnQLite &lt;br /&gt;
| A VMS port of unqlite-db 1.1.6. UnQLite is a transactional NoSQL database in the same vein as SQLite.&lt;br /&gt;
| C&lt;br /&gt;
| [[Alpha]], [[Integrity]]&lt;br /&gt;
|&lt;br /&gt;
| 2012&lt;br /&gt;
| [https://github.com/endlesssoftware/unqlite Github]&lt;br /&gt;
|-&lt;br /&gt;
| UsingJenkinsCI (wiki) &lt;br /&gt;
| Using Jenkins CI To Build OpenVMS Programs&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| John Malmberg and others&lt;br /&gt;
|&lt;br /&gt;
| [https://sourceforge.net/p/vms-ports/wiki/UsingJenkinsCi/ Github]&lt;br /&gt;
|-&lt;br /&gt;
| VMS ports&lt;br /&gt;
| Open Source and Freeware for OpenVMS&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| collection by Bill Pedersen and others&lt;br /&gt;
|&lt;br /&gt;
| [https://sourceforge.net/projects/vms-ports/files/ Github]&lt;br /&gt;
|-&lt;br /&gt;
| VMSComFiles&lt;br /&gt;
| Lorin Ricker&#039;s personal VMS command and auxiliary support files &lt;br /&gt;
| [[DCL]]&lt;br /&gt;
| &lt;br /&gt;
| Lorin Ricker&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/LorinRicker/VMScomfiles Github]&lt;br /&gt;
|-&lt;br /&gt;
| VMS IDE&lt;br /&gt;
| Visual Studio Code Extension for OpenVMS&lt;br /&gt;
| [[C]]&lt;br /&gt;
| &lt;br /&gt;
| VMS Software&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/vmssoftware/vms-ide Github]&lt;br /&gt;
|- &lt;br /&gt;
| VMShistory&lt;br /&gt;
| A collection of historical and descriptive documents about the History and Development of the VMS (OpenVMS) operating system &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Lorin Ricker&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/LorinRicker/VMShistory Github]&lt;br /&gt;
|-&lt;br /&gt;
| VTFM https://github.com/FreeBSD-pzn/vtfm&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| VmsCompatibility&lt;br /&gt;
| A collection of DBL subroutines and functions that implement, emulate or shim the functionality of various OpenVMS system service routines.&lt;br /&gt;
| DBL&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Kish Baley&lt;br /&gt;
| [https://github.com/Synergex/VmsCompatibility Github]&lt;br /&gt;
|-&lt;br /&gt;
| WASD_LDAP_AUTHAGENT&lt;br /&gt;
| A modification to WASD that allows you to authenticate users against external LDAP server WITHOUT corresponding SYSUAF records.&lt;br /&gt;
| C++, Perl&lt;br /&gt;
|&lt;br /&gt;
| Thomas Morstein&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/ztmr/WASD_LDAP_AUTHAGENT Github]&lt;br /&gt;
|-&lt;br /&gt;
| WATCHER &lt;br /&gt;
| WATCHER is an idle terminal monitor. It logs out interactive users after a certain period of inactivity. WATCHER is fully configurable, allowing the system manager to define which terminals to watch, what measurements to use, and how long a terminal should be idle before getting zapped. It also includes provisions for preventing logouts or overriding inactivity settings based on any combination of username, UIC, terminal, privileges, image being run, held identifier, and time of day.&lt;br /&gt;
| BLISS&lt;br /&gt;
| [[VAX]], [[Alpha]], [[Integrity]]&lt;br /&gt;
| Matthew Madison&lt;br /&gt;
| 1994&lt;br /&gt;
| [https://github.com/endlesssoftware/watcher V4.1 on Github], [https://www.digiater.nl/openvms/freeware/v10/watcher/ V2.9-1 in Freeware]&lt;br /&gt;
|-&lt;br /&gt;
| Word count new utility. OpenVMS and *NIX OSes.&lt;br /&gt;
| Rework of wc&lt;br /&gt;
| C&lt;br /&gt;
|&lt;br /&gt;
| Oleg Pyzin based on original wc code&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/FreeBSD-pzn/wcn Github]&lt;br /&gt;
|-&lt;br /&gt;
| curl-parallel&lt;br /&gt;
| Using CURL to parallel download large datafiles &lt;br /&gt;
| DCL&lt;br /&gt;
|&lt;br /&gt;
| taupirho&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/taupirho/curl-parallel Github]&lt;br /&gt;
|-&lt;br /&gt;
| frontend_openvms&lt;br /&gt;
| OpenVMS Frontend&lt;br /&gt;
| Java, HTML, CSS&lt;br /&gt;
|&lt;br /&gt;
| Nathan (najowhit)&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/najowhit/frontend_OpenVMS Github]&lt;br /&gt;
|-&lt;br /&gt;
| httping&lt;br /&gt;
| httping is a command line tool monitoring the response time of a Web server. It is written in C and published under GPL.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso&lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=httping OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| iReport&lt;br /&gt;
| iReport is a data reporting tool written in Java and published under GPL. It offers a GUI to the report generator JasperReport. Reports can be built in several formats (PDF, HTML…) from data collected by JDBC…&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Jean-Yves Bourlès &lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=ireport OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| libffi&lt;br /&gt;
| libffi is a library which allows a programmer to call any function specified by a call interface description at run-time and which is used by Java (JNA), Python (Ctypes) and Jruby (Jffi). libffi is written in C and published under a very liberal license.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Philippe Vouters &lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=libffi OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| muCommander&lt;br /&gt;
| muCommander is a file manager written in Java and published under GPL. It has also the additional features of (S)FTP, NFS, SMB client and ZIP, JAR, TAR archive brower.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ported by Thierry Uso &lt;br /&gt;
|&lt;br /&gt;
| [http://vmsfree.ouvaton.org/freen/index.php?s=mucommander OpenVMS Free softwares]&lt;br /&gt;
|-&lt;br /&gt;
| shasum &lt;br /&gt;
| A utility to print or check SHA checksums (FIPS PUB 180-2)&lt;br /&gt;
| &lt;br /&gt;
| [[VAX]], [[Alpha]]&lt;br /&gt;
| Alan Fay&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/alan-fay/openvms Github]&lt;br /&gt;
|-&lt;br /&gt;
| spop3&lt;br /&gt;
| Pop3 server&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Ruslan R. Laishev&lt;br /&gt;
|&lt;br /&gt;
| [https://sourceforge.net/projects/vms-ports/files/spop3/ Sourceforge]&lt;br /&gt;
|-&lt;br /&gt;
| vmsbackup&lt;br /&gt;
| Program to read OpenVMS backup save sets on non-VMS machines &lt;br /&gt;
| C&lt;br /&gt;
|&lt;br /&gt;
| Freddie Akeroyd&lt;br /&gt;
|&lt;br /&gt;
| [https://github.com/FreddieAkeroyd/vmsbackup Github]&lt;br /&gt;
|-&lt;br /&gt;
| vmsperlkit&lt;br /&gt;
| Kitting procedures for Perl on OpenVMS&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Craig A. Berry&lt;br /&gt;
|&lt;br /&gt;
| [https://sourceforge.net/projects/vmsperlkit/files/ Sourceforge]&lt;br /&gt;
|-&lt;br /&gt;
| vmsport&lt;br /&gt;
| Experiments in porting an OpenVMS Fortran / Decforms application to Linux and Gfortran &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Svante Lidman&lt;br /&gt;
| [https://github.com/Coreboost/vmsport Github]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Freeware]]&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Axis2_-_Easy_Installation_Guide&amp;diff=2431</id>
		<title>Axis2 - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Axis2_-_Easy_Installation_Guide&amp;diff=2431"/>
		<updated>2021-10-07T15:40:21Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Enabling HTTPS for Axis2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide that will take you through how to install and configure Apache Axis2 for use with the Tomcat web server on OpenVMS. Before starting the installation, it is a good idea to read through the “Tomcat (CSWS JAVA) - Easy Installation Guide” and make sure that you have you installed and configured Tomcat correctly.&lt;br /&gt;
 &lt;br /&gt;
The document also contains instructions for how to set up an AJP Connector between CSWS Apache Web Server and Apache Axis2 on Tomcat. If that is something you wish to do, you need to already have Apache installed and fully configured on your system. For instructions on how to install and configure Apache, consult either the Apache release notes or the “Apache (CSWS) - Easy Installation Guide”.&lt;br /&gt;
&lt;br /&gt;
For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Go through the following steps to install Axis2.&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit with the $ RUN command &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-AXIS2-V0107-3-1.ZIPEXE &lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Then, install Axis2 with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product install axis2&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.AXIS2] &lt;br /&gt;
vsi-i64vms-axis2-v0107-3-1.pcsi$compressed;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected &lt;br /&gt;
product and for any products that may be installed to satisfy &lt;br /&gt;
software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS AXIS2 V1.7-3&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. and The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Minimum JDK software version not found on system, abort installation&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;This kit requires the minimum Java version of 1.8.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Terminating is strongly recommended.  Do you want to terminate? [YES] &amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=background:yellow&amp;gt;NO&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS AXIS2 V1.7-3                DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
%PCSIUI-I-COMPWERR, operation completed after explicit continuation &lt;br /&gt;
from errors&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Comment for the highlighted part of the installation output:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; If you have OpenJDK8 installed on a system that previously did not have JAVA installed on it, you will want to answer no to this question and allow the installation to complete. It will complete successfully. This will be fixed in a future release of VSI CSWS_JAVA and Axis2.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
These instructions will guide you through how to define the necessary Axis2 logicals on start-up before showing you how to set up the AJP Connector.&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up Commands==&lt;br /&gt;
&lt;br /&gt;
Follow these instructions if you want Axis2 logicals to be defined automatically when rebooting the system.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYLOGICALS.COM add the lines specified below (in the section where you are asked to define site-specific logicals) to define the Axis2 logicals on start-up. Make sure to specify the correct node for your system (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit sys$manager:sylogicals.com&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$! ******************************************************************&lt;br /&gt;
$! Define any site-specific logical names below:&lt;br /&gt;
$! ******************************************************************&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$  IF NODE .EQS. &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOUR_NODE_NAME&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
$  THEN&lt;br /&gt;
$    file := SYS$COMMON:[SYSMGR]AXIS2$DEFINE_LOGICALS.COM&lt;br /&gt;
$    &amp;lt;nowiki&amp;gt;if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
$ ENDIF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Defining Axis2 Logicals==&lt;br /&gt;
&lt;br /&gt;
Now is a good time to manually define the Axis2 logicals.&lt;br /&gt;
 &lt;br /&gt;
* Run the same file you included in the start-up procedure in the previous section. Most notably, this will define the logical AXIS2$ROOT – giving us easy access to the Axis2 root directory.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @SYS$COMMON:[SYSMGR]AXIS2$DEFINE_LOGICALS.COM&lt;br /&gt;
$ show logical *axis*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_89235900)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;AXIS$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;AXIS2$ROOT&amp;quot; = &amp;quot;DISK$SYS1:[SYS0.SYSCOMMON.axis2.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deploying Axis2 WAR File in Tomcat==&lt;br /&gt;
&lt;br /&gt;
To enable Axis2 and integrate it with Tomcat, we need to deploy the Axis2 WAR file in the directory TOMCAT$ROOT:[WEBAPPS].&lt;br /&gt;
&lt;br /&gt;
* Copy the file AXIS2$ROOT:[OPENVMS]axis2.war to TOMCAT$ROOT:[WEBAPPS] and make sure the file has TOMCAT$WWW as owner and the appropriate protections.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy /log axis2$root:[openvms]axis2.war tomcat$root:[webapps]&lt;br /&gt;
%COPY-S-COPIED, AXIS2$ROOT:[OpenVMS]axis2.war;1 copied to TOMCAT$ROOT:[webapps]axis2.war;1 (19.27MB)&lt;br /&gt;
&lt;br /&gt;
$ dir /sec tomcat$root:[webapps]axis2.*&lt;br /&gt;
&lt;br /&gt;
Directory TOMCAT$ROOT:[webapps]&lt;br /&gt;
&lt;br /&gt;
axis2.DIR;1          [TOMCAT$WWW]                     (RWED,RWED,RE,)&lt;br /&gt;
axis2.war;1          [TOMCAT$WWW]                     (RWED,RWED,RE,RE)&lt;br /&gt;
&lt;br /&gt;
Total of 1 file.&lt;br /&gt;
&lt;br /&gt;
$ set file /prot=(S:RWE,O:RWED,G,W) tomcat$root:[webapps]axis2.* /log&lt;br /&gt;
%SET-I-PROTECTED, TOMCAT$ROOT:[webapps]axis2.DIR;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
%SET-I-PROTECTED, TOMCAT$ROOT:[webapps]axis2.war;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
%SET-I-PROTECTED, TOMCAT$ROOT:[webapps.axis2]axis2-web.DIR;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If automatic deployment is configured correctly for Tomcat, the WAR file should be unpacked automatically during runtime, resulting in the creation of TOMCAT$ROOT:[WEBAPPS]axis2.DIR.&lt;br /&gt;
&lt;br /&gt;
* If you are in a production environment, or for some other reason do not wish to use automatic deployment, you may wish to deploy your WAR files using the Tomcat interface – this will allow you to deploy WAR files from a separate directory and thus run a lower risk of unexpectedly overwriting files in use. &lt;br /&gt;
&lt;br /&gt;
:You may also wish to disable automatic deployment, so that WAR files placed in your TOMCAT$ROOT:[WEBAPPS] directory do not automatically deploy and overwrite your existing configuration files. To do this, edit TOMCAT$ROOT:[CONF]server.xml and set autoDeploy to “false”, as shown below. Then restart Tomcat to implement the changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]server.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Host name=&amp;quot;localhost&amp;quot;  appBase=&amp;quot;webapps&amp;quot;&lt;br /&gt;
          unpackWARs=&amp;quot;true&amp;quot; autoDeploy=&amp;quot;&amp;lt;span style=background:yellow&amp;gt;false&amp;lt;/span&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DefaultContext reloadable=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Lastly, to manually deploy AXIS2$ROOT:[OPENVMS]axis2.war directly from its directory, visit your Tomcat server and enter the Manager App. Under “Deploy directory or WAR file located on server”, enter the information shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Context Path (required):		/axis2&lt;br /&gt;
XML Configuration file path:	&lt;br /&gt;
WAR or Directory path:		axis2$root:[openvms]axis2.war&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Although you set autoDeploy to “false”, Tomcat will still deploy WAR files on start-up. Therefore, to avoid unexpected deployment, it is advisable to keep WAR files you do not wish to deploy outside your TOMCAT$ROOT:[WEBAPPS] directory.&lt;br /&gt;
&lt;br /&gt;
==Enabling HTTPS for Axis2==&lt;br /&gt;
&lt;br /&gt;
* Change the Axis2 Administrator account username and password, edit the file TOMCAT$ROOT:[000000.webapps.axis2.WEB-INF.conf]axis2.xml and make sure that you change these two lines (located close to the top of the file) and set a secure password.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[000000.webapps.axis2.web-inf.conf]axis2.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;parameter name=&amp;quot;userName&amp;quot;&amp;gt;admin&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&amp;lt;parameter name=&amp;quot;password&amp;quot;&amp;gt;axis2&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the same file, if you wish to use HTTPS with Axis2, scroll down until you find the section that reads&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ================================================= --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Transport Ins --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- ================================================= --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- The default configuration assumes that AxisServlet only receives requests&lt;br /&gt;
         through HTTP. To allow HTTPS as well, configure a second AxisServletListener&lt;br /&gt;
         with name=&amp;quot;https&amp;quot; and specify the port parameter on both receivers.&lt;br /&gt;
         For more information, please have a look at the servlet transport documentation:&lt;br /&gt;
         http://axis.apache.org/axis2/java/core/docs/servlet-transport.html --&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Edit the lines directly underneath, adding the transportReceiver for HTTPS (highlighted in yellow), so that the two transportReceiver directives read&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;transportReceiver name=&amp;quot;http&amp;quot; &lt;br /&gt;
     class=&amp;quot;org.apache.axis2.transport.http.AxisServletListener&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;transportReceiver name=&amp;quot;https&amp;quot; &lt;br /&gt;
     class=&amp;quot;org.apache.axis2.transport.http.AxisServletListener&amp;quot;/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Make sure to restart Tomcat so that the configuration changes are implemented.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown.com&lt;br /&gt;
$ submit/user=tomcat$www/queue=sys$batch/parameters=(tomcat$www) -&lt;br /&gt;
_$ sys$startup:tomcat$startup.com&lt;br /&gt;
&lt;br /&gt;
$ show system&lt;br /&gt;
...&lt;br /&gt;
0000046F APACHE$TOMCAT   HIB      4    70149   0 00:00:53.85     56117  47489 M&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Lastly, connect to Axis2 using the HTTPS to test the connection with the URL shown below. If the connections fails, you may want to review this guide as well as the “Tomcat (CSWS JAVA) – Easy Installation Guide” or review the log files in TOMCAT$ROOT:[000000.logs].&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://your.server.com:8443/axis2/&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting up the AJP Connector==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up the AJP Connector, which will allow you to integrate Tomcat into an existing Apache Web Server installation so that you can access Axis2 through Apache. Thus, it is necessary for Apache to be installed and working correctly. For instruction on how to install Apache, see the “Apache (CSWS) - Easy Installation Guide”.&lt;br /&gt;
&lt;br /&gt;
* Edit the file TOMCAT$ROOT:[CONF]server.xml and confirm that the following directive is uncommented and that redirectPort points to the HTTPS port you have specified for Tomcat. If any of the information is incorrect, make the necessary changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]server.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Define an AJP 1.3 Connector on port 8009 --&amp;gt;&lt;br /&gt;
    &amp;lt;Connector port=&amp;quot;8009&amp;quot; protocol=&amp;quot;AJP/1.3&amp;quot; redirectPort=&amp;quot;8443&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next edit Apache’s main configuration file APACHE$ROOT:[000000.CONF]HTTPD.CONF and scroll down until you reach the list of loadable modules. Uncomment the following modules by removing the number signs (#) in front of the LoadModule directives.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule proxy_module                 modules/mod_proxy.exe&lt;br /&gt;
LoadModule proxy_ajp_module             modules/mod_proxy_ajp.exe&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Next, add the &amp;lt;Location&amp;gt; directive shown below at the very bottom of the same file. The DNS name highlighted in yellow should match that of your server. It is possible to use your IP address instead, though that might by-pass the certificate you have in place for your server and unable you from establishing an HTTPS connection to Axis2.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Location &amp;quot;/axis2&amp;quot;&amp;gt;&lt;br /&gt;
ProxyPass &amp;quot;ajp://&amp;lt;span style=background:yellow&amp;gt;example.eng.vmssoftware.com&amp;lt;/span&amp;gt;:8009/axis2&amp;quot;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Lastly, for Apache to implement these changes, it needs to be restarted. You can do this with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the AJP connector has been set up correctly, connect to Axis2 on either port 80 (HTTP) or port 443 (HTTPS). The 8009 port specified for the AJP Connector is used internally.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com:80/axis2/&lt;br /&gt;
https://example.eng.vmssoftware.com:443/axis2/&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To remove Axis2, follow these instructions. If you also want to remove Tomcat, make sure you remove Axis2 first.&lt;br /&gt;
&lt;br /&gt;
* First, shut down Tomcat.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown&lt;br /&gt;
%DCL-I-SUPERSEDE, previous value of JAVA$CLASSPATH has been superseded&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, uninstall Axis2 using the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove axis2&lt;br /&gt;
	&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    		VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    		VSI I64VMS AXIS2 V1.7-3                DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: &lt;br /&gt;
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    		VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you do not wish to remove Tomcat, but want to do a complete removal of Axis2, you can selectively remove the files belonging to Axis2 to inside TOMCAT$ROOT:[000000.webapps].&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ delete tomcat$root:[webapps]axis2.war;1 /conf&lt;br /&gt;
DELETE TOMCAT$ROOT:[webapps]axis2.war;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If using the $ DELETE /TREE command when deleting the Axis2.DIR directory structure inside TOMCAT$ROOT:[000000.webapps], make sure that you are not deleting any files by mistake before executing this command. All files will be deleted instantaneously, so use the command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ delete /tree TOMCAT$ROOT:[000000.webapps.AXIS2...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]error.jsp;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]HappyAxis.jsp;1 deleted &lt;br /&gt;
(24KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]index.jsp;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]listFaultyService.jsp;1 &lt;br /&gt;
deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]listGroupService.jsp;1 &lt;br /&gt;
deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]listServices.jsp;1 &lt;br /&gt;
deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$ delete TOMCAT$ROOT:[000000.webapps]AXIS2.DIR;1 /conf&lt;br /&gt;
DELETE TOMCAT$ROOT:[000000.webapps]axis2.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In addition to deleting the Axis2 files, you should also go through the configuration changes made earlier in this document and revert the relevant changes.&lt;br /&gt;
* If you want to completely remove any traces of Axis2 you should know that the AXIS2$ROOT logical is still defined, although it now points to a non-existent directory. You can remove the logical using the $ DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *axis2*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892FB880)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;AXIS2$ROOT&amp;quot; = &amp;quot;DISK$SYS1:[SYS0.SYSCOMMON.axis2.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
$ deassign /sys axis2$root&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you have a look inside SYS$STARTUP, you can see that there are also some Axis2 remnants remaining in there. You can either remove these files individually or with a wildcard qualifier (as shown below) together with the /CONFIRM qualifier. It is always advisable to use extra caution when deleting files, especially in system directories, since deleted files are not recoverable unless backed up. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir sys$startup:*axis2*&lt;br /&gt;
&lt;br /&gt;
Directory SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
&lt;br /&gt;
axis2$define_logicals.LOG;2             axis2$define_logicals.LOG;1&lt;br /&gt;
axis2-tmp-8889454529806580694^.tmp.DIR;1&lt;br /&gt;
&lt;br /&gt;
Total of 3 files.&lt;br /&gt;
&lt;br /&gt;
Directory SYS$COMMON:[SYSMGR]&lt;br /&gt;
&lt;br /&gt;
axis2$define_logicals.com;1&lt;br /&gt;
&lt;br /&gt;
Total of 1 file.&lt;br /&gt;
&lt;br /&gt;
Grand total of 2 directories, 3 files.&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]axis2$define_logicals.LOG;2 ? [N]: Y&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]axis2$define_logicals.LOG;1 ? [N]: Y&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]axis2-tmp-8889454529806580694^.tmp.DIR;1 ? [N]: Y&lt;br /&gt;
%DELETE-W-FILNOTDEL, error deleting SYS$SYSROOT:[SYSMGR]axis2-tmp-8889454529806580694^.tmp.DIR;1&lt;br /&gt;
-RMS-E-MKD, ACP could not mark file for deletion&lt;br /&gt;
-SYSTEM-F-DIRNOTEMPTY, directory file is not empty&lt;br /&gt;
DELETE SYS$COMMON:[SYSMGR]axis2$define_logicals.com;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Axis2_-_Easy_Installation_Guide&amp;diff=2430</id>
		<title>Axis2 - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Axis2_-_Easy_Installation_Guide&amp;diff=2430"/>
		<updated>2021-10-07T15:37:34Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Automatic Start-up Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide that will take you through how to install and configure Apache Axis2 for use with the Tomcat web server on OpenVMS. Before starting the installation, it is a good idea to read through the “Tomcat (CSWS JAVA) - Easy Installation Guide” and make sure that you have you installed and configured Tomcat correctly.&lt;br /&gt;
 &lt;br /&gt;
The document also contains instructions for how to set up an AJP Connector between CSWS Apache Web Server and Apache Axis2 on Tomcat. If that is something you wish to do, you need to already have Apache installed and fully configured on your system. For instructions on how to install and configure Apache, consult either the Apache release notes or the “Apache (CSWS) - Easy Installation Guide”.&lt;br /&gt;
&lt;br /&gt;
For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Go through the following steps to install Axis2.&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit with the $ RUN command &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-AXIS2-V0107-3-1.ZIPEXE &lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Then, install Axis2 with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product install axis2&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.AXIS2] &lt;br /&gt;
vsi-i64vms-axis2-v0107-3-1.pcsi$compressed;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected &lt;br /&gt;
product and for any products that may be installed to satisfy &lt;br /&gt;
software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS AXIS2 V1.7-3&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. and The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Minimum JDK software version not found on system, abort installation&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;This kit requires the minimum Java version of 1.8.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Terminating is strongly recommended.  Do you want to terminate? [YES] &amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=background:yellow&amp;gt;NO&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS AXIS2 V1.7-3                DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
%PCSIUI-I-COMPWERR, operation completed after explicit continuation &lt;br /&gt;
from errors&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Comment for the highlighted part of the installation output:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; If you have OpenJDK8 installed on a system that previously did not have JAVA installed on it, you will want to answer no to this question and allow the installation to complete. It will complete successfully. This will be fixed in a future release of VSI CSWS_JAVA and Axis2.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
These instructions will guide you through how to define the necessary Axis2 logicals on start-up before showing you how to set up the AJP Connector.&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up Commands==&lt;br /&gt;
&lt;br /&gt;
Follow these instructions if you want Axis2 logicals to be defined automatically when rebooting the system.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYLOGICALS.COM add the lines specified below (in the section where you are asked to define site-specific logicals) to define the Axis2 logicals on start-up. Make sure to specify the correct node for your system (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit sys$manager:sylogicals.com&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$! ******************************************************************&lt;br /&gt;
$! Define any site-specific logical names below:&lt;br /&gt;
$! ******************************************************************&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$  IF NODE .EQS. &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOUR_NODE_NAME&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
$  THEN&lt;br /&gt;
$    file := SYS$COMMON:[SYSMGR]AXIS2$DEFINE_LOGICALS.COM&lt;br /&gt;
$    &amp;lt;nowiki&amp;gt;if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
$ ENDIF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Defining Axis2 Logicals==&lt;br /&gt;
&lt;br /&gt;
Now is a good time to manually define the Axis2 logicals.&lt;br /&gt;
 &lt;br /&gt;
* Run the same file you included in the start-up procedure in the previous section. Most notably, this will define the logical AXIS2$ROOT – giving us easy access to the Axis2 root directory.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @SYS$COMMON:[SYSMGR]AXIS2$DEFINE_LOGICALS.COM&lt;br /&gt;
$ show logical *axis*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_89235900)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;AXIS$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;AXIS2$ROOT&amp;quot; = &amp;quot;DISK$SYS1:[SYS0.SYSCOMMON.axis2.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deploying Axis2 WAR File in Tomcat==&lt;br /&gt;
&lt;br /&gt;
To enable Axis2 and integrate it with Tomcat, we need to deploy the Axis2 WAR file in the directory TOMCAT$ROOT:[WEBAPPS].&lt;br /&gt;
&lt;br /&gt;
* Copy the file AXIS2$ROOT:[OPENVMS]axis2.war to TOMCAT$ROOT:[WEBAPPS] and make sure the file has TOMCAT$WWW as owner and the appropriate protections.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy /log axis2$root:[openvms]axis2.war tomcat$root:[webapps]&lt;br /&gt;
%COPY-S-COPIED, AXIS2$ROOT:[OpenVMS]axis2.war;1 copied to TOMCAT$ROOT:[webapps]axis2.war;1 (19.27MB)&lt;br /&gt;
&lt;br /&gt;
$ dir /sec tomcat$root:[webapps]axis2.*&lt;br /&gt;
&lt;br /&gt;
Directory TOMCAT$ROOT:[webapps]&lt;br /&gt;
&lt;br /&gt;
axis2.DIR;1          [TOMCAT$WWW]                     (RWED,RWED,RE,)&lt;br /&gt;
axis2.war;1          [TOMCAT$WWW]                     (RWED,RWED,RE,RE)&lt;br /&gt;
&lt;br /&gt;
Total of 1 file.&lt;br /&gt;
&lt;br /&gt;
$ set file /prot=(S:RWE,O:RWED,G,W) tomcat$root:[webapps]axis2.* /log&lt;br /&gt;
%SET-I-PROTECTED, TOMCAT$ROOT:[webapps]axis2.DIR;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
%SET-I-PROTECTED, TOMCAT$ROOT:[webapps]axis2.war;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
%SET-I-PROTECTED, TOMCAT$ROOT:[webapps.axis2]axis2-web.DIR;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If automatic deployment is configured correctly for Tomcat, the WAR file should be unpacked automatically during runtime, resulting in the creation of TOMCAT$ROOT:[WEBAPPS]axis2.DIR.&lt;br /&gt;
&lt;br /&gt;
* If you are in a production environment, or for some other reason do not wish to use automatic deployment, you may wish to deploy your WAR files using the Tomcat interface – this will allow you to deploy WAR files from a separate directory and thus run a lower risk of unexpectedly overwriting files in use. &lt;br /&gt;
&lt;br /&gt;
:You may also wish to disable automatic deployment, so that WAR files placed in your TOMCAT$ROOT:[WEBAPPS] directory do not automatically deploy and overwrite your existing configuration files. To do this, edit TOMCAT$ROOT:[CONF]server.xml and set autoDeploy to “false”, as shown below. Then restart Tomcat to implement the changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]server.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Host name=&amp;quot;localhost&amp;quot;  appBase=&amp;quot;webapps&amp;quot;&lt;br /&gt;
          unpackWARs=&amp;quot;true&amp;quot; autoDeploy=&amp;quot;&amp;lt;span style=background:yellow&amp;gt;false&amp;lt;/span&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DefaultContext reloadable=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Lastly, to manually deploy AXIS2$ROOT:[OPENVMS]axis2.war directly from its directory, visit your Tomcat server and enter the Manager App. Under “Deploy directory or WAR file located on server”, enter the information shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Context Path (required):		/axis2&lt;br /&gt;
XML Configuration file path:	&lt;br /&gt;
WAR or Directory path:		axis2$root:[openvms]axis2.war&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Although you set autoDeploy to “false”, Tomcat will still deploy WAR files on start-up. Therefore, to avoid unexpected deployment, it is advisable to keep WAR files you do not wish to deploy outside your TOMCAT$ROOT:[WEBAPPS] directory.&lt;br /&gt;
&lt;br /&gt;
==Enabling HTTPS for Axis2==&lt;br /&gt;
&lt;br /&gt;
* Change the Axis2 Administrator account username and password, edit the file TOMCAT$ROOT:[000000.webapps.axis2.WEB-INF.conf]axis2.xml and make sure that you change these two lines (located close to the top of the file) and set a secure password.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[000000.webapps.axis2.web-inf.conf]axis2.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;parameter name=&amp;quot;userName&amp;quot;&amp;gt;admin&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&amp;lt;parameter name=&amp;quot;password&amp;quot;&amp;gt;axis2&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the same file, if you wish to use HTTPS with Axis2, scroll down until you find the section that reads&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ================================================= --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Transport Ins --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- ================================================= --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- The default configuration assumes that AxisServlet only receives requests&lt;br /&gt;
         through HTTP. To allow HTTPS as well, configure a second AxisServletListener&lt;br /&gt;
         with name=&amp;quot;https&amp;quot; and specify the port parameter on both receivers.&lt;br /&gt;
         For more information, please have a look at the servlet transport documentation:&lt;br /&gt;
         http://axis.apache.org/axis2/java/core/docs/servlet-transport.html --&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Edit the lines directly underneath, adding the transportReceiver for HTTPS (highlighted in yellow), so that the two transportReceiver directives read&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;transportReceiver name=&amp;quot;http&amp;quot; &lt;br /&gt;
     class=&amp;quot;org.apache.axis2.transport.http.AxisServletListener&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;transportReceiver name=&amp;quot;https&amp;quot; &lt;br /&gt;
     class=&amp;quot;org.apache.axis2.transport.http.AxisServletListener&amp;quot;/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Make sure to restart Tomcat so that the configuration changes are implemented.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown.com&lt;br /&gt;
$ submit/user=tomcat$www/queue=sys$batch/parameters=(tomcat$www) -&lt;br /&gt;
_$ sys$startup:tomcat$startup.com&lt;br /&gt;
$ show system&lt;br /&gt;
...&lt;br /&gt;
0000046F APACHE$TOMCAT   HIB      4    70149   0 00:00:53.85     56117  47489 M&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Lastly, connect to Axis2 using the HTTPS to test the connection with the URL shown below. If the connections fails, you may want to review this guide as well as the “Tomcat (CSWS JAVA) – Easy Installation Guide” or review the log files in TOMCAT$ROOT:[000000.logs].&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://your.server.com:8443/axis2/&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting up the AJP Connector==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up the AJP Connector, which will allow you to integrate Tomcat into an existing Apache Web Server installation so that you can access Axis2 through Apache. Thus, it is necessary for Apache to be installed and working correctly. For instruction on how to install Apache, see the “Apache (CSWS) - Easy Installation Guide”.&lt;br /&gt;
&lt;br /&gt;
* Edit the file TOMCAT$ROOT:[CONF]server.xml and confirm that the following directive is uncommented and that redirectPort points to the HTTPS port you have specified for Tomcat. If any of the information is incorrect, make the necessary changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]server.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Define an AJP 1.3 Connector on port 8009 --&amp;gt;&lt;br /&gt;
    &amp;lt;Connector port=&amp;quot;8009&amp;quot; protocol=&amp;quot;AJP/1.3&amp;quot; redirectPort=&amp;quot;8443&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next edit Apache’s main configuration file APACHE$ROOT:[000000.CONF]HTTPD.CONF and scroll down until you reach the list of loadable modules. Uncomment the following modules by removing the number signs (#) in front of the LoadModule directives.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule proxy_module                 modules/mod_proxy.exe&lt;br /&gt;
LoadModule proxy_ajp_module             modules/mod_proxy_ajp.exe&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Next, add the &amp;lt;Location&amp;gt; directive shown below at the very bottom of the same file. The DNS name highlighted in yellow should match that of your server. It is possible to use your IP address instead, though that might by-pass the certificate you have in place for your server and unable you from establishing an HTTPS connection to Axis2.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Location &amp;quot;/axis2&amp;quot;&amp;gt;&lt;br /&gt;
ProxyPass &amp;quot;ajp://&amp;lt;span style=background:yellow&amp;gt;example.eng.vmssoftware.com&amp;lt;/span&amp;gt;:8009/axis2&amp;quot;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Lastly, for Apache to implement these changes, it needs to be restarted. You can do this with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the AJP connector has been set up correctly, connect to Axis2 on either port 80 (HTTP) or port 443 (HTTPS). The 8009 port specified for the AJP Connector is used internally.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com:80/axis2/&lt;br /&gt;
https://example.eng.vmssoftware.com:443/axis2/&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To remove Axis2, follow these instructions. If you also want to remove Tomcat, make sure you remove Axis2 first.&lt;br /&gt;
&lt;br /&gt;
* First, shut down Tomcat.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown&lt;br /&gt;
%DCL-I-SUPERSEDE, previous value of JAVA$CLASSPATH has been superseded&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, uninstall Axis2 using the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove axis2&lt;br /&gt;
	&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    		VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    		VSI I64VMS AXIS2 V1.7-3                DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: &lt;br /&gt;
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    		VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you do not wish to remove Tomcat, but want to do a complete removal of Axis2, you can selectively remove the files belonging to Axis2 to inside TOMCAT$ROOT:[000000.webapps].&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ delete tomcat$root:[webapps]axis2.war;1 /conf&lt;br /&gt;
DELETE TOMCAT$ROOT:[webapps]axis2.war;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If using the $ DELETE /TREE command when deleting the Axis2.DIR directory structure inside TOMCAT$ROOT:[000000.webapps], make sure that you are not deleting any files by mistake before executing this command. All files will be deleted instantaneously, so use the command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ delete /tree TOMCAT$ROOT:[000000.webapps.AXIS2...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]error.jsp;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]HappyAxis.jsp;1 deleted &lt;br /&gt;
(24KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]index.jsp;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]listFaultyService.jsp;1 &lt;br /&gt;
deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]listGroupService.jsp;1 &lt;br /&gt;
deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]listServices.jsp;1 &lt;br /&gt;
deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$ delete TOMCAT$ROOT:[000000.webapps]AXIS2.DIR;1 /conf&lt;br /&gt;
DELETE TOMCAT$ROOT:[000000.webapps]axis2.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In addition to deleting the Axis2 files, you should also go through the configuration changes made earlier in this document and revert the relevant changes.&lt;br /&gt;
* If you want to completely remove any traces of Axis2 you should know that the AXIS2$ROOT logical is still defined, although it now points to a non-existent directory. You can remove the logical using the $ DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *axis2*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892FB880)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;AXIS2$ROOT&amp;quot; = &amp;quot;DISK$SYS1:[SYS0.SYSCOMMON.axis2.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
$ deassign /sys axis2$root&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you have a look inside SYS$STARTUP, you can see that there are also some Axis2 remnants remaining in there. You can either remove these files individually or with a wildcard qualifier (as shown below) together with the /CONFIRM qualifier. It is always advisable to use extra caution when deleting files, especially in system directories, since deleted files are not recoverable unless backed up. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir sys$startup:*axis2*&lt;br /&gt;
&lt;br /&gt;
Directory SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
&lt;br /&gt;
axis2$define_logicals.LOG;2             axis2$define_logicals.LOG;1&lt;br /&gt;
axis2-tmp-8889454529806580694^.tmp.DIR;1&lt;br /&gt;
&lt;br /&gt;
Total of 3 files.&lt;br /&gt;
&lt;br /&gt;
Directory SYS$COMMON:[SYSMGR]&lt;br /&gt;
&lt;br /&gt;
axis2$define_logicals.com;1&lt;br /&gt;
&lt;br /&gt;
Total of 1 file.&lt;br /&gt;
&lt;br /&gt;
Grand total of 2 directories, 3 files.&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]axis2$define_logicals.LOG;2 ? [N]: Y&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]axis2$define_logicals.LOG;1 ? [N]: Y&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]axis2-tmp-8889454529806580694^.tmp.DIR;1 ? [N]: Y&lt;br /&gt;
%DELETE-W-FILNOTDEL, error deleting SYS$SYSROOT:[SYSMGR]axis2-tmp-8889454529806580694^.tmp.DIR;1&lt;br /&gt;
-RMS-E-MKD, ACP could not mark file for deletion&lt;br /&gt;
-SYSTEM-F-DIRNOTEMPTY, directory file is not empty&lt;br /&gt;
DELETE SYS$COMMON:[SYSMGR]axis2$define_logicals.com;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Axis2_-_Easy_Installation_Guide&amp;diff=2429</id>
		<title>Axis2 - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Axis2_-_Easy_Installation_Guide&amp;diff=2429"/>
		<updated>2021-10-07T15:27:14Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: Created page with &amp;quot;This is an easy installation guide that will take you through how to install and configure Apache Axis2 for use with the Tomcat web server on OpenVMS. Before starting the inst...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide that will take you through how to install and configure Apache Axis2 for use with the Tomcat web server on OpenVMS. Before starting the installation, it is a good idea to read through the “Tomcat (CSWS JAVA) - Easy Installation Guide” and make sure that you have you installed and configured Tomcat correctly.&lt;br /&gt;
 &lt;br /&gt;
The document also contains instructions for how to set up an AJP Connector between CSWS Apache Web Server and Apache Axis2 on Tomcat. If that is something you wish to do, you need to already have Apache installed and fully configured on your system. For instructions on how to install and configure Apache, consult either the Apache release notes or the “Apache (CSWS) - Easy Installation Guide”.&lt;br /&gt;
&lt;br /&gt;
For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Go through the following steps to install Axis2.&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit with the $ RUN command &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-AXIS2-V0107-3-1.ZIPEXE &lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Then, install Axis2 with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product install axis2&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.AXIS2] &lt;br /&gt;
vsi-i64vms-axis2-v0107-3-1.pcsi$compressed;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected &lt;br /&gt;
product and for any products that may be installed to satisfy &lt;br /&gt;
software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS AXIS2 V1.7-3&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. and The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Minimum JDK software version not found on system, abort installation&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;This kit requires the minimum Java version of 1.8.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Terminating is strongly recommended.  Do you want to terminate? [YES] &amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span style=background:yellow&amp;gt;NO&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS AXIS2 V1.7-3                DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
%PCSIUI-I-COMPWERR, operation completed after explicit continuation &lt;br /&gt;
from errors&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Comment for the highlighted part of the installation output:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; If you have OpenJDK8 installed on a system that previously did not have JAVA installed on it, you will want to answer no to this question and allow the installation to complete. It will complete successfully. This will be fixed in a future release of VSI CSWS_JAVA and Axis2.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
These instructions will guide you through how to define the necessary Axis2 logicals on start-up before showing you how to set up the AJP Connector.&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up Commands==&lt;br /&gt;
&lt;br /&gt;
Follow these instructions if you want Axis2 logicals to be defined automatically when rebooting the system.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYLOGICALS.COM add the lines specified below (in the section where you are asked to define site-specific logicals) to define the Axis2 logicals on start-up. Make sure to specify the correct node for your system (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit sys$manager:sylogicals.com&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$! ******************************************************************&lt;br /&gt;
$! Define any site-specific logical names below:&lt;br /&gt;
$! ******************************************************************&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$  IF NODE .EQS. &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOUR_NODE_NAME&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
$  THEN&lt;br /&gt;
$    file := SYS$COMMON:[SYSMGR]AXIS2$DEFINE_LOGICALS.COM&lt;br /&gt;
$    if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
$ ENDIF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Defining Axis2 Logicals==&lt;br /&gt;
&lt;br /&gt;
Now is a good time to manually define the Axis2 logicals.&lt;br /&gt;
 &lt;br /&gt;
* Run the same file you included in the start-up procedure in the previous section. Most notably, this will define the logical AXIS2$ROOT – giving us easy access to the Axis2 root directory.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @SYS$COMMON:[SYSMGR]AXIS2$DEFINE_LOGICALS.COM&lt;br /&gt;
$ show logical *axis*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_89235900)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;AXIS$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;AXIS2$ROOT&amp;quot; = &amp;quot;DISK$SYS1:[SYS0.SYSCOMMON.axis2.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deploying Axis2 WAR File in Tomcat==&lt;br /&gt;
&lt;br /&gt;
To enable Axis2 and integrate it with Tomcat, we need to deploy the Axis2 WAR file in the directory TOMCAT$ROOT:[WEBAPPS].&lt;br /&gt;
&lt;br /&gt;
* Copy the file AXIS2$ROOT:[OPENVMS]axis2.war to TOMCAT$ROOT:[WEBAPPS] and make sure the file has TOMCAT$WWW as owner and the appropriate protections.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy /log axis2$root:[openvms]axis2.war tomcat$root:[webapps]&lt;br /&gt;
%COPY-S-COPIED, AXIS2$ROOT:[OpenVMS]axis2.war;1 copied to TOMCAT$ROOT:[webapps]axis2.war;1 (19.27MB)&lt;br /&gt;
&lt;br /&gt;
$ dir /sec tomcat$root:[webapps]axis2.*&lt;br /&gt;
&lt;br /&gt;
Directory TOMCAT$ROOT:[webapps]&lt;br /&gt;
&lt;br /&gt;
axis2.DIR;1          [TOMCAT$WWW]                     (RWED,RWED,RE,)&lt;br /&gt;
axis2.war;1          [TOMCAT$WWW]                     (RWED,RWED,RE,RE)&lt;br /&gt;
&lt;br /&gt;
Total of 1 file.&lt;br /&gt;
&lt;br /&gt;
$ set file /prot=(S:RWE,O:RWED,G,W) tomcat$root:[webapps]axis2.* /log&lt;br /&gt;
%SET-I-PROTECTED, TOMCAT$ROOT:[webapps]axis2.DIR;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
%SET-I-PROTECTED, TOMCAT$ROOT:[webapps]axis2.war;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
%SET-I-PROTECTED, TOMCAT$ROOT:[webapps.axis2]axis2-web.DIR;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If automatic deployment is configured correctly for Tomcat, the WAR file should be unpacked automatically during runtime, resulting in the creation of TOMCAT$ROOT:[WEBAPPS]axis2.DIR.&lt;br /&gt;
&lt;br /&gt;
* If you are in a production environment, or for some other reason do not wish to use automatic deployment, you may wish to deploy your WAR files using the Tomcat interface – this will allow you to deploy WAR files from a separate directory and thus run a lower risk of unexpectedly overwriting files in use. &lt;br /&gt;
&lt;br /&gt;
:You may also wish to disable automatic deployment, so that WAR files placed in your TOMCAT$ROOT:[WEBAPPS] directory do not automatically deploy and overwrite your existing configuration files. To do this, edit TOMCAT$ROOT:[CONF]server.xml and set autoDeploy to “false”, as shown below. Then restart Tomcat to implement the changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]server.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Host name=&amp;quot;localhost&amp;quot;  appBase=&amp;quot;webapps&amp;quot;&lt;br /&gt;
          unpackWARs=&amp;quot;true&amp;quot; autoDeploy=&amp;quot;&amp;lt;span style=background:yellow&amp;gt;false&amp;lt;/span&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DefaultContext reloadable=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Lastly, to manually deploy AXIS2$ROOT:[OPENVMS]axis2.war directly from its directory, visit your Tomcat server and enter the Manager App. Under “Deploy directory or WAR file located on server”, enter the information shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Context Path (required):		/axis2&lt;br /&gt;
XML Configuration file path:	&lt;br /&gt;
WAR or Directory path:		axis2$root:[openvms]axis2.war&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Although you set autoDeploy to “false”, Tomcat will still deploy WAR files on start-up. Therefore, to avoid unexpected deployment, it is advisable to keep WAR files you do not wish to deploy outside your TOMCAT$ROOT:[WEBAPPS] directory.&lt;br /&gt;
&lt;br /&gt;
==Enabling HTTPS for Axis2==&lt;br /&gt;
&lt;br /&gt;
* Change the Axis2 Administrator account username and password, edit the file TOMCAT$ROOT:[000000.webapps.axis2.WEB-INF.conf]axis2.xml and make sure that you change these two lines (located close to the top of the file) and set a secure password.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[000000.webapps.axis2.web-inf.conf]axis2.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;parameter name=&amp;quot;userName&amp;quot;&amp;gt;admin&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&amp;lt;parameter name=&amp;quot;password&amp;quot;&amp;gt;axis2&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the same file, if you wish to use HTTPS with Axis2, scroll down until you find the section that reads&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ================================================= --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Transport Ins --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- ================================================= --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- The default configuration assumes that AxisServlet only receives requests&lt;br /&gt;
         through HTTP. To allow HTTPS as well, configure a second AxisServletListener&lt;br /&gt;
         with name=&amp;quot;https&amp;quot; and specify the port parameter on both receivers.&lt;br /&gt;
         For more information, please have a look at the servlet transport documentation:&lt;br /&gt;
         http://axis.apache.org/axis2/java/core/docs/servlet-transport.html --&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Edit the lines directly underneath, adding the transportReceiver for HTTPS (highlighted in yellow), so that the two transportReceiver directives read&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;transportReceiver name=&amp;quot;http&amp;quot; &lt;br /&gt;
     class=&amp;quot;org.apache.axis2.transport.http.AxisServletListener&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;transportReceiver name=&amp;quot;https&amp;quot; &lt;br /&gt;
     class=&amp;quot;org.apache.axis2.transport.http.AxisServletListener&amp;quot;/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Make sure to restart Tomcat so that the configuration changes are implemented.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown.com&lt;br /&gt;
$ submit/user=tomcat$www/queue=sys$batch/parameters=(tomcat$www) -&lt;br /&gt;
_$ sys$startup:tomcat$startup.com&lt;br /&gt;
$ show system&lt;br /&gt;
...&lt;br /&gt;
0000046F APACHE$TOMCAT   HIB      4    70149   0 00:00:53.85     56117  47489 M&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Lastly, connect to Axis2 using the HTTPS to test the connection with the URL shown below. If the connections fails, you may want to review this guide as well as the “Tomcat (CSWS JAVA) – Easy Installation Guide” or review the log files in TOMCAT$ROOT:[000000.logs].&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://your.server.com:8443/axis2/&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting up the AJP Connector==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up the AJP Connector, which will allow you to integrate Tomcat into an existing Apache Web Server installation so that you can access Axis2 through Apache. Thus, it is necessary for Apache to be installed and working correctly. For instruction on how to install Apache, see the “Apache (CSWS) - Easy Installation Guide”.&lt;br /&gt;
&lt;br /&gt;
* Edit the file TOMCAT$ROOT:[CONF]server.xml and confirm that the following directive is uncommented and that redirectPort points to the HTTPS port you have specified for Tomcat. If any of the information is incorrect, make the necessary changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]server.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Define an AJP 1.3 Connector on port 8009 --&amp;gt;&lt;br /&gt;
    &amp;lt;Connector port=&amp;quot;8009&amp;quot; protocol=&amp;quot;AJP/1.3&amp;quot; redirectPort=&amp;quot;8443&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next edit Apache’s main configuration file APACHE$ROOT:[000000.CONF]HTTPD.CONF and scroll down until you reach the list of loadable modules. Uncomment the following modules by removing the number signs (#) in front of the LoadModule directives.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule proxy_module                 modules/mod_proxy.exe&lt;br /&gt;
LoadModule proxy_ajp_module             modules/mod_proxy_ajp.exe&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Next, add the &amp;lt;Location&amp;gt; directive shown below at the very bottom of the same file. The DNS name highlighted in yellow should match that of your server. It is possible to use your IP address instead, though that might by-pass the certificate you have in place for your server and unable you from establishing an HTTPS connection to Axis2.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Location &amp;quot;/axis2&amp;quot;&amp;gt;&lt;br /&gt;
ProxyPass &amp;quot;ajp://&amp;lt;span style=background:yellow&amp;gt;example.eng.vmssoftware.com&amp;lt;/span&amp;gt;:8009/axis2&amp;quot;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Lastly, for Apache to implement these changes, it needs to be restarted. You can do this with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the AJP connector has been set up correctly, connect to Axis2 on either port 80 (HTTP) or port 443 (HTTPS). The 8009 port specified for the AJP Connector is used internally.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com:80/axis2/&lt;br /&gt;
https://example.eng.vmssoftware.com:443/axis2/&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To remove Axis2, follow these instructions. If you also want to remove Tomcat, make sure you remove Axis2 first.&lt;br /&gt;
&lt;br /&gt;
* First, shut down Tomcat.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown&lt;br /&gt;
%DCL-I-SUPERSEDE, previous value of JAVA$CLASSPATH has been superseded&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, uninstall Axis2 using the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove axis2&lt;br /&gt;
	&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    		VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    		VSI I64VMS AXIS2 V1.7-3                DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: &lt;br /&gt;
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    		VSI I64VMS AXIS2 V1.7-3                Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you do not wish to remove Tomcat, but want to do a complete removal of Axis2, you can selectively remove the files belonging to Axis2 to inside TOMCAT$ROOT:[000000.webapps].&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ delete tomcat$root:[webapps]axis2.war;1 /conf&lt;br /&gt;
DELETE TOMCAT$ROOT:[webapps]axis2.war;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If using the $ DELETE /TREE command when deleting the Axis2.DIR directory structure inside TOMCAT$ROOT:[000000.webapps], make sure that you are not deleting any files by mistake before executing this command. All files will be deleted instantaneously, so use the command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ delete /tree TOMCAT$ROOT:[000000.webapps.AXIS2...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]error.jsp;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]HappyAxis.jsp;1 deleted &lt;br /&gt;
(24KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]index.jsp;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]listFaultyService.jsp;1 &lt;br /&gt;
deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]listGroupService.jsp;1 &lt;br /&gt;
deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000.webapps.axis2.axis2-web]listServices.jsp;1 &lt;br /&gt;
deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$ delete TOMCAT$ROOT:[000000.webapps]AXIS2.DIR;1 /conf&lt;br /&gt;
DELETE TOMCAT$ROOT:[000000.webapps]axis2.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In addition to deleting the Axis2 files, you should also go through the configuration changes made earlier in this document and revert the relevant changes.&lt;br /&gt;
* If you want to completely remove any traces of Axis2 you should know that the AXIS2$ROOT logical is still defined, although it now points to a non-existent directory. You can remove the logical using the $ DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *axis2*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892FB880)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;AXIS2$ROOT&amp;quot; = &amp;quot;DISK$SYS1:[SYS0.SYSCOMMON.axis2.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
$ deassign /sys axis2$root&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you have a look inside SYS$STARTUP, you can see that there are also some Axis2 remnants remaining in there. You can either remove these files individually or with a wildcard qualifier (as shown below) together with the /CONFIRM qualifier. It is always advisable to use extra caution when deleting files, especially in system directories, since deleted files are not recoverable unless backed up. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir sys$startup:*axis2*&lt;br /&gt;
&lt;br /&gt;
Directory SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
&lt;br /&gt;
axis2$define_logicals.LOG;2             axis2$define_logicals.LOG;1&lt;br /&gt;
axis2-tmp-8889454529806580694^.tmp.DIR;1&lt;br /&gt;
&lt;br /&gt;
Total of 3 files.&lt;br /&gt;
&lt;br /&gt;
Directory SYS$COMMON:[SYSMGR]&lt;br /&gt;
&lt;br /&gt;
axis2$define_logicals.com;1&lt;br /&gt;
&lt;br /&gt;
Total of 1 file.&lt;br /&gt;
&lt;br /&gt;
Grand total of 2 directories, 3 files.&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]axis2$define_logicals.LOG;2 ? [N]: Y&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]axis2$define_logicals.LOG;1 ? [N]: Y&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]axis2-tmp-8889454529806580694^.tmp.DIR;1 ? [N]: Y&lt;br /&gt;
%DELETE-W-FILNOTDEL, error deleting SYS$SYSROOT:[SYSMGR]axis2-tmp-8889454529806580694^.tmp.DIR;1&lt;br /&gt;
-RMS-E-MKD, ACP could not mark file for deletion&lt;br /&gt;
-SYSTEM-F-DIRNOTEMPTY, directory file is not empty&lt;br /&gt;
DELETE SYS$COMMON:[SYSMGR]axis2$define_logicals.com;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2428</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2428"/>
		<updated>2021-10-07T14:46:30Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Removal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
&lt;br /&gt;
:Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up and Shutdown Commands==&lt;br /&gt;
&lt;br /&gt;
In this section we will set up commands for Apache to automatically shut down and start back up when the system is rebooted.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSTARTUP_VMS.COM and insert the following lines towards the bottom of the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit the file SYS$MANAGER:SYSHUTDWN.COM and insert the lines shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. &lt;br /&gt;
&lt;br /&gt;
:On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. &lt;br /&gt;
&lt;br /&gt;
To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2427</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2427"/>
		<updated>2021-10-07T14:45:45Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* A PHP Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
&lt;br /&gt;
:Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up and Shutdown Commands==&lt;br /&gt;
&lt;br /&gt;
In this section we will set up commands for Apache to automatically shut down and start back up when the system is rebooted.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSTARTUP_VMS.COM and insert the following lines towards the bottom of the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit the file SYS$MANAGER:SYSHUTDWN.COM and insert the lines shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. &lt;br /&gt;
&lt;br /&gt;
:On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2426</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2426"/>
		<updated>2021-10-07T14:44:23Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Optional – Convert Key and Certificate to DER Encoding */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
&lt;br /&gt;
:Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up and Shutdown Commands==&lt;br /&gt;
&lt;br /&gt;
In this section we will set up commands for Apache to automatically shut down and start back up when the system is rebooted.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSTARTUP_VMS.COM and insert the following lines towards the bottom of the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit the file SYS$MANAGER:SYSHUTDWN.COM and insert the lines shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. &lt;br /&gt;
&lt;br /&gt;
:On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2425</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2425"/>
		<updated>2021-10-07T14:43:17Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Configuring HTTPS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
&lt;br /&gt;
:Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up and Shutdown Commands==&lt;br /&gt;
&lt;br /&gt;
In this section we will set up commands for Apache to automatically shut down and start back up when the system is rebooted.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSTARTUP_VMS.COM and insert the following lines towards the bottom of the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit the file SYS$MANAGER:SYSHUTDWN.COM and insert the lines shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2424</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2424"/>
		<updated>2021-10-07T14:42:37Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Creating a Self-Signed Certificate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
&lt;br /&gt;
:Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up and Shutdown Commands==&lt;br /&gt;
&lt;br /&gt;
In this section we will set up commands for Apache to automatically shut down and start back up when the system is rebooted.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSTARTUP_VMS.COM and insert the following lines towards the bottom of the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit the file SYS$MANAGER:SYSHUTDWN.COM and insert the lines shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2423</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2423"/>
		<updated>2021-10-07T14:41:36Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Connecting to your Web Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
&lt;br /&gt;
:Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up and Shutdown Commands==&lt;br /&gt;
&lt;br /&gt;
In this section we will set up commands for Apache to automatically shut down and start back up when the system is rebooted.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSTARTUP_VMS.COM and insert the following lines towards the bottom of the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit the file SYS$MANAGER:SYSHUTDWN.COM and insert the lines shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2422</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2422"/>
		<updated>2021-10-07T14:40:56Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Starting Apache */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
&lt;br /&gt;
:Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up and Shutdown Commands==&lt;br /&gt;
&lt;br /&gt;
In this section we will set up commands for Apache to automatically shut down and start back up when the system is rebooted.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSTARTUP_VMS.COM and insert the following lines towards the bottom of the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit the file SYS$MANAGER:SYSHUTDWN.COM and insert the lines shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2421</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2421"/>
		<updated>2021-10-07T14:40:17Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Changes to the Main Configuration File */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
&lt;br /&gt;
:Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up and Shutdown Commands==&lt;br /&gt;
&lt;br /&gt;
In this section we will set up commands for Apache to automatically shut down and start back up when the system is rebooted.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSTARTUP_VMS.COM and insert the following lines towards the bottom of the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit the file SYS$MANAGER:SYSHUTDWN.COM and insert the lines shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2420</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2420"/>
		<updated>2021-10-07T14:39:09Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Ensuring SYS$SCRATCH Points To ODS-5 Device */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
&lt;br /&gt;
:Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up and Shutdown Commands==&lt;br /&gt;
&lt;br /&gt;
In this section we will set up commands for Apache to automatically shut down and start back up when the system is rebooted.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSTARTUP_VMS.COM and insert the following lines towards the bottom of the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit the file SYS$MANAGER:SYSHUTDWN.COM and insert the lines shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2419</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2419"/>
		<updated>2021-10-07T14:38:37Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
&lt;br /&gt;
:Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up and Shutdown Commands==&lt;br /&gt;
&lt;br /&gt;
In this section we will set up commands for Apache to automatically shut down and start back up when the system is rebooted.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSTARTUP_VMS.COM and insert the following lines towards the bottom of the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit the file SYS$MANAGER:SYSHUTDWN.COM and insert the lines shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2418</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2418"/>
		<updated>2021-10-07T14:35:36Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Running APACHE$CONFIG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
&lt;br /&gt;
:Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2417</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2417"/>
		<updated>2021-10-07T14:34:13Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2416</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2416"/>
		<updated>2021-10-07T14:33:37Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Tomcat_(CSWS_JAVA)_-_Easy_Installation_Guide&amp;diff=2415</id>
		<title>Tomcat (CSWS JAVA) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Tomcat_(CSWS_JAVA)_-_Easy_Installation_Guide&amp;diff=2415"/>
		<updated>2021-10-07T14:31:21Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: Created page with &amp;quot;This is an easy installation guide for setting up a Tomcat web server. As such, it will not go into explicit detail or offer any lengthy explanations. Rather, it should functi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up a Tomcat web server. As such, it will not go into explicit detail or offer any lengthy explanations. Rather, it should function as a check list to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before Tomcat is installed, make sure these pre-requisites are met for your server:&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
&lt;br /&gt;
* VSI’s OpenJDK 8 Development Kit V1.8 Update 222b or later. &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;***&amp;lt;/nowiki&amp;gt;Please note:  HPE Java™ JDK V1.8u_144* is not recommended.***&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;***&amp;lt;/nowiki&amp;gt;In addition, HPE Java™ JDK V1.6 and earlier versions will not work and are not supported with VSI’s CSWS_JAVA V8.5-50A .***&lt;br /&gt;
&lt;br /&gt;
* Another requirement is that you install CSWS_JAVA on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Tomcat on is ODS-5 enabled is to use the following command on a mounted disk:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Towards the bottom of the output, you should see in plain text&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Although not required, it is recommended that you have a recent version of the Apache web server (CSWS) installed on your system as well as a recent version of OpenSSL (SSL111). Apache will be used to provide a CGI example and OpenSSL will be used to set up HTTPS for the Tomcat web server.&lt;br /&gt;
&lt;br /&gt;
Before you install VSI’s CSWS_JAVA V8.5-50a software, if you are running any existing, earlier versions of Tomcat on your system, you will be required to&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. Most importantly, make sure to save a copy of the following configuration files. After the upgrade, you can use these files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation.&lt;br /&gt;
&lt;br /&gt;
::TOMCAT$ROOT:[CONF]tomcat-users.xml&lt;br /&gt;
::TOMCAT$ROOT:[CONF]context.xml&lt;br /&gt;
::TOMCAT$ROOT:[CONF]web.xml&lt;br /&gt;
::TOMCAT$ROOT:[CONF]server.xml&lt;br /&gt;
&lt;br /&gt;
* Shut down the Tomcat webserver with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Tomcat with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws_java&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To completely remove Tomcat, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
To install Tomcat, download the installation kit for CSWS_JAVA (Tomcat) to your server and read through the release notes before starting the installation. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS_JAVA-V0805-50A-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Tomcat using the PCSI application.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product install csws_java&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.openJDK8u222b]VSI&lt;br /&gt;
-I64VMS-CSWS_JAVA-V0805-50A-1.PCSI$COMPRESSED;2 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS_JAVA V8.5-50A          Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS_JAVA V8.5-50A&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Minimum Java software version not found on system, abort installation.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;This kit requires Java 1.8 for OpenVMS&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Terminating is strongly recommended.  Do you want to terminate? [YES] NO&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS_JAVA V8.5-50A          DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS_JAVA V8.5-50A          Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS_JAVA V8.5-50A&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
    To start the Tomcat web server at system boot time, add the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:TOMCAT$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    To shutdown Tomcat at system shutdown time, add the following lines to&lt;br /&gt;
    SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:TOMCAT$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Note that default installation uses the SYSTEM account to run the the&lt;br /&gt;
    Web server process. It is recommended that you run the web server as&lt;br /&gt;
    using a less privileged account. This may be done by supplying the&lt;br /&gt;
    account name as a parameter to tomcat$startup.com or by defining the&lt;br /&gt;
    logical name tomcat$user as the desired account name. It is also&lt;br /&gt;
    recommended that you  change the tomcat$root:[000000...] directory tree&lt;br /&gt;
    ownership to this account.&lt;br /&gt;
%PCSIUI-I-COMPWERR, operation completed after explicit continuation from errors&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Comment for the highlighted part of the installation output above:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; If you have OpenJDK8 installed on a system that previously has not had JAVA installed, you will want to answer no to this question and allow the installation to complete. It will complete successfully. This will be fixed in a future release of VSI CSWS_JAVA.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
There is a lot to the configuration of Tomcat. For this configuration guide, it is assumed that you already have CSWS (Apache web server) installed on your server. Although this is no longer a requirement for versions CSWS_JAVA V8.5-50 and later, the two are often used in tandem. It is further assumed that you also have VSI SSL 1.1.1 (OpenSSL) or later installed so that you can set up HTTPS for Tomcat.&lt;br /&gt;
&lt;br /&gt;
==Creating java$80_setup.com==&lt;br /&gt;
&lt;br /&gt;
If you have OpenJDK8 installed on your system without having a version of Java installed previously, you might be missing the file SYS$MANAGER:JAVA$80_SETUP.COM – without this file, Tomcat will not start. This issue will be fixed in a future release of Tomcat. The file exists in the OPENJDK8 top directory and can be copied over to SYS$MANAGER or it can be created manually. It should look like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$!***SYS$SYSROOT:[SYSMGR]JAVA$80_SETUP.COM***&lt;br /&gt;
$!&lt;br /&gt;
$ @sys$sysdevice:[sys0.syscommon.openjdk$80.com]java$setup.com &#039;P1&#039;&lt;br /&gt;
$ exit&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that the path to JAVA$SETUP.COM matches your configuration.&lt;br /&gt;
&lt;br /&gt;
==Setting System Parameters==&lt;br /&gt;
&lt;br /&gt;
The next natural step in the installation is to create the username TOMCAT$WWW in the SYSUAF. Before doing so, however, it is a good idea to make sure that the system parameters will allow the settings chosen for the Tomcat user account. The table below shows the quotas that will be used in the creation of TOMCAT$WWW. They should be adequate for most purposes; although, resource usage should always be monitored closely and quotas adjusted as necessary. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Maxjobs:         0  Fillm:     32767  Bytlm:       3000000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:      1024  JTquota:       40000&lt;br /&gt;
Prclm:         100  DIOlm:      1024  WSdef:        100000&lt;br /&gt;
Prio:            4  ASTlm:       300  WSquo:        200000&lt;br /&gt;
Queprio:         4  TQElm:       400  WSextent:     800000&lt;br /&gt;
CPU:        (none)  Enqlm:     32767  Pgflquo:    10000000&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system parameters of importance are the channel count CHANNELCNT (which caps the file limit parameter FILLM) and the working set maximum WSMAX (which caps the working set extent WSEXTENT).&lt;br /&gt;
&lt;br /&gt;
* First, enter the System Generation Utility and have a look at the two parameters by entering the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set default sys$system&lt;br /&gt;
$ mcr sysgen&lt;br /&gt;
SYSGEN&amp;gt;  USE CURRENT&lt;br /&gt;
SYSGEN&amp;gt;  SHOW CHANNELCNT&lt;br /&gt;
Parameter Name            Current    Default     Min.       Max.   Unit  Dynamic&lt;br /&gt;
--------------            -------    -------   -------    -------  ----  -------&lt;br /&gt;
CHANNELCNT                  32767        512        64      65535 Channels&lt;br /&gt;
SYSGEN&amp;gt;  SHOW WSMAX&lt;br /&gt;
Parameter Name            Current    Default     Min.       Max.   Unit  Dynamic&lt;br /&gt;
--------------            -------    -------   -------    -------  ----  -------&lt;br /&gt;
WSMAX                      900000     131072     16384  134217728 Pagelets&lt;br /&gt;
 internal value             56250       8192      1024    8388608 Pages&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The current CHANNELCNT should have a value that is at least equal to your chosen FILLM value. If required, CHANNELCNT can safely be set to its maximum value of 65535.&lt;br /&gt;
&lt;br /&gt;
* The current value of WSMAX must be set equal to or greater than the chosen value of WSEXTENT. In the example output above the current value of WSMAX is set to 900000 and thus slightly greater than the chosen value of 800000 for WSEXTENT. You should set this value according to your own environment, which may require it to be higher or lower.&lt;br /&gt;
&lt;br /&gt;
* Use the following commands to set the system parameters, changing the values as necessary.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
SYSGEN&amp;gt; USE CURRENT&lt;br /&gt;
SYSGEN&amp;gt; SET CHANNELCNT 32767&lt;br /&gt;
SYSGEN&amp;gt; SET WSMAX 900000&lt;br /&gt;
SYSGEN&amp;gt; WRITE ACTIVE&lt;br /&gt;
SYSGEN&amp;gt; WRITE CURRENT&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; It is important to note that the system parameters CHANNELCNT and WSMAX are not dynamic (otherwise the letter D would be present in rightmost column in the example output earlier). Therefore, the system must be &amp;lt;b&amp;gt;rebooted&amp;lt;/b&amp;gt; for the parameters to change.&lt;br /&gt;
&lt;br /&gt;
* Another important matter to take into consideration is that running AUTOGEN using the FEEDBACK option might alter the system parameters you set directly in SYSGEN. To ensure that the parameters will not be altered by AUTOGEN, you should also specify the parameters in the file MODPARAMS.DAT. One option is to set MIN_CHANNELCNT and MIN_WSMAX if you want to make it possible for AUTOGEN to set higher values than the CHANNELCNT and WSMAX needed for Tomcat. For more details, see the OpenVMS System Management Manual.&lt;br /&gt;
&lt;br /&gt;
* Bear in mind that the quotas proposed in the table are merely suggestions, although they are a good starting point. If the number of page faults for the Tomcat process grows larger than 50000, you may wish to increase the quotas for the TOMCAT$WWW account. To optimize the performance of Tomcat, you can change the values of WSQUO, WSEXTENT, and PGFLQUO together in increments of 50000, 100000, and 1000000, respectively, while making sure that WSMAX is still greater than or equal to WSEXTENT. Both too much and too little resources can have a negative impact on performance.&lt;br /&gt;
&lt;br /&gt;
==Creating TOMCAT$WWW Username in SYSUAF==&lt;br /&gt;
&lt;br /&gt;
Setting up TOMCAT$WWW in the SYSUAF can be done by following these instructions.&lt;br /&gt;
&lt;br /&gt;
* Enter the following command to open the SYSUAF:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set default sys$system&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If an account for Apache already exists on your web server, you can use APACHE$WWW to create the user TOMCAT$WWW by copying and pasting (choosing your desired UIC, highlighted below) the command shown below. The resources given to the TOMCAT$WWW account are the same recommended initial values as those specified in the table in the previous section (you can copy the command line by line by including the dash – press Enter to start a new line).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
UAF&amp;gt; copy apache$www tomcat$www &amp;lt;span style=background:yellow&amp;gt;/uic=[555,555]&amp;lt;/span&amp;gt; /dir=000000 /device=tomcat$root -&lt;br /&gt;
_UAF&amp;gt; /account=tomcat /prclm=100 /fillm=32767 /biolm=1024 /diolm=1024 /astlm=300 -&lt;br /&gt;
_UAF&amp;gt; /tqelm=400 /enqlm=32767 /bytlm=3000000 /jtquota=40000 /wsdef=100000 -&lt;br /&gt;
_UAF&amp;gt; /wsquo=200000 /wsextent=800000 /pgflquo=10000000 /batch –&lt;br /&gt;
_UAF&amp;gt; /defpr=(sysprv,bypass,impersonate) &lt;br /&gt;
%UAF-I-COPMSG, user record copied&lt;br /&gt;
%UAF-W-DEFPWD, copied or renamed records must receive new password&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier TOMCAT$WWW value [000555,000555] added &lt;br /&gt;
to rights database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The TOMCAT$WWW username should now look something like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
UAF&amp;gt; show tomcat$www&lt;br /&gt;
&lt;br /&gt;
Username: TOMCAT$WWW                      Owner:&lt;br /&gt;
Account:  TOMCAT                           UIC:    [555,555] ([TOMCAT$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  TOMCAT$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    ##### Full access ######            ##### Full access ######&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:     32767  Bytlm:       3000000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:      1024  JTquota:       40000&lt;br /&gt;
Prclm:         100  DIOlm:      1024  WSdef:        100000&lt;br /&gt;
Prio:            4  ASTlm:       300  WSquo:        200000&lt;br /&gt;
Queprio:         4  TQElm:       400  WSextent:     800000&lt;br /&gt;
CPU:        (none)  Enqlm:     32767  Pgflquo:    10000000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  BYPASS       IMPERSONATE  NETMBX       SYSPRV       TMPMBX&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If an account for Apache does not exist, you can create the account from scratch like so:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
UAF&amp;gt; add tomcat$www &amp;lt;span style=background:yellow&amp;gt;/uic=[555,555]&amp;lt;/span&amp;gt; /dir=000000 /device=tomcat$root /account=tomcat -&lt;br /&gt;
_UAF&amp;gt; /flags=(dismail,disnewmail,disreport,lockpwd,nodisuser) /lgicmd=login -&lt;br /&gt;
_UAF&amp;gt; /prclm=100 /fillm=32767 /biolm=1024 /diolm=1024 /astlm=300 /tqelm=400 -&lt;br /&gt;
_UAF&amp;gt; /enqlm=32767 /bytlm=3000000 /jtquota=40000 /wsdef=100000 /wsquo=200000 - &lt;br /&gt;
_UAF&amp;gt; /wsextent=800000 /pgflquo=10000000 /nolocal /nodialup /noremote –&lt;br /&gt;
_UAF&amp;gt; /defpr=(sysprv,bypass,impersonate)&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier TOMCAT$WWW value [000555,000555] added to rights database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Defining Required Tomcat Logicals==&lt;br /&gt;
&lt;br /&gt;
Having created the TOMCAT$WWW username, it is now a good time to create the logicals needed to run Tomcat. You can do so by running the command procedure shown below from a sufficiently privileged account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$manager:tomcat$define_logicals.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Running this file will create the required logical TOMCAT$ROOT, which is needed for Tomcat to run. It will also give you easy access to the Tomcat root directory.&lt;br /&gt;
	$ show logical *tomcat*&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_89326240)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;TOMCAT$ROOT&amp;quot; = &amp;quot;DISK$SYS1:[SYS0.SYSCOMMON.tomcat.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatic Start-up and Shutdown Commands==&lt;br /&gt;
&lt;br /&gt;
In this section we will set up commands for Tomcat to automatically shut down and start back up when the system is rebooted.&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSTARTUP_VMS.COM and insert the following lines towards the bottom of the file to start Tomcat under the TOMCAT$WWW account. Make sure to specify the correct node name highlighted below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$!&lt;br /&gt;
$  IF NODE .EQS. &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOUR_NODE_NAME&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
$  THEN&lt;br /&gt;
$    if f$search(&amp;quot;SYS$STARTUP:TOMCAT$STARTUP.COM&amp;quot;) .nes. &amp;quot;&amp;quot;&lt;br /&gt;
$    then&lt;br /&gt;
$       submit/USER=TOMCAT$WWW/QUEUE=SYS$BATCH/PARAMETERS=(TOMCAT$WWW)&lt;br /&gt;
SYS$STARTUP:TOMCAT$STARTUP.COM&lt;br /&gt;
$    endif&lt;br /&gt;
$  ENDIF&lt;br /&gt;
$!&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;There should be no line break for the $ SUBMIT command above. If you cannot fit the entire command on your screen, consider setting a wider terminal width. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set terminal /width=132&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Edit the file SYS$MANAGER:SYSHUTDWN.COM and insert the following lines:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$!&lt;br /&gt;
$ file := SYS$STARTUP:TOMCAT$SHUTDOWN.COM&lt;br /&gt;
$ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
$!&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting File Ownership and Permissions==&lt;br /&gt;
&lt;br /&gt;
Since the username TOMCAT$WWW has been created, you can set it as owner to Tomcat’s files in addition to specifying the file permissions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* First, set the file ownership for the Tomcat root directory- the location of which you can find by doing a $ SHOW LOGICAL TOMCAT$ROOT. Then set Tomcat as owner for the root directory as well as the entire directory structure. Make sure that you use the UIC you specified for TOMCAT$WWW (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical tomcat$root&lt;br /&gt;
   &amp;quot;TOMCAT$ROOT&amp;quot; = &amp;quot;YOURDISK:[SYS0.SYSCOMMON.tomcat.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ set default YOURDISK:[SYS0.SYSCOMMON]&lt;br /&gt;
$ set file &amp;lt;span style=background:yellow&amp;gt;/owner=[555,555]&amp;lt;/span&amp;gt; tomcat.DIR /log&lt;br /&gt;
%SET-I-MODIFIED, YOURDISK:[SYS0.SYSCOMMON]tomcat.DIR;1 modified &lt;br /&gt;
&lt;br /&gt;
$ set file &amp;lt;span style=background:yellow&amp;gt;/owner=[555,555]&amp;lt;/span&amp;gt; [.tomcat...]*.*;* /log&lt;br /&gt;
%SET-I-MODIFIED, YOURDISK:[SYS0.SYSCOMMON.tomcat]bin.DIR;1 modified&lt;br /&gt;
%SET-I-MODIFIED, YOURDISK:[SYS0.SYSCOMMON.tomcat]BUILDING.txt;1 modified&lt;br /&gt;
%SET-I-MODIFIED, YOURDISK:[SYS0.SYSCOMMON.tomcat]conf.DIR;1 modified&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Second, set the file permissions. First for the root directory and then for the rest of the directory structure.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set file /prot=(S:RWE,O:RWED,G,W) tomcat.DIR /log&lt;br /&gt;
%SET-I-PROTECTED, YOURDISK:[SYS0.SYSCOMMON]tomcat.DIR;1 file protection changed to S:RWE,O:RWED,G:,W:&lt;br /&gt;
&lt;br /&gt;
$ set file /prot=(S:RWE,O:RWED,G,W) [.tomcat...]*.*;* /log&lt;br /&gt;
%SET-I-PROTECTED, YOURDISK:[SYS0.SYSCOMMON.tomcat]bin.DIR;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
%SET-I-PROTECTED, YOURDISK:[SYS0.SYSCOMMON.tomcat]BUILDING.txt;1 file protection &lt;br /&gt;
changed to S:RWE,O:RWED,G:,W:&lt;br /&gt;
%SET-I-PROTECTED, YOURDISK:[SYS0.SYSCOMMON.tomcat]conf.DIR;1 file protection changed to &lt;br /&gt;
S:RWE,O:RWED,G:,W:&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To verify that the owner and file protections were set correctly, you can issue the command&lt;br /&gt;
$ dir [.tomcat] /owner /prot&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Directory YOURDISK:[SYS0.SYSCOMMON.tomcat]&lt;br /&gt;
&lt;br /&gt;
bin.DIR;1            [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
BUILDING.txt;1       [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
conf.DIR;1           [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
CONTRIBUTING.md;1    [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
lib.DIR;1            [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
LICENSE.;1           [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
logs.DIR;1           [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
NOTICE.;1            [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
README.md;1          [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
RELEASE-NOTES.;1     [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
RUNNING.txt;1        [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
sbin.DIR;1           [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
temp.DIR;1           [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
webapps.DIR;1        [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
work.DIR;1           [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LOGIN.COM for Tomcat==&lt;br /&gt;
&lt;br /&gt;
To define the ODS-5 filesystem, set the extended filename parsing required by both Java and Tomcat, and define the logicals needed to support the runtime of Tomcat, you need to make some changes to the LOGIN.COM file of Tomcat.&lt;br /&gt;
&lt;br /&gt;
* Create the file TOMCAT$ROOT:[000000]LOGIN.COM and add these lines:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$!********************************************&lt;br /&gt;
$ ! Login.Com for Tomcat Web Server&lt;br /&gt;
$ !&lt;br /&gt;
$ ! exit&lt;br /&gt;
$ !&lt;br /&gt;
$ set process/parse =extend                     ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                     ! ODS-5 Support (optional)&lt;br /&gt;
$ DEFINE JAVA$DONT_PRESET_LOGICALS &amp;quot;TRUE&amp;quot;       ! TURN LOGICAL DEFS OFF IN LIB$INITIALIZE&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE           ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE          ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot; -             ! Used to aid in Apache startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;           ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;    ! Use for Removing Open Files during shutdown&lt;br /&gt;
$ DEFINE JAVA$FILENAME_CONTROLS &amp;quot;8&amp;quot;             ! Needed for Filename attributes for OpenVMS.&lt;br /&gt;
$ DEFINE JAVA$FSYNC_INTERVAL &amp;quot;50&amp;quot;               ! Flush RMS Buffers.&lt;br /&gt;
$ DEFINE SYS$SCRATCH TOMCAT$ROOT:[000000.TEMP]  ! Needs to point to ODS-5 formatted device&lt;br /&gt;
$ EXIT&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Starting Tomcat==&lt;br /&gt;
&lt;br /&gt;
It is now possible to start Tomcat under the TOMCAT$WWW account. As explained towards the bottom of the installation output it is for security reasons recommended that you run Tomcat under a less privileged account than the system account, which is used by default when SYS$STARTUP: TOMCAT$STARTUP.COM is executed directly (assuming you are logged in as system or under a privileged user account). &lt;br /&gt;
&lt;br /&gt;
* Before starting Tomcat, first edit the file SYS$STARTUP:TOMCAT$DEFS_LOCAL.COM and insert the lines shown below so that the logical TOMCAT$USER is defined during start-up. It should look something like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$!***** SYS$STARTUP:TOMCAT$DEFS_LOCAL.COM*****&lt;br /&gt;
$! Add any site-specific logical definitions here&lt;br /&gt;
$!&lt;br /&gt;
$ define /system tomcat$user tomcat$www&lt;br /&gt;
$ who = f$trnlnm(&amp;quot;tomcat$user&amp;quot;)&lt;br /&gt;
$ write sys$output &amp;quot;tomcat$user is: &#039;&#039;who&#039;&amp;quot;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, use the system account to submit the following command to start Tomcat under the TOMCAT$WWW account. The account you use to do this must have the appropriate privileges.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ submit /user=tomcat$www /queue=sys$batch/parameters=(tomcat$www) -&lt;br /&gt;
_$ sys$startup:tomcat$startup.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Unless any errors have been made up until this point, you should be able to access the Tomcat webserver in your browser by connecting to port 8080. If you cannot connect, it advisable that you have a look at the log files in TOMCAT$ROOT:[LOGS] to see where things went wrong. If your browser refuses to connect to your web server via HTTP, it might be a good idea to clear the cache to make sure you are loading the page anew. Remember that you must restart Tomcat after making your configuration changes in order for them to be implemented.&lt;br /&gt;
&lt;br /&gt;
:If Tomcat does start, you can make sure that it is running under the correct username and with the correct privileges with the commands below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system&lt;br /&gt;
...&lt;br /&gt;
00000444 APACHE$TOMCAT   HIB      6   128324   0 00:00:59.89     25597  28525 M&lt;br /&gt;
...&lt;br /&gt;
	&lt;br /&gt;
$ show proc/id=444 /priv&lt;br /&gt;
&lt;br /&gt;
26-MAY-2021 02:29:44.39   User: TOMCAT$WWW       Process ID:   00000444&lt;br /&gt;
                          Node: YOURNODE         Process name: &amp;quot;APACHE$TOMCAT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Authorized privileges:&lt;br /&gt;
 NETMBX       TMPMBX&lt;br /&gt;
&lt;br /&gt;
Process privileges:&lt;br /&gt;
 BYPASS               may bypass all object access controls&lt;br /&gt;
 IMPERSONATE          may impersonate another user&lt;br /&gt;
 NETMBX               may create network device&lt;br /&gt;
 SYSPRV               may access objects via system protection&lt;br /&gt;
 TMPMBX               may create temporary mailbox&lt;br /&gt;
&lt;br /&gt;
Process rights:&lt;br /&gt;
 TOMCAT$WWW                        resource&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you want to shut down Tomcat, you can do so with the following command from a privileged account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enabling Access to Tomcat Manager and Host Manager==&lt;br /&gt;
&lt;br /&gt;
To use the Tomcat Manager-GUI and Host Manager-GUI, you need to set them up. You can do so by following the instructions below.&lt;br /&gt;
&lt;br /&gt;
* Edit the file TOMCAT$ROOT:[CONF]tomcat-users.xml. Add the highlighted lines to the very bottom of the document and make sure to substitute the example passwords with your own.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]tomcat-users.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;!--&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;tomcat&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;role1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;tomcat&amp;quot; password=&amp;quot;&amp;lt;must-be-changed&amp;gt;” &amp;quot;roles=&amp;quot;tomcat&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;both&amp;quot; password=&amp;quot;&amp;lt;must-be-changed&amp;gt;&amp;quot; roles=&amp;quot;tomcat,role1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;role1&amp;quot; password=&amp;quot;&amp;lt;must-be-changed&amp;gt;&amp;quot; roles=&amp;quot;role1&amp;quot;/&amp;gt;&lt;br /&gt;
--&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;tomcat&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;role1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;manager-gui&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;admin-gui&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;manager-script&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;admin-script&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;admin&amp;quot; password=&amp;quot;admin&amp;quot; roles=&amp;quot;admin-gui,manager-gui&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;tomcat&amp;quot; password=&amp;quot;tomcat&amp;quot; roles=&amp;quot;tomcat&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;both&amp;quot; password=&amp;quot;tomcat&amp;quot; roles=&amp;quot;tomcat,role1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;role1&amp;quot; password=&amp;quot;tomcat&amp;quot; roles=&amp;quot;role1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;user username=&amp;quot;tcscript&amp;quot; password=&amp;quot;tomcat&amp;quot; roles=&amp;quot;manager-gui,manager-script,admin-script&amp;quot;/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/tomcat-users&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To allow access to Admin and Manager, permissions must be set to allow for connections. Edit these two files:&lt;br /&gt;
&lt;br /&gt;
::TOMCAT$ROOT:[webapps.host-manager.META-INF]context.xml&lt;br /&gt;
::TOMCAT$ROOT:[webapps.manager.META-INF]context.xml&lt;br /&gt;
&lt;br /&gt;
:Then add the comment delimiters highlighted in the lines below to both context.xml files, so that the relevant lines read&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Context antiResourceLocking=&amp;quot;false&amp;quot; privileged=&amp;quot;true&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;!--&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;Valve className=&amp;quot;org.apache.catalina.valves.RemoteAddrValve&amp;quot;&lt;br /&gt;
     allow=&amp;quot;127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;nowiki&amp;gt;--&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;Manager sessionAttributeValueClassNameFilter=&lt;br /&gt;
     &amp;quot;java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.c`&lt;br /&gt;
&amp;lt;/Context&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Finally, restart Tomcat with the commands below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown.com&lt;br /&gt;
$ submit /user=tomcat$www /queue=sys$batch /parameters=(tomcat$www) -&lt;br /&gt;
_$ sys$startup:tomcat$startup.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enable CGIs in Tomcat==&lt;br /&gt;
&lt;br /&gt;
For CGI scripts to work with Tomcat they must first be set up, which these instructions will show you how to do. They will also show you how to use Apache to create working CGI example.&lt;br /&gt;
&lt;br /&gt;
===CGI Configuration===&lt;br /&gt;
&lt;br /&gt;
* Edit the file TOMCAT$ROOT:[CONF]web.xml and make the changes highlighted below in the code for &amp;lt;servlet-name&amp;gt;cgi&amp;lt;/servlet-name&amp;gt;. Make sure that you uncomment this section by removing the comment delimiter “--&amp;gt;” at the bottom and adding it to the top.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]web.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;servlet&amp;gt;&lt;br /&gt;
  &amp;lt;servlet-name&amp;gt;cgi&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
  &amp;lt;servlet-class&amp;gt;org.apache.catalina.servlets.CGIServlet &lt;br /&gt;
  &amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
  &amp;lt;init-param&amp;gt;&lt;br /&gt;
    &amp;lt;param-name&amp;gt;debug&amp;lt;/param-name&amp;gt;&lt;br /&gt;
    &amp;lt;param-value&amp;gt;0&amp;lt;/param-value&amp;gt;&lt;br /&gt;
   &amp;lt;/init-param&amp;gt;&lt;br /&gt;
   &amp;lt;span style=background:yellow&amp;gt;&amp;lt;init-param&amp;gt;&lt;br /&gt;
     &amp;lt;param-name&amp;gt;executable&amp;lt;/param-name&amp;gt;&lt;br /&gt;
     &amp;lt;param-value&amp;gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt;
   &amp;lt;/init-param&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;init-param&amp;gt;    &lt;br /&gt;
     &amp;lt;param-name&amp;gt;cgiPathPrefix&amp;lt;/param-name&amp;gt;&lt;br /&gt;
     &amp;lt;param-value&amp;gt;WEB-INF/cgi&amp;lt;/param-value&amp;gt;&lt;br /&gt;
   &amp;lt;/init-param&amp;gt;&lt;br /&gt;
   &amp;lt;load-on-startup&amp;gt;5&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;
&amp;lt;/servlet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Down further in the same file, uncomment the following lines for the CGI Gateway Servlet by removing the comment delimiter “--&amp;gt;” at the bottom and adding it to the top.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The mapping for the CGI Gateway servlet --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
  &amp;lt;servlet-name&amp;gt;cgi&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
  &amp;lt;url-pattern&amp;gt;/cgi-bin/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In addition, edit the file TOMCAT$ROOT:[CONF]context.xml and add the highlighted portions below to the &amp;lt;Context&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]context.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Context &amp;lt;span style=background:yellow&amp;gt;reloadable=&amp;quot;true&amp;quot; privileged=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CGI Example===&lt;br /&gt;
&lt;br /&gt;
* Create the directory structure TOMCAT$ROOT:[WEBAPPS.CGI.WEB-INF.CGI]. While in TOMCAT$ROOT, run the following command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create /dir [.webapps.cgi.web-inf.cgi] /log&lt;br /&gt;
%CREATE-I-CREATED, TOMCAT$ROOT:[000000.webapps.cgi.web-inf.cgi] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The files TEST-CGI-VMS.EXE and TEST-CGI-VMS.CGI need to be copied over from APACHE$ROOT: [CGI-BIN] to TOMCAT$ROOT:[WEBAPPS.CGI.WEB-INF.CGI].&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir apache$root:[cgi-bin]&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$COMMON:[CGI-BIN]&lt;br /&gt;
&lt;br /&gt;
TEST-CGI-VMS.COM;1  TEST-CGI-VMS.EXE;1&lt;br /&gt;
&lt;br /&gt;
Total of 2 files.&lt;br /&gt;
&lt;br /&gt;
$ copy /log apache$root:[cgi-bin]test-cgi-vms.exe – &lt;br /&gt;
_$ tomcat$root:[webapps.cgi.web-inf.cgi]test-cgi-vms.exe&lt;br /&gt;
%COPY-S-COPIED, APACHE$COMMON:[CGI-BIN]TEST-CGI-VMS.EXE;1 copied to TOMCAT$ROOT:&lt;br /&gt;
[webapps.cgi.web-inf.cgi]test-cgi-vms.exe;1 (13KB)&lt;br /&gt;
&lt;br /&gt;
$ copy /log apache$root:[cgi-bin]test-cgi-vms.com -&lt;br /&gt;
_$ tomcat$root:[webapps.cgi.web-inf.cgi]test-cgi-vms.cgi&lt;br /&gt;
%COPY-S-COPIED, APACHE$COMMON:[CGI-BIN]TEST-CGI-VMS.COM;1 copied to TOMCAT$ROOT:&lt;br /&gt;
[webapps.cgi.web-inf.cgi]test-cgi-vms.cgi;1 (4KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Set the correct file ownership and protection and make sure to use the correct UIC for the TOMCAT$WWW user account. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ set file&amp;lt;span style=background:yellow&amp;gt;/owner=[555,555]&amp;lt;/span&amp;gt; tomcat$root:[webapps...]*.*;* /log&lt;br /&gt;
%SET-I-MODIFIED, TOMCAT$ROOT:[webapps.cgi]web-inf.DIR;1 modified&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$ set file/prot=(S:RWE,O:RWED,G,W) tomcat$root:[webapps...]*.*;* /log&lt;br /&gt;
%SET-I-PROTECTED, TOMCAT$ROOT:[webapps]cgi.DIR;1 file protection changed to S:RW&lt;br /&gt;
E,O:RWED,G:,W:&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:And as a last step, make sure that ownership and permissions are correct.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir /sec tomcat$root:[webapps.cgi.web-inf.cgi]&lt;br /&gt;
&lt;br /&gt;
Directory TOMCAT$ROOT:[webapps.cgi.web-inf.cgi]&lt;br /&gt;
&lt;br /&gt;
test-cgi-vms.cgi;1   [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
test-cgi-vms.exe;1   [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
&lt;br /&gt;
Total of 2 files.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the file TOMCAT$ROOT:[WEBAPPS.CGI]index.html.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create tomcat$root:[webapps.cgi]index.html&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, you need to change its record format from Variable Length to STREAM_LF. One way to do this is with the file STREAM_LF.FDL, which you can create on your own. Use the $ EDIT command to create the file and then copy and paste the contents shown below. Press Ctrl-Z to exit the editor.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[000000]STREAM_LF.FDL&lt;br /&gt;
FILE&lt;br /&gt;
        ALLOCATION              4&lt;br /&gt;
        BEST_TRY_CONTIGUOUS     yes&lt;br /&gt;
        EXTENSION               0&lt;br /&gt;
        ORGANIZATION            sequential&lt;br /&gt;
RECORD&lt;br /&gt;
        BLOCK_SPAN              yes&lt;br /&gt;
        CARRIAGE_CONTROL        carriage_return&lt;br /&gt;
        FORMAT                  stream_LF&lt;br /&gt;
        SIZE                    0&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Using this file, the conversion can now be performed with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ convert /fdl=tomcat$root:[000000]stream_lf.fdl -&lt;br /&gt;
_$ tomcat$root:[webapps.cgi]index.html tomcat$root:[webapps.cgi]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:This will create a new version of the file for which you can verify that the record format is correct with the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir /full tomcat$root:[webapps.cgi]index.html;2&lt;br /&gt;
...&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 0 bytes&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Make sure that the ownership and permissions of the index.html file are as follows.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir /sec tomcat$root:[webapps.cgi]&lt;br /&gt;
&lt;br /&gt;
Directory TOMCAT$ROOT:[webapps.cgi]&lt;br /&gt;
&lt;br /&gt;
index.html;2         [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
index.html;1         [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
web-inf.DIR;1        [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
&lt;br /&gt;
Total of 3 files.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Edit the file TOMCAT$ROOT:[WEBAPPS.CGI]index.html, using an editor of your choosing, and insert the following HTML code into the empty file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;$ edit index.html&lt;br /&gt;
&amp;lt;HTML&amp;gt;&lt;br /&gt;
  &amp;lt;HEAD&amp;gt;&lt;br /&gt;
    &amp;lt;TITLE&amp;gt;CGI Application Example&amp;lt;/TITLE&amp;gt;&lt;br /&gt;
    &amp;lt;link href=&amp;quot;hpweb_styles_win_ie6.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot;&lt;br /&gt;
        type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!--&lt;br /&gt;
    .style3 {font-size: 12px}&lt;br /&gt;
    .style4 {font-size: 12px; color: #003366;&lt;br /&gt;
    --&amp;gt;&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;/HEAD&amp;gt;&lt;br /&gt;
  &amp;lt;BODY&amp;gt;&lt;br /&gt;
    &amp;lt;h2&amp;gt; &amp;lt;class=&amp;quot;colorE7E7E7bg color003366&amp;quot;&amp;gt;&amp;lt;strong&amp;gt; CGI Application Example&amp;lt;/strong&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt; &amp;lt;class=&amp;quot;colorE7E7E7bg color003366&amp;quot;&amp;gt;&amp;lt;strong&amp;gt; CGI from the TOMCAT Server&amp;lt;/strong&amp;gt;&amp;lt;/h3&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;https://&amp;lt;/nowiki&amp;gt;&amp;lt;span style=background:yellow&amp;gt;10.10.100.0:8443&amp;lt;/span&amp;gt;&amp;lt;nowiki&amp;gt;/cgi/cgi-bin/test-cgi-vms.exe&amp;quot;&amp;gt;CGI-EXE from the TOMCAT Server. &amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;https://&amp;lt;/nowiki&amp;gt;&amp;lt;span style=background:yellow&amp;gt;10.10.100.0:8443&amp;lt;/span&amp;gt;&amp;lt;nowiki&amp;gt;/cgi/cgi-bin/test-cgi-vms.cgi&amp;quot;&amp;gt;CGI-COM from the TOMCAT Server. &amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;hr&amp;gt;&lt;br /&gt;
    &amp;lt;/hr&amp;gt;&lt;br /&gt;
    &amp;lt;h3&amp;gt; &amp;lt;class=&amp;quot;colorE7E7E7bg color000066&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;CGI from the APACHE Web Server&amp;lt;/strong&amp;gt; &amp;lt;/h3&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;https://&amp;lt;/nowiki&amp;gt;&amp;lt;span style=background:yellow&amp;gt;10.10.100.0:443&amp;lt;/span&amp;gt;&amp;lt;nowiki&amp;gt;/cgi-bin/test-cgi-vms.exe&amp;quot;&amp;gt;CGI-EXE from the APACHE Web Server.&amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;https://&amp;lt;/nowiki&amp;gt;&amp;lt;span style=background:yellow&amp;gt;10.10.100.0:443&amp;lt;/span&amp;gt;&amp;lt;nowiki&amp;gt;/cgi-bin/test-cgi-vms.com&amp;quot;&amp;gt;CGI-COM from the APACHE Web Server. &amp;lt;/a&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
    &amp;lt;P&amp;gt;&lt;br /&gt;
      Or you can Use the non-SSL URL of: http://&amp;lt;/nowiki&amp;gt;&amp;lt;span style=background:yellow&amp;gt;10.10.100.0:8080&amp;lt;/span&amp;gt;&amp;lt;nowiki&amp;gt;/cgi/cgi-bin/test-cgi-vms.exe and the non-SSL URL of: http://&amp;lt;/nowiki&amp;gt;&amp;lt;span style=background:yellow&amp;gt;10.10.100.0:80&amp;lt;/span&amp;gt;&amp;lt;nowiki&amp;gt;/cgi-bin/test-cgi-vms&lt;br /&gt;
      &amp;lt;/br&amp;gt;&lt;br /&gt;
      Thank you! /VSI Support Team &amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/P&amp;gt;&lt;br /&gt;
  &amp;lt;/BODY&amp;gt;&lt;br /&gt;
&amp;lt;/HTML&amp;gt;&lt;br /&gt;
[End of file]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Make sure to change the IP addresses and port numbers highlighted in yellow to match your current configuration. &lt;br /&gt;
&lt;br /&gt;
* Create the file TOMCAT$ROOT:[webapps.cgi.web-inf]web.xml, convert its record format to STREAM_LF, and make sure that the file owner and file permissions are set correctly. Then edit the new converted file and insert the following lines.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit TOMCAT$ROOT:[webapps.cgi.web-inf]web.xml&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;web-app xmlns=&amp;quot;http://java.sun.com/xml/ns/j2ee&amp;quot;&lt;br /&gt;
    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
    xsi:schemaLocation=&amp;quot;http://java.sun.com/xml/ns/j2ee&lt;br /&gt;
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&amp;quot;&lt;br /&gt;
    version=&amp;quot;2.4&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;display-name&amp;gt; A VSI CGI Example... &amp;lt;/display-name&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
    Used as an example for showing how CGI apps can work with Tomcat V8.5-50&lt;br /&gt;
  &amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;session-config&amp;gt;&lt;br /&gt;
    &amp;lt;session-timeout&amp;gt;&lt;br /&gt;
      30&lt;br /&gt;
    &amp;lt;/session-timeout&amp;gt;&lt;br /&gt;
  &amp;lt;/session-config&amp;gt;&lt;br /&gt;
  &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;
    &amp;lt;welcome-file&amp;gt;&lt;br /&gt;
      index.html&lt;br /&gt;
    &amp;lt;/welcome-file&amp;gt;&lt;br /&gt;
  &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;
&amp;lt;/web-app&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* With this, CGIs should now be working with Tomcat. You can test the examples that were set up in the index.html file by visiting your specified location in a web browser. Since HTTPS has not yet been set up, you will only be able to connect using HTTP. Remember that you must restart Tomcat for the configuration changes to be detected.&lt;br /&gt;
&lt;br /&gt;
==Enable Functionality for Automatically Deploying WAR Files==&lt;br /&gt;
&lt;br /&gt;
To enable the automatic deployment of WAR files, follow the instructions below. Be careful, however, about enabling automatic deployment in a production environment as you will run the risk of unintentionally deploying WAR files and, by doing so, overwrite important changes made to the deployed files.&lt;br /&gt;
&lt;br /&gt;
* Edit the file TOMCAT$ROOT:[CONF]server.xml. Close to the bottom of the, add the highlighted line shown below in the specified location.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]server.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Host name=&amp;quot;localhost&amp;quot;  appBase=&amp;quot;webapps&amp;quot;&lt;br /&gt;
          unpackWARs=&amp;quot;true&amp;quot; autoDeploy=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;DefaultContext reloadable=&amp;quot;true&amp;quot;/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set Up Tomcat HTTPS Support with OpenSSL==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, we will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
Follow these instructions to create a self-signed certificate.&lt;br /&gt;
&lt;br /&gt;
* Create the subdirectories TOMCAT$ROOT:[SSLCERTS] and TOMCAT$ROOT:[SSLKEYS]&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create/dir tomcat$root:[sslcerts] /log&lt;br /&gt;
%CREATE-I-CREATED, TOMCAT$ROOT:[000000.sslcerts] created&lt;br /&gt;
&lt;br /&gt;
$ create/dir tomcat$root:[sslkeys] /log&lt;br /&gt;
%CREATE-I-CREATED, TOMCAT$ROOT:[000000.sslkeys] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Double-check owner and permissions so they match the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir /sec ssl*.*&lt;br /&gt;
sslcerts.DIR;1       [TOMCAT$WWW]                     (RWE,RWED,,)&lt;br /&gt;
sslkeys.DIR;1        [TOMCAT$WWW]                     (RWE,RWED,,) &lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Generate a self-signed certificate. Do not put a password on your certificate or key (you will be prompted for information) as this could hinder the automatic start-up of Tomcat. For example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:4096 -keyout -&lt;br /&gt;
_$ /tomcat$root/sslkeys/server.key -out tomcat$root/sslcerts/server.crt&lt;br /&gt;
Generating a RSA private key&lt;br /&gt;
...................++++&lt;br /&gt;
................++++&lt;br /&gt;
writing new private key to &#039;/tomcat$root/sslkeys/server.key&#039;&lt;br /&gt;
-----&lt;br /&gt;
You are about to be asked to enter information that will be incorporated&lt;br /&gt;
into your certificate request.&lt;br /&gt;
What you are about to enter is what is called a Distinguished Name or a DN.&lt;br /&gt;
There are quite a few fields but you can leave some blank&lt;br /&gt;
For some fields there will be a default value,&lt;br /&gt;
If you enter &#039;.&#039;, the field will be left blank.&lt;br /&gt;
-----&lt;br /&gt;
Country Name (2 letter code) [AU]:US&lt;br /&gt;
State or Province Name (full name) [Some-State]:Massachusetts&lt;br /&gt;
Locality Name (eg, city) []:Burlington&lt;br /&gt;
Organization Name (eg, company) [Internet Widgits Pty Ltd]:VMS SOFTWARE INC.&lt;br /&gt;
Organizational Unit Name (eg, section) []:OPENVMS SUPPORT&lt;br /&gt;
Common Name (e.g. server FQDN or YOUR name) []:NODE1.eng.vmssoftware.com&lt;br /&gt;
Email Address []:webmaster@NODE1.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, you can verify that the certificate and key were created, that they ended up in the correct locations, and that they have the correct owner and permissions set.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir [.ssl*] /sec&lt;br /&gt;
&lt;br /&gt;
Directory TOMCAT$ROOT:[000000.sslcerts]&lt;br /&gt;
&lt;br /&gt;
server.crt;1	[TOMCAT$WWW]			(RWE,RWED,,)&lt;br /&gt;
&lt;br /&gt;
Total of 1 file.&lt;br /&gt;
&lt;br /&gt;
Directory TOMCAT$ROOT:[000000.sslkeys]&lt;br /&gt;
&lt;br /&gt;
server.key;1	[TOMCAT$WWW]			(RWD,RWED,,)&lt;br /&gt;
&lt;br /&gt;
Total of 1 file.&lt;br /&gt;
&lt;br /&gt;
Grand total of 2 directories, 2 files.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
 &lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in tomcat$root:[sslcerts]server.crt -out -&lt;br /&gt;
_$ tomcat$root:[sslcerts]server_crt.der&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -outform der -in tomcat$root:[sslkeys]server.key -out -&lt;br /&gt;
_$ tomcat$root:[sslkeys]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in tomcat$root:[sslcerts]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in tomcat$root:[sslkeys]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in tomcat$root:[sslcerts]server_crt.der -out -&lt;br /&gt;
_$ tomcat$root:[sslcerts]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in tomcat$root:[sslkeys]server_key.der -out -&lt;br /&gt;
_$ tomcat$root:[sslkeys]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the server key and server certificate into the same certificate file. The easiest way to combine certificates, keys, and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache.&lt;br /&gt;
  &lt;br /&gt;
:On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL “$ APPEND” command. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create tomcat$root:[sslcerts]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append tomcat$root:[sslkeys]server_key.pem, - &lt;br /&gt;
_$ tomcat$root:[sslcerts]server_crt.pem tomcat$root:[sslcerts]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, TOMCAT$ROOT:[sslkeys]server.key;1 (input) and TOMCAT$ROOT:[sslcerts]cert_and_key.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:The warning message warning about incompatible attributes can be safely ignored. If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create tomcat$root:[sslcerts]cert_key_and_CA.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append tomcat$root:[sslkeys]server_key.pem, tomcat$root:[sslcerts]server_crt.pem, - &lt;br /&gt;
_$ tomcat$root:[sslcerts]CAcrt.pem tomcat$root:[sslcerts]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, TOMCAT$ROOT:[sslkeys]server_key.pem;1 (input) and TOMCAT$ROOT:[sslcerts]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Configure Tomcat for HTTPS on Port 8443===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, it is now possible to set up HTTPS. Pay special attention to the file names server.key and server.crt in the configuration below, as the files have been kept as they are and not converted to DER encoding or combined into a single file.&lt;br /&gt;
&lt;br /&gt;
* Edit the file TOMCAT$ROOT:[CONF]SERVER.XML. At an appropriate position somewhere under the section that asks you to define an SSL/TLS HTTP/1.1 Connector, add the following lines of code (highlighted in yellow). Make sure the paths and names for your certificate and certificate key files are correct. You may also customize the HTTPS port.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit tomcat$root:[conf]server.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2&lt;br /&gt;
     This connector uses the APR/native implementation. When using the&lt;br /&gt;
     APR/native implementation or the OpenSSL engine with NIO or NIO2 then&lt;br /&gt;
     the OpenSSL configuration attributes must be used.&lt;br /&gt;
--&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;!--  Port 8443 SSL111 Configuration  --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;Connector port=&amp;quot;8443&amp;quot;&lt;br /&gt;
connectionTimeout=&amp;quot;20000&amp;quot;&lt;br /&gt;
enableLookups=&amp;quot;false&amp;quot;&lt;br /&gt;
maxKeepAliveRequests=&amp;quot;1000&amp;quot;&lt;br /&gt;
maxThreads=&amp;quot;200&amp;quot;&lt;br /&gt;
scheme=&amp;quot;https&amp;quot;&lt;br /&gt;
secure=&amp;quot;true&amp;quot;&lt;br /&gt;
SSLEnabled=&amp;quot;true&amp;quot;&lt;br /&gt;
SSLCertificateFile=&amp;quot;/tomcat$root/000000/sslcerts/server.crt&amp;quot; &lt;br /&gt;
SSLCertificateKeyFile=&amp;quot;/tomcat$root/000000/sslkeys/server.key&amp;quot;               &lt;br /&gt;
SSLVerifyClient=&amp;quot;none&amp;quot;&lt;br /&gt;
SSLProtocol=&amp;quot;TLSv1.1+TLSv1.2+TLSv1.3&amp;quot;/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may now restart Tomcat and attempt to connect to the port you specified.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Optional – Test HTTPS Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your self-signed certificates through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:8443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Tomcat, do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Tomcat with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:tomcat$shutdown&lt;br /&gt;
%DCL-I-SUPERSEDE, previous value of JAVA$CLASSPATH has been superseded&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you have AXIS2 or other Java plugins that make use of Tomcat, you should remove them now before you proceed.&lt;br /&gt;
&lt;br /&gt;
* Uninstall Tomcat using the $ PRODUCT REMOVE command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws_java&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS_JAVA V8.5-50A          Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS_JAVA V8.5-50A          DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: &lt;br /&gt;
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS_JAVA V8.5-50A          Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Tomcat, you should know that there are still files located in TOMCAT$ROOT:[000000] that have not been removed. The TOMCAT$ROOT logical should still be defined – something you can test with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *tomcat*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892B9EC0)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;TOMCAT$ROOT&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.tomcat.]&amp;quot;&lt;br /&gt;
  &amp;quot;TOMCAT$USER&amp;quot; = &amp;quot;tomcat$www&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If the logical is no longer there, you can still access the directory with the path shown above, that is if Tomcat was installed in its default location.&lt;br /&gt;
&lt;br /&gt;
* To remove the entire Tomcat directory tree, you can use the command below while inside the YOURDISK:[SYS0.SYSCOMMON] directory. Because all files are deleted without mercy, it is important to double-check and make sure you do not have any important files inside the directory tree and that the correct directory tree is specified. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.tomcat...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000]LOGIN.COM;2 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000]LOGIN.COM;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, TOMCAT$ROOT:[000000]STREAM_LF.FDL;1 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Next, you can delete the directory YOURDISK:[SYS0.SYSCOMMON.tomcat] with the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON]tomcat.DIR;1 /conf&lt;br /&gt;
DELETE YOURDISK:[SYS0.SYSCOMMON]tomcat.DIR;1 ? [N]: y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:There are also Tomcat files located in SYS$MANAGER. Use this command to find them&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dir sys$manager:*tomcat*&lt;br /&gt;
	&lt;br /&gt;
Directory SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
&lt;br /&gt;
TOMCAT$ARGS.DAT;2   TOMCAT$ARGS.DAT;1   TOMCAT$ARGS_LOCAL.DAT;2&lt;br /&gt;
TOMCAT$ARGS_LOCAL.DAT;1                 tomcat$startup.LOG;1&lt;br /&gt;
tomcat-users_xml.TPU$JOURNAL;1&lt;br /&gt;
&lt;br /&gt;
Total of 6 files.&lt;br /&gt;
&lt;br /&gt;
Directory SYS$COMMON:[SYSMGR]&lt;br /&gt;
&lt;br /&gt;
tomcat$define_logicals.com;1&lt;br /&gt;
&lt;br /&gt;
Total of 1 file.&lt;br /&gt;
&lt;br /&gt;
Grand total of 2 directories, 7 files.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:When deleting these files, make sure that you use the /CONFIRM qualifier or specify them individually so that you do not delete any files by mistake while using wildcard characters. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ delete sys$manager:*tomcat*.*;* /conf&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]TOMCAT$ARGS.DAT;2 ? [N]: Y&lt;br /&gt;
DELETE SYS$SYSROOT:[SYSMGR]TOMCAT$ARGS.DAT;2 ? [N]: Y&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Lastly, there is also the file SYS$SYSDEVICE:[SYS0]TOMCAT$ARGS_LOCAL.DAT.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ del SYS$SYSDEVICE:[SYS0]TOMCAT$ARGS_LOCAL.DAT;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[SYS0]TOMCAT$ARGS_LOCAL.DAT;1 ? [N]: y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Tomcat are its username TOMCAT$WWW inside the SYSUAF and the TOMCAT$USER and TOMCAT$ROOT logicals. To delete the username account, do the following.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove tomcat$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier TOMCAT$WWW value [000555,000555] &lt;br /&gt;
   removed from rights database&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier TOMCAT value [000555,177777] removed &lt;br /&gt;
   from rights database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:To delete the logicals, use the $ DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /sys tomcat$user&lt;br /&gt;
$ deassign /sys tomcat$root&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2414</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2414"/>
		<updated>2021-10-07T12:02:25Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: /* Removing Apache */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removal=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2413</id>
		<title>Apache (CSWS) - Easy Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Apache_(CSWS)_-_Easy_Installation_Guide&amp;diff=2413"/>
		<updated>2021-10-07T12:00:58Z</updated>

		<summary type="html">&lt;p&gt;Axel.elfving: Created page with &amp;quot;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an easy installation guide for setting up an Apache web server (CSWS) on OpenVMS. As such, it will not go into explicit detail but should rather serve as a checklist to make sure nothing important was missed during the base install. For more guides like this, check out the main page (coming).&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
Before installing Apache make sure the following prerequisites are met.&lt;br /&gt;
&lt;br /&gt;
* OpenVMS Integrity servers Version 8.4-1H1 or higher.&lt;br /&gt;
* OpenSSL (SSL111) is needed to configure HTTPS for your Apache web server. SSL111 is not to be confused with SSL and SSL1, both of which come with OpenVMS. You can check if SSL111 is installed on your system with the command below.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1K            Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is required that you install CSWS on an ODS-5 enabled disk. The easiest way to check if the disk you are intending to install Apache on is ODS-5 enabled is to use the following command on a mounted disk.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show devices $1$YOURDISK: /full&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Towards the bottom of the output, you will see the volume status.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Volumes Status: ODS-5, ...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, if you intend to use PHP in conjunction with Apache, you should make sure your PHP distribution is up to date. This installation guide will briefly show you how to create a working example of a PHP web page. Using VSI CSWS Version 2.4-48A-1 together with HPE CSWS_PHP V5.2-17A or earlier causes a process crash.&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, if you are currently running an earlier version of the software on your system, it is strongly recommended that you&lt;br /&gt;
&lt;br /&gt;
* Backup your important files. You may also wish to rename your configuration files so that the installation process can create new ones. Then use the old configuration files to transfer any modifications that would be required by your site. Do not use your old configuration files for your new installation. When transferring directives from a previous version, review the Apache documentation to ensure that the syntax is used correctly for the new version.&lt;br /&gt;
&lt;br /&gt;
* Shut down the Apache web server with the command&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Remove Apache with the command&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
To do a complete removal of Apache, follow the instructions in the last section of this document.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
Before you install Apache, download the installation kit for CSWS (Apache) to your server and read through the release notes. Then follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Unpack the kit inside your chosen source directory with &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ run VSI-I64VMS-CSWS-V0204-38D-1.ZIPEXE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install Apache using the PCSI application.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ product install csws&lt;br /&gt;
&lt;br /&gt;
Performing product kit validation of signed kits ...&lt;br /&gt;
%PCSI-I-VSIVALPASSED, validation of $1$DGA100:[000000.APACHEKIT]VSI-I64VMS-CSWS-V0204-&lt;br /&gt;
38D-1.PCSI$COMPRESSED;1 succeeded&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
Configuration phase starting ...&lt;br /&gt;
&lt;br /&gt;
You will be asked to choose options, if any, for each selected product and for&lt;br /&gt;
any products that may be installed to satisfy software dependency requirements.&lt;br /&gt;
&lt;br /&gt;
Configuring VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. &amp;amp; The Apache Software Foundation.&lt;br /&gt;
&lt;br /&gt;
* This product does not have any configuration options.&lt;br /&gt;
&lt;br /&gt;
Execution phase starting ...&lt;br /&gt;
&lt;br /&gt;
The following product will be installed to destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%...10%...30%...40%...50%...60%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been installed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
VSI I64VMS CSWS V2.4-38D&lt;br /&gt;
&lt;br /&gt;
    Release notes are available in SYS$HELP:CSWS_2_4_38.release_notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    VMS Software Inc. highly recommends that you read these release notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Post-installation tasks are required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    The OpenVMS Installation and Configuration Guide gives detailed directions.&lt;br /&gt;
    This information is a brief checklist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Configure OpenVMS aspects of the web server by:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$MANAGER:APACHE$CONFIG&lt;br /&gt;
&lt;br /&gt;
    If the OpenVMS username APACHE$WWW does not exist, you will be&lt;br /&gt;
    prompted to create that username.  File ownerships are set to UIC&lt;br /&gt;
    [APACHE$WWW], etc.&lt;br /&gt;
&lt;br /&gt;
    After configuration, start the web server manually by entering:&lt;br /&gt;
&lt;br /&gt;
        $ @SYS$STARTUP:APACHE$STARTUP&lt;br /&gt;
&lt;br /&gt;
    Check that neither SYLOGIN.COM nor the LOGIN.COM write any output to&lt;br /&gt;
    SYS$OUTPUT:.  Look especially for a&lt;br /&gt;
&lt;br /&gt;
        $ SET TERMINAL/INQUIRE.&lt;br /&gt;
&lt;br /&gt;
    Start the web server at system boot time by adding the following&lt;br /&gt;
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Shutdown the Apache server at system shutdown time by adding the&lt;br /&gt;
    following lines to SYS$MANAGER:SYSHUTDWN.COM:&lt;br /&gt;
&lt;br /&gt;
        $ file := SYS$STARTUP:APACHE$SHUTDOWN.COM&lt;br /&gt;
        $ if f$search(&amp;quot;&#039;&#039;file&#039;&amp;quot;) .nes. &amp;quot;&amp;quot; then @&#039;file&#039;&lt;br /&gt;
&lt;br /&gt;
    Test the installation using your favorite Web browser.&lt;br /&gt;
    Replace host.domain in the following URL (Uniform Resource Locator)&lt;br /&gt;
    with the information for the web server just installed, configured,&lt;br /&gt;
    and started.&lt;br /&gt;
&lt;br /&gt;
    URL http://host.domain/ should display the standard introductory page&lt;br /&gt;
    from the Apache Software Foundation. This has the bold text &amp;quot;It&lt;br /&gt;
    Worked! The Apache Web Server is Installed on this Web Site!&amp;quot; at the&lt;br /&gt;
    top  and the Apache server logo prominently displayed at the bottom.&lt;br /&gt;
    If you do not see this page, check the release notes, particularly&lt;br /&gt;
    the Frequently Asked Questions section.&lt;br /&gt;
&lt;br /&gt;
    If you&#039;d like to use secure connections then you&#039;ll need to create&lt;br /&gt;
    a server certificate.  We recommend that you start by creating a 30&lt;br /&gt;
    day self-signed certificate using the following certificate tool:&lt;br /&gt;
&lt;br /&gt;
        $ @APACHE$COMMON:[OPENSSL.COM]OPENSSL_AUTO_CERT.COM&lt;br /&gt;
&lt;br /&gt;
    Once the certificate has been created you&#039;ll need to uncomment the&lt;br /&gt;
    following directive in the APACHE$COMMON:[CONF]HTTPD.CONF file to&lt;br /&gt;
    enable SSL.&lt;br /&gt;
&lt;br /&gt;
        Include /apache$root/conf/ssl.conf&lt;br /&gt;
&lt;br /&gt;
    Thank you for using the Secure Web Server.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-installation tasks listed above are taken care of in the coming configuration portion of this installation guide.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
This part of the easy installation guide will take you through how to complete a basic configuration of Apache. Along the way, some optional tips and tricks will be shared that can prove useful for trouble shooting or testing. As mentioned before, it is assumed that OpenSSL (SSL111) is already installed on your system so that you can set up HTTPS for your web server.&lt;br /&gt;
&lt;br /&gt;
==Running APACHE$CONFIG==&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do after installing Apache is to run SYS$MANAGER:APACHE$CONFIG.COM. This will result in the creation of the APACHE$WWW user account and set it as owner to all of Apache’s files. It will also define logicals needed for Apache to run; one of these is the logical APACHE$ROOT, which gives us easy access to Apache’s root directory.&lt;br /&gt;
&lt;br /&gt;
* Execute the configuration file and answer the questions one by one (highlighted in yellow in the output below). The Apache username is best kept as APACHE$WWW, since you won’t be prompted to create a new Apache user the next time you update Apache (answer with a carriage return) and the password you can choose at random (interactive login is disabled for the account).&lt;br /&gt;
Then, choose your own desired UIC number. If you do not know what UIC numbers are available, you can answer the question with a “?”, which will list the users on the system. As you may be aware, it is important not to specify a UIC of 1 or in the range 300-377 since these numbers are reserved by VSI.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @sys$manager:apache$config&lt;br /&gt;
&lt;br /&gt;
                Secure Web Server for OpenVMS&lt;br /&gt;
                                      [based on Apache]&lt;br /&gt;
&lt;br /&gt;
        This procedure helps you define the operating environment&lt;br /&gt;
        required to run the Secure Web Server on this system.&lt;br /&gt;
&lt;br /&gt;
[Creating OpenVMS username &amp;quot;APACHE$WWW&amp;quot; ]&lt;br /&gt;
[Starting APACHE$COMMON:[000000]APACHE$ADDUSER.COM ]&lt;br /&gt;
&lt;br /&gt;
Press enter to continue...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the following information:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Full name for APACHE$WWW:&amp;lt;/span&amp;gt; ! Full name of site server administrator/owner.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Password:&amp;lt;/span&amp;gt; ! Password for the APACHE$WWW account&lt;br /&gt;
&lt;br /&gt;
    UIC Group Number:   ? ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC groups currently in use. Quite useful.&lt;br /&gt;
                          ! Please pick a group separate from all other&lt;br /&gt;
                          ! usernames.&lt;br /&gt;
                          ! Servers are usually given the first unused group,&lt;br /&gt;
                          ! starting at [377,*] and working down.  DO _not_&lt;br /&gt;
                          ! go below SYSGEN parameter MAXSYSGROUP.&lt;br /&gt;
&lt;br /&gt;
    UIC Member Number:  1 ! Question mark will display a list of all&lt;br /&gt;
                          ! UIC members currently in use in that group.&lt;br /&gt;
                          ! %UAF-W-BADSPC, no user matches specification&lt;br /&gt;
                          ! means the group is empty.&lt;br /&gt;
&lt;br /&gt;
***************************************************************************&lt;br /&gt;
*  Creating a NEW user account...                                         *&lt;br /&gt;
*                                                                         *&lt;br /&gt;
*  If at ANY TIME you need help about a prompt, just type &amp;quot;?&amp;quot;.            *&lt;br /&gt;
***************************************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 *** Processing APACHE$WWW&#039;s account ***&lt;br /&gt;
&lt;br /&gt;
Full name for APACHE$WWW:&lt;br /&gt;
Password (password is not echoed to terminal) [APACHE$WWW]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Group number [200]: ?&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each user has a specific User Identification Code (UIC) which consists of two&lt;br /&gt;
numbers, and is usually displayed in the format [group,member]. The first&lt;br /&gt;
number is the &amp;quot;group&amp;quot;. People with the same group number can access each&lt;br /&gt;
other&#039;s files through the group protection code.&lt;br /&gt;
&lt;br /&gt;
For instance, if you set protection using the following command:&lt;br /&gt;
        $ SET PROTECTION=(GROUP:R,WORLD) NEWS.TXT&lt;br /&gt;
only people in the same group could read the file &amp;quot;NEWS.TXT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following is a list of UIC&#039;s that already exist on the system: (You do not&lt;br /&gt;
have to specify one of these groups, if you do not want to.)&lt;br /&gt;
&lt;br /&gt;
       Owner         Username           UIC       Account  Privs Pri Directory&lt;br /&gt;
&lt;br /&gt;
SYSTEM MANAGER       SYSTEM            [1,4]      SYSTEM   All     4 SYS$SYSROOT:[SYSMGR]&lt;br /&gt;
...&lt;br /&gt;
TCPIP$TELNET   TCPIP$TELNET [3655,1]    TCPIP    Normal  8 SYS$SYSDEVICE:[TCPIP$TELNET]&lt;br /&gt;
TCPIP$FTP      TCPIP$FTP    [3655,2]    TCPIP   Normal  8 SYS$SYSDEVICE:[TCPIP$FTP]&lt;br /&gt;
TCPIP$SSH        TCPIP$SSH     [3655,3]      TCPIP    Normal  8 TCPIP$SSH_DEVICE:[TCPIP$SSH]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;vUIC Group number [200]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;UIC Member number: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%UAF-I-ADDMSG, user record successfully added&lt;br /&gt;
%UAF-I-RDBADDMSGU, identifier APACHE$WWW value [000200,000001] added to rights database&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-MDFYMSG, user record(s) updated&lt;br /&gt;
%UAF-I-GRANTMSG, identifier APACHE$APR_ALL granted to APACHE$WWW&lt;br /&gt;
%UAF-I-DONEMSG, system authorization file modified&lt;br /&gt;
%UAF-I-RDBDONEMSG, rights database modified&lt;br /&gt;
&lt;br /&gt;
Check newly created account:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Username: APACHE$WWW                       Owner:&lt;br /&gt;
Account:  AP_HTTPD                         UIC:    [200,1] ([APACHE$WWW])&lt;br /&gt;
CLI:      DCL                              Tables: DCLTABLES&lt;br /&gt;
Default:  APACHE$ROOT:[000000]&lt;br /&gt;
LGICMD:   LOGIN&lt;br /&gt;
Flags:  LockPwd DisNewMail DisMail DisReport&lt;br /&gt;
Primary days:   Mon Tue Wed Thu Fri&lt;br /&gt;
Secondary days:                     Sat Sun&lt;br /&gt;
Primary   000000000011111111112222  Secondary 000000000011111111112222&lt;br /&gt;
Day Hours 012345678901234567890123  Day Hours 012345678901234567890123&lt;br /&gt;
Network:  ##### Full access ######            ##### Full access ######&lt;br /&gt;
Batch:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Local:    -----  No access  ------            -----  No access  ------&lt;br /&gt;
Dialup:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Remote:   -----  No access  ------            -----  No access  ------&lt;br /&gt;
Expiration:            (none)    Pwdminimum:  6   Login Fails:     0&lt;br /&gt;
Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired)&lt;br /&gt;
Last Login:            (none) (interactive),            (none) (non-interactive)&lt;br /&gt;
Maxjobs:         0  Fillm:       300  Bytlm:        200000&lt;br /&gt;
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0&lt;br /&gt;
Maxdetach:       0  BIOlm:       300  JTquota:        4096&lt;br /&gt;
Prclm:          20  DIOlm:       300  WSdef:         15000&lt;br /&gt;
Prio:            4  ASTlm:       610  WSquo:         30000&lt;br /&gt;
Queprio:         4  TQElm:       610  WSextent:      30000&lt;br /&gt;
CPU:        (none)  Enqlm:      2000  Pgflquo:      250000&lt;br /&gt;
Authorized Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Default Privileges:&lt;br /&gt;
  NETMBX       TMPMBX&lt;br /&gt;
Identifier                         Value           Attributes&lt;br /&gt;
  APACHE$APR_ALL                   %X80010002&lt;br /&gt;
%UAF-I-NOMODS, no modifications made to system authorization file&lt;br /&gt;
%UAF-I-RDBNOMODS, no modifications made to rights database&lt;br /&gt;
&lt;br /&gt;
Please verify that this account does not violate any site-specific&lt;br /&gt;
security policy. This account will be enabled and it will have no&lt;br /&gt;
expiration date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Is everything satisfactory with the account [YES]:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PLEASE NOTE:&lt;br /&gt;
&lt;br /&gt;
The APACHE$WWW account was created with the minimum SYSUAF quotas to&lt;br /&gt;
run the server.  On almost all systems, the server should start but&lt;br /&gt;
these parameters will need to be increased to improve performance or&lt;br /&gt;
to keep up with increased demands.&lt;br /&gt;
&lt;br /&gt;
See Release notes for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To operate successfully, the server processes must have read access&lt;br /&gt;
to the installed files and read-write access to certain other files&lt;br /&gt;
and directories.  It is recommended that you use this procedure to&lt;br /&gt;
set the owner UIC on the CSWS files and directories to match the server.&lt;br /&gt;
You should do this each time the product is installed, but it only has&lt;br /&gt;
to be done once for each installation on a cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Set owner UIC on CSWS files? [YES]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you want to enable the impersonation features provided by suEXEC?&lt;br /&gt;
If so, the server will support running CGIs using specified usernames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Enable suEXEC? [NO]&amp;lt;/span&amp;gt;&lt;br /&gt;
Setting ownership on files.  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
Disabling suEXEC configuration.  This could take a minute or two.  . . .&lt;br /&gt;
Configuration is complete.  To start the server:&lt;br /&gt;
&lt;br /&gt;
    $ @SYS$STARTUP:APACHE$STARTUP.COM&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After running the configuration file, you can use the $ SHOW LOGICAL command to see the newly created Apache logicals.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;$1$DGA100:[SYS0.SYSCOMMON.APACHE.SPECIFIC.ELMILE.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ensuring SYS$SCRATCH Points To ODS-5 Device==&lt;br /&gt;
&lt;br /&gt;
As was explained in the introduction of this installation guide, it is important that Apache is installed on an ODS-5 enabled device. This also holds true for the logical SYS$SCRATCH, which defines a location where Apache can store temporary files; some of these may utilize extended filenames and, thus, require the device where the SYS$SCRATCH directory is located to be ODS-5.&lt;br /&gt;
&lt;br /&gt;
* Verify this with the commands shown below.&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical sys$scratch&lt;br /&gt;
   &amp;quot;SYS$SCRATCH&amp;quot; = &amp;quot;SYS$SYSROOT:[SYSMGR]&amp;quot; (LNM$JOB_892B6E00)&lt;br /&gt;
&lt;br /&gt;
$ show logical SYS$SYSROOT&lt;br /&gt;
   &amp;quot;SYS$SYSROOT&amp;quot; = “&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
        = &amp;quot;SYS$COMMON:&amp;quot;&lt;br /&gt;
1	&amp;quot;SYS$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.]&amp;quot; (LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
$ show device /full &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* An easy way to ensure that SYS$SCRATCH always points to an ODS-5 device is to create a scratch directory inside the Apache file structure. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create/directory apache$root:[000000.SCRATCH] /prot=(s:rwe,o:rwed,g:re) /log&lt;br /&gt;
	%CREATE-I-CREATED, APACHE$SPECIFIC:[000000.SCRATCH] created&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the next section, we will define the logical SYS$SCRATCH inside the file APACHE$ROOT: [000000]LOGIN.COM to point to this directory. Since the logical will be defined on the process level, the directory will only be used by Apache.&lt;br /&gt;
&lt;br /&gt;
==Utilizing LOGIN.COM==&lt;br /&gt;
&lt;br /&gt;
Inside the root directory for Apache, you will find APACHE$ROOT:[000000]LOGIN.COM which is executed when CSWS is started. Inside this file, you will find a command procedure that cleans up log files inside Apache’s root directory – these are created each time a subprocess is spawned and tend to fill up the directory over time.&lt;br /&gt;
&lt;br /&gt;
* To activate the command procedure, you will need to first comment out the preceding $ EXIT command. Then specify a version limit you find appropriate for each spawned subprocess; the default is 10. To edit the file, use the $ EDIT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit APACHE$ROOT:[000000]LOGIN.COM&lt;br /&gt;
$ ! Login.Com for Apache HTTP (WWW) Server&lt;br /&gt;
$ !&lt;br /&gt;
$ &amp;lt;span style=background:yellow&amp;gt;! exit&amp;lt;/span&amp;gt;&lt;br /&gt;
$ !&lt;br /&gt;
$ ! Use the following DCL commands to prevent the APACHE$SPECIFIC:[000000]&lt;br /&gt;
$ ! directory from filling up with old LOG files by limiting the number of&lt;br /&gt;
$ ! versions of each file.&lt;br /&gt;
$ !&lt;br /&gt;
$ temp1 = f$trnlnm(&amp;quot;apache$specific&amp;quot;)&lt;br /&gt;
$ temp2 = f$length(temp1)&lt;br /&gt;
$ temp3 = f$extract(temp2-1,1,temp1)&lt;br /&gt;
$ if (f$extract(temp2-2,1,temp1) .eqs. &amp;quot;.&amp;quot;)&lt;br /&gt;
$ then temp1 = f$extract(0,temp2-2,temp1) + temp3&lt;br /&gt;
$ else temp1 = f$extract(0,temp2-1,temp1) + temp3&lt;br /&gt;
$ endif&lt;br /&gt;
$ set directory &amp;lt;span style=background:yellow&amp;gt;/version_limit=10&amp;lt;/span&amp;gt; &#039;temp1&#039;&lt;br /&gt;
$ !&lt;br /&gt;
$ exit&lt;br /&gt;
$ ! End of file&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Optionally, you can also add the following lines of code prior to the command procedure. The comments to the side explain the purpose of the commands and defined logicals, which can be commented out if you deem them unnecessary. Then bottom command defines the SYS$SCRATCH logical mentioned in the previous section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ set process/parse = extend			  ! ODS-5 Support&lt;br /&gt;
$ set process/units = bytes                       ! Changes Blocks to bytes, MB, GB etc...&lt;br /&gt;
$ DEFINE DECC$ARGV_PARSE_STYLE ENABLE             ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$EFS_CASE_PRESERVE ENABLE            ! ODS-5 Support&lt;br /&gt;
$ DEFINE DECC$FILE_SHARING &amp;quot;TRUE&amp;quot;                 ! Used to aid in Apache Startup optimization&lt;br /&gt;
$ DEFINE DECC$ACL_ACCESS_CHECK &amp;quot;TRUE&amp;quot;             ! Ensure that ACL&#039;s are being honored by CRTL&lt;br /&gt;
$ DEFINE DECC$ALLOW_REMOVE_OPEN_FILES &amp;quot;TRUE&amp;quot;      ! Use for Removing Open Files during shutdown&lt;br /&gt;
$! DEFINE DECC$FILENAME_UNIX_NO_VERSION ENABLE    ! Use this carefully.&lt;br /&gt;
$! DEFINE APACHE$SPL_DISABLED &amp;quot;TRUE&amp;quot;              ! TRUE = ON FALSE = OFF For Troubleshooting startup issues.&lt;br /&gt;
$! DEFINE SYS$SCRATCH APACHE$ROOT:[SCRATCH]       ! Redefining SYS$SCRATCH&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes to the Main Configuration File==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, it is a good idea to specify the DNS name for the server (or the IP-address) in the main configuration file so that you can connect to it. In addition, since the release of version 2.4-48, it is recommended that you define the Mutex directive during the initial configuration; otherwise, directives that require a Mutex to be defined will cause the web server to fail to start.&lt;br /&gt;
&lt;br /&gt;
* Edit the file APACHE$COMMON:[000000.CONF]HTTPD.CONF and scroll down until you find the section where you can define a Mutex directive. By removing the number sign (#), you can activate one of the prewritten directives. In this installation guide we will use vmsdlm (highlighted below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mutex: Allows you to set the mutex mechanism and mutex file directory&lt;br /&gt;
# for individual mutexes, or change the global defaults&lt;br /&gt;
#&lt;br /&gt;
# Uncomment and change the directory if mutexes are file-based and the default&lt;br /&gt;
# mutex file directory is not on a local disk or is not appropriate for some&lt;br /&gt;
# other reason.&lt;br /&gt;
#&lt;br /&gt;
# Mutex default:logs&lt;br /&gt;
# Mutex flock:/apache$root/logs&lt;br /&gt;
# Mutex sem&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;Mutex vmsdlm&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, scroll down until you find the directive ServerName. Uncomment it and specify your DNS name (or IP-address if you do not have a DNS name) at port 80.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerName example.eng.vmssoftware.com:80&lt;br /&gt;
# Also possible to use IP-address, as shown below&lt;br /&gt;
#ServerName 123.123.1.23:80&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Just above the ServerName directive, you can also change the ServerAdmin directive. Change it to your email address to add yourself as the admin of the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
ServerAdmin you@your.address.com&lt;br /&gt;
	&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Press Ctrl-Z to exit the editor and save your changes.&lt;br /&gt;
&lt;br /&gt;
===Optional - Activate Sever-Info and Server-Status===&lt;br /&gt;
&lt;br /&gt;
* Once again, edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and uncomment the two modules shown below (you can find them in the list of modules further down in the document). You will also need to uncomment the directive ExtendedStatus On, which you can find directly beneath the modules.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit APACHE$COMMON:[000000.CONF]HTTPD.CONF&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule info_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
LoadModule status_module&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# ExtendedStatus controls whether Apache will generate &amp;quot;full&amp;quot; status&lt;br /&gt;
# information (ExtendedStatus On) or just basic information (ExtendedStatus&lt;br /&gt;
# Off) when the &amp;quot;server-status&amp;quot; handler is called. The default is Off.&lt;br /&gt;
#&lt;br /&gt;
ExtendedStatus On&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same configuration file, scroll down until you almost reach the bottom and uncomment the server-status and server-info &amp;lt;Location&amp;gt; directives. Also, make sure that you change the “Allow from” directive to suit your preferred security settings. In this guide, to keep things simple, these directives have been set to “Allow from all”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow server status reports generated by mod_status,&lt;br /&gt;
# with the URL of http://servername/server-status&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-status&amp;gt;&lt;br /&gt;
    SetHandler server-status&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Allow remote server configuration reports, with the URL of&lt;br /&gt;
#  http://servername/server-info (requires that mod_info.c be loaded).&lt;br /&gt;
# Change the &amp;quot;.example.com&amp;quot; to match your domain to enable.&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;Location /server-info&amp;gt;&lt;br /&gt;
    SetHandler server-info&lt;br /&gt;
    Order deny,allow&lt;br /&gt;
    Deny from all&lt;br /&gt;
    &amp;lt;span style=background:yellow&amp;gt;Allow from all&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; While these modules are handy when making changes to the web server, they should be disable or password protected at all other times to prevent others from using them.&lt;br /&gt;
&lt;br /&gt;
==Starting Apache==&lt;br /&gt;
&lt;br /&gt;
Having completed the changes to the main configuration file, you can now go ahead and start up the Apache web server.&lt;br /&gt;
&lt;br /&gt;
* Execute the following start-up file to start the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$startup&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see if the process has started, you can use the command&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ show system /proc=apache*&lt;br /&gt;
OpenVMS V8.4-2L1  on node YOURNODE  28-MAY-2021 06:10:20.81   Uptime  3 22:33:57&lt;br /&gt;
  Pid    Process Name    State  Pri      I/O       CPU       Page flts  Pages&lt;br /&gt;
00000486 APACHE$SWS      LEF      6      822   0 00:00:00.22       862    913&lt;br /&gt;
00000487 APACHE$SWS0000  LEF      5      668   0 00:00:00.27       812    864&lt;br /&gt;
00000488 APACHE$SWS0001  LEF      5      666   0 00:00:00.39       812    863&lt;br /&gt;
00000489 APACHE$SWS0002  LEF      5      666   0 00:00:00.33       812    863&lt;br /&gt;
0000048A APACHE$SWS0003  LEF      5      669   0 00:00:00.36       812    863&lt;br /&gt;
0000048B APACHE$SWS0004  LEF      5      666   0 00:00:00.31       812    863&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If Apache fails to start, have a look at the log files in APACHE$SPECIFIC:[LOGS] and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
* You can shut down Apache by executing the command below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown.com&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Connecting to your Web Server==&lt;br /&gt;
&lt;br /&gt;
After starting the web server, you should be able to connect to it using the HTTP protocol (HTTPS is not yet set up). This section offers two ways to test your connection.&lt;br /&gt;
&lt;br /&gt;
* The easiest way to test the connection to your server is by simply using a web browser. This will display the default homepage file APACHE$COMMON:[HTDOCS]index.html - a file that consists of a single message written in HTML code saying “It works!”. If you activated the server-info and server-status modules, you can attempt to connect to them as well.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
http://example.eng.vmssoftware.com&lt;br /&gt;
http://example.eng.vmssoftware.com/server-info&lt;br /&gt;
http://example.eng.vmssoftware.com/server/status&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your connection fails, shut down Apache and have a look at the log files located in APACHE$SPECIFIC:[LOGS] to figure out why the connection failed.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing Connection with TELNET===&lt;br /&gt;
&lt;br /&gt;
If you do not have a browser handy, a quick and easy way to test your unencrypted connection and see if your web server is working is to use TELNET.&lt;br /&gt;
&lt;br /&gt;
* To connect to your webserver from the same system using TELNET, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ TELNET 0 80&lt;br /&gt;
%TELNET-I-TRYING, Trying ... 127.0.0.1&lt;br /&gt;
%TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
-TELNET-I-ESCAPE, Escape character is ^]&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter and type the command below)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HEAD / HTTP/1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Enter twice)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;HTTP/1.1 200 OK&amp;lt;/span&amp;gt;&lt;br /&gt;
Date: Mon, 31 May 2021 10:52:10 GMT&lt;br /&gt;
Server: Apache/2.4.38 (OpenVMS)&lt;br /&gt;
Last-Modified: Fri, 28 May 2021 07:33:23 GMT&lt;br /&gt;
ETag: &amp;quot;2d-5c35ee3fe76c0&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 45&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html; charset=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
%TELNET-S-REMCLOSED, Remote connection closed&lt;br /&gt;
-TELNET-I-SESSION, Session 01, host localhost, port 80&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of using “HEAD / HTTP/1.0”, you can also try to use “GET /index.html HTTP/1.0” if you want to GET your index.html file.&lt;br /&gt;
&lt;br /&gt;
==Flushing the Memory==&lt;br /&gt;
&lt;br /&gt;
When you shut down Apache, the memory is automatically flushed to disk so that you can review the log files. It is not always convenient, however, to shut down the web server every time you need to have a look at the log files, which is why it could be useful to know how to manually flush the memory.&lt;br /&gt;
&lt;br /&gt;
* First, you need to run the command procedure shown below to define the necessary symbol.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$setup.com&lt;br /&gt;
$ show sym httpd&lt;br /&gt;
  HTTPD == &amp;quot;$ APACHE$COMMON:[000000]APACHE$HTTPD.EXE&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, to find out how to use the httpd utility, type it in at the command prompt followed by the -h flag for help.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -h&lt;br /&gt;
Usage: APACHE$HTTPD.EXE;1	[-D name] [-d directory] [-f file]&lt;br /&gt;
 				[-C &amp;quot;directive&amp;quot;] [-c &amp;quot;directive&amp;quot;]&lt;br /&gt;
[-k start|restart|graceful|graceful-stop|stop|flush]&lt;br /&gt;
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]&lt;br /&gt;
Options:&lt;br /&gt;
  -D name            : define a name for use in &amp;lt;IfDefine name&amp;gt; directives&lt;br /&gt;
  -d directory       : specify an alternate initial ServerRoot&lt;br /&gt;
  -f file            : specify an alternate ServerConfigFile&lt;br /&gt;
  -C &amp;quot;directive&amp;quot;     : process directive before reading config files&lt;br /&gt;
  -c &amp;quot;directive&amp;quot;     : process directive after reading config files&lt;br /&gt;
  -e level           : show startup errors of level (see LogLevel)&lt;br /&gt;
  -E file            : log startup errors to file&lt;br /&gt;
  -v                 : show version number&lt;br /&gt;
  -V                 : show compile settings&lt;br /&gt;
  -h                 : list available command line options (this page)&lt;br /&gt;
  -l                 : list compiled in modules&lt;br /&gt;
  -L                 : list available configuration directives&lt;br /&gt;
  -t -D DUMP_VHOSTS  : show parsed vhost settings&lt;br /&gt;
  -t -D DUMP_RUN_CFG : show parsed run settings&lt;br /&gt;
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG&lt;br /&gt;
  -t -D DUMP_MODULES : show all loaded modules&lt;br /&gt;
  -M                 : a synonym for -t -D DUMP_MODULES&lt;br /&gt;
  -t -D DUMP_INCLUDES: show all included configuration files&lt;br /&gt;
  -t                 : run syntax check for config files&lt;br /&gt;
  -T                 : start without DocumentRoot(s) check&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To flush the memory to disk, use the -k flag followed by the keyword “flush”.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ httpd -k flush&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting Up HTTPS Support for Apache==&lt;br /&gt;
&lt;br /&gt;
In this part of the configuration, you will first create a self-signed certificate with OpenSSL and then change the configuration settings to allow for HTTPS connections to the Apache web server. This section assumes that SSL111 (not SSL or SSL1) is already installed on your system. You can confirm this with the $ PRODUCT SHOW PRODUCT command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ prod show prod ssl111&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
PRODUCT                              KIT TYPE    STATE&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
VSI I64VMS SSL111 V1.1-1IA           Full LP     Installed&lt;br /&gt;
------------------------------------ ----------- ---------&lt;br /&gt;
&lt;br /&gt;
1 item found&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a Self-Signed Certificate===&lt;br /&gt;
&lt;br /&gt;
To create a self-signed certificate, it is easiest to use the built-in utility APACHE$COMMON:[000000] APACHE$CREATE_ROOT.COM, which will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
* Run the command procedure and answer the questions to create your self-signed certificate:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
1. View a Certificate&lt;br /&gt;
&lt;br /&gt;
2. View a Certificate Request&lt;br /&gt;
&lt;br /&gt;
3. Create a Certificate Request&lt;br /&gt;
&lt;br /&gt;
4. Create a Self-Signed Certificate&lt;br /&gt;
&lt;br /&gt;
5. Create a Certificate Authority&lt;br /&gt;
&lt;br /&gt;
6. Sign a Certificate Request&lt;br /&gt;
&lt;br /&gt;
7. Hash Certificate Authorities&lt;br /&gt;
&lt;br /&gt;
8. Hash Certificate Revocations&lt;br /&gt;
&lt;br /&gt;
9. Exit&lt;br /&gt;
&lt;br /&gt;
Enter Option: &amp;lt;span style=background:yellow&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Encrypt Private Key ? [N]&lt;br /&gt;
Encryption Bits ? [1024] &amp;lt;span style=background:yellow&amp;gt;2048&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate Key File ? [OPENSSL_ROOT:[KEY]SERVER.KEY] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_key]server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
Certificate File ? [OPENSSL_ROOT:[CRT]SERVER.CRT] &amp;lt;span style=background:yellow&amp;gt;apache$root:[conf.ssl_crt]server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
Country Name ? [US]&lt;br /&gt;
State or Province Name ? [Massachusetts]&lt;br /&gt;
City Name ? [Burlington]&lt;br /&gt;
Organization Name ? [VMS SOFTWARE INC.]&lt;br /&gt;
Organization Unit Name ? [OPENVMS SUPPORT]&lt;br /&gt;
Common Name ? [example.eng.vmssoftware.com]&lt;br /&gt;
Email Address ? [you@your.address]&lt;br /&gt;
Display the Certificate ? [N] Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pay special attention to the portions of the certificate creation that are highlighted in yellow. It is recommended that you use 2048 encryption bits instead of the default 1024. Furthermore, you also need to place the key and certificate files inside the Apache file structure.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;A comment about self-signed certificates:&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; Recently, using self-signed certificates has become increasingly difficult. It is possible that, although HTTPS is set up correctly for Tomcat, the browser refuses the connection. If so, you may wish to try another browser, choose some other method to test your connection, or obtain a valid certificate from a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
===Configuring HTTPS===&lt;br /&gt;
&lt;br /&gt;
With key and certificate in hand, you can now configure Apache to allow for HTTPS connections.&lt;br /&gt;
&lt;br /&gt;
* First edit the main configuration file APACHE$COMMON:[000000.CONF]HTTPD.CONF and, at the very bottom of the file, uncomment the Include directive that imports SSL-specific configuration directives from the file APACHE$ROOT:[CONF]SSL.CONF.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[000000.conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/ssl.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, edit APACHE$ROOT:[CONF]SSL.CONF and add the correct pathways to your key and certificate files. If you have obtained a certificate from a Certificate Authority, you can also specify the certificate chain file here. Alternatively, you might have a bundle file that contains key, certificate, and certificate chain file all together that you can specify instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[conf]ssl.conf&lt;br /&gt;
#   Server Certificate:&lt;br /&gt;
#   Point SSLCertificateFile at a PEM encoded certificate.  If&lt;br /&gt;
#   the certificate is encrypted, then you will be prompted for a&lt;br /&gt;
#   pass phrase.  Note that a kill -HUP will prompt again. A test&lt;br /&gt;
#   certificate can be generated with `make certificate&#039; under&lt;br /&gt;
#   built time. Keep in mind that if you&#039;ve both a RSA and a DSA&lt;br /&gt;
#   certificate you can configure both in parallel (to also allow&lt;br /&gt;
#   the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_crt/server.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateFile /apache$root/conf/ssl_crt/server-dsa.crt&lt;br /&gt;
&lt;br /&gt;
#   Server Private Key:&lt;br /&gt;
#   If the key is not combined with the certificate, use this&lt;br /&gt;
#   directive to point at the key file.  Keep in mind that if&lt;br /&gt;
#   you&#039;ve both a RSA and a DSA private key you can configure&lt;br /&gt;
#   both in parallel (to also allow the use of DSA ciphers, etc.)&lt;br /&gt;
SSLCertificateKeyFile &amp;lt;span style=background:yellow&amp;gt;/apache$root/conf/ssl_key/server.key&amp;lt;/span&amp;gt;&lt;br /&gt;
#SSLCertificateKeyFile /apache$root/conf/ssl_key/server-dsa.key&lt;br /&gt;
&lt;br /&gt;
#   Server Certificate Chain:&lt;br /&gt;
#   Point SSLCertificateChainFile at a file containing the&lt;br /&gt;
#   concatenation of PEM encoded CA certificates which form the&lt;br /&gt;
#   certificate chain for the server certificate. Alternatively&lt;br /&gt;
#   the referenced file can be the same as SSLCertificateFile&lt;br /&gt;
#   when the CA certificates are directly appended to the server&lt;br /&gt;
#   certificate for convinience.&lt;br /&gt;
#SSLCertificateChainFile /apache$root/conf/ssl_crt/ca.crt&lt;br /&gt;
&lt;br /&gt;
#   Certificate Authority (CA):&lt;br /&gt;
#   Set the CA certificate verification path where to find CA&lt;br /&gt;
#   certificates for client authentication or alternatively one&lt;br /&gt;
#   huge file containing all of them (file must be PEM encoded)&lt;br /&gt;
#   Note: Inside SSLCACertificatePath you need hash symlinks&lt;br /&gt;
#         to point to the certificate files. Use the provided&lt;br /&gt;
#         Makefile to update the hash symlinks after changes.&lt;br /&gt;
#SSLCACertificatePath /apache$root/conf/ssl_crt&lt;br /&gt;
#SSLCACertificateFile /apache$root/conf/ssl_crt/&amp;lt;span style=background:yellow&amp;gt;DigiCertCA.crt&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Above, a self-signed certificate has been used and, so, only the paths to the key and certificate files have been specified (highlighted in yellow above). If you have acquired your certificate from a certificate authority, you might also need to add the CA Certificate File using the SSLCACertificateFile directive (highlighted in yellow at the end of the output above).&lt;br /&gt;
&lt;br /&gt;
* Finally, restart the web server to implement the changes and connect to your web server via HTTPS. If the connection fails, you will need to review the log files and try to figure out why.&lt;br /&gt;
&lt;br /&gt;
===Optional – Convert Key and Certificate to DER Encoding===&lt;br /&gt;
&lt;br /&gt;
The key and certificate created earlier are in a PEM format. This means that if you edit the files, or type them out, you can see the characters and numbers in the encrypted files as plain text, though, they remain humanly unreadable. It is possible, however, to convert the files to other formats, such as DER, for encoding purposes. Once converted to DER encoding, the files are no longer readable and appears to be in a binary format. Sometimes, it is also convenient to combine the key, certificate, and CA certificate into one single file.&lt;br /&gt;
&lt;br /&gt;
* To convert the certificate and key from PEM to DER encoding, use the following commands.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -outform der -in apache$specific:[conf.ssl_crt]server.crt -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.der&lt;br /&gt;
$ openssl rsa -outform der -in apache$specific:[conf.ssl_key]server.key -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.der&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
View the DER encoded certificates and keys with the commands&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in apache$specific:[conf.ssl_crt]server_crt.der -inform der -text -noout&lt;br /&gt;
$ openssl rsa -in apache$specific:[conf.ssl_key]server_key.der -inform der -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the following error when viewing your encoded certificate, it means that you are trying to view a DER encoded certificate when your certificate is in fact PEM encoded.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate&lt;br /&gt;
12626:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTED CERTIFICATE&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get the following error, it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certificates.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
unable to load certificate.&lt;br /&gt;
13978:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:&lt;br /&gt;
13978:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1&lt;br /&gt;
error:tasn_dec.c:380:Type=X509&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To transform a DER encoded certificate and key to the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -inform der -in apache$specific:[conf.ssl_crt]server_crt.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem&lt;br /&gt;
&lt;br /&gt;
$ openssl rsa -inform der -in apache$specific:[conf.ssl_key]server_key.der -out -&lt;br /&gt;
_$ apache$specific:[conf.ssl_key]server_key.pem&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To now view the certificate and key files in the PEM format, use&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ openssl x509 -in cert.pem -inform pem -text -noout&lt;br /&gt;
$ openssl rsa -in key.pem  -inform pem -text -noout&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In some cases, it is advantageous to combine multiple pieces of the X.509 infrastructure into a single file. One common example would be to combine both the private key and public key into the same certificate. The easiest way to combine certificates, keys and chains is to convert each of them to PEM format and then copy the contents of each file into a new file.  This is suitable for combining files to use in applications like Apache. On OpenVMS you can combine PEM format self-signed certificates and keys with the DCL command $ APPEND. Below, the contents of the key file and the certificate file are appended to the new, empty file cert_and_key.pem.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ create apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_and_key.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server.key;1 (input) and APACHE$SPECIFIC:[sslcerts]cert_and_key2.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have obtained your certificate from a Certificate Authority, you can append your PEM format key, certificate, and CA certificate to a new empty file with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ append apache$specific:[conf.ssl_key]server_key.pem, -&lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]server_crt.pem, - &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]CAcrt.pem – &lt;br /&gt;
_$ apache$specific:[conf.ssl_crt]cert_key_and_CA.pem&lt;br /&gt;
%APPEND-W-INCOMPAT, APACHE$SPECIFIC:[sslkeys]server_key.pem;1 (input) and APACHE$SPECIFIC:[sslcerts]]cert_key_and_CA.pem;1 (output) have incompatible attributes&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Note:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; The combined key and certificate files must be in the PEM format. Converting to DER encoding after combining these files will not be successful as only the certificate will remain after the conversion.&lt;br /&gt;
&lt;br /&gt;
===Optional – Testing HTTPS Connection Using OpenSSL===&lt;br /&gt;
&lt;br /&gt;
If you cannot access your web server through a browser, or simply do not have one handy, a quick and easy way to see if HTTPS is working is to test the connection using OpenSSL. This section will walk you through how to do just that.&lt;br /&gt;
&lt;br /&gt;
* Start up SSL111 (OpenSSL) and enable the environment.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:ssl111$startup.com&lt;br /&gt;
$ @ssl111$root:[com]ssl111$utils.com define&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Then, use the command below to see if you can establish an HTTPS connection. Make sure you specify the correct DNS name and port for your server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ OpenSSL s_client “-connect” example.eng.vmssoftware.com:443 “-showcerts” “-state”&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;CONNECTED(00000003)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SSL_connect:before SSL initialization&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS write client hello&lt;br /&gt;
SSL_connect:SSLv3/TLS read server hello&lt;br /&gt;
SSL_connect:TLSv1.3 read encrypted extensions&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Optional - Setting up PHP for Apache==&lt;br /&gt;
&lt;br /&gt;
This section will show you how to set up PHP for web development with Apache; to complete it, you need to already have PHP installed on your system.&lt;br /&gt;
&lt;br /&gt;
===Loading PHP module===&lt;br /&gt;
&lt;br /&gt;
The first thing you need to do is to load the PHP module in the Apache’s main configuration file.&lt;br /&gt;
&lt;br /&gt;
* Copy over the file PHP$ROOT:[csws]mod_php5.exe to the directory where Apache stores its modules. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ copy php$root:[csws]mod_php5.exe apache$common:[modules] /log&lt;br /&gt;
%COPY-S-COPIED, PHP$ROOT:[csws]mod_php5.exe;1 copied to APACHE$COMMON:[modules]mod_php5.exe;1 (79KB)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To import the module, you need to make some changes in the main configuration file. A common and convenient practice is to keep the configuration for PHP separate, as was the case earlier in this document for SSL. Use the $ EDIT command to create the file APACHE$COMMON: [CONF]mod_php.conf and paste the lines below into the file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]mod_php.conf&lt;br /&gt;
## Load PHP module&lt;br /&gt;
       LoadModule php5_module modules/mod_php5.exe&lt;br /&gt;
## Define types to be associated with MOD_PHP&lt;br /&gt;
       AddType application/x-httpd-php .php .phtml&lt;br /&gt;
       AddType application/x-httpd-php-source .phps&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To incorporate these changes, add the following line at the very bottom of the main configuration file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ edit apache$common:[conf]httpd.conf&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Include /apache$root/conf/mod_php.conf&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last thing you need to do is restart Apache to load the changes in the main configuration file. &lt;br /&gt;
&lt;br /&gt;
===A PHP Example===&lt;br /&gt;
&lt;br /&gt;
Now that PHP has been set up with Apache, you can try to create a .php file and attempt to load it in your web browser. However, you need to make sure that the .php files have the correct file format Stream_LF in order for them to load correctly.&lt;br /&gt;
&lt;br /&gt;
* First create a test file in the APACHE$SPECIFIC:[HTDOCS] directory with the .php extension and fill it with some PHP code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ create apache$specific:[htdocs]test.php&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &amp;quot;Testing the PHPINFO () function&amp;lt;br&amp;gt;\n&amp;quot;;&lt;br /&gt;
phpinfo (INFO_ALL);       &lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;(Press Ctrl-Z)&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Next, convert the file from the file format Variable Length to Stream_LF. There are several ways to do this on OpenVMS, the easiest of which to use the built-in utility that comes with the Apache installation APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM. Though, to convert .php files, we first need to make some changes to APACHE$ROOT:[000000]APACHE$CVT _TYPES.DAT. Edit the file and add the line highlighted in yellow below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ edit apache$root:[000000]APACHE$CVT_TYPES.DAT&lt;br /&gt;
# APACHE$CVT_TYPES.DAT&lt;br /&gt;
#&lt;br /&gt;
#       File types that get converted by APACHE$CONVERT_STREAMLF.COM&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
.HTM*           #All HTML files (.HTM, .HTML, .HTML.FR, etc)&lt;br /&gt;
.SHTML          #Server-side includes&lt;br /&gt;
.TXT            #All TXT files&lt;br /&gt;
&amp;lt;span style=background:yellow&amp;gt;.PHP            #All PHP Scripts&amp;lt;/span&amp;gt;&lt;br /&gt;
[End of file]&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, run APACHE$ROOT:[000000]APACHE$CONVERT_STREAMLF.COM to convert your .php file. The command procedure will ask you for the top directory for all the files you want to convert to Stream_LF, which in our case is APACHE$SPECIFIC:[HTDOCS] (highlighted in yellow).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ @apache$root:[000000]apache$convert_streamlf.com&lt;br /&gt;
Top Directory: &amp;lt;span style=background:yellow&amp;gt;apache$specific:[htdocs]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starting conversion of apache$specific:[htdocs...]&lt;br /&gt;
This could take a while...&lt;br /&gt;
&lt;br /&gt;
Conversions complete.&lt;br /&gt;
  See SYS$SCRATCH:Convert_Dir.Log for a log of transactions.&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* This will create a new version of your php file, the file format of which you can find out with the command shown below.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ dir apache$specific:[htdocs]test.php;2 /full&lt;br /&gt;
&lt;br /&gt;
Directory APACHE$SPECIFIC:[HTDOCS]&lt;br /&gt;
&lt;br /&gt;
test.php;2                    File ID:  (11941,32,0)&lt;br /&gt;
Size:       0.50KB/8KB        Owner:    [APACHE$WWW]&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Record format:      &amp;lt;span style=background:yellow&amp;gt;Stream_LF&amp;lt;/span&amp;gt;, maximum 0 bytes, longest 43 bytes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a last step, load the file in your browser by visiting your relevant address.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
https://example.eng.vmssoftware.com/test.php&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* After testing the test.php file, you should delete it since it lists sensitive information about your server.&lt;br /&gt;
&lt;br /&gt;
=Removing Apache=&lt;br /&gt;
&lt;br /&gt;
To completely remove Apache (and all its files), do the following:&lt;br /&gt;
&lt;br /&gt;
* Shut down Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ @sys$startup:apache$shutdown&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Before you uninstall Apache, you should take note of where Apache is installed by taking a look at the Apache logicals. These will be removed with the removal of Apache.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$ODS5_AVAIL&amp;quot; = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;APACHE$APR_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APR_SHRP&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APR_SHRP.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$APU_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$APU_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$COMMON&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$HTTPD_SHR&amp;quot; = &amp;quot;APACHE$COMMON:[000000]APACHE$HTTPD_SHR.EXE&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$ROOT&amp;quot; = &amp;quot;APACHE$SPECIFIC&amp;quot;&lt;br /&gt;
        = &amp;quot;APACHE$COMMON&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$SPECIFIC&amp;quot; = &amp;quot;&amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE.SPECIFIC.&amp;lt;span style=background:yellow&amp;gt;YOURNODE&amp;lt;/span&amp;gt;.]&amp;quot;&lt;br /&gt;
  &amp;quot;APACHE$VSIKITS&amp;quot; = &amp;quot;DSA0:[000000.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uninstall Apache using the command below. If you want to completely remove Apache, you will want to answer “YES” to deleting the Apache Htdocs &amp;amp; Icons directory trees. The response is highlighted in yellow in the output.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ product remove csws&lt;br /&gt;
&lt;br /&gt;
The following product has been selected:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
&lt;br /&gt;
Do you want to continue? [YES]&lt;br /&gt;
&lt;br /&gt;
The following product will be removed from destination:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               DISK$SYS1:[VMS$COMMON.]&lt;br /&gt;
&lt;br /&gt;
Portion done: 0%&lt;br /&gt;
&lt;br /&gt;
Deleting the Apache Htdocs &amp;amp; Icons directory trees will remove ALL user&lt;br /&gt;
data stored within.&lt;br /&gt;
&lt;br /&gt;
Delete the Apache Htdocs &amp;amp; Icons directory trees ? [NO]: &amp;lt;span style=background:yellow&amp;gt;YES&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This could take a minute or two.  . . .&lt;br /&gt;
&lt;br /&gt;
...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;br /&gt;
&lt;br /&gt;
The following product has been removed:&lt;br /&gt;
    VSI I64VMS CSWS V2.4-38D               Layered Product&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you wish to do a complete removal of Apache, you should know that there are still files located in APACHE$ROOT:[000000], which itself is a search list consisting of APACHE$COMMON:[000000] and APACHE$SPECIFIC:[000000], that have not been removed. Since these logicals are now gone, you will need to use the locations from the $ SHOW LOGICAL *APACHE* command you used earlier. To remove the entire APACHE$COMMON directory tree (and APACHE$SPECIFIC as it is located in the same directory structure), you can use the $ DELETE /TREE command. However, because all files are deleted without mercy, you need to be very careful and make sure you do not delete any important files by mistake. Use this command at your own risk.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;lt;!----&amp;gt;&amp;gt;&lt;br /&gt;
$ delete /tree &amp;lt;span style=background:yellow&amp;gt;YOURDISK&amp;lt;/span&amp;gt;:[SYS0.SYSCOMMON.APACHE...]*.*;* /log&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;6 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, YOURDISK:[SYS0.SYSCOMMON.APACHE]LOGIN.COM;5 deleted (8KB)&lt;br /&gt;
...&lt;br /&gt;
$ delete $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE $1$DGA100:[SYS0.SYSCOMMON]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
$ delete /tree SYS$SYSDEVICE:[APACHE...] /log&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE]APACHE$CONFIG.DAT;1 deleted (8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.OPENSSL.COM]OPENSSL_EXIT_CMD.TPU;1 deleted &lt;br /&gt;
(8KB)&lt;br /&gt;
%DELETE-I-FILDEL, SYS$SYSDEVICE:[APACHE.SPECIFIC.YOURNODE]APACHE$HTTPD.DMP;1 deleted &lt;br /&gt;
(42.58MB)&lt;br /&gt;
...&lt;br /&gt;
$ delete SYS$SYSDEVICE:[000000]APACHE.DIR;1 /conf&lt;br /&gt;
DELETE SYS$SYSDEVICE:[000000]APACHE.DIR;1 ? [N]: Y&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The last remnants of Apache are its username APACHE$WWW inside the SYSUAF and any Apache logicals that you may have defined. First, delete the username account.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ mcr authorize&lt;br /&gt;
UAF&amp;gt; remove apache$www&lt;br /&gt;
%UAF-I-REMMSG, record removed from system authorization file&lt;br /&gt;
%UAF-I-RDBREMMSGU, identifier APACHE$WWW value [000200,000201] removed from rights &lt;br /&gt;
database&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to delete the logicals, use the DEASSIGN command.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
$ deassign /job APACHE$ODS5_AVAIL&lt;br /&gt;
$ deassign /sys APACHE$VSIKITS&lt;br /&gt;
$ show logical *apache*&lt;br /&gt;
&lt;br /&gt;
(LNM$PROCESS_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$JOB_892E1D00)&lt;br /&gt;
&lt;br /&gt;
(LNM$GROUP_000001)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSTEM_TABLE)&lt;br /&gt;
&lt;br /&gt;
(LNM$SYSCLUSTER_TABLE)&lt;br /&gt;
&lt;br /&gt;
(DECW$LOGICAL_NAMES)&lt;br /&gt;
%SHOW-S-NOTRAN, no translation for logical name *APACHE*&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Axel.elfving</name></author>
	</entry>
</feed>