Nov 30

Support for version 5.3 and a bit of selling thrown in!

We have been getting a lot of requests for a Version 5.3 of RAP recently, this is probably a 4th quarter rush because people want to get a solution before the end of the year? We had intended to hold off on support for V5R3 until later next year and put out a Version 2.1 release. However because of the number of requests to support the OS version we will be moving the release forward to the beginning of December (oh! thats next week!). We had thought about shipping it as a PTF, but unfortunately the programs etc are all compiled for V5R4 so we have to recompile them all. So if you need V5R3 support we will have it available next week.

The CBU boxes are an ideal fit for the RAP product, these boxes are sold on the basis that they are not used except in times of a loss of the source system, those people who have contacted us about them have been saying they tend to be sitting there having tapes loaded regularly but not much else. If you have a solution like RAP loaded you could have time based updating carried out which should allow you to use the target database for reporting activity. Also the data will be up to date should you need to switch to the target system. If you just want to have data replication and application RAP is a cost effective way to provide that solution ($5,000 will provide the ability to automatically apply that data). This is not a HA solution and is not trying to replace them, we feel there are enough people out there who need a cost effective method of protecting their data. RAP and CBU boxes provide that..

Chris…

Nov 29

IBM System i CBU Offer

We had a good chat with Steve Finnes yesterday about the RAP and JobQGenie and how we feel the products fit into the HA/DR space. He has agreed to mention us where appropriate in his customer messages as he goes around the community, so thanks for that Steve! One of the things he is very excited about is the current CBU offerings that IBM has. He says they have been very well received and selling well which has to be good for the product line. We also noted that the HA and DR vendors are offering various options for their software when you purchase a CBU edition system. This is something we will offer as well, purchase a CBU system from IBM and we will offer free installation and configuration support for the RAP and JobQGenie products. the support will be remote only and we will use Web based technology to deliver. We hope to get Steve to add this to his list of CBU offerings when he gets time.

Hope this helps those customers who are going for a CBU offering and installing a replication tool such as RAP on it….

Chris…

Nov 28

php and application modernization

One of the problems we are struggling with at the moment is how to put a new php interface onto the products we provide. At first glance it seems pretty easy, all we have to do is create pages that provide the same functionality as the panels and menus we have.

We felt pretty confident about how the use of php would give us a fairly simple yet effective way to modernize (just make it look pretty, its already got the latest technology) the current product suite. We even decided we would use templates and create generic panels that could be carried across all of the products. Then we hit the wall, we had hoped to be able to sign on to the system at the start of the application process and use the same connection to do all of the work across subsequent pages. This would allow us to make sure the user profile running the request had the authority to do so and keep system security intact. But our plan to use session variables to carry the connection information does not work, you cannot store a resource ID in a session variable. So each time we need to connect to run one of the i5_* functions we would have to issue the i5_conn request before running the command, program or DB request.

We can do this simply by storing the user name and password in the session variables and using them each time, this has its obvious downsides! So we looked at how to store the information on the server and use it each time, the problem with that was each of the i5_* functions requires the connection resource to be passed in. You do have the possibility of using a default connection but that would have its own problems as we want to ensure security integrity.

The i5_conn function is none persistent and when you look at how the process works in the background its easy to see why its done that way, each time you request a page from the server you get pot luck as to which server responder gets your request, it could be the same as the one you started with but may not! This means it cannot store local information about the connection for the next time it sees a request.

So we have spoken with Zend and hope they can offer an alternative, we only need the pretty interface over our existing code at the moment but looking forward even if we had done the application from the start we would have this problem?

Some how they need to add a kind of cookie process to the back end functions, when they are called they need to be able to set the environment for the user and store a map that can be keyed by the user, then if a request comes through it will have a key that corresponds to a user profile handle, the key can be verfied against the source somehow to esnure its not been modified or overridden! The map entries can expire in much the same way as a client cookie does and released on log out to stop a build up or theft of somekind.

At this point we are stuck so If you have a possible solution let us know.

Chris….

Nov 28

What ever happened to the Graphical Access package from IBM

One thing everyone is concerned about (or so it seems) is the lack of a graphical interface to the i5! I was trawling through some of our code for a product when I noticed that the panel group had a ENBGUI=*YES statement. I remember this was how you could have a Graphical Look and feel to your commands, menus and panels without a lot of pain and hardship! Why did IBM get rid if it? Is the source languishing in the lab somewhere needing attention? Why isnt it available anymore! I have read through the UIM manuals and they still support the tag so I assume on reading the tag IBM is still sending the additional information required to build the graphical interface?

I know it adds some additional elements to the 5250 stream that allow it to be converted. This should help with modernization shouldnt it? Maybe there are too few products out there built with UIM, but one is better than none isnt it?

