I need to deploy web applications to an IIS 7.5. I have tried to create a web deploy package but I run into a problem.
Most of the applications I need to deploy are nested under virtual directories. Example:
Web Site/vDir/vDir/application
This seems to work if the virtual directories are already created. But if they are missing the application are instead created directly under the Website.
I create the package with the parameters /t:build;Package
Atm. I am using the cmd file to deploy with parameters /Y /m:[Servername]
I can't find a way to change the dest parameter. Do I need to use msdeploy directly instead?
I saw a very similar question containing a good answer by AaronS.
He basically suggests creating a custom build task, including an example code.
Related
We have an Website project that's hosted in Azure, and we use Web.config transforms for setting environment variables. However, our current approach for building the system for different environments is to build the project multiple times (currently this is 3), which is inefficient.
We'd like to move to using Web Deploy, as this would then set us up nicely for using Release Manager.
Our issue is around using Web Deploy parameters instead of web.config transforms; we need to substitute multiple xml elements, rather than single values.
After much research, I found these 2 articles which detail almost exactly what I'm trying to do
http://blogs.iis.net/elliotth/web-deploy-xml-file-parameterization
http://www.iis.net/learn/publish/using-web-deploy/parameterization-improvements-in-web-deploy-v3
Essentially I'm trying to replicate Scenario 5, but using a separate Set Parameter file for the value.
Unfortunately, in the examples, referencing an external xml file only works if it is on the target machine. Some testing with a colleague confirmed this; works on local machine, but not on Azure.
Is there a way I can force Web Deploy to look in a particular location for the external configuration files?
As you've already noticed, Web Deploy is only able to read replacement values on the local machine or on a UNC share. It can't read that specific file over HTTP.
If you're deploying to an Azure Web App, then one thing you could try would be to use Kudu/FTP to manually upload that file one level above your wwwroot folder. Then you could specify the file location like so:
D:\home\site\prices.xml:://book[#name='book1']/price
Of course this implies that you'd have to pre-upload this file before publishing to your site, so it's not a perfect solution, but it should work for what you're trying to accomplish.
I have next to no experience with Orchard, or .NET in general for that matter, but I have agreed to do some development on an existing Orchard website.
I have an admin-login with access to the Dashboard and I have an admin-login at the hosting provider (Arvixe). I've started moving the site over to Azure so I can use that as a staging environment.
I've successfully exported all the content, but the site is also running a custom theme that I also need to move over. From what I gather the only way to package that theme is using the command line interface, but I can't find a way to run the command line executable via the hosting provider's web interface (I haven't been able to connect to it with SSH).
Is there any way to run what is usually command line operations via the Dashboard? Some kind of module that I have not discovered? Is there any way of moving a theme from one installation to another without using the command line?
If you have access to the Arvixe account, you also have access to ftp. Do that, then look under the Themes directory. Copy the theme's folder. What's the web site?
I use Azure websites and my project must have an empty folder on the server. When I publish the project from the Solution Explorer (VS 2013), I don't get it created on the server.
For now, I keep an empty file there to force the creation but I was wondering if there is a proper way to make the publish process create it for me.
Assuming you are WebDeploy from VS to publish your site, I think the only way to force creating a folder is to have it on your client side. If you use kudu you can look at post deployment actions
I would suggest updating your code though to create the folder if it doesn't exist. That would make your code more robust and self contained rather than depending on a certain deployment mechanism to create the folder for you.
we are hosting 3 different web applications in azure machine and we are using CI to push this changes from build server TFS in the azure to our machines.
the trouble is in physicalDirectory porperty as we could not find any possibily to use any of build-variables there, so we have to use relative path like this
physicalDirectory="..\..\..\..\..\..\bin\_PublishedWebsites\xxxxxx"
we have two issues with this, one is that the loca build and hosted build needs different relative paths, and second is that one our two branhces are not on same level.
I tried
physicalDirectory="$(OutpuPath)\_PublishedWebsites\xxxxxx"
as well as
physicalDirectory="%OutpuPath%\_PublishedWebsites\xxxxxx"
had no success with any of those.
is this possible at all, if not is there any other way to replace this values?
thanks
almir
You can define your own environment variables in azure, this approach may work for you
"http://msdn.microsoft.com/en-us/library/windowsazure/gg432991.aspx"
I am trying to find out how to host an ISAPI DLL in Azure. In addition to the DLL, I'll need to deploy supporting files in subdirectories (javascript & css files). And two of these subdirectories can have their contents changed by requests handled by the DLL, so I need to ensure that the account executing the extension has write permission for these.
It would seem that the key to all of this is using a startup task to call appcmd to script all the IIS changes somehow, and I think I need to do the following:-
Deploy my ISAPI DLL and supporting files with my ASP.NET website
Create a startup task which will call a batch file utilizing appcmd.exe to do the following:-
Create a dedicated app pool with its managed pipeline mode set to Classic, and using a known user account
Create an IIS application pointing to the directory where my ISAPI dll resides
Ensure the application is configured to allow unknown ISAPI extensions
Alter the permissions of the required subdirectories so the user account associated with the app pool has write access
I've only just started exploring Azure, so my experience with it is very thin on the ground. Is what I'm hoping to achieve actually achievable? And if so, am I on the right track with regards to the steps required? They mimic what I need to do if I'm setting up this ISAPI DLL in the traditional IIS environment I'm used to dealing with, but please let me know if the rules are different with Azure.
Looks like a good sequence, however, the startup tasks actually run before IIS is completely configured. The 'OnStart' event in the RoleEntryPoint is called after IIS is set up, so it's probably easier to use the IIS application that Azure creates for you, and reconfigure it to include your ISAPI stuff.
Well the only thing bothering me here is that you're modifying data on the 'deployment drive' (E: for that matter). You shouldn't be doing this.
Instead, think of an other solution. You could create a LocalResource holding your javascript and CSS files. Then, when your role starts (Richard has a valid point about startup tasks), use ServerManager class to do the following:
Register the ISAPI dll
Add 2 virtual directories under the website created by Azure and point them to the LocalResource.
Modify the code of your ISAPI dll to modify JS/CSS files in the LocalResource
When developing in Web/WorkerRoles, you need to keep in mind that you should only manipulate files in a LocalResource.