<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">

			<channel>
			<title>Fuzzy Orange Ltd</title>
			<link>http://www.fuzzyorange.co.uk/blog/index.cfm</link>
			<description>Fuzzy Orange Ltd: Fresh Ideas for your Fuzzy Logic. ColdFusion consultancy from the ColdFusion Specialists.</description>
			<language>en-gb</language>
			<pubDate>Sun, 19 May 2013 07:00:15 -0000</pubDate>
			<lastBuildDate>Mon, 16 Jul 2012 20:56:00 -0000</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>support@fuzzyorange.co.uk</managingEditor>
			<webMaster>support@fuzzyorange.co.uk</webMaster>
			<itunes:subtitle></itunes:subtitle>
			<itunes:summary></itunes:summary>
			<itunes:category text="Technology" />
			<itunes:category text="Technology">
				<itunes:category text="Podcasting" />
			</itunes:category>
			<itunes:category text="Technology">
				<itunes:category text="Tech News" />
			</itunes:category>
			<itunes:keywords></itunes:keywords>
			<itunes:author></itunes:author>
			<itunes:owner>
				<itunes:email>support@fuzzyorange.co.uk</itunes:email>
				<itunes:name></itunes:name>
			</itunes:owner>
			
			<itunes:explicit>no</itunes:explicit>
			
			<item>
				<title>Home for 5pm workshop at CFCamp</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/7/16/Home-for-5pm-workshop-at-CFCamp</link>
				<description>
				
				&lt;p&gt;As previously announced, I&apos;ll be giving a session at &lt;a href=&quot;http://www.cfcamp.org&quot;&gt;CFCamp&lt;/a&gt; on &quot;Home for 5pm&quot;, which is an updated version of the talk I gave at Scotch on the Rocks in 2011. &lt;/p&gt;

&lt;p&gt;Additionally, I&apos;ll also be giving a half days &lt;a href=&quot;http://www.cfcamp.org/hot-descriptions.cfm#art184307&quot;&gt;Hands On Training (HOT)&lt;/a&gt; on the same topic.&lt;/p&gt;

&lt;p&gt;The HOT will take the productivity features mentioned in the one hour presentation and put them into practice. There&apos;s no requirement to attend the session to get the most out of the training, but if you&apos;re looking to increase your productivity by streamlining your development through task focused development I&apos;d strongly recommend you come along to one or the other (or why not both).&lt;/p&gt;

&lt;p&gt;You&apos;ll learn about using Mylyn, and it&apos;s commercial big brother Tasktop to enable your task focused development. By minimising distractions, unnecessary noise and ultimately focusing on the task at hand, you&apos;ll see just how easy it is to be Home for 5pm.&lt;/p&gt;

&lt;p&gt;The training session is €300+vat.&lt;/p&gt;

&lt;p&gt;There&apos;s a host of other HOTs running as well on topics covering; Railo, jQuery, Regular Expressions and more so check them out.&lt;/p&gt;

&lt;p&gt;Hopefully we&apos;ll see you in Munich. &lt;/p&gt; 
				</description>
				
				<category>Productivity</category>				
				
				<category>CFCamp</category>				
				
				<pubDate>Mon, 16 Jul 2012 20:56:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/7/16/Home-for-5pm-workshop-at-CFCamp</guid>
				
				
			</item>
			
			<item>
				<title>CFCamp, Munich</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/6/28/CFCamp-Munich</link>
				<description>
				
				&lt;p&gt;This October we&apos;re heading to Munich to take part in &lt;a href=&quot;http://www.cfcamp.org/&quot;&gt;CFCamp conference&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In addition to sponsoring the event, I&apos;ll also be presenting. I had the pleasure of speaking at the first CFCamp back in 2008, and I&apos;m delighted to get the chance to present once more.&lt;/p&gt;

&lt;p&gt;More details on my session will be available nearer the time, as will our overall plans for the conference.&lt;/p&gt;

&lt;p&gt;So, if your food of choice is CFML, or you want to taste CFML for the first time, why not join us in Munich.&lt;/p&gt; 
				</description>
				
				<category>CFML</category>				
				
				<category>CFCamp</category>				
				
				<pubDate>Thu, 28 Jun 2012 12:39:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/6/28/CFCamp-Munich</guid>
				
				
			</item>
			
			<item>
				<title>ColdFusion 10 instance creation path issue</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/6/7/ColdFusion-10-instance-creation-path-issue</link>
				<description>
				
				&lt;p&gt;When ColdFusion 7 was released back in 2005, the ColdFusion team gave us the ability to create new instances (assuming we were running in multi-server mode) directly from the ColdFusion Administrator of the default &apos;cfusion&apos; instance.&lt;/p&gt;

&lt;p&gt;There were a number of quirks with the instance creation process, which resulted in some of us sticking with the old manual process as used in CF6.1&lt;/p&gt;

&lt;p&gt;One of the instance creation issues related to new instances inheriting paths pointing to the cfusion instance rather than the path for the newly created instance.&lt;/p&gt;

&lt;p&gt;This bug has found it&apos;s way into ColdFusion 10. Thankfully it&apos;s incredibly easy to work around.&lt;/p&gt;

&lt;p&gt;Let me demonstrate the issue, and how to fix it.&lt;/p&gt;

&lt;p&gt;To create additional instances with ColdFusion 10, you need to be running ColdFusion Enterprise, or be running in trial or developer mode. If you log into the default installation instance, called &apos;cfusion&apos;, you&apos;ll have the ability to create additional instances via the Enterprise Manager option.&lt;/p&gt;

&lt;p&gt;What actually happens when you create a new instance, is that this cfusion instance is effectively cloned, thereby inheriting settings you&apos;ve configured. There&apos;s obviously pros and cons to this.&lt;/p&gt;

&lt;p&gt;One of the cons is that with pages such as Charting or Logging Settings, you simply need to &apos;touch&apos; the pages (i.e. click submit without making any changes), and the default path of /ColdFusion10/cfusion/logs will find it&apos;s way into new instances you create.&lt;/p&gt;

&lt;p&gt;if you don&apos;t &apos;touch&apos; the page then the correct path of /ColdFusion10/&amp;lt;newinstance&amp;gt;/logs will correctly be set.&lt;/p&gt;

&lt;p&gt;Thankfully you can just manually correct the paths if required.&lt;/p&gt;

&lt;p&gt;I logged this as a bug back in 2005/6, and have done so again for ColdFusion 10. The bug number is 3208658 and can be viewed at &lt;a href=&quot;https://bugbase.adobe.com/index.cfm?event=bug&amp;id=3208658&quot;&gt;https://bugbase.adobe.com/index.cfm?event=bug&amp;id=3208658&lt;/a&gt;&lt;/p&gt; 
				</description>
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 07 Jun 2012 22:02:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/6/7/ColdFusion-10-instance-creation-path-issue</guid>
				
				
			</item>
			
			<item>
				<title>Tomcat User Security</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/6/6/Tomcat-User-Security</link>
				<description>
				
				&lt;p&gt;In my previous post on &lt;a href=&quot;/blog/index.cfm/2012/6/1/Different-JVM-settings-for-different-Tomcat-instances&quot;&gt;Different JVM settings for different Tomcat instances&lt;/a&gt;, I briefly touched on using tomcat-users.xml to allow access to the the Server Status page. This page, along with the Tomcat Manager application (amongst others), are installed by default when you deploy Tomcat. Access to them is controlled via the tomcat-users.xml file.&lt;/p&gt;