Would IBM be willing to put the code out under an open source project and let the rest of us fix it up and get it working? I would assume its probably low level code which could be the problem, but if IBM has the technology why are they just letting this idea of i5 being just 5250 green screen??? Why not add the support back into XW1? Is this because few people have actually created UIM panels? If so it should encourage them to change, they are going to have to anyhow!

Chris…

Nov 27

Independant reviews

Would you be interested in a full review of your HA solution? We are developing an offering which will provide a customer with a fully documented review of their HA environment. This will be delivered by consultants who have experience with many of the HA products available in the market today. We are not aligned to any of the solutions so we are able to give you a independant view of your environment and what exposures you have with a suggested solution. The delivery will be carried out by people who have many years of experience delivering the various solutions out there. If you are interested in this kind of review please give us a call.

Chris…

Nov 27

To blog or not to blog! That is the question?

We have been keeping the blog updated on a regular basis now and hopefully passing on useful information to those of you who come back regularly? One of the problems is the amount of time it takes to keep the blog alive. We seem to get lots of people coming back manytimes to view the content but have little to no responses to the content from those users? Is this because the content does not deserve response or do people simply not want to spend the time to comment?

I recently went to a local User Group meeting where I had the opportunity to speak with Trevor Perry about his Blog and how he has simply stopped posting. His problem was the responses he got, for those of you who have not seen Trevor in action he is pretty much an in the face type of guy. This has created many bad feelings to creep into his postings and responses which has put Trevor in a position which isnt making him want to keep the blog alive. Blogging takes up a lot of time and effort, you also get a lot of unwanted attention, we are constantly being pounded by trash comments and spamming! The trash keeps coming regardless, this is additional work which takes even more time to filter through and weed out the idiots who seem to want to send me thousands of emails which promise me cheap meds, software, or any other kind of idiotic scheme! Yes I do get angry with these clowns as it puts many off the benefits of a well intentioned email campaign. You also get the person who will subscribe as a user, post a comment full of links and trash, luckily most gets stopped by the software but you still have to go into the site and clean up after.

We are now at the stage where we are considering how best to get the information out to the users without the pain and inconvenience being suffered using the Blog. Perhaps the best way would be to add only comment to the blog and have a subcription method to pass on the code and instructions to those who really want to see it?

We dont want to stop helping where we can and we do have a number of users who come back and email outside of the blog (probably dont want to chance the possibility of getting the emails from the spammers?) so we know people do appreciate the comment. We do however need to cut down on the time and effort being spent on the management of this without reducing its usefulness.

We will be looking at the alternatives and looking for a solution. If you have any comment on what you would like to see let us know.

Chris…

Nov 19

Adding PHP to the mix

Now we have a fully functioning webserver which is serving two sites from the same IP address and using Name Based Virtual Hosting, we need to add the ability for those sites to interact with the PHP engine. We have already set up the Zendcore (the engine) which starts up automatically, so all we have to do is set up our sites to pass PHP requests back to the server. This is done by using the proxy module available in Apache.

Here is the first part of the code we need to add to the configuration file, this will add the Proxy Modules to our Webserver instance. All this is done using the IBM HTTP Interface which is reached using the :2001 port against your IP address.

ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/

We will also remove the directory instructions from the config files as we will put it into the PASE Apache Servers configuration. So we simply removed the following elements from the config file. You can leave them in if you wish.


      Order Allow,Deny
      Allow From all
   

      Order Allow,Deny
      Allow From all
   

This is how your config file should now look.

# Configuration originally created by Create HTTP Server wizard on Mon Nov 12 20:56:15 EST 2007
LoadModule proxy_module /QSYS.LIB/QHTTPSVR.LIB/QZSRCORE.SRVPGM 
LoadModule proxy_http_module /QSYS.LIB/QHTTPSVR.LIB/QZSRCORE.SRVPGM 
LoadModule proxy_connect_module /QSYS.LIB/QHTTPSVR.LIB/QZSRCORE.SRVPGM 
LoadModule proxy_ftp_module /QSYS.LIB/QHTTPSVR.LIB/QZSRCORE.SRVPGM 
Listen 192.168.200.134:80
Options -ExecCGI -FollowSymLinks -SymLinksIfOwnerMatch -Includes -IncludesNoExec -Indexes -MultiViews
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{Cookie}n \"%r\" %t" cookie
LogFormat "%{User-agent}i" agent
LogFormat "%{Referer}i -> %U" referer
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log combined
LogMaint logs/access_log 7 0
LogMaint logs/error_log 7 0
NameVirtualHost 192.168.200.134:80
DocumentRoot /www/webserver/htdocs
AccessFileName .htaccess
SetEnvIf "User-Agent" "Mozilla/2" nokeepalive
SetEnvIf "User-Agent" "JDK/1\.0" force-response-1.0
SetEnvIf "User-Agent" "Java/1\.0" force-response-1.0
SetEnvIf "User-Agent" "RealPlayer 4\.0" force-response-1.0
SetEnvIf "User-Agent" "MSIE 4\.0b2;" nokeepalive
SetEnvIf "User-Agent" "MSIE 4\.0b2;" force-response-1.0
DirectoryIndex index.html

   Order Deny,Allow
   Deny From all

