Category: Documentation

OpenVMS x86 Initial Installation on VMWare ESXi vSphere Host

I had a lot of trouble trying to get piped serial connector working with ESXi but was finally able to get everything working with the steps below. I should note that the install manual was actually pretty good and helped me figure out the below.

For me I’m running ESXi 7.x with vCenter 7.x

I had issues with getting the piped method to work, and had a lot of issues.

I think a version of these instructions below also exist in the PDF manual but here are my notes as well in case I’m mistaken.

On the server that will be hosting the VM, you need to SSH into it’s shell and run the command:

esxcli network firewall ruleset rule list -r remoteSerialPort

In my case, the inbound/outbound ranges were:

Ruleset           Direction  Protocol  Port Type  Port Begin  Port End
----------------  ---------  --------  ---------  ----------  --------
remoteSerialPort  Outbound   TCP       Dst                 0     65535
remoteSerialPort  Inbound    TCP       Dst                23        23
remoteSerialPort  Inbound    TCP       Dst              1024     65535

So I picked a port like 2020 that falls both in the outbound range, and the inbound range.

But I had to check it was enabled with:

esxcli network firewall ruleset list -r remoteSerialPort

And it said:

Name              Enabled
----------------  -------
remoteSerialPort    false

Because it wasn’t enabled, I had to run:

esxcli network firewall ruleset set -r remoteSerialPort -e true

That took care of the firewall issue for me on the blade hosting the x86 VM.

On the VM, create a new serial but instead of selecting “Use named pipe” select “Use Network
The direction is set to “Server
The IP you want to use is the IP of the ESXi host which is hosting the VM, and you can use whatever port falls in the range from the previous step, so in my case the host is 192.168.1.27 and the port used is [b]2020[/b]

So the URI value is: tcp://192.168.1.27:2020

Make sure the check boxes for Connect At Power On is checked, and Yield CPU on poll is checked, but you can uncheckUse Virtual Serial Port Concentrator

After that’s all set, you gotta move onto setting up your SSH terminal, in my case I used PuTTY
The putty details are from a PDF manual regarding how to set it up, but it’s a lot less forgiving then usual

From Putty, go to Settings, then

“Terminal”
Then “Local echo”
“Force Off”

AND:

In Terminal settings, check the following boxes:

  • TURN OFF Implicit CR in every LF
  • TURN OFF Implicit LF in every CR
  • TURN OFF Local Echo
  • TURN OFF Local line editing
    1. In Window settings:
      set your Columns and Rows to match the Boot Manager display (typically 120 Columns, 40 Rows)
    2. If you are using a RAW session (recommended):

    • Host Name: 192.168.1.27

    • Port: 2020
    • Connection Type: Raw
    • Terminal → Implicit CR in every LF: UNCHECK
    • Terminal → Implicit LF in every CR: UNCHECK
    • Terminal → Local echo: Force off
    • Terminal → Local line editing: Force off
    • Telnet → Telnet Negotiation Mode: Passive
    • Telnet → Return key sends Telnet New Line instead of ^M: UNCHECK

Upgrading OpenVMS TCP to MultiNet/VSI TCPIP

A few VERY IMPORTANT notes.

  • This guide applies to OpenVMS 8.4.2U1.
  • From what I understand as of this post date, VSI has given up on their purchased Process software Multinet variation and have gone BACK to the original DEC/HPE TCPIP stack instead.
  • This guide doesn’t really have much value at this point but might later if VSI decides to use MultiNet later in the future.
  • This guide walks through how to install it, but does not include steps for “massaging it” to actually work once installed – in fact I had to use the added “switcher” to switch back to the old TCPIP…
    • VSI MultiNet isn’t finished yet so it’s not surprising it doesn’t work, or at least not without extensive continued work.

Source: https://vmssoftware.com/…VSI_TCPIP_INSTALL_QS.PDF

Step 1: Get the KITS files…

First, you’ll need to find the files for the TCPIP2 from the KITS folder under I64LPS. Have this ready to go for later.

Step 2: Update Your MODPARAMS file

Go ahead and edx/edit your SYS$SYSTEM:MODPARAMS.DAT file and make sure the following is set within it:

! Setup for VSI TCPIP 11-SEPT-2020 WM
MIN_GH_EXEC_DATA = 1500
MIN_GH_EXEC_CODE = 4200

Then run the below to place the new parameters into action for now and later:

$ @SYS$UPDATE:AUTOGEN SAVPARAMS SETPARAMS FEEDBACK

Step 3: Setting up the Directory

Create a TCPIP2 directory to upload the patches/kits

$ set default sys$common:[000000]
$ create/dir [.tcpip2]

For SFTP/SCP purposes, it’ll be located at:

/$30$dkb3/SYS0/SYSCOMMON/TCPIP2/

Step 4: Pre-Installation

VERY CAREFULLY follow the notes for wbem within it’s own .TXT file.

VERY IMPORTANT: For shared system disks, you’ll need to perform the install on ALL nodes one at a time, not just once!

These notes are for a single node system disk, non-clustered.

Install the pre-patch:

$ @sys$startup:wbem_services$shutdown
$ set default SYS$COMMON:[TCPIP2.pre]
$ unzip *.zipexe
$ PRODUCT INSTALL * /SOURCE=SYS$COMMON:[TCPIP2.pre]

When prompted:

  • Select install All Patches
  • Select defaults to prompts

After it’s done, run:

$ run SYS$COMMON:[WBEM_SERVICES]WBEM_Services$Config.exe

Follow the defaults, do not change the location and refresh the repository. (Not sure what this actually entails behind the scenes, but guessing it’s a localhost wbem thing) This will take roughly 10-20 minutes.