&lt;p&gt;As we saw in the previous article, we can enable access by defining a role, and subsequently a user who is part of that role.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Why doesn&apos;t Tomcat ship with a default account?: Simple. It&apos;s a security issue. Instead of providing that default account, Tomcat is locked down completely, and it&apos;s up to us to enable access.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Let&apos;s try accessing the Tomcat Manager without having any users defined in tomcat-users.xml.&lt;/p&gt;

&lt;img src=&quot;http://c1169252.r52.cf3.rackcdn.com/blog/TomcatManagerSecurity.gif&quot; alt=&quot;Tomcat Manager&quot; style=&quot;width:90%;&quot;&gt;

&lt;p&gt;As you can see, access is restricted. However, what it does do is tell us (some of) the types of roles available to us. &lt;/p&gt;

&lt;p&gt;Let&apos;s look at our tomcat-users.xml file again. Now, based on what you see in the file, and what we added in the previous article, I&apos;m hoping most (if not all) of you are a little concerned by the fact passwords are stored in plain text.&lt;/p&gt;

&lt;p&gt;Thankfully this file isn&apos;t directly accessible from a web browser, however it can be read by anyone who has access to the server.&lt;/p&gt;

&lt;div style=&quot;background:#ccc;border:1px solid black&quot;&gt;

&lt;h2&gt;Tomcat Manager roles&lt;/h2&gt;

&lt;p&gt;Tomcat 7 introduced granular control over the roles available to us for accessing the Tomcat Manager, Host Manager and Server status pages. (Technically it was already there in Tomcat 6, but you had to do a bunch of manual work).&lt;/p&gt;

&lt;p&gt;Previously, there was a &quot;manager&apos; role that you would add users to, to give them access to the Server Status page. The downside of this approach was that by assigning the user to the &quot;manager&quot; role, you also gave them access to the Tomcat manager, which allows tasks such as deploying/undeploying apps, expiring sessions, etc.&lt;/p&gt;

&lt;b&gt;Not really ideal.&lt;/b&gt;

&lt;p&gt;Let me, or should I say, Tomcat 7 introduce four delegation roles:&lt;/p&gt;

&lt;h3&gt;manager-gui&lt;/h3&gt;

&lt;p&gt;Full access to the Tomcat Manager.&lt;/p&gt;

&lt;h3&gt;manager-script&lt;/h3&gt;

&lt;p&gt;Provides the same access as manager-gui, but from a text interface. Command-line savvy administrators can utilise this role to do everything that manager-gui does, but they can programatically control actions via scripts written using perl, python, etc.&lt;/p&gt;

&lt;h3&gt;manager-jmx&lt;/h3&gt;

&lt;p&gt;Provides access to the jmxproxy, which exposes information for monitoring purposes.&lt;/p&gt;

&lt;h3&gt;manager-status&lt;/h3&gt;

&lt;p&gt;Access to the Server Status page.&lt;/p&gt;

&lt;b&gt;All manager-* roles can access the Server Status page.&lt;/b&gt;

&lt;p&gt;As an aside, the &quot;admin&quot; role has also been split into admin-gui and admin-script. These do exactly what they say, and provide access to the Host Manager application.&lt;/p&gt;
&lt;/div&gt;


&lt;h2&gt;Realms&lt;/h2&gt;

&lt;p&gt;Tomcat Realms are simply a way of &quot;storing&quot; usernames, passwords and roles. The default out of the box realm used is &quot;UserDatabaseRealm&quot;. This particular realm reads clear text passwords out of tomcat-users.xml&lt;/p&gt;

&lt;p&gt;We&apos;re going to look at a couple of alternative realms, namely: MemoryRealm and JDBCRealm. There are other realms available to you, and if your interested, you can read up on them at: &lt;a href=&quot;http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html&quot;&gt;http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;MemoryRealm&lt;/h3&gt;

&lt;p&gt;What we&apos;re going to do is change the realm to &quot;MemoryRealm&quot;, which whilst still reading the user details out of tomcat-users.xml, will now do so using a specified encrypted format: SHA, MD2 or MD5.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;The algorithm must be supported by the java.security.MessageDigest class&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Open up CATALINA_HOME/instance/conf/server.xml&lt;/p&gt;

&lt;p&gt;Find &quot;UserDatabaseRealm&quot;, as below, and comment it out.&lt;/p&gt;

&lt;code&gt;
&lt;Realm className=&quot;org.apache.catalina.realm.UserDatabaseRealm&quot;
     resourceName=&quot;UserDatabase&quot;/&gt;
&lt;/code&gt;

&lt;p&gt;Next, add the following Realm &lt;b&gt;inside&lt;/b&gt; the Host block, which is just below the section you commented out.&lt;/p&gt;

&lt;code&gt;
&lt;Realm className=&quot;org.apache.catalina.realm.MemoryRealm&quot;
                 digest=&quot;SHA&quot; /&gt;
&lt;/code&gt;

&lt;p&gt;Save the file, and exit.&lt;/p&gt;

&lt;p&gt;We now need to create a SHA encrypted version of the password you want to use. Tomcat is useful here as it provides a script to do just that. Inside CATALINA_HOME/bin, run the following:&lt;/p&gt;

&lt;code&gt;
digest.sh -a SHA &lt;yourpassword&gt; 
&lt;yourpassword&gt;:a_whole_bunch_of_hex
&lt;/code&gt;

&lt;p&gt;As a proper example:&lt;/p&gt;

&lt;code&gt;
digest.sh -a -SHA admin
admin:d033e22ae348aeb5660fc2140aec35850c4da997
&lt;/code&gt;

&lt;p&gt;You now want to replace your password (in tomcat-users.xml) with the encrypted version.&lt;/p&gt;

&lt;code&gt;
&lt;role rolename=&quot;manager-gui&quot;/&gt;
&lt;user username=&quot;admin&quot; password=&quot;d033e22ae348aeb5660fc2140aec35850c4da997&quot; roles=&quot;manager-gui&quot;/&gt;
&lt;/tomcat-users&gt;
&lt;/code&gt;

&lt;p&gt;Now restart Tomcat and you should be able to login.&lt;/p&gt;


&lt;div style=&quot;background:#ccc;border:1px solid black&quot;&gt;

&lt;p&gt;As another little aside, let&apos;s briefly mention Realms and how they apply.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;Engine&gt;
&lt;ul&gt;&lt;li&gt;This Realm is shared across all web applications, on all virtual hosts, unless overridden by a &lt;Host&gt; or &lt;Context&gt; element.&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;Host&gt;
&lt;ul&gt;&lt;li&gt;This Realm is shared across all web applications for this virtual host, unless overridden by a &lt;Context&gt; element.&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;Context&gt;
&lt;ul&gt;&lt;li&gt;This Realm will only be used for this application.&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h3&gt;JDBCRealm&lt;/h3&gt;

&lt;p&gt;To configure the JDBCRealm, we need to do a couple of things first:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create tables and columns in your database of choice (we&apos;re going to use MySQL in this scenario)&lt;/li&gt;
&lt;li&gt;Configure a &apos;tomcat&apos; user to allow Tomcat to talk to MySQL&lt;/li&gt;
&lt;li&gt;Drop the MySQL connector JAR file into place&lt;/li&gt;
&lt;li&gt;Set up our Realm&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Use the following scripts to create your tables:&lt;/p&gt;

