Daemon Advanced Deployment

Overview

FarCry offers a myriad of deployment options. Advanced deployments are really just those deployments that don't fit the simple mold of how the "installer" deploys in the standard community distribution. Once you get the hang of the underlying FarCry Core Framework you'll find you have a great deal of flexibility in how you set up development and production environments to suit your team's development style.

What follows is simply how the Daemon development team typically structure deployments for larger projects in our portfolio. Your final deployment strategy will of course depend on your own infrastructure and requirements, but we find this approach works well for the majority of our clients.

This style of deployment requires FarCry Core 5.0+

FarCry Project Repository Setup

When creating a new project for a client, we will use the following folder structure in the repository:

The plugins and projects folders are where the client specific code will reside. If, for example, the client doesn't have a custom plugin for their application then that folder will be empty.

The project folder will likely always exist, and contain the client specific code for the project.

The workspaces/application folder is what you will actually checkout for your project. The workspace/application folder is simply a list of externals that point to all the needed plugins and projects (and versions) for the client application.

Workspaces & Distributions

SVN External Setup

The following image is an example of what one would find in the workspaces/application area of the project repository. Note that it is just a container to link every part of the client application. It even points back to the projects folder within the same account folder.

The externals can also contain revision numbers for specific code bases (eg. plugins, core framework, etc). When deploying it is highly recommended you add the revision or specific tagged release for plugins/frameworks you are not actively developing to maintain a stable distribution. An example of revision number use is as follows:

Apache Setup

First, if needed, enable virtual hosts in httpd.conf by uncommenting the line:

NameVirtualHost *

And then setup a virtual host and setup an alias to logically match the following:

<Virtualhost *>
	ServerName aoc.local
	DocumentRoot "/Applications/ColdFusion8/wwwroot/farcry/projects/PluginTester/www"

	# FarCry Framework
	Alias /farcry "/Applications/Coldfusion8/wwwroot/farcry"
	Alias /webtop "/Applications/Coldfusion8/wwwroot/farcry/core/webtop"

	# FarCry Plugins
	Alias /farcryradiostar "/Applications/Coldfusion8/wwwroot/farcry/plugins/farcryradiostar/www"
	Alias /farcrypoll "/Applications/Coldfusion8/wwwroot/farcry/plugins/farcrypoll/www"

	# ColdFusion Engine
	Alias /CFIDE "/Users/userhome/Documents/workspace/wwwroot/CFIDE"

	<Directory "/Applications/Coldfusion8/wwwroot">
		Options All
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>
</Virtualhost>

Rather than copying the any plugin webroots (./pluginname/www) to the project we reference these with a virtual directory or alias. This ensures we can properly manage the version control for each code base independently.

The /farcry Alias is important because it acts as a mapping for all cores to the FarCry framework. Consequently there can be no ColdFusion mapping with a name of /farcry. Please reread the previous sentence because its absolutely critical.

The /webtop mapping is a convenient shortcut to the administration webtop for your FarCry installation.