Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 7 of 7 total
Thread Single Web Server Instance, Single App Directory and Multiple Data Directories?
Wed, Feb 21 2018 8:10 PMPermanent Link

Frederick Chin

My web application sits in \APPDIR and it references 3 tables via a database in \APPDIR\DATA1.

The web server's output folder is \APPDIR and uses the application's database name above.

I would like to create a second data directory called \APPDIR\DATA2 and allow a different user to access it using the same web application in \APPDIR.

What I am trying to do here is to limit the number of times the web server is started to reduce memory usage and to reduce application file duplication and updates.

Is this a feasible scenario and what configuration files do I need to change/copy?

--
Frederick
Thu, Feb 22 2018 3:33 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Frederick,

<< My web application sits in \APPDIR and it references 3 tables via a database in \APPDIR\DATA1.

The web server's output folder is \APPDIR and uses the application's database name above. >>

Just a side-note: in general, you don't want to have any "internal" things like databases, etc. sitting in a subdirectory underneath the main content directory for the web server.  If you do that, then anyone can grab your databases, etc. by simply messing with the URLs being used.

<< I would like to create a second data directory called \APPDIR\DATA2 and allow a different user to access it using the same web application in \APPDIR. >>

In that case, I would simply define two different databases in EWB that both contain the same dataset definitions and access them by their defined name.  This is a bit of a pain currently in EWB, but you can make copies by simply coping all of the database/dataset definitions in the ewbsrvr.ini file (or the ewbide.ini file, if you're currently still working only in the IDE).

If you need more information on this, just let me know.

Tim Young
Elevate Software
www.elevatesoft.com
Fri, Feb 23 2018 8:19 AMPermanent Link

Matthew Jones

Tim Young [Elevate Software] wrote:

> Just a side-note: in general, you don't want to have any "internal" things like databases, etc. sitting in a subdirectory underneath the main content directory for the web server.  If you do that, then anyone can grab your databases, etc. by simply messing with the URLs being used.

Very much so - alarm bells were ringing when I read that. NEVER put databases below the main directory, always outside. And always check any URLs for '..' in them.

--

Matthew Jones
Fri, Feb 23 2018 6:31 PMPermanent Link

Frederick Chin

Tim,

/*
Just a side-note: in general, you don't want to have any "internal" things like databases, etc. sitting in a subdirectory underneath the main content directory for the web server.  If you do that, then anyone can grab your databases, etc. by simply messing with the URLs being used.
*/

Noted.

/*
In that case, I would simply define two different databases in EWB that both contain the same dataset definitions and access them by their defined name.  This is a bit of a pain currently in EWB, but you can make copies by simply coping all of the database/dataset definitions in the ewbsrvr.ini file (or the ewbide.ini file, if you're currently still working only in the IDE).
*/

I suppose that with the different datasets defined, the same application can be used but internally, it switches to different dataset directories depending on the user logged in and only one web server instance is necessary?

Will I need to start multiple server instances if I have different applications running in the same computer? I see that EWB server takes up about 4MB of memory in idle state and I have 1GB of memory before Windows Server 2016 and other services start.

My expected scenario for a single application with multiple data is:-

Client 1 --> STunnel --> EWB Web Server --> EWB Application --> Data1
Client 2 --> STunnel --> EWB Web Server --> EWB Application --> Data2

while the scenario for multiple applications is:-

Client --> STunnel --> EWB Web Server 1 --> EWB Application 1 --> Data For App 1
Client --> STunnel --> EWB Web Server 2 --> EWB Application 2 --> Data For App 2

In both scenarios above, I expect that only one instance of STunnel would be needed because there is only one IP address.

/*
If you need more information on this, just let me know.
*/

Thanks. Will do.

--
Frederick
Tue, Feb 27 2018 2:26 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Frederick,

<< I suppose that with the different datasets defined, the same application can be used but internally, it switches to different dataset directories depending on the user logged in and only one web server instance is necessary? >>

EWB will not perform such switching *for* you, you'll still need to select which database to access in your EWB client application and then use that database name in your TDatabase instance(s) in your EWB client application.

<< Will I need to start multiple server instances if I have different applications running in the same computer? >>

It's really up to how you wish to set things up.  Each EWB Web Server instance can serve up multiple databases, so you can run multiple client applications against the same web server instance and just have them access different databases.

<< My expected scenario for a single application with multiple data is:-

Client 1 --> STunnel --> EWB Web Server --> EWB Application --> Data1
Client 2 --> STunnel --> EWB Web Server --> EWB Application --> Data2 >>

That's good.

<< while the scenario for multiple applications is:-

Client --> STunnel --> EWB Web Server 1 --> EWB Application 1 --> Data For App 1
Client --> STunnel --> EWB Web Server 2 --> EWB Application 2 --> Data For App 2 >>

That is also good (see below for caveats).

<< In both scenarios above, I expect that only one instance of STunnel would be needed because there is only one IP address. >>

Unfortunately, that won't work because Stunnel is going to need to route requests to a different port for each instance of the EWB Web Server.  So, you're going to need two different in-bound IP addresses in order to allow STunnel to route port 443 to each specific web server instance.  It's either that or be forced to specify a different port number in the URLs.

Tim Young
Elevate Software
www.elevatesoft.com
Wed, Feb 28 2018 5:55 AMPermanent Link

Matthew Jones

Tim Young [Elevate Software] wrote:

> << In both scenarios above, I expect that only one instance of STunnel would be needed because there is only one IP address. >>
>
> Unfortunately, that won't work because Stunnel is going to need to route requests to a different port for each instance of the EWB Web Server.  So, you're going to need two different in-bound IP addresses in order to allow STunnel to route port 443 to each specific web server instance.  It's either that or be forced to specify a different port number in the URLs.

FWIW, the ICS open source proxy can route using the http header, so you can use one IP for many servers. It is a tad complicated to set up but probably not too hard for a developer. The person behind it doesn't want to provide support to loads of newbies so doesn't make it too easy to find, but it works very well. If anyone is interested, I could give more detail.

--

Matthew Jones
Wed, Feb 28 2018 10:43 AMPermanent Link

Frederick Chin

"Matthew Jones" wrote:

/*
FWIW, the ICS open source proxy can route using the http header, so you can use one IP for many servers. It is a tad complicated to set up but probably not too hard for a developer. The person behind it doesn't want to provide support to loads of newbies so doesn't make it too easy to find, but it works very well. If anyone is interested, I could give more detail.
*/

I expect great things for the SSL version of EWB's web server and I hope that it will be worth the wait.

Tim would probably address the additional work required to use Stunnel currently to support a secure connection for EWB's applications.

--
Frederick
Image