&lt;p&gt;&lt;i&gt;(I&apos;ve created a dedicated database called TomcatAuthentication)&lt;/i&gt;&lt;/p&gt;

&lt;code&gt;
create table users (
  user_name         varchar(15) not null primary key,
  user_pass         varchar(50) not null
);
create table user_roles (
  user_name         varchar(15) not null,
  role_name         varchar(15) not null,
  primary key (user_name, role_name) );
&lt;/code&gt;

&lt;p&gt;We need to populate our tables with data, so now run the following:&lt;/p&gt;

&lt;code&gt;
insert into users values(&apos;admin&apos;,&apos;d033e22ae348aeb5660fc2140aec35850c4da997&apos;);
insert into user_roles values(&apos;admin&apos;,&apos;manager-gui&apos;);
&lt;/code&gt;

&lt;p&gt;We now need to grant a &apos;tomcat&apos; user read access to these tables, so run the following from your favourite MySQL client tool:&lt;/p&gt;

&lt;code&gt;
grant select on TomcatAuthentication.* to &apos;tomcat&apos;@&apos;localhost&apos; identified by &apos;acRs7mLLbA&apos;;
flush privileges;
&lt;/code&gt;

&lt;p&gt;The next thing we need to do is get a hold of the MySQL JDBC driver, which we can download from:
&lt;a href=&quot;http://dev.mysql.com/downloads/connector/j/&quot;&gt;http://dev.mysql.com/downloads/connector/j/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Download the file, extract the contents, and then copy the JAR file (in my case mysql-connector-java-5.1.20-bin.jar) to CATALINA_HOME/lib&lt;/p&gt;

&lt;p&gt;Now we want to add a Realm to our servers.xml file to support JDBC.&lt;/p&gt;

&lt;p&gt;Add the following to our &lt;Host&gt; definition (replacing the MemoryRealm):&lt;/p&gt;

&lt;code&gt;
&lt;Realm className=&quot;org.apache.catalina.realm.JDBCRealm&quot;
     driverName=&quot;com.mysql.jdbc.Driver&quot;
     connectionURL=&quot;jdbc:mysql://localhost/TomcatAuthentication?user=tomcat&amp;amp;password=acRs7mLLbA&quot;
     userTable=&quot;users&quot; userNameCol=&quot;user_name&quot; userCredCol=&quot;user_pass&quot;    
     userRoleTable=&quot;user_roles&quot; roleNameCol=&quot;role_name&quot;
     digest=&quot;SHA&quot;/&gt;
&lt;/code&gt;

&lt;p&gt;I&apos;ve already replace the appropriate entries above to those we&apos;re using in this article.&lt;/p&gt;

&lt;p&gt;Now you can restart Tomcat, and when you try to access the Tomcat Manager or Service Status page, authentication will now take place against MySQL.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;You can obviously harden your password further by using SSL, and locking down access to internal IPs or even just localhost, and we&apos;ll look at this in a future article.&lt;/i&gt;&lt;/p&gt; 
				</description>
				
				<category>Tomcat</category>				
				
				<category>Technical</category>				
				
				<pubDate>Wed, 06 Jun 2012 20:32:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/6/6/Tomcat-User-Security</guid>
				
				
			</item>
			
			<item>
				<title>Apache and SSL Keys</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/6/6/Apache-and-SSL-Keys</link>
				<description>
				
				&lt;p&gt;SSL certificates expire and need renewed regularly, which involves at least replacing the certificate file and possibly the key and chain certificate files too, running &quot;apachectl configtest&quot; to make sure everything is properly in place and then restarting. Quick, simple, and therefore quite surprising when Apache dies immediately afterwards.&lt;/p&gt;

&lt;p&gt;SSL certificates and keys need to be matched - the key must be the one used to generate the signing request for the certificate. As wonderful as it otherwise is, &quot;apachectl configtest&quot; does not test for this! If for whatever reason they don&amp;#39;t match then Apache can&amp;#39;t handle SSL requests and will refuse to start and you&amp;#39;ll see this in the error logs :&lt;/p&gt;

&lt;pre&gt;[Fri Feb 17 21:58:56 2012] [error] Unable to configure RSA server private key
[Fri Feb 17 21:58:56 2012] [error] SSL Library Error: 185073780 error:0B080074:x509 
certificate routines:X509_check_private_&lt;WBR&gt;key:key values mismatch&lt;/pre&gt;

&lt;p&gt;This shouldn&amp;#39;t happen if you have been careful with your key, request and certificate generation, but sometimes life isn&amp;#39;t straightforward - security considerations can mean it&amp;#39;s impossible to request SSL certificates on behalf of customers. Non-technical customers can sometimes get mixed up during the process and use the wrong keys and CSRs which means you end up with a mismatch.&lt;/p&gt;

&lt;p&gt;Now you have to track down the correct pair of key and certificate files - and quickly, as at this point Apache is down and will not come back up until you fix it or disable SSL. Luckily the OpenSSL command line tool can help.&lt;/p&gt;

&lt;p&gt;The first step is to find the correct certificate file. OpenSSL will tell you everything you need to know to track down the right one. For each of your possible certificate files you can run the following, replacing MYDOMAIN.crt with your certificate file :&lt;/p&gt;

&lt;pre&gt;openssl x509 -noout -text -in MYDOMAIN.crt&lt;/pre&gt;

&lt;p&gt;This will print a lot of detailed information, of which we are only interested in the first few lines :&lt;/p&gt;

&lt;pre&gt;Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 198312 (0x306a8)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=GB, O=Fuzzy Orange, CN=Quick Example SSL CA
        Validity
            Not Before: Nov  8 12:32:56 2011 GMT
            Not After : Aug 27 04:55:46 2012 GMT
        Subject: serialNumber=1pfX346-&lt;WBR&gt;sw4eFZmll0aBd3dWkwKKjLDx, C=GB, 
O=&lt;a href=&quot;http://WWW.MYDOMAIN.COM&quot; target=&quot;_blank&quot;&gt;WWW.MYDOMAIN.COM&lt;/a&gt;, OU=FO3269373, OU=Fuzzy Orange, CN=&lt;a href=&quot;http://WWW.MYDOMAIN.COM&quot; target=&quot;_blank&quot;&gt;WWW.MYDOMAIN.COM&lt;/a&gt;&lt;/pre&gt;

&lt;p&gt;The key elements here are the validity dates and the O and CN elements of the subject - these let you know what domain this certificate is for and the dates it can be used between. When you&amp;#39;ve found the certificate that you should be using, you then need to know it&amp;#39;s modulus to compare with your keys. Once again OpenSSL can do this for you - simply run the following, once again replacing MYDOMAIN.crt with your certificate file :&lt;/p&gt;

&lt;pre&gt;openssl x509 -noout -modulus -in MYDOMAIN.crt&lt;/pre&gt;

&lt;p&gt;This will print a large string of characters :&lt;/p&gt;

&lt;pre&gt;Modulus=&lt;WBR&gt;F06D8B592B348B8D6704B05496CC3E&lt;WBR&gt;094F875E6A6C5219DA33A...&lt;/pre&gt;

&lt;p&gt;This modulus string will only match up with the correct key for this certificate, so all we need to do now is check the modulus of your possible key files. Run this to see it, replacing MYDOMAIN.key with your key file :&lt;/p&gt;

