ASP.NET development has come a long way. It’s now easier to practice Test Driven Development (TDD) thanks to ASP.NET MVC and all the open source tools out there from Ninject to Moq to Entity Framework Code First. But one thing remains real sucky in the .net world and that is deployment. Have you tried deploying an Azure application? It sucks and I hate Azure for it. I created a web service using Python and deployed it on Google AppEngine and it was much faster to create, easier to maintain and deploy even though I knew zero Python. Deploying a site to IIS is a pain in the butt.
I have always been envious of how easy it was/is to deploy a rails app. It takes seconds and usually one command line. It is just awesome. So, I was really excited when a few weeks ago I ran across AppHarbor and it looked too good to be true. I thought I would see how easy it would be to create a site and deploy it. Instead of creating an app from scratch though, I am going to create an Orchard website. If you haven’t seen Orchard, go check it out. It’s really cool. It’s a CMS/Blog engine written in ASP.NET MVC and is open source and very extensible.
Prerequisites: Setup git on your computer, see this link for instructions.
So, here is how to get a website up and running in seconds…
1 – Login to AppHarbor and create a new application
2 – Change your new application settings to enable write-access to the file system
3 – Start WebMatrix and create a new site from Web Gallery
4 – Choose Orchard and name your website
5 – Open up a command prompt (I use Console2)
6 – Change to the path of your new website e.g. cd c:\websites\mywebsite
7 – run the following commands
- git init
- git add .
- git commit –m “initial commit”
- git remote add appharbor https://email@example.com/MyWebsite.git (the URL will be unique to your app)
- git push appharbor master (enter your AppHarbor password)
8 – Visit your new site on appharbor, in this example the site is located at http://mywebsite.apphb.com/
9 – DONE!!! Just follow the prompts to setup Orchard
You have just deployed a web app and have it hosted for free. You can easily scale it using AppHarbor’s cloud infrastructure. It is simply awesome.
Another cool feature is that every time you want to deploy a new version, you simply commit your changes and run the git push command above. AppHarbor maintains different versions of your app and you can easily switch between versions. So if you deployed a bad version, you simply click a link and deploy the last working version.
I personally haven’t deployed a scalable app on AppHarbor, so I would love to hear your feedback on how well the scaling works and if it is cost-effective or not.