× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Apologies for the mistake on the web link. I would guess that what was in
it didn't work for me because my program couldn't find my files and the
current apache config had that line in another <directory> and I cloned it
down into the new ones.

My obsolete comment was because this stuff all changes so quickly that there
is usually a totally different way to do things every couple of years or
less. It was not a crack on your webpage.

I am basically working on a proof of concept to show what can be done and
trying to understand how it all fits together so there are minimal libraries
and a minimal apache configuration. I do know one of my clients has at
least 10 or 15 data libraries (never actually counted them) when you
consider all of the software that they purchased that all link together and
then their multiple custom libraries.

I did finally figure out that my issue with the chunk data ended up being a
JSON bug in my HTTP service returning an elements in the wrong case...Field
vs field. It was giving a weird looking error that made it look like the
chunk data and since the firebase was the correct case, it worked correctly
there.

I work very well with functional versions of stuff that I can rip apart and
figure out how they work but building one from the bottom up without knowing
how it works is quite the challenge. Maybe I should just leave some stuff
hardcoded for now and quit worrying about doing things 100% right.

One last question (for a while anyhow). Why do you do the push and pop? If
I have one PC running using the HTTPPROD version and another PC running
using the HTTPTEST version, are there two (or more) separate jobs on the IBM
i to process the HTTP call that is executing my HTTPDATA program? If there
is more than one job, can they cross into each other and end up using the
wrong libl?



-----Original Message-----
From: WEB400 <web400-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Brad Stone
Sent: Monday, October 24, 2022 9:31 AM
To: Web Enabling the IBM i (AS/400 and iSeries) <web400@xxxxxxxxxxxxxxxxxx>
Subject: Re: [WEB400] Apache config

On Sun, Oct 23, 2022 at 9:56 PM <smith5646midrange@xxxxxxxxx> wrote:

Here is the link that you sent.
https://fieldexit.com/forum/display?threadid=522 I do see that it is
4 years old so it is probably obsolete. :)


No environment variables setting the library list there. :) Not obsolete
either. I still use similar if not exact setups like this to this day.
Let me know why you'd think that it would be obsolete.



So the library list is in a file stored on the IBM i, correct? How
does your process know which file to read to get the library list if
there are multiple environments (different libls)? It seems like I
will need to add another field in my json to tell it that. It also
seems like all of the push and pop would create a chunk of overhead.
When I get the real app working (I'm still playing with concept at
this point so I only have a couple), there are actually about 25+
libraries in the library list. That means 50+ push/pop for every
call. Or am I still missing something with what you are doing?


Yes, that's one way to do it. It knows which environment either by:

1. Its running in its own library/instance and has different data in the
control files

or

2. I set an environment variable in the instance (again, one for prod, one
for dev) that tells me what environment it is. Like this:

SetEnv MY_ENVIRONMENT production

I retrieve the MY_ENVIRONMENT env var and I know what to do. But to be
honest, I use option #1 much more.

No, you wouldn't add environment data to your json... you could, but I
wouldn't.

25 libraries? Wow. I didn't see that many in your example. We're dealing
mainly with any libraries containing data and/or service programs/programs.

Even if its 5-10 you won't notice it as far as performance. And it's very
scalable and updatable without having to end/restart your instances.

You can do what you want, just make 2 libraries (or more). 1 for dev/test,
1 for prod and run them on separate instances each running on a different
port (or even different IP addresses). Each instance will have the library
list for the environment.

I do the above even if I'm not using environment variables to set the
library list in the Apache config.

When you restart or stop your dev instance, do you really want to combine it
with prod and shut them both down?


Does your process do an HTTP POST or am I trying to make my process
work like yours and they are apples and oranges.


Doesn't matter.


And my apologies if I sounded short with any of my comments /
questions. I feel like I am trying to tread water wearing a concrete
overcoat and it is getting frustrating.


I understand. Slow down, keep it simple, and listen to others who are
trying to help.

Bottom line, think about running a separate instance for each environment
and set the library list in each one separately. That's my advice.




-----Original Message-----
From: WEB400 <web400-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Brad
Stone
Sent: Sunday, October 23, 2022 8:58 PM
To: Web Enabling the IBM i (AS/400 and iSeries)
<web400@xxxxxxxxxxxxxxxxxx

Subject: Re: [WEB400] Apache config

What link did I send you? I recall sending someone a generic Apache
config posted at Fieldexit.com... or maybe an IBM link that may have had
it.

Here's how I do it.

pushLib('datalib');
//do eRPG stuff
popLib('datalib');

I wrote pushLib and popLib years ago. Inside of it there also are
functions that can set a library list using a job description (I don't
think attaching a job description to QTMHHTTP or QTMHHTP1 will change
their functioning library list... and it's also not easily changed
each program run).

Control files are pretty simple...

sequence
library

Read through it by sequence and for each library pushLib()... then at
the end popLib(). You can even make a nice ILE function to do this.

I was sharing how I have done things for over 25 years with great success.
Sorry if it confused you.

On Sun, Oct 23, 2022 at 7:27 PM <smith5646midrange@xxxxxxxxx> wrote:

I am so totally confused by what I am being told.

I am trying to run an Angular / javascript app in the browser that
does an HTTP / Apache connection to get the data. The program that
it is running
(HTTPDATA) is a generic "SQL server" program that can take any SQL
request and process it. As for the Angular / javascript part, it is
unable to touch anything on the PC.