&lt;pre&gt;openssl rsa -noout -modulus -in MYDOMAIN.key&lt;/pre&gt;

&lt;p&gt;Once again you&amp;#39;ll get a large string of characters, this time of the key&amp;#39;s modulus. Compare it to the certificate&amp;#39;s modulus as extracted before - when you find a match then you have found your key and certificate pair.&lt;/p&gt;

&lt;p&gt;Now quickly copy these matching certificate and key files to the location where Apache expects them and start it up again - this time it should run as normal and not report any errors. And next time around, use OpenSSL to verify the keys and certificates match in advance!&lt;/p&gt; 
				</description>
				
				<category>Technical</category>				
				
				<category>SSL</category>				
				
				<pubDate>Wed, 06 Jun 2012 07:33:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/6/6/Apache-and-SSL-Keys</guid>
				
				
			</item>
			
			<item>
				<title>Different JVM settings for different Tomcat instances</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/6/1/Different-JVM-settings-for-different-Tomcat-instances</link>
				<description>
				
				&lt;p&gt;My previous post about &lt;a href=&quot;/blog/index.cfm/2012/5/30/Running-Multiple-Tomcat-Instances&quot;&gt;Running Multiple Tomcat Instances&lt;/a&gt; resulted in both instances using identical JVM settings.&lt;/p&gt;

&lt;p&gt;There will be plenty of scenarios where that is fine, but for the times when it&apos;s not, it&apos;s really straight forward to change your JVM settings, including: the JVM being used, your memory settings, the garbage collector, and so on.&lt;/p&gt;

&lt;p&gt;Let&apos;s take a simple scenario. Instance1 can use the default Tomcat JVM settings, but instance2 requires the following changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Max Heap size of 1GB&lt;/li&gt;
&lt;li&gt;Permanent Generation to be sized to 192m&lt;/li&gt;
&lt;li&gt;Different JVM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open up instance2-startup.sh in your favourite text editor, and add the following:&lt;/p&gt;

&lt;p&gt;&lt;i&gt;(We created instance2-startup.sh in the previous article, and it can be found in your CATALINA_HOME/bin directory)&lt;/i&gt;&lt;/p&gt;

&lt;code&gt;
export JAVA_HOME=/usr/java/jdk1.6.0_32
export CATALINA_OPTS=&quot;-Xmx1024m -XX:MaxPermSize=192m&quot;
&lt;/code&gt;

&lt;p&gt;The JAVA_HOME path obviously needs changed depending on the alternative JVM you want to use (and you&apos;ll need to install it of course).&lt;/p&gt;

&lt;p&gt;Your startup file should now look (somewhat) similar to:&lt;/p&gt;

&lt;code&gt;
export JAVA_HOME=/usr/java/jdk1.6.0_32
export CATALINA_OPTS=&quot;-Xmx1024m -XX:MaxPermSize=192m&quot;
export CATALINA_BASE=/Applications/ApacheTomcat/apache-tomcat-7.0.27/instance1
./startup.sh
&lt;/code&gt;

&lt;p&gt;Save your file. Job done.&lt;/p&gt;

&lt;p&gt;To confirm that your instance is now using the custom JVM configuration, we&apos;re going to take a look at the Tomcat Server Status page. Before we can do that, we need to enable access.&lt;/p&gt;

&lt;p&gt;Tomcat stores user account data in the tomcat-users.xml file that can be found in your instances conf folder, e.g.&lt;/p&gt;

&lt;p&gt;/opt/ApacheTomcat/apache-tomcat-7.0.27/instance2/conf/tomcat-users.xml&lt;/p&gt;

&lt;p&gt;Add the following to the file:&lt;/p&gt;

&lt;code&gt;
&lt;role rolename=&quot;manager-gui&quot;/&gt;
&lt;user username=&quot;admin&quot; password=&quot;admin&quot; roles=&quot;manager-gui&quot;/&gt;
&lt;/tomcat-users&gt;
&lt;/code&gt;

&lt;p&gt;The above creates a role called &apos;manager-gui&apos; which basically allows access to all the Tomcat management pages, as well as a new user who is assigned that role.&lt;/p&gt;

&lt;p&gt;Clearly you don&apos;t want to use admin/admin for your username and password in production but it will suffice for our current needs.&lt;/p&gt;

&lt;p&gt;Save the file, and then stop/start your Tomcat instance.&lt;/p&gt;

&lt;p&gt;Fire up your Tomcat dashboard in your favourite browser; http://localhost:8282 (remember and use the port number associated with your instance).&lt;/p&gt;

&lt;p&gt;You can now click on the &apos;Server Status&apos; button that is shown on the right hand side of the page, enter admin/admin for the username/password, and you&apos;ll see a bunch of information including; JVM memory settings, the JVM being used and more.&lt;/p&gt;

&lt;p&gt;If you fire up your other instance, the one using the default settings (remember to edit it&apos;s tomcat-users.xml file to allow access to the Server Status page), and then view its server status, you&apos;ll see the contrasting information, which proves your utilising different JVM configurations for your Tomcat instances.&lt;/p&gt; 
				</description>
				
				<category>Tomcat</category>				
				
				<pubDate>Fri, 01 Jun 2012 07:57:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/6/1/Different-JVM-settings-for-different-Tomcat-instances</guid>
				
				
			</item>
			
			<item>
				<title>Running Multiple Tomcat Instances</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/5/30/Running-Multiple-Tomcat-Instances</link>
				<description>
				
				&lt;p&gt;We&apos;ve been doing a fair bit of work with Tomcat for a while now. It was partly instigated by the knowledge that ColdFusion 10 was going to use Tomcat under the hood (in replace of JRun), but we&apos;ve also been doing work deploying Railo as well as some Java apps (deploying as WAR files).&lt;/p&gt;

&lt;p&gt;One of the things we&apos;re so used to is the ability to run multiple instances of ColdFusion on JRun, and we wanted to do the same with Tomcat. As such, this entry is a generic walkthrough to get up and running with multiple instances of Tomcat.&lt;/p&gt;

&lt;p&gt;The first thing you need to do is get a hold of Tomcat. Go grab the most recent version from http://tomcat.apache.org (v7.0.27 as of writing).&lt;/p&gt;

&lt;p&gt;We like to install Tomcat versions inside a master ApacheTomcat folder, e.g. /opt/ApacheTomcat/apache-tomcat-7.0.27&lt;/p&gt;

&lt;p&gt;Once you&apos;ve extracted Tomcat, take a look at the contents of the folder. You&apos;ll find some text files, and more importantly a bunch of folders:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;bin
 &lt;ul&gt;&lt;li&gt;contains all the binaries and scripts for running Tomcat&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;conf
 &lt;ul&gt;&lt;li&gt;configuration files including server.xml and web.xml&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;lib
 &lt;ul&gt;&lt;li&gt;the libraries that make Tomcat work&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;logs
 &lt;ul&gt;&lt;li&gt;funnily enough, logs&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;temp
 &lt;ul&gt;&lt;li&gt;used for temporary files&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;webapps
 &lt;ul&gt;&lt;li&gt;this is where we put our apps&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;work
 &lt;ul&gt;&lt;li&gt;folder used by Tomcat to write out files needed during runtime, including generated code for JSPs, class files, serialised sessions&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An important part of any Tomcat installation is environment variables. There are 5 different variables that interact with Tomcat, two of which are mandatory:&lt;/li&gt;