# Our Tools Server 

   ServerName www2.toolserver.local
   DocumentRoot /www/toolserver/htdocs
   ProxyPreserveHost On 
   ProxyPass / http://127.0.0.1:8000/ 
   ProxyPassReverse / http://127.0.0.1:8000/ 

# Our Webserver

   ServerName www2.webserver.local
   DocumentRoot /www/webserver/htdocs
   ProxyPreserveHost On 
   ProxyPass / http://127.0.0.1:8000/ 
   ProxyPassReverse / http://127.0.0.1:8000/ 

This is all you need in the IBM configurations to allow the php requests to be served, however we now need to configure the PASE based PHP server to respond to the requests this server will pass onto it. Remember we are using Name Based Virtual Hosting, so a really important element of the configs we have done so far is the ProxyPreserveHost On statement. This will ensure when we call the PASE server the host address this server responded to will be passed on. You can restart the server now if you want or wait until all the changes have been made.

A couple of important things to remember here are the location of the configuration files. We have a single server running multiple sites, we only need a single httpd.conf file in the webserver directory, the toolserver instance is simply being fed from the webserver configuration. So our IBM (some call it the ILE instance) server has a single httpd.conf located in ‘/www/webserver/conf’ directory. We now need to change the configuration file for the ZendCore PASE instance, this is located in the ‘/usr/local/Zend/Apache2/conf’ directory. Do not confuse this with the server configuration which is installed in ‘/www/zendcore/conf’ directory. This is the IBM level server for the Zendcore interface which we will review later.

Now we need to add a few elements to the ‘/usr/local/Zend/Apache2/conf/httpd.conf’ File. There is a configuration interface provided with the Zendcore product but we update the configuration file manually for the purposes of this exercise. To do this we will use Wordpad from a PC connected to the IFS on the i5. Open the directory structure until you find the file and open it using Wordpad.

The config file as shipped needs a few additional statements to be added.
First add the server admin email address, this allows the system to know where emails sent to the server admin should be directed to. If you dont have a specific email don’t worry its not essential to fill this in. Find the statement ServerAdmin and add in your email address if you want. Then we will set the user profile the Apache server will run as, this is required where you have directory access set to help manage security of the web pages etc. We use QTMHHTTP which ships with the IBM server. Find the User statement and add qtmhhttp to it, dont worry about the Group statement we wont be using it on the i5.

We also removed the some of the global statements for the FollowSymLinks etc but as the Virtual Host definitions override these you dont have to. Next we added a statement to show we are going to use Virtual Hosting and the IP address and port it will respond to

NameVirtualHost 127.0.0.1:8000

Now we simply add the Virtual host configurations, remember we removed the directory statements from the IBM configurations so we need to make sure we add them here.

# Web Server

   DirectoryIndex index.php index.html
   DocumentRoot /www/webserver/htdocs
   ServerName www2.webserver.local
   
      Options Indexes FollowSymLinks
      Order Deny,Allow
      Allow From All
   

# Tool Server

   DirectoryIndex index.php index.html
   DocumentRoot /www/toolserver/htdocs
   ServerName www2.toolserver.local
   
      Options Indexes FollowSymLinks
      Order Deny,Allow
      Allow From All
   

Now you can save the file and restart the server. To restart the server you need to use the ZendCore menu which is in ZENDCORE/ZCMENU. We have noticed that we have lots of problems unless this is done methodically, using the restart option seems to stop things from working. So go to the ZCMENU and take option 5, then option 5 to stop the HTTP servers. Use WRKACTJOB to ensure all the server instances related to the ZENDCORE server in QHTTPSVR subsystem plus ZENDCOREAP in the ZEND subsystem have ended before taking option 4 from the menu to start the servers again.

Now we need to test the servers, we will simply change the index.html file to be a php file. Rename the files ‘/www/webserver/htdocs/index.html’ and ‘/www/toolserver/htdocs/index.html’ to index.php. Next add the following code between the body statements within the files.


This will print out a list of the php environment if it runs correctly. We came across a problem which stopped our phpinfo from being displayed so if you have the same problem review our findings here After this you should now have a working environment with 2 Name Based Virtual Hosts. If you want to know how to configure IP based Virtual Hosting or using Alias statements to manage multiple hosts let us know and we will publish the details.