Now to this response.

You said that you never used those environment variables to set the
libl yet that is what was in the link that you sent me for how to
configure apache.
I assumed that was what I needed to use.

So to do it differently, you suggest a control file with a jobd or
library list. Where is this control file stored? I'm guessing that
it has to be on the IBM i somewhere because again, I can't access
the PC with my app.

For the jobd part of your response, I am not starting a job (maybe
it is auto started behind the scenes when I connect) so how do I
specify a jobd for a job that I am not submitting?

I am really struggling to find good documentation and I know part of
that is because I don't fully understand what I am trying to do and
much of what I read does not make sense. When Brad provided the
link for the apache configuration script file, I spent a ton of time
trying to figure out where it was so I could edit it. I finally
noticed that I can edit the config in the HTTPAdmin page. I still
have not clue where it put the thing.

Is there somewhere that I can get "step by step instructions for
dummies"
on
the best way to do this stuff?

-----Original Message-----
From: WEB400 <web400-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Brad
Stone
Sent: Sunday, October 23, 2022 3:56 PM
To: Web Enabling the IBM i (AS/400 and iSeries)
<web400@xxxxxxxxxxxxxxxxxx

Subject: Re: [WEB400] Apache config

I never used those environment variables to set the libl. I use my
push and pop libl functions. Much more convenient and no stopping
and starting the instance if it changes.

A simple control file to point to a job description (heaven forbid
those are
used!) or just a simple library list file. Easily updatable for the
next time the program runs.

On Sun, Oct 23, 2022 at 11:56 AM Vern Hamberg via WEB400 <
web400@xxxxxxxxxxxxxxxxxx> wrote:

Shouldn't the OP be fine using those settings but specify the same
program in each? It seems he has only to retrieve the value of the
QIBM_CGI_LIBRARY_LIST environment variable and set the LIBL from it?
The docs say "The internal environment variables set by this
directive are set after most early request processing directives
are run", so it probably depends on timing.

I speak from long-time-ago working with this stuff, so please
forgive if I'm as clueless as ever!

Regards
Vern

On 10/23/2022 9:09 AM, Brad Stone wrote:
Yes, but you'd need to control the library list in your program
itself.

What I do is set an environment variable to prod or test,
retrieve it,
and
set the library list dependent on that at the beginning of the
program.
I
have some push and pop lib functions I use for that.

But in your case I don't see an issue.. I would personally
prefer
2
apache
instances, one for prod and one for test/dev as well as separate
libraries. Then I would run the test one on a different port
(like
8080
or
8443).

On Sun, Oct 23, 2022 at 7:46 AM<smith5646midrange@xxxxxxxxx> wrote:

I have the following in my apache config file.



ScriptAlias /httpprod /qsys.lib/httpprod.lib/httpdata.pgm

<Directory /qsys.lib/httpprod.lib>

SetEnv QIBM_CGI_LIBRARY_LIST
"QTEMP;QGPL;YAJL;httpproda;httpprodb"

allow from all

order allow,deny

Options +ExecCGI +Includes

SetOutputFilter Includes

</Directory>



ScriptAlias /httptest /qsys.lib/httptest.lib/httpdata.pgm

<Directory /qsys.lib/httptest.lib>

SetEnv QIBM_CGI_LIBRARY_LIST
"QTEMP;QGPL;YAJL;httptesta;httptestb"

allow from all

order allow,deny

Options +ExecCGI +Includes

SetOutputFilter Includes

</Directory>



I am using the alias to control the library list between my
prod and
test
data. With this config, I have to have two copies of
httpdata.pgm, one
in
each library. Is there a way to configure this so both aliases
call the same program such as
/qsys.lib/httpcommon.lib/httpdata.pgm?



--
This is the Web Enabling the IBM i (AS/400 and iSeries)
(WEB400) mailing list To post a message
email:WEB400@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe, or
change list options,
visit:https://lists.midrange.com/mailman/listinfo/web400
or email:WEB400-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
athttps://archive.midrange.com/web400.


--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
mailing list To post a message email: WEB400@xxxxxxxxxxxxxxxxxx To
subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxxxxxxxx Before posting, please
take a moment to review the archives at
https://archive.midrange.com/web400.


--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
mailing list To post a message email: WEB400@xxxxxxxxxxxxxxxxxx To
subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxxxxxxxx Before posting, please
take a moment to review the archives at
https://archive.midrange.com/web400.


--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
mailing list To post a message email: WEB400@xxxxxxxxxxxxxxxxxx To
subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxxxxxxxx Before posting, please
take a moment to review the archives at
https://archive.midrange.com/web400.


--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
mailing list To post a message email: WEB400@xxxxxxxxxxxxxxxxxx To
subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxxxxxxxx Before posting, please
take a moment to review the archives at
https://archive.midrange.com/web400.


--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
mailing list To post a message email: WEB400@xxxxxxxxxxxxxxxxxx To
subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxxxxxxxx Before posting, please
take a moment to review the archives at
https://archive.midrange.com/web400.


--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing
list To post a message email: WEB400@xxxxxxxxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxxxxxxxx Before posting, please take a
moment to review the archives at https://archive.midrange.com/web400.



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.