&lt;h3&gt;Mandatory&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;CATALINA_HOME&lt;/li&gt;
&lt;li&gt;JAVA_HOME&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Optional&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;CATALINA_BASE&lt;/li&gt;
&lt;li&gt;CATALINA_TMPDIR&lt;/li&gt;
&lt;li&gt;CLASSPATH&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All three optional variables can be calculated using CATALINA_HOME&lt;/p&gt;

&lt;h2&gt;The usual way&lt;/h2&gt;

&lt;p&gt;Under a normal install, we really only care about CATALINA_HOME. By default, this variable points to the Tomcat root folder, so using our set up, it points to /opt/ApacheTomcat/apache-tomcat-7.0.27&lt;/p&gt;

&lt;p&gt;This gives access to the /bin and /lib folders, and allows all other environment variables to be set when we run startup.sh (found in the /bin folder).&lt;/p&gt;

&lt;p&gt;And this is the important part. Instead of allowing CATALINA_BASE to be set automatically, we want to explicitly set it. That&apos;s the key to multiple instances.&lt;/p&gt;

&lt;h2&gt;Configuring Multiple Instances&lt;/h2&gt;

&lt;p&gt;Create two new folders inside your CATALINA_HOME folder, e.g.&lt;/p&gt;
&lt;p&gt;
/opt/ApacheTomcat/apache-tomcat-7.0.27/instance1&lt;br&gt;
/opt/ApacheTomcat/apache-tomcat-7.0.27/instance2
&lt;/p&gt;

&lt;p&gt;Copy the following folders (and their contents) from CATALINA_HOME, and paste them into the two directories you created above:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;/conf&lt;/li&gt;
&lt;li&gt;/logs&lt;/li&gt;
&lt;li&gt;/temp&lt;/li&gt;
&lt;li&gt;/webapps&lt;/li&gt;
&lt;li&gt;/work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;i&gt;(You might want to delete the contents of your copied log folders).&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Next we need to configure the 3 different ports that each Tomcat instance will use. These are the connector port, the AJP port, and the shutdown port.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connector port
 &lt;ul&gt;&lt;li&gt;What Tomcat uses to communicate with the outside world. Default: 8080&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;AJP port
 &lt;ul&gt;&lt;li&gt;If you&apos;re going to be connecting to Apache (or IIS), then you&apos;ll be looking to use AJP rather than the &quot;basic&quot; connector. AJP is a binary protocol and is therefore faster than the default connector. Default: 8009&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Shutdown port
 &lt;ul&gt;&lt;li&gt;Tomcat uses a port as part of it&apos;s shutdown process. It communicates with this port to shutdown cleanly, and therefore it has to be unique per instance. Default: 8005&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let&apos;s start by opening and editing /instance1/conf/server.xml. Find the blocks similar to below for the three connector ports&lt;/p&gt;

&lt;code&gt;
&lt;server port=&quot;8005&quot; shutdown=&quot;SHUTDOWN&quot;&gt;  
.....  
&lt;connector connectiontimeout=&quot;20000&quot; port=&quot;8080&quot; protocol=&quot;org.apache.coyote.http11.Http11NioProtocol&quot; redirectport=&quot;8443&quot;&gt;  
  
&lt;connector port=&quot;8009&quot; protocol=&quot;AJP/1.3&quot; redirectport=&quot;8443&quot;&gt;  
&lt;/connector&gt;&lt;/connector&gt;&lt;/server&gt;
&lt;/code&gt;

&lt;p&gt;Change the ports to something like:&lt;/p&gt;

&lt;code&gt;
&lt;server port=&quot;8105&quot; shutdown=&quot;SHUTDOWN&quot;&gt;  
.....  
&lt;connector connectiontimeout=&quot;20000&quot; port=&quot;8181&quot; protocol=&quot;org.apache.coyote.http11.Http11NioProtocol&quot; redirectport=&quot;8443&quot;&gt;  
&lt;connector port=&quot;8109&quot; protocol=&quot;AJP/1.3&quot; redirectport=&quot;8443&quot;&gt;  
&lt;/connector&gt;&lt;/connector&gt;&lt;/server&gt;  
&lt;/code&gt;

&lt;p&gt;Do the same for the second instance, providing different port numbers again.&lt;/p&gt;

&lt;p&gt;Let&apos;s now create some startup/shutdown scripts for our instances. Create a new file called instance1-startup.sh in CATALINA_HOME/bin&lt;/p&gt;

&lt;p&gt;Add the following to the script:&lt;/p&gt;

&lt;code&gt;
export CATALINA_BASE=/opt/ApacheTomcat/apache-tomcat-7.0.27/instance1
cd $CATALINA_HOME/bin
./startup.sh
&lt;/code&gt;

&lt;p&gt;Create another new file called instance1-shutdown.sh in CATALINA_HOME/bin, and add the following:&lt;/p&gt;

&lt;code&gt;
export CATALINA_BASE=/opt/ApacheTomcat/apache-tomcat-7.0.27/instance1
cd $CATALINA_HOME/bin
./shutdown.sh
&lt;/code&gt;

&lt;p&gt;Do the same for instance2, being careful to change the paths.&lt;/p&gt;

&lt;p&gt;You can now run ./instance1-startup.sh and ./instance1-shutdown.sh to start/stop your first instance, as well as your other scripts to control your other instances.&lt;/p&gt;

&lt;p&gt;Congratulations, you&apos;re now running multiple instances of Tomcat, which can be accessed via (depending on the port numbers you chose above)&lt;br&gt;
http://localhost:8181&lt;br&gt;
http://localhost:8282
&lt;/p&gt;

&lt;p&gt;You can now deploy your ColdFusion and Railo WAR files directly into an instances webapps folders, e.g.&lt;br&gt;
/opt/ApacheTomcat/apache-tomcat-7.0.27/instance1/webapps
&lt;/p&gt; 
				</description>
				
				<category>Tomcat</category>				
				
				<category>Technical</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 30 May 2012 23:53:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/5/30/Running-Multiple-Tomcat-Instances</guid>
				
				
			</item>
			
			<item>
				<title>Adobe ColdFusion 10 available now</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/5/16/Adobe-ColdFusion-10-available-now</link>
				<description>
				
				With the release of ColdFusion 10, Adobe&apos;s Enterprise application server for Rapid Application Development, there&apos;s a lot to get excited about. 

HTML5 features heavily in the new release, with support for dynamic and interactive charting, web sockets, and video. RESTful web services are delivered out of the box. Improved Java integration as well the the move from JRun to Tomcat as the underlying JEE servlet container are just some of the new features.

You can find a full list of what&apos;s new, on the ColdFusion 10 Family section at http://www.adobe.com/uk/products/coldfusion-family.html

ColdFusion 10 is available now, and as an authorised reseller, Fuzzy Orange can help you with all your licensing requirements. &lt;a href=&quot;/?do=contact&quot;&gt;Contact us&lt;/a&gt; for a quote, or for more information on how we can help you get the best out of ColdFusion 10. 
				</description>
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 16 May 2012 19:11:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2012/5/16/Adobe-ColdFusion-10-available-now</guid>
				
				
			</item>
			
			<item>
				<title>Matt Gifford shortlisted for Developer of the Year</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2011/10/5/Matt-Gifford-shortlisted-for-Developer-of-the-Year</link>
				<description>
				
				As previously blogged, our very own Matt Gifford was nominated in this years &lt;a href=&quot;http://www.thenetawards.com/&quot;&gt;.NET Awards&lt;/a&gt; for Developer of the Year.

