Manual Deployment on a live Web server
Once you've developed your application and you've tested and debugged it on your development machine, the next step is to transfer that application to the server for deployment.
Summary
Deploying involves a number of steps:
- Make sure IIS is installed and base configured
- Install the Visual FoxPro runtime files for an EXE based COM server
- Copy your application project folder (Deploy folder)
- Copy your Web Files to the server (Web Folder)
- Copy any Data for your Application (where ever)
- Run Web Server Configuration Tool
- Or manually configure your Web site/virtual
- Set permissions on folders
Visual FoxPro Runtimes
In order to run your FoxPro application you need to have at least the FoxPro Runtimes installed. You can install the FoxPro runtime from the VFP download location by going to the following link and clicking on Download.
As an alternative you can also install a full install of FoxPro on your server. Sometimes this can be useful if you need to manually manipulate FoxPro data files or you need to debug your application. Y
Server Configuration
Before anything else, you need to make sure your Web Server is ready to run your Web Connection application. Two things need to happen to make that work:
IIS has to be installed and configured
Since Web Connection runs on IIS (or also Apache) we have to make sure that IIS is installed. Follow the IIS Installation instructions to install and configure the base Web Server installation.Visual FoxPro Runtimes have to be installed
Since a Web Connection server is a Visual FoxPro 9 application, you'll need to install the Visual FoxPro Runtimes on the Web Server. Either install a full version of Visual FoxPro on your server, or install a runtime only build. You can download a pre-configured runtime installer from Christof Wollenhaupts FoxPert Web site.
Simple Copy
Because Web Connection projects contain a single folder hierarchy, you pretty much can zip up your entire application folder tree (deploy
and web
folders) and push that up to the server and unzip there.
Build.ps1 helps packaging for files
If you are using a new project in Web Connection 6.0 or later you can also use the build.ps1
file in your project's root folder to build all the distribution files into a self-contained Zip file you can copy to your server.
The batch file copies all the required Web Connection dependency DLLs alongside your exe and startup INI files.
It creates:
deploy
folderweb
folderdata
folder (if it has something in it)
You can optionally add additional folders to this zip file as needed.
The following section describes how to manually copy these files.
Copy Dependency DLLs into Deploy
However, one thing missing from such a simple folder copy, is the collection of dependent DLLs that Web Connection uses. These DLLs live in Web Connection install folder but need to be copied into the Deploy
folder before you build your final install for the server:
- wwipstuff.dll
- wwdotnetbridge.dll
- zlib.dll
- Newtonsoft.Json.dll
- Markdig.dll
- Renci.SshNet.dll
The simple install often is sufficient but if your project is more complex or you want to break up your Code and Web folders into separate repeatable packages, you can use the following steps.
New Web Connection projects include a build.ps1
file in the root folder that create a combination of your deploy
folder, plus the required DLLs in a generated build
folder which is suitable to deployed to a live server.
Package your Deploy Folder
Your Web Connection project by default depends on the Web Connection installation for various dependencies and DLL files as outlined in the previous section.
From Web Connection's perspective, the deploy folder typically only needs a few files:
- MyApp.exe
- MyApp.ini
\Temp
Folder (empty)- wwipstuff.dll
- wwdotnetbridge.dll
- zlib.dll
- Newtonsoft.Json.dll
- Markdig.dll
- Renci.SshNet.dll
Add to that any explicit dependencies that your application has if any. Extra configuration files. Data Files etc.
To help with collecting dependency files and to build a repeatable, deployable Deploy
folder, a build.ps1
file was created in the project root. When you run this batch file it'll copy all the dependent support files from the Web Connection installation folder, plus your compiled EXE and INI files into a Build
folder. The batch file also zips up all those files for you (if 7zip 7z.exe is on your path).
If you have additional files or folders you need to deploy as part of your application I recommend you add those to the build folder or better yet you add the commands to copy the files in build.ps1
to copy them as part of the script that creates the final \build
folder. You can zip up all files in this folder, upload to the server and then unzip them back into the Deploy
folder.
Copying your Deploy Folder to the Server
Once you've zipped up all of your code files you can send those to the server and make sure to unzip them into the Deploy
folder of your project. Keep in mind that the project structure is important so the Deploy
and Web
folder names are significant.
Depending on how you packaged your code files you likely just unzip the file into your Deploy
folder after which you should be ready to run your main EXE file.
Web Connection Handler File Upload
The Web Connection handler includes a file upload option that allows you to upload arbitrary files to the Web server, which can be a great way to push files the server without requiring installation of an FTP server. For this to work you first have to publish your Web Folder so the module is present (see steps below) and you'll need to modify the .config file to allow large file uploads.
Copying Web Folder to the Server
For deploying your Web files (Html, CSS, JavaScript, Images and Web Connection Script Files) to the server you have a number of options:
Simple Copy
At its simplest you can simply zip your Web
folder and send that up to the server and unzip it there. That works fine for a one time install. You can use Remote Desktop File Transfer, a DropBox/OneDrive file share, or any number of other ways to the get files up there.
Using Visual Studio Web Publishing
However, more than likely you'll also want to update Web files frequently as you modify your application and for that you typically will want to use an FTP server or IIS Web deploy to allow for individual or incremental updates of server files.
If you use Visual Studio, you can use the Web Publish feature and Web Deploy on the server to push files from your machine to the Web server. Web Publishing uses either FTP or IIS Web Deploy to publish your entire Web site or individual files or folders to the Web server. Web Publish supports incremental updates of projects as well as allowing to publish individual files quickly and easily right out of Visual Studio.
Exclude for PRG/FXP Script Files
If you're using Web Connection Scripting Pages (via
Response.ExpandScript()
) make sure you don't publish your PRG or FXP files in your Web folder. When script files compile they embed hardcoded paths into the PRG and if paths change the code will break. Either let the files auto-compile or if you're running pre-compiled scripts use the admin page Compile scripts option to compile your scripts.
Run the Server Configuration Script
Once you've uploaded and set up your Deploy
code and Web
files, you need to configure the Web Server for your application. Make sure that IIS is installed and configured on the server, and that any Web site you plan to install on exists before you start.
Then simply run the following from an Administrator Command Prompt:
MyApp.exe CONFIG
where MyApp
is the name of your server application.
Configuring the Deployment Script
If configuration of your server is different than your local dev environment - different virtual/root setup or different folder structures - you'll need to adjust the configuration for the script which is contained in the
YourApp.ini
file setting next toYourApp.exe
.[ServerConfig] Virtual=wconnect ScriptMaps=wc,wcs,wcsx,wwd,wst,md,blog IISPath=IIS://localhost/w3svc/1/root
You can change the Web Site by changing the IISPath and the ID (the number before
/root
) and matching that to an IIS Site id you can find in the IIS Manager. You can change the virtual folder name, or leaveVirtual
empty to specify a root Web site.
Manual Configuration
If for some reason the automatic configuration does not work, or you're running an older pre-v6 server you'll need manually configure the server. To do this you need to perform the following steps:
- Create an IIS Application Pool (see)
- Create the IIS Virtual Directory using the Application Pool (see)
- Add Windows and Basic Authentication (see)
- Create ScriptMaps for
.wc
and.yourExt
(see) - Create Temp Folder Permissions (see)
- Lock down the Admin Folder
For the FoxPro Application:
- Register your EXE as a COM Server with
MyApp.exe /regserver
(Admin required) - Copy data directories and make sure paths are referenced
Fix up any custom Configuration Setting
By default your Web Connection configuration should be complete at this point and you should be able to run your application.
If you have any custom configuration settings that depend specifically on the environment - email servers, passwords, special paths etc.- in your configuration files you should make those changes now.
You should also set these settings for your production server:
DebugMode=off
UnattendedComMode=on
LiveReloadEnabled=off
These changes typically affect MyApp.ini
for your FoxPro server configuration, and web.config
for the Web Connection handler configuration with the latter rarely having to change.
Start up the Application
At this point your server should be ready to run. I recommend you start by testing your application in File Mode first. Make sure the the MessagingMechanism=File
to start.
To test, run your server by simply double clicking the EXE in Explorer or running from the Command Prompt. If all goes well the server should just pop up.
If you manually configured or aren't using a new-style project layout, make sure your temp path, template and all the paths in
yourApp.ini
andweb.config
(orwc.ini
if using ISAPI) match. Specifically make sure theTempPath
andTempFilePrefix
match.
Next you should navigate to the Web Connection Administration Web site and go to the .NET Handler page:
http://MySite.com/MyApp/ModuleAdministration.wc
and just verify that the settings there look OK. If you had your development environment set to COM you might want to switch to file based to verify that the server works first.
Hit any of your application links that use your custom script map.
If you can't log on to the Admin Page from the Server
Windows Server by default locks down local logins using
localhost
or any other local IP Address which means you can't authenticate using Windows Authentication. To work around this log on from a remote machine or follow the steps outlined in this help topic.
Check User Identity of your Application
Pay special attention to the Security section on the bottom of the .NET Handler Admin page, and verify that user account the server runs under is what you want to use. By default this should be SYSTEM which is determined by the User Identity on the IIS Application Pool. If you want to use a different user account you need to change the Application Pool User Identity in the IIS Management Console.
And you're good to go! You're application should be ready to run!
See also
Server Configuration Wizard | COM Server Configuration© West Wind Technologies, 1996-2024 • Updated: 06/21/22
Comment or report problem with topic