Next stage will be installing phpMyAdmin which allows us to manage the MySQL database using a GUI interface from a browser.
After that we will install SugarCRM and a few other tools and utilities. We will also look at how to create programs and interfaces that address both the DB2 and MySQL databases.

Chris…

Nov 16

Back again and have a few things to share

I have not been posting for a while because while installing the LAMP Server we came acros a very confusing error which had us all stumped. A very big thank you to the Zend support team for pointing us in the right direction and spending hours trying to find out what was going on! For FREE support its the BEST support I have come across for any product, others could learn a lot from their untiring dedication to the user community. Anyhow enough of the praise for Zend, we do have a couple of things we would like to see fixed up which we will mention later.

So the problem, we had installed everything and were starting to do the VirtualHosting configuration (we will get that finished and posted next week) when we came across a problem. Everytime we tried to get a php script served it wouldnt serve it properly, the html content was being served but not the php content.

We went through the configs a dozen or so times, uninstalled and re-installed the product about 4 times and generally lost a lot of hair. Eventually we logged the problem with Zend (we wanted to make sure we had all our information right) and they duly started to collect the information required, we shipped all of the configs, script content, phpinfo output and everything else we thought would help solve the issue. We still worked on the problem, setting up multiple test environments with nothing we tried resolving the issue. Eventually we hooked up with Rod from Zend who signed into the system with us and looked at what was happenning. After about an hour we started to look at the output and noticed the source was spaced with an extra character between every letter. We then looked at the CCSID for the jobs and the documents and noticed the jobs were running at CCSID 65535 so we changed them to 37 with no effect. We also looked at the CCSIDs of the files we tested with and they were at CCSID 1252. We both felt this was a problem, so we agreed to set the System Values to US based values and re-ipl the system.

We did this but had no luck everything was still the same. I did however try the same pages through Firefox and noticed something very strange, it showed a symbol between each and every character (IE just showed the text in the browser we only noticed the spacing when we viewed the source in note pad or whatever it uses). This looked like we were heading in the right direction, I sent off a copy of the output to Zend and set about removing and installing zendcore again!

Then this morning we set up the environment (the re-install deletes the config so we had to copy it back in) and still the same result. We then looked at the User profiles (we had seen issues where IBM ships profiles *disabled) but they were fine, we then looked at the php files again and noticed the files which worked were in the ‘/www/zendcore/htdocs’ directory, so we looked at the CCSID of those files (CCSID 1252), we then looked at the files in the test server directory (CCSID 13488 which is a special UNICODE character set implemented by IBM?). We had been moving the files around and just copying them, so every file was CCSID 13488! We created a new file with CCSID 1252 in the test directory and now everything is working!

So here are the lessons we learnt from this.

Firstly Zend has great support! Next ensure you set up the system values before moving ahead and install software, it could save headaches later. Also IE is a corrupt browser which hides issues and doesnt show true html output. Use Firefox as a suitable test of proper formated html! We did try Opera which has other problems and Safari which both gave differing results and didnt really help. Dont remove the Zend software unless you really have to and if you do make sure you go in and clean up the residue files (rm -R in the QP2TERM session works fine for this)

Couple of things we would like to see improved.

Firstly Zend needs to improve the interfaces to the configs and setup menu’s. The Re-start option on the ZCAMENU is flaky at best. The DLTLICPGM exit program needs serious attention, why does it copy everything into a renamed Directory and Library? The DLTLICPGM on the ZendPlatform should not end the apache server and not restart it without warning about this fact, I was running production apps which ended abnormally because I removed the platform option. We have spent a lot of time on the LPP exit programs and creating LPP’s so we could help there!

I was told by Zend (Rod) that there is a PTF SI28790 shipped by IBM which allows the PASE Apache server to be controlled in the IBM ILE interface? This has to be the right way to go, using the work arounds we did to manipulate the environment isnt right!

Now we will get back to building the rest of the LAMP Server and post the results.

Chris…

Nov 14

MySQL Library Path Environment variable required in QP2TERM

While looking up a question from the blog we noticed that the QP2TERM access to the MySQL server did not work, it came up with an object missing ‘libmysqlclient.so.’. We thought we had set up the LIBPATH environment variable but on checking we found that it had somehow been changed. So just to make sure you can use the mysql request in QP2TERM, ensure you have the ENVVAR LIBPATH set to ‘/usr/local/mysql/lib’. To get to the variables used in PASE you can use the WRKENVVAR command from any i5 command line, plus checking to see what environment variables have been set you cal run ‘set’ in the QP2TERM environment to see what has been set already.

Chris…