We&apos;re delighted to announce that Matt has been shortlisted for the award, along with Paul Irish and Lorna Mitchell.

Congrats Matt and best of luck! 
				</description>
				
				<category>Fuzzy Orange</category>				
				
				<pubDate>Wed, 05 Oct 2011 15:01:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2011/10/5/Matt-Gifford-shortlisted-for-Developer-of-the-Year</guid>
				
				
			</item>
			
			<item>
				<title>.net Awards - Developer of the Year</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2011/8/8/net-Awards--Developer-of-the-Year</link>
				<description>
				
				The annual &lt;a href=&quot;http://www.thenetawards.com/&quot;&gt;.net Awards&lt;/a&gt;, organised by &lt;a href=&quot;http://www.netmagazine.com/&quot;&gt;.net magazine&lt;/a&gt;, is one of the Web industry&apos;s leading ceremonies recognising some of the best talent the world of Web Design and Development has to offer.

For 2011, our very own &lt;a href=&quot;http://www.mattgifford.co.uk&quot;&gt;Matt Gifford&lt;/a&gt; has been nominated in the &quot;Developer of the Year&quot; category.

Matt has worked like a demon, not just for us or our our clients, but also for the ColdFusion community as a whole, releasing a huge number of open source applications, including the much loved &lt;a href=&quot;http://monkehtweet.riaforge.org/&quot;&gt;monkehTweets&lt;/a&gt;. His hugely popular &quot;Object Oriented Programming in ColdFusion&quot; book, released Autumn 2010, has been a massive success, and he&apos;s authored numerous magazine articles covering (to name but a few): Building Mobile Application with Adobe AIR, ColdFusion ORM, HTML5, Application Security, and speaking at Conferences.  

We know just how good Matt&apos;s work is, as do our clients, and it&apos;s great to see that work be recognised globally.

You too can vote for Matt. Just head to the  &lt;a href=&quot;http://www.thenetawards.com/&quot;&gt;.net Awards&lt;/a&gt; website. 
				</description>
				
				<category>Fuzzy Orange</category>				
				
				<pubDate>Mon, 08 Aug 2011 10:38:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2011/8/8/net-Awards--Developer-of-the-Year</guid>
				
				
			</item>
			
			<item>
				<title>Adobe MAX 2011</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2011/8/2/Adobe-MAX-2011</link>
				<description>
				
				Two months from now, approximately 5,000 designers, developers, managers, technologists and more will once again descend upon LA for the 2011 edition of Adobe MAX.

This will be the fourth time Fuzzy Orange have been involved in a speaking capacity; 2007 in Barcelona and 2009, 2010 in LA.

For this years conference, Matt Gifford and myself will both be jetting in to present on a number of topics.

&lt;h2&gt;Matt Gifford&lt;/h2&gt;

&lt;h4&gt;OWASP Enterprise Security API and available methods to help lock down a ColdFusion Application (Unconference)&lt;/h4&gt;
Monday, October 3rd, 2.00 p.m. - 2.50 p.m.&lt;br /&gt;


&lt;h4&gt;Mobile Apps from 0 to 90: Powered by ColdFusion (BYOD Lab)&lt;/h4&gt;
Tuesday, October 4th, 8.00 a.m. - 9.30 a.m.&lt;br/&gt;
In this 90 minute lab, you&apos;ll use Adobe Flash Builder to develop a mobile application from the ground up, compiling it as an Adobe AIR app. Learn how to create and push views, add a tabbed menu interface, and call and manage remote data from a ColdFusion web server. You&apos;ll also debug and deploy the final application to your mobile Android device.

&lt;h4&gt;Darwin Development (Unconference)&lt;/h4&gt;
TBC&lt;br/&gt;
Evolution. It&apos;s a wonderful thing, and something that needs to occur for natural progression and the continuing advancement of ideas. As we see the modern trends, development paradigms and design practices evolve into different areas utilising newer technologies, should we really be saying goodbye to our old ways in favour of the new approach? Join Matt Gifford as he invites you to partake in a presentation with an emphasis on attendee input (with rewards) in a discussion to help understand what makes the web great, how we communicate in the modern world, and as a result whether or not we should leave the big screen behind entirely in favour of new formats. 

&lt;h2&gt;Andy Allan&lt;/h2&gt;
&lt;h4&gt;Adobe ColdFusion and modern Web front ends (Preconference Lab)&lt;/h4&gt;
Sunday, October 2nd, 9.00 a.m. - 5.00 p.m.&lt;br/&gt;
Adobe ColdFusion works very well with most javascript frameworks and especially well with jQuery. See how ColdFusion, jQuery, and mobile web standard development can catapult your ColdFusion development to the latest and greatest.

In addition to presenting, we&apos;ll also be networking like crazy, catching up with old friends and new, and taking part in as much ColdFusion related fun as possible.

See you in LA!! 
				</description>
				
				<category>ColdFusion</category>				
				
				<category>MAX</category>				
				
				<pubDate>Tue, 02 Aug 2011 20:13:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2011/8/2/Adobe-MAX-2011</guid>
				
				
			</item>
			
			<item>
				<title>Migrating your Rackspace US Cloud Server to the UK</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2011/6/8/Migrating-your-Rackspace-US-Cloud-Server-to-the-UK</link>
				<description>
				
				&lt;h1&gt;Migrating your Linux server from the Rackspace US Cloud to the UK&lt;/h1&gt;

&lt;p&gt;We here at Fuzzy Orange love the Cloud. We make extensive use of cloud services, particularly at Rackspace. When we started running cloud servers at Rackspace they only offered this service in the US but now it&apos;s offered in the UK too and we&apos;re migrating our servers over.&lt;/p&gt;

&lt;p&gt;Rackspace have provided a &lt;a href=&quot;http://cloudservers.rackspacecloud.com/index.php/Migrating_a_Cloud_Server_from_the_US_to_the_UK_Using_Cloud_Files_-_Linux&quot;&gt;detailed set of instructions&lt;/a&gt; which do the job well, but are maybe not the best at explaining what&apos;s going on. There are also one or two little &quot;gotchas&quot; not mentioned there.&lt;/p&gt;

&lt;p&gt;Now, the first thing that should be noted is that depending on the complexity of the setup on your US cloud server it may be easier to just move files by hand. For example, if you just have a little web server with static content, it would be quicker and easier just to create a new UK cloud server and copy your content across manually.&lt;/p&gt;

&lt;h2&gt;Important things you need to know&lt;/h2&gt;

&lt;p&gt;1. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt; US and UK usernames and API keys&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
The Rackspace migration scripts use the Cloud Files API to copy things around, so you will need valid usernames and API keys for both the US and UK cloud.
&lt;/p&gt;


&lt;p&gt;2. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;US and UK servers will run simultaneously&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
You need to have both servers up and running for the whole procedure, so you will be charged for both until everything is complete.
&lt;/p&gt;

&lt;p&gt;3. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Python 2.6 on your UK server&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
Older Linux distributions ship with Python 2.4, which isn&apos;t good enough to run the Rackspace migration scripts. If you&apos;re so inclined you can build Python 2.6 from scratch, but it&apos;s easier to grab the ActiveState Python 2.6 installer and use that.
&lt;/p&gt;

