An XCopy deployment refers to manually copying the Plato files into your configured IIS site or copying the files via FTP or other means to your production web server.
IMPORTANT: You cannot simply XCopy deploy the Plato source code to production and expect this to work. You must first publish the source code using web deploy or dotnet publish and XCopy deploy the published folder to your production servers.
A published folder for Plato looks very different from the regular source code folder. You can see an example of a folder containing a published version of Plato below...
Note the following key differences between the Plato source code folder and a published version of Plato...
runtimes
folder can be safely deleted or ignored when deploying to production.web.config
file is transformed to ensure the launcher process for Plato is set to dotnet.exe
and Plato.dll
is loaded into dotnet.exe
to begin the bootstrapping process. See web.config transformations below.src\Plato\bin
directory are copied into the root of the Publish folder. There is no \bin
folder in the published folder.Copy the contents of the publish folder to your IIS web site folder or point your IIS web site to the publish folder. You can see an example of this below...
To test the changes please right click your web site within IIS and go to Manage Website and then Browse to launch your IIS site within your default web browser. If everything was successful you should be presented with the web based set-up or your homepage.
During publishing the web.config
file for the published site is transformed to ensure dotnet.exe
can load Plato.dll
and begin the bootstrapping process. You can see how the transformed web.config
looks below. Notice the processPath
and arguments
attributes are very different from the development web.config file.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore stdoutLogEnabled="false" hostingModel="InProcess" processPath="dotnet" arguments=".\Plato.dll" stdoutLogFile=".\logs\stdout">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
<environmentVariable name="COMPLUS_ForceENC" value="1" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</configuration>