Hi all,
Just finished a first draft of how to get embperl running as a CGI
under IIS. Comments/corrections very welcome - see the attached text
file.
Randy Kobes - is there any chance of getting a ppm done of 1.3.4
*without* Apache support. Most people won't have compilers at home
and this might be the simplest solution if they're forced to run
embperl under IIS.
Cheers
--
Andrew O'Brien
Senior Engineer email: [EMAIL PROTECTED]
Switch Online Group Pty Limited phone: +61 2 9299 1133
ABN 89 092 286 327 fax: +61 2 9299 1134
$Id: Embperl_IIS_Howto.txt,v 1.1 2002/03/20 04:20:03 andrewo Exp $
This document describes how to get Embperl running under Microsoft's
IIS. Please note the following:
1. I could NOT manage to get Embperl running straight through the
cgi directly. i.e. like so:
http://localhost/cgi-bin/embpcgi.pl/some/path.epl
2. This works for HTML::Embperl 1.3.4 and IIS 5.0 on Windows 2000
server. I haven't tried it with other combinations. It should be
more or less the same for the upcoming Embperl 2.0 release but
I haven't tested this yet.
3. This may seem HTML::Embperl specific. It should work just as well
for HTML::EmbperlObject sites, simply replace all references to
embpcgi.pl with epocgi.pl
One note for Embperl Object sites: I've found in the past that
having different extensions for public files (i.e. direct URLs)
and internal include files such as the base file is a good way to
go. This way you can make sure that people can't see your internally
used files, just the ones you want them to.
Install necessary software
~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Make sure you have IIS running on the host in question and that it
is started as a service automatically on reboot. This is the
default.
2. You'll need a perl distribution from somewhere. I recommend
ActiveState strongly but others will work, I'm sure.
http://www.activestate.com/Products/ActivePerl/
If you have IIS running already when you install this perl
distribution then you should get prompted to install a few perl
extensions/associations in IIS. Say yes.
3. You'll need a version of HTML::Embperl compiled *WITHOUT*
apache/mod_perl support. Currently there is no .ppm so you'll have
to compile it yourself.
FIXME: Randy - any chance of a non-apache compiled version?
Make sure you have Visual Studio/Dev Studio installed. I did this
with Visual Studio 6.0 installed but it should work with other
versions with working C compilers.
To compile:
1. Download and unpack the .tar.gz from
ftp://ftp.dev.ecos.de/pub/perl/embperl/
2. Start->run->command to bring up a dos prompt.
3. "cd \path\to\unpacked\embperl"
4. Assuming perl is correctly installed:
"perl Makefile.PL"
Answer no to the question about support for Apache/mod_perl
5. "nmake" to compile Embperl
6. "nmake test" to check that all is fine. All tests should pass
7. "nmake install" to install into your perl tree
8. You're done installing Embperl.
Configuring IIS
~~~~~~~~~~~~~~~
As noted above, this is for windows 2000. I have little experience
with windows so I can't tell you how 2000-specific this is - others
will have to contribute alternatives for other windows versions.
1. Open up the Management Console by right clicking on "My Computer" and
selecting "Manage"
2. Create a new site. Skip this step if you want to configure an
existing site! Right click on Internet Information Services (within
the Services and Applications group) and select New->Web site.
Enter a description, hit next
IP Address etc: most things here can be left as default for
development. If you know what you're doing then set this up
appropriately. Hit next.
Choose a path to the web site's home directory. (You may need to
create this directory beforehand). This is where the content of
this site lives. I'd suggest choosing something like:
"c:\mysitename\wwwroot" as this allows you to create associated
directories in "c:\mysitename" that aren't visible via the website.
Hit next.
Permissions: Allow "Read" and "Run scripts"
3. Configure your site.
1. Optionally create a "cgi-bin" (or "scripts" or whatever)
subdirectory for your own cgi scripts if you have any. If you
want to share scripts directories with multiple sites then
create a virtual directory - else just a normal directory in the
file system should be OK.
Make sure that the dir properties are set to execute
scripts.
This is not necessary for anything other than convenience as
with the mappings outlined below you can have mixed
static/script content in any directory with script execute
permissions set.
2. Associate perl scripts. This is not strictly necessary if you
are just running an embperl-only site but it doesn't hurt.
You have two options: either associate with the ActiveState perl
dll or with the perl.exe itself. Associating with the dll is
faster but they both work just as well.
Right click on the <mysite> icon in the Management Console
(within Internet Information Services) and choose
properties. Click on the "Home Directory" tab and the
"Configuration" button within "Application Settings".
(This might be already there from the perl installation). Add
the following Application mapping (use whatever extension you
like. I just happen to like .pl):
Executable: "c:\perl\bin\perlis.dll"
(or "c:\perl\bin\perl.exe %s %s". Note the two
space-separated "%s" strings. They must be
lower case)
Extension: ".pl"
Verbs: Limit to: "GET,HEAD,POST"
Tick the "script engine" box. Basically this means that all .pl
files are now scripts and not executables.
Tick the "Check that file exists" box.
3. Associate Embperl files with the embperl CGI.
First, copy the embpcgi.pl file from your perl installation
somewhere so you can customise this for your site. I recommend
"C:\mysite\embpcgi.pl" as this is probably site-specific. The
file is usually installed in the HTML/ directory of your perl
installation. For me (using activestate perl) this was:
c:\perl\site\lib\HTML\embpcgi.pl
Again, go to the site Application mapping settings and add:
Executable: "C:\perl\bin\perl.exe c:\mysite\embpcgi.pl %s"
Note: Only one "%s" is required.
Extension: ".epl" (This can be whatever you like, .epl is my
preference)
Verbs: Limit to: "GET,HEAD,POST"
Tick the "script engine" box and the "Check that file exists"
box.
Configure Embperl for your site
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Every site is different. Having a separate embpcgi.pl for each one is
just one way of doing it. This is perl, remember, so you can get the
configuration directives from wherever you like. What follows is a
simple example - you may well need something different if you've got
lots of virtual hosts or some other complication.
An easy way to configure your embpcgi.pl file is to add a BEGIN {}
block with all the Embperl config directives. You shouldn't have to
touch anything else for simple sites.
Eg.
BEGIN {
use Env;
$ENV{EMBPERL_LOG} = $ENV{TEMP}.'\embperl.log';
# HTML::Embperl::optRawInput + HTML::Embperl::optAllFormData;
$ENV{EMBPERL_OPTIONS} = 8208;
# HTML::Embperl::dbgSession + HTML::Embperl::dbgImport +
# HTML::Embperl::dbgDefEval + HTML::Embperl::dbgLogLink +
# HTML::Embperl::dbgInput + HTML::Embperl::dbgTab +
# HTML::Embperl::dbgForm + HTML::Embperl::dbgCmd +
# HTML::Embperl::dbgEval + HTML::Embperl::dbgStd
$ENV{EMBPERL_DEBUG} = 39862509;
#$ENV{EMBPERL_DEBUG} = 0;
$ENV{EMBPERL_SESSION_HANDLER_CLASS} = 'no';
}
This was enough to get me going. I didn't need session handling or
anything funky. You'll probably want to customise this - read the
Embperl docs (http://perl.apache.org/embperl) for more information.
Happy Embperling,
Andrew O'Brien
[EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]