Step 5: Patch Installation

You can now run the TCPIP Install.

$ set default SYS$COMMON:[TCPIP2.patch]
$ unzip *.zipexe
$ PRODUCT INSTALL * /SOURCE=SYS$COMMON:[TCPIP2.patch...]

When prompted with the below…

   1 - VSI I64VMS VMS842L1I_CLUCONFIG V1.0 Patch (remedial update)
   2 - VSI I64VMS VSI_TCPIP V10.6          Layered Product
   ? - Help
   E - Exit

Choose one or more items from the menu:

You should type:

1,2

and press enter.

You should then see:

The following products have been selected:
    VSI I64VMS VMS842L1I_CLUCONFIG V1.0    Patch (remedial update)
    VSI I64VMS VSI_TCPIP V10.6             Layered Product
    
Do you want to continue? [YES]

Step 6: Before Reboot

Prior to rebooting, ensure that you comment out all commands in your system startup procedure that start the TCP/IP stacks within:  SYS$MANAGER:SYSTARTUP_VMS.COM 

Such as:

$ @TCPIP$STARTUP
$ @START_MULTINET
$ @TCPWARE:STARTNET

You must also comment out any corresponding START/NETWORK commands from your IP network stack.

In this example, the startup file: SYS$MANAGER:SYSTARTUP_VMS.COM

Had the following line:

$ @TCPIP$STARTUP

Changed to:

$ @SYS$STARTUP:IP$STARTUP

Step 7: Shutting it down…

TREAD LIGHTLY HERE! Don’t forget, if you’re not already working from the MP, you’ll need to connect to that instead of directly to the node via SSH.

Once you’re connected to the MP you can run the following shutdown command to shut it down…

$ @SYS$SYSTEM:SHUTDOWN

This is because you may not be able to connect with TCIP through SSH directly to the node if something goes wrong.

After rebooting, in my personal case, I had issues with the network having configuration errors still.

So I had to run:

@SYS$MANAGER:IP$SET_STACK

It then gave me a menu that allowed me to set the TCPIP stack back to how it previously was, and it gave an option to reboot now which I selected yes to perform.

End.

The lesson is, don’t use VSI Multinet aka VSI TCPIP.

Apache Redirect URLs to New Domain/Server

Just wanted to quickly write a very quick note for how to easily write a redirect for Apache that can help users with pushing bookmarks of an old domain to a new one.

For example, let’s say that long ago it was decided to host a store on an Apache server using the following URL format:

https://www.biri.me/clothingstore

But now time has gone on, the store has expanded, and you’d prefer customers have a different URL, or perhaps you want to push the store to another server entirely. Both can be accomplished using the same URL format with the following Apache .CONF lines:

Alias /clothingstore "/webdisk/clothingstore"
<Directory /webdisk/clothingstore>
  RewriteEngine on
  RewriteRule (.*) https://store.biri.me/$1 [R=301,L]
</Directory>

The $1 will redirect the remainder of the URL string to the other location when called. This can be extremely useful under many scenarios so I really wanted to make sure to document this here.

How to use NodeJS with KNEX.js to Access Oracle Database

Below is a cheat sheet install guide:

npm init
npm install knex --save
npm install oracledb

Follow the instructions to downloading the appropriate oracle basic client. You’ll need to basically download a basic client zip file, unzip the folder, and set the folder in either your Windows Path (PATH) or your Linux Path (LD_LIBRARY_PATH) More info can be found here: https://oracle.github.io/odpi/doc/installation.html

You’ll probably end up unzipping the basic client to /opt/oracle/instaclient_### or c:\oracle\instaclient##_#

There shouldn’t be any need to install a heavy ODT installer based version.

This guide should support Oracle 10 through Oracle 12 for connecting to Oracle database. This method assumes you only have an SID as well which was my own case and proved to be difficult to determine what to do to resolve it.

Below is a code example of a node js application using knex to connect to an oracle database.

Remember, table names are case sensitive, so you may need to capitalize the table name. (This isn’t necessarily true in older Oracle versions)

console.log('Biri.me Oracle Test Code');

var knex = require('knex')({
    client: 'oracledb',
    connection: {
        host: 'host.address.com:1234',
        user: 'username',
        password: 'password',
        database: 'databasename',
        instanceName: 'INSTANCE1',
        requestTimeout: 100,
        connectString: '(DESCRIPTION=          			
            (ADDRESS_LIST=            
            (ADDRESS=(PROTOCOL=TCP)              
            (HOST=host.address.com)(PORT=1234) ) )           
            (CONNECT_DATA=(SERVICE_NAME=INSTANCE1) ) )'
        //expirationChecker?(): boolean;
    },
    fetchAsString: [ 'number', 'clob' ]
  });

knex.select('*').from('TABLENAME').then(result=>console.log(result)).catch(error => console.log(error));

Ubuntu 16.04 RoundCube Install Guide (PHP7.0)

RoundCube Logo

RoundCube is a wonderful, free, open source webmail client to help users access their e-mail from any web browser.
RoundCube also has features that can be implemented such as calendars, address books (globally and locally per user), themes, plugins and much more.

This guide is intended to help share the experience I had with installing RoundCube as well as to hopefully help guide others through the process as well.

This guide’s steps were performed on an Ubuntu 16.04 server running PHP7.0 in particular.

Let’s Begin

Continue reading

Ubuntu Apache & PHP read/write access

Give Ubuntu’s Apache2 ownership to the directory (-R is all files within it)

sudo chown -R www-data /var/www/html/some_directory

Give that folder read/write access:

sudo chmod 755 /var/www/html/some_directory