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]

Reply via email to