&lt;p&gt;4. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Files can&apos;t be changed during the process&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
Well, they can, but you&apos;ll have to transfer any changed files manually after the process is complete. When taking the source snapshot of your US cloud server you have to make sure no files are open for writing - this means databases either shut down or open read-only.
&lt;/p&gt;

&lt;p&gt;5. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;It will take about a day for this to complete&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
After you&apos;ve created your migration image and run the Rackspace migration scripts you need to create a support ticket wait for Rackspace to do some work behind the scenes to link your US image to your UK server. It will take about a day or so for this to happen.
&lt;/p&gt;

&lt;h2&gt;Step by step&lt;/h2&gt;

&lt;p&gt;1. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Create the destination server in the UK cloud&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
Create a new, blank server in the UK cloud. Make sure it matches exactly your US server for memory, disk size and OS version.
&lt;/p&gt;

&lt;p&gt;2. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Create an on-demand backup on the UK server&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
This is where the US image is eventually copied across to. Call this something like &quot;MigrationImage&quot; so you&apos;ll know what it&apos;s for.
&lt;/p&gt;
&lt;p&gt;
Once it&apos;s complete, go to Cloud Files and look inside the cloudservers folder. Take note of the .yml file for your image for later (e.g. MigrationImage_20110607_123456.yml)
&lt;/p&gt;

&lt;p&gt;3. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Prepare the US server&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
You need to prepare the server for an on-demand backup image. This means making sure no files are opened for writing, which means any databases need to be shut down or set to read-only.
&lt;/p&gt;

&lt;p&gt;4. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Create an on-demand backup on the US server&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
This becomes the source image for your UK server. Call this something like &quot;MigrationImageSource&quot; so you&apos;ll know what it&apos;s from
&lt;/p&gt;
&lt;p&gt;
Once you have the on-demand backup of the US server you can optionally restart your databases or make them read-write again, but understand that changes from this point on won&apos;t be copied by the migration scripts so you will have to deal with them manually afterwards.
&lt;/p&gt;
&lt;p&gt;
Just like the UK image, go to Cloud Files and take note of the name of the .yml file for use later.
&lt;/p&gt;

&lt;p&gt;5. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;InstallPython 2.6 on your UK server&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
Check the version of Python you have installed by just running &quot;python --version&quot;. If don&apos;t have Python installed at all, try to install it using your system&apos;s package manager (e.g. &quot;yum install python&quot; or &quot;apt-get install python&quot;)
&lt;/p&gt;
&lt;p&gt;
If you don&apos;t have at least Python 2.6.0 then you&apos;ll need to install it by hand. You can download the source and compile from scratch, but as you&apos;re probably only going to be using it this once for the migration, you might find the &lt;a href=&quot;https://www.activestate.com/activepython/downloads&quot;&gt;ActivePython&lt;/a&gt; from &lt;a href=&quot;https://www.activestate.com/&quot;&gt;ActiveState&lt;/a&gt; easier to install - just remember to add the ActivePython bin directory to the beginning of $PATH once you&apos;re done.
&lt;/p&gt;

&lt;p&gt;6. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Install PyYAML on your UK server
&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
PyYAML is a Python module the migration scripts need to run. Download it from &lt;a href=&quot;http://pyyaml.org/download/pyyaml/PyYAML-3.09.tar.gz&quot;&gt;http://pyyaml.org/download/pyyaml/PyYAML-3.09.tar.gz&lt;/a&gt;, untar it to a folder and run &quot;python setup.py install&quot; to install it.
&lt;/p&gt;

&lt;p&gt;7. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Download the migration script on your UK server&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
Get the Rackspace migration script from &lt;a href=&quot;http://c857.r57.cf3.rackcdn.com/migrationscript_v1.0.zip&quot;&gt;http://c857.r57.cf3.rackcdn.com/migrationscript_v1.0.zip&lt;/a&gt; and, if you like (and I&apos;d recommend that you do so), verify the checksum with that on the &lt;a href=&quot;http://cloudservers.rackspacecloud.com/index.php/Migrating_a_Cloud_Server_from_the_US_to_the_UK_Using_Cloud_Files_-_Linux#Download_the_Migration_Script&quot;&gt;Rackspace FAQ&lt;/a&gt; page. Unzip the file into a folder.
&lt;/p&gt;

&lt;p&gt;8. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Run the migration script on your UK server&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
Now you need to run the command on your UK server to copy the migration image over from the US to the UK. The format of the command is :
&lt;/p&gt;
 
&lt;textblock label=&quot;migrate1&quot;&gt;

&lt;p&gt;
You need to replace US_username, US_apikey, source.yml, UK_username and UK_apikey with your details so the command ends up looking like :
&lt;/p&gt;

&lt;textblock label=&quot;migrate2&quot;&gt;

&lt;p&gt;
This will take a while to run depending on the size of the image to be migrated. It will print progress as it goes. Don&apos;t worry about getting it wrong, it handles errors gracefully and you can run it again. If you have an exceptionally large server image it may be worth running this inside &lt;a href=&quot;http://www.gnu.org/software/screen/&quot;&gt;Screen&lt;/a&gt; or some other tool that allows you to disconnect from the session without terminating your login.
&lt;/p&gt;

&lt;p&gt;9. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Raise a support ticket in the UK portal
&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
Once the migration script has completed you have to raise a support ticket in the UK cloud portal. The Rackspace FAQ has the correct wording to use in the ticket details, but additionally I would suggest you add the name of the US and UK servers.
&lt;/p&gt;

&lt;p&gt;10. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Restore the migrated image to the UK server&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
Once you have notification from Rackspace support that they have finished migrating your image you should be able to restore the image to your UK server. The migration overwrites the on-demand UK backup you took at the start of all this with the US on-demand image, so restore using that.
&lt;/p&gt;
&lt;p&gt;
Once this is done the UK server is now an identical copy of the US server at the point the on-demand image was taken there.
&lt;/p&gt;

&lt;p&gt;11. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Change network settings on the UK server&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
Sometimes this happens automatically, but sometimes it doesn&apos;t. If you can&apos;t immediately access your UK server on the new IP address it has been assigned, you&apos;ll need to use the Cloud console to connect to it directly to change the network settings.
&lt;/p&gt;
&lt;p&gt;
The Cloud portal already gives you the primary IP of your cloud server. Rackspace support assure me that for all cloud servers the netmask is always 255.255.255.0 and the default gateway is the same as the IP, but with the last octet changed to 1 - so, if your primary IP is 33.44.55.66, your default gateway is 33.44.55.1. DNS servers should be 83.138.151.80 and 83.138.151.81.
&lt;/p&gt;

&lt;p&gt;12. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Test your UK server&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
Now you need to test the new UK server to make sure it&apos;s all working. Start any databases you had previously stopped or bring them out of read-only mode.
&lt;/p&gt;

&lt;p&gt;13. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Sync up any changed content&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
If any content has changed on the US server since you started this process then this is the time to copy it across to the new UK server.
&lt;/p&gt;

&lt;p&gt;14. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Change DNS names to point at UK server
&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
If you have any public DNS records that refer to the US server you probably want to change them now to point at the new UK server.
&lt;/p&gt;

&lt;p&gt;15. &lt;span style=&quot;font-style:italic;font-weight:bold;&quot;&gt;Delete the US server&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
Once you are totally, 100% sure that the UK server has migrated correctly, all content has been copied and any DNS entries have been re-pointed towards it, you can delete your US server.
&lt;/p&gt;
&lt;p&gt;
Remember that you are still charged even if your US server is switched off, so you need to delete it entirely. If desired, create an on-demand backup to Cloud Files before doing so you can re-create it if necessary.
&lt;/p&gt;

