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]