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...
runtimesfolder can be safely deleted or ignored when deploying to production.
web.configfile is transformed to ensure the launcher process for Plato is set to
Plato.dllis loaded into
dotnet.exeto begin the bootstrapping process. See web.config transformations below.
src\Plato\bindirectory are copied into the root of the Publish folder. There is no
\binfolder 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
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>