&lt;strong&gt;And there you go - your US cloud server is now running in the UK.&lt;/strong&gt; 
				</description>
				
				<category>Technical</category>				
				
				<pubDate>Wed, 08 Jun 2011 10:09:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2011/6/8/Migrating-your-Rackspace-US-Cloud-Server-to-the-UK</guid>
				
				
			</item>
			
			<item>
				<title>We&apos;re hiring: ColdFusion Developer Wanted!</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2011/1/27/Were-hiring-ColdFusion-Developer-Wanted</link>
				<description>
				
				&lt;h2&gt;ColdFusion Developer, &#xa3;25 - &#xa3;28k DOE&lt;/h2&gt;

&lt;p&gt;Due to our continuing success and growth, Fuzzy Orange are currently looking for a highly-motivated, experienced ColdFusion Developer to be based in Glasgow, Scotland. The position is a key role working primarily on the development of ColdFusion solutions for customers on site. Your responsibilities include, but are not limited to analysing customer and development requirements, preparing technical development documentation, undertaking development based on agreed technical designs, testing of modifications and ongoing development assistance.&lt;/p&gt;

&lt;h4&gt;About You&lt;/h4&gt;
&lt;p&gt;
The ideal candidate will have a passion for great development, a desire to innovate and be brimming with creativity. An easygoing sense of humour and the ability to get along with a wide range of people are a must.
&lt;/p&gt;

&lt;strong&gt;Technical Skills &amp; Experience&lt;/strong&gt;

&lt;p&gt;You will have strong technical skills and a willingness to manage tasks through to delivery, ideally supplemented with skills in associated technologies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2 years minimum ColdFusion experience&lt;/li&gt;
&lt;li&gt;Enterprise-level SQL relational databases&lt;/li&gt;
&lt;li&gt;ColdFusion components and Object-Oriented Programming&lt;/li&gt;
&lt;li&gt;Knowledge of current framework methodologies are advantageous&lt;/li&gt;
&lt;li&gt;Developing Flex and AIR-based applications&lt;/li&gt;
&lt;li&gt;jQuery, CSS, XHTML and JavaScript&lt;/li&gt;
&lt;li&gt;Version control and ticketing systems for project management&lt;/li&gt;
&lt;/ul&gt;

&lt;strong&gt;Personal Skills&lt;/strong&gt;
&lt;p&gt;
You will possess the skills necessary to work in a team environment with other developers and project managers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Excellent problem solving and communication skills&lt;/li&gt;
&lt;li&gt;Great attention to detail&lt;/li&gt;
&lt;li&gt;Self-motivated and driven to achieve professional success in a hybrid development/consulting environment&lt;/li&gt;
&lt;li&gt;Ability to manage workload and time according to deadlines set&lt;/li&gt;
&lt;li&gt;Good team player as well as have the ability to work on your own initiative without supervision&lt;/li&gt;
&lt;li&gt;Resourceful, energetic and enthusiastic&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;About Fuzzy Orange&lt;/h4&gt;
&lt;p&gt;
Fuzzy Orange Ltd is one of Europe&apos;s leading consultancies specialising in Adobe ColdFusion, Flex and AIR. Our client base comprises of local government, transport, new media, technology and entertainment giants as well as small businesses and up and coming dot coms. Fuzzy Orange is the organiser of Europe&apos;s leading ColdFusion conference, Scotch on the Rocks.
&lt;br /&gt;&lt;br /&gt;
Fuzzy Orange Ltd is an equal opportunity employer.
&lt;/p&gt;

&lt;strong&gt;Contact&lt;/strong&gt;
&lt;p&gt;Please email your resume, in PDF/TEXT/HTML format only to &lt;a href=&quot;mailto:info@fuzzyorange.co.uk&quot;&gt;info@fuzzyorange.co.uk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No agencies please.  No MS-WORD attachments.&lt;/p&gt; 
				</description>
				
				<category>Jobs</category>				
				
				<pubDate>Thu, 27 Jan 2011 10:15:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2011/1/27/Were-hiring-ColdFusion-Developer-Wanted</guid>
				
				
			</item>
			
			<item>
				<title>Christmas Development Give Away</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2010/12/6/Christmas-Development-Give-Away</link>
				<description>
				
				&lt;p&gt;
As it&apos;s the season of good will, plus the fact we love giving swag away, we thought we&apos;d put together a little ColdFusion development Santa sack.
&lt;/p&gt;
&lt;p&gt;
Included in the sack are:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 copy of ColdFusion Builder + 1 year maintenance &amp;amp; support&lt;/li&gt;
&lt;li&gt;1 copy of Object Orientated Programming in ColdFusion book by our very own Matt Gifford&lt;/li&gt;
&lt;li&gt;1 full pass to Scotch on the Rocks 2011&lt;/li&gt;
&lt;li&gt;1 full license of Tasktop Pro (http://www.tasktop.com)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
So what do you have to do? Simply send us your best Christmas photo. It could be of your Christmas tree, or you dressed up as Santa ... you take the photo and we&apos;ll decide which is the best.
&lt;/p&gt;
&lt;p&gt;
Send your photo to christmas@fuzzyorange.co.uk - Photos need to be with us by Friday 17th December.
&lt;/p&gt; 
				</description>
				
				<category>Fuzzy Orange</category>				
				
				<pubDate>Mon, 06 Dec 2010 17:11:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2010/12/6/Christmas-Development-Give-Away</guid>
				
				
			</item>
			
			<item>
				<title>New Book: Object Orientated Programming in ColdFusion</title>
				<link>http://www.fuzzyorange.co.uk/blog/index.cfm/2010/11/24/New-Book-Object-Orientated-Programming-in-ColdFusion</link>
				<description>
				
				&lt;p&gt;Our very own Matt Gifford recently saw all his hard work, long hours and caffeine addiction pay off with the release of his very first book, Object Orientated Programming in ColdFusion. Released by Packt Publishing, this 192 page book is a short but concise manual on how to design and build your ColdFusion Components (CFCs), use Inheritance, encapsulate your code, deal with portability, work with Service Layers and so on and so forth.
&lt;/p&gt;
&lt;img align=&quot;right&quot; src=&quot;http://c2834842.cdn.cloudfiles.rackspacecloud.com/cfoop_cover_medium.gif&quot; alt=&quot;Object Orientated Programming in ColdFusion&quot; /&gt;
&lt;p&gt;
The book is a fantastic read for those CFML developers who need a little help in making the jump to working with CFCs, or implement Object Orientated principles. It&apos;s also a great refresher for those who have already made the jump.
&lt;br /&gt;&lt;br /&gt;
Visit the publishers page for full details, including special offers.
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.packtpub.com/object-oriented-programming-in-coldfusion/book&quot;&gt;https://www.packtpub.com/object-oriented-programming-in-coldfusion/book&lt;/a&gt;
&lt;/p&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; 
				</description>
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 24 Nov 2010 12:16:00 -0000</pubDate>
				<guid>http://www.fuzzyorange.co.uk/blog/index.cfm/2010/11/24/New-Book-Object-Orientated-Programming-in-ColdFusion</guid>
				
				
			</item>
			</channel></rss>