<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>Lynch Consulting Blog - Systems admin</title>
			<link>http://www.lynchconsulting.com.au/blog/index.cfm</link>
			<description>A blog about ColdFusion, PHP, Flash, Flex, Web Standards and a mish mash of other technologies</description>
			<language>en-us</language>
			<pubDate>Tue, 07 Sep 2010 12:47:15 --1000</pubDate>
			<lastBuildDate>Mon, 10 May 2010 23:19:00 --1000</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>mark@lynchconsulting.com.au</managingEditor>
			<webMaster>mark@lynchconsulting.com.au</webMaster>
			
			
			
			
			
			<item>
				<title>Howto find files newer than a specific date using command line</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2010/5/10/Howto-find-files-newer-than-a-specific-date-using-command-line</link>
				<description>
				
				While doing some server admin tasks the other day I needed to find all the files newer than a certain date.  Using just the command line tools it was relatively simple but not obvious, so this is a not to self.

The find utility has an option to find a file newer than another file.  By creating and empty file with a specific creation date we can do the search:
&lt;code&gt;
touch timestamp -d 2010-01-01
&lt;/code&gt;

To show all files newer than 2010-01-01 use:
&lt;code&gt;
find . -newer timestamp 
&lt;/code&gt;

Or to create a tar archive of them use xargs like so:
&lt;code&gt;
find . -newer timestamp | xargs tar -rf /root/filesnewerthan-2010-01-01.tar
&lt;/code&gt;


Easy.
Mark
				
				</description>
				
				<category>HOWTO</category>
				
				<category>Linux</category>
				
				<category>Open Source</category>
				
				<category>Systems admin</category>
				
				<category>Ubuntu</category>
				
				<pubDate>Mon, 10 May 2010 23:19:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2010/5/10/Howto-find-files-newer-than-a-specific-date-using-command-line</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>proxy_http vs proxy_ajp benchmark</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2010/3/18/proxyhttp-vs-proxyajp-benchmark</link>
				<description>
				
				After I posted a previous blog entry about &lt;a href=&quot;http://www.lynchconsulting.com.au/blog/index.cfm/2010/3/12/Railo-on-Tomcat-revisited--modproxy&quot;&gt;configuring railo &amp; tomcat with apache and mod_proxy_http&lt;/a&gt;, &lt;a href=&quot;http://blog.kukiel.net/&quot;&gt;Paul Kukiel&lt;/a&gt; and &lt;a href=&quot;http://www.garyrgilbert.com/blog&quot;&gt;Gary Gilbert&lt;/a&gt; suggested that I should be using mod_proxy_ajp.

This has been something I&apos;ve been looking at, but haven&apos;t found a compelling reason for one over the other.

Proxy AJP is claimed to be faster as it is a &quot;Wire protocol&quot; but I couldn&apos;t find any benchmarks around this.  

So I decided to do a very quick and dirty benchmark to satisfy my curiosity.  This is not a scientific process, I just ran a simple railo testpage on the same machine with 50 threads of jmeter requests hitting it. 

First I enabled proxy_http and ran it four times, then enabled proxy_ajp and repeated.  The config is below:

&lt;code&gt;
# Proxy HTTP config
&lt;IfModule mod_proxy_http.c&gt;
	&lt;Proxy *&gt;
	Order deny,allow
	Allow from all
	&lt;/Proxy&gt;
	ProxyPassMatch ^/(.*\.cfm)$ http://testsite.railo:8080/$1
	ProxyPassReverse  /  http://testsite.railo:8080/
&lt;/IfModule&gt;
&lt;/code&gt;

&lt;code&gt;
# Proxy AJP config
&lt;IfModule mod_proxy_ajp.c&gt;
	&lt;Proxy *&gt;
	Order deny,allow
	Allow from all
	&lt;/Proxy&gt;
	ProxyPassMatch ^/(.*\.cfm)$ ajp://testsite.railo:8009/$1
	ProxyPassReverse  /  ajp://testsite.railo:8009/
&lt;/IfModule&gt;
&lt;/code&gt;

&lt;h2&gt;Results:&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;Run&lt;/th&gt;&lt;th&gt;HTTP Requests/sec&lt;/th&gt;&lt;th&gt;AJP Requests/sec&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Run 1&lt;/td&gt;&lt;td&gt;206.9&lt;/td&gt;&lt;td&gt;181.4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Run 2&lt;/td&gt;&lt;td&gt;203.9&lt;/td&gt;&lt;td&gt;143.6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Run 3&lt;/td&gt;&lt;td&gt;194.6&lt;/td&gt;&lt;td&gt;189.2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Run 4&lt;/td&gt;&lt;td&gt;204.6&lt;/td&gt;&lt;td&gt;191.4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;Average&lt;/th&gt;&lt;th&gt;202.5&lt;/th&gt;&lt;th&gt;176.4&lt;/th&gt;&lt;/tr&gt;
&lt;/table&gt;

The results showed that the proxy_http module was faster - i.e. more requests per second could be pushed through.

I&apos;m putting this down to the fact that proxy_ajp has to convert the http request into it&apos;s binary format, while proxy_http really just has to pass it along. 

In different scenarios and network configurations the results may be different, but for now I&apos;m going to stick with the http proxy.

Proxy AJP has one other benefit, in that is passes along some extra flags such as whether the request is https or not, but for our purposes we don&apos;t need this.

Cheers,
Mark
				
				</description>
				
				<category>Systems admin</category>
				
				<category>Railo</category>
				
				<category>General</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Thu, 18 Mar 2010 12:20:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2010/3/18/proxyhttp-vs-proxyajp-benchmark</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Railo on Tomcat revisited - mod_proxy</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2010/3/12/Railo-on-Tomcat-revisited--modproxy</link>
				<description>
				
				&lt;b&gt;Updated:&lt;/b&gt; Changed the linking between railo and tomcat to use shared.loader.

I&apos;ve been doing some more work on configuring railo to work flexibly in the numerous different environments we work in, and also making it simpler to set up.

To that end I investigated the use of mod_proxy for linking it to apache instead of mod_jk.

Advantages of this approach are:
&lt;ul&gt;
&lt;li&gt;Simple - communications are in plain http&lt;/li&gt;
&lt;li&gt;Flexible - Load balancing can be easily added at the apache layer&lt;/li&gt;
&lt;li&gt;Simple - No compiling mod_jk&lt;/li&gt;
&lt;/ul&gt;

Here are the basic install instructions for Railo/Tomcat/Apache on Ubuntu.

&lt;h2&gt;Download &amp; Install Tomcat&lt;/h2&gt;

&lt;a href=&quot;http://tomcat.apache.org/download-60.cgi&quot;&gt;Download tomcat&lt;/a&gt; and extract content:

&lt;code&gt;
tar xvzf apache-tomcat-6.0.26.tar.gz
&lt;/code&gt;

Move Tomcat to a more appropriate place:
&lt;code&gt;
sudo mv apache-tomcat-6.0.26 /opt/tomcat
&lt;/code&gt;


&lt;h2&gt;Download Railo&lt;/h2&gt;

Download &lt;a href=&quot;http://www.getrailo.org/index.cfm/download/&quot;&gt;Railo custom version jars file&lt;/a&gt;

Extract and move into Tomcat lib directory:
&lt;code&gt;
tar zxvf railo-3.1.2.001-jars.tar.gz
sudo mv railo-3.1.2.001-jars /opt/railo
&lt;/code&gt;


Make Tomcat load the railo jars by editing catalina.properties to change the shared loader path:
&lt;code&gt;
shared.loader=/opt/railo/*.jar
&lt;/code&gt;

Make Tomcat and Railo work together by modifying the web config file:
&lt;code&gt;
sudo nano -w /opt/tomcat/conf/web.xml
&lt;/code&gt;

add the following inside the &amp;lt;web-app&amp;gt; element:
&lt;code&gt;
&lt;servlet&gt;
&lt;servlet-name&gt;CFMLServlet&lt;/servlet-name&gt;
&lt;servlet-class&gt;railo.loader.servlet.CFMLServlet&lt;/servlet-class&gt;
   &lt;init-param&gt;
      &lt;param-name&gt;configuration&lt;/param-name&gt;
      &lt;param-value&gt;{web-root-directory}/WEB-INF/railo/&lt;/param-value&gt;
      &lt;description&gt;Configuraton directory&lt;/description&gt;
   &lt;/init-param&gt;
   &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
   &lt;servlet-name&gt;CFMLServlet&lt;/servlet-name&gt;
   &lt;url-pattern&gt;*.cfm&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;servlet-mapping&gt;
   &lt;servlet-name&gt;CFMLServlet&lt;/servlet-name&gt;
   &lt;url-pattern&gt;*.cfml&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;servlet-mapping&gt;
   &lt;servlet-name&gt;CFMLServlet&lt;/servlet-name&gt;
   &lt;url-pattern&gt;*.cfc&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;/code&gt;

add the following inside &amp;lt;welcome-file-list&amp;gt; element:
&lt;code&gt;
&lt;welcome-file&gt;index.cfm&lt;/welcome-file&gt;
&lt;welcome-file&gt;index.cfml&lt;/welcome-file&gt;
&lt;/code&gt;


Start up tomcat:
&lt;code&gt;
/opt/tomcat/bin/startup.sh
&lt;/code&gt;
Once this is done you should be able to access the railo admin by going to the following URL:
&lt;code&gt;
http://127.0.0.1:8080/railo-context/admin/server.cfm
&lt;/code&gt;


&lt;h2&gt;Back to Tomcat&lt;/h2&gt;
To test our Railo installation, let&apos;s create a test site by adding a new virtual host in both Tomcat and Apache.  We do this by modifying Tomcat server.xml file (/opt/tomcat/conf/server.xml )
&lt;code&gt;
&lt;Host name=&quot;testsite.railo&quot; appBase=&quot;webapps&quot;&gt;
    &lt;Context path=&quot;&quot; docBase=&quot;/vhosts/testsite.railo/www&quot;/&gt;
&lt;/Host&gt;
&lt;/code&gt; 

&lt;h2&gt;Linking with Apache via Mod Proxy&lt;/h2&gt;

Ensure the modules proxy and proxy_http are enabled.  On Ubuntu this is done as follows:
&lt;code&gt;
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo /etc/init.d/apache2 restart
&lt;/code&gt;

&lt;h2&gt;Create vhost&lt;/h2&gt;
Now we need to create a virtual host entry in Apache as well:
&lt;code&gt;
&lt;VirtualHost *:80&gt;
        DocumentRoot /vhosts/testsite.railo/www
        ServerName testsite.railo
        DirectoryIndex index.cfm
	#Proxy .cfm requests to railo
	&lt;IfModule mod_proxy.c&gt;
		&lt;Proxy *&gt;
		Order deny,allow
		Allow from all
		&lt;/Proxy&gt;
		ProxyPassMatch ^/(.*\.cfm)$ http://testsite.railo:8080/$1
		ProxyPassReverse  /  http://testsite.railo:8080/
	&lt;/IfModule&gt;

	#Deny access to admin except for local/portforwarded clients
	&lt;Location /railo-context/&gt;
		Order deny,allow
		Deny from all
		Allow from 127.0.0.1
	&lt;/Location&gt;
&lt;/VirtualHost&gt;
&lt;/code&gt;

This tells apache to forward all requests for CFM files to the railo instance.

Finally restart apache and railo and you should be good to go.

&lt;code&gt;
sudo /opt/tomcat/bin/shutdown.sh 
sudo /opt/tomcat/bin/startup.sh 
sudo /etc/init.d/apache2 restart
&lt;/code&gt;
				
				</description>
				
				<category>Ubuntu</category>
				
				<category>Systems admin</category>
				
				<category>Railo</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Fri, 12 Mar 2010 11:01:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2010/3/12/Railo-on-Tomcat-revisited--modproxy</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>MySQL 5.1 logging changes - Log to DB and runtime config</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2010/1/29/MySQL-51-logging-changes</link>
				<description>
				
				While browsing around the MySQL site last night I discovered a number of nice new features of mysql 5.1 that relate to logging.

These are:

&lt;ul&gt;
&lt;li&gt;Logging to DB instead of log files&lt;/li&gt;
&lt;li&gt;Runtime configuration of logging.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Logging to DB instead of log files&lt;/h3&gt;

Coming from a web development background rather than a sysadmin background I&apos;m far more comfortable manipulating and analysing data using SQL.  So to be able to log all the queries or just the slow queries for an application to the db during application development or load testing is a huge benefit.

To enable logging to DB you can add the following to your my.cnf
&lt;code&gt;
log_output = TABLE
&lt;/code&gt; 

The logs will be written to the &apos;slow_log&apos; and &apos;general_log&apos; tables in the mysql database.

Note - logging to tables has more overhead than logging to file, so would suggest using it primarily for development purposes.

Full details of the options are on the &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/en/log-tables.html&quot;&gt;mysql manual on log tables&lt;/a&gt;


&lt;h3&gt;Runtime configuration of logging.&lt;/h3&gt;

This allows you to turn on and off logging without restarting MySQL - which just saves a little bit of time and makes it much nicer for debugging problems.

To turn on the logging of all queries run:
&lt;code&gt;
SET GLOBAL general_log = &apos;ON&apos;;
&lt;/code&gt;
And for just the slow query log:
&lt;code&gt;
SET GLOBAL slow_query_log = &apos;ON&apos;;
&lt;/code&gt;

And to turn them both off use:
&lt;code&gt;
SET GLOBAL general_log = &apos;OFF&apos;;
SET GLOBAL slow_query_log = &apos;OFF&apos;;
&lt;/code&gt;

If you also want to see queries not using indexes in the slow query log you can set the following variable:

&lt;code&gt;
SET GLOBAL log_queries_not_using_indexes = &apos;ON&apos;;
&lt;/code&gt;


Hope it helps,
Mark
				
				</description>
				
				<category>Ubuntu</category>
				
				<category>Systems admin</category>
				
				<category>Open Source</category>
				
				<category>mysql</category>
				
				<category>Linux</category>
				
				<category>Database</category>
				
				<pubDate>Fri, 29 Jan 2010 08:15:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2010/1/29/MySQL-51-logging-changes</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Upcoming book review - Tomcat 6 Developer&apos;s Guide</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/12/21/Upcoming-book-review--Tomcat-6-Developers-Guide</link>
				<description>
				
				&lt;a href=&quot;http://www.packtpub.com/tomcat-6-developers-guide/mid/211209mc5um2?utm_source=lynchconsulting.com.au&amp;utm_medium=affiliate&amp;utm_content=blog&amp;utm_campaign=mdb_001899&quot;&gt;&lt;img src=&quot;http://www.lynchconsulting.com.au/blog/enclosures/tomcat_6_developers_guide.jpg&quot; align=&quot;right&quot;&gt;&lt;/a&gt;

I&apos;ve just received a copy of the &lt;a href=&quot;http://www.packtpub.com/tomcat-6-developers-guide/mid/211209mc5um2?utm_source=lynchconsulting.com.au&amp;utm_medium=affiliate&amp;utm_content=blog&amp;utm_campaign=mdb_001899&quot;&gt;Tomcat 6 Developer&apos;s Guide&lt;/a&gt; from packt publishing to review.  

It&apos;s nice timing as I&apos;ve been working with Tomcat 6 a bit lately and in the new year plan to move some of our production systems over to running &lt;a href=&quot;http://www.getrailo.org&quot;&gt;Railo&lt;/a&gt; on top of &lt;a href=&quot;http://tomcat.apache.org/&quot;&gt;Tomcat&lt;/a&gt;.

After the extremely busy year Learnosity has had I&apos;m looking forward to reading a few books over the break and coming back in the New Year with lots more ideas and technology to implement.
				
				</description>
				
				<category>Systems admin</category>
				
				<category>Railo</category>
				
				<category>Open Source</category>
				
				<category>Java</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Mon, 21 Dec 2009 21:12:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/12/21/Upcoming-book-review--Tomcat-6-Developers-Guide</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Apache Deflate Howto</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/11/15/Apache-Deflate-howto</link>
				<description>
				
				For my own reference, settings to turn on apache mod_deflate.

This sets turns it on for everything except gif,jpeg,png or mp3, as these are already well compressed.

&lt;code&gt;
        SetOutputFilter DEFLATE
	SetEnvIfNoCase Request_URI \
		\.(?:gif|jpe?g|png|mp3)$ no-gzip dont-vary
&lt;/code&gt;

Cheers,
Mark
				
				</description>
				
				<category>Ubuntu</category>
				
				<category>Systems admin</category>
				
				<category>Linux</category>
				
				<pubDate>Sun, 15 Nov 2009 19:15:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/11/15/Apache-Deflate-howto</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Windows File Sharing (SMB/CIFS/Samba) over SSH</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/11/14/Windows-File-Sharing-SMBCIFSSamba-over-SSH</link>
				<description>
				
				While working with a client recently setting up a Netgear VPN so he could securely access his internal file server.   The VPN setup was straightforward but every time the VPN client connected to the VPN server the VPN server/firewall would crash - leaving no connectivity.

In order to come up with a reliable solution to this we decided to use the SSH server we had available and tunnel the windows sharing across the local port forwards, much simpler and more reliable.


Thanks to &lt;a href=&quot;http://www.blisstonia.com/eolson/notes/smboverssh.php&quot;&gt;this article&lt;/a&gt; it was a breeze to set up.

Steps are as follows:
&lt;ul&gt;
&lt;li&gt;Create loopback adapter on windows&lt;/li&gt;
&lt;li&gt;Configure loopback adapter on windows&lt;/li&gt;
&lt;li&gt;Reboot&lt;/li&gt;
&lt;li&gt;Configure SSH connection&lt;/li&gt;
&lt;li&gt;Test it all out&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Create loopback adapter on windows&lt;/h3&gt;


We&apos;ll give your computer an additional (fake) IP address, and we&apos;ll port forward to that address instead of the computer&apos;s real IP. Windows XP will continue to do file sharing on the real IP address. We&apos;ll assign it an IP of 10.0.0.1 (that&apos;s what we configured putty to use above.)

&lt;ol&gt;

&lt;li&gt;System-&gt;Control Panel-&gt;Add Hardware&lt;/li&gt;
&lt;li&gt;Yes, Hardware is already connected&lt;/li&gt;
&lt;li&gt;Add a new hardware device (at bottom of list)&lt;/li&gt;
&lt;li&gt;Install the hardware that I manually select&lt;/li&gt;
&lt;li&gt;Network adapters&lt;/li&gt;
&lt;li&gt;Microsoft , Microsoft Loopback Adapter&lt;/li&gt;
&lt;li&gt;(Go through the installation procedure.)&lt;/li&gt;
&lt;/ol&gt;



&lt;h3&gt;Configure loopback adapter on windows&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open your new fake ethernet adapter (Network Connections) , enter a made-up IP address (I suggest 10.0.0.1, which is a privately routable address that most folk don&apos;t use.)&lt;/li&gt;
&lt;li&gt;Enable Client for Microsoft Networks.&lt;/li&gt;
&lt;li&gt;Disable File and Printer Sharing for Microsoft Networks&lt;/li&gt;
&lt;li&gt;Enable Interent Protocol (TCP/IP)&lt;/li&gt;
&lt;li&gt;Click on properties for TCP/IP.&lt;/li&gt;
&lt;li&gt;Enter your chosen IP address (10.0.0.1), subnet mask (255.255.255.0).  You can leave gateway blank.&lt;/li&gt;
&lt;li&gt;Under advanced-&gt;WINS, Enable LMHosts Lookup and Disable NetBIOS over TCP/IP&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Reboot&lt;/h3&gt;
In order to make it all work now it he appropriate time to reboot so windows initialises everything correctly.

&lt;h3&gt;Configure SSH connection&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Download Putty&lt;/li&gt;
&lt;li&gt;Enter IP address&lt;/li&gt;
&lt;li&gt;Enter Auth Key (if using SSH keys)&lt;/li&gt;
&lt;li&gt;Enter Port forwards for: (these connect the ports on you local machine to 
&lt;ul&gt;
&lt;li&gt;10.0.0.1:137 to 127.0.0.1:137&lt;/li&gt;
&lt;li&gt;10.0.0.1:138 to 127.0.0.1:138&lt;/li&gt;
&lt;li&gt;10.0.0.1:139 to 127.0.0.1:139&lt;/li&gt;
&lt;li&gt;10.0.0.1:445 to 127.0.0.1:445&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Save the config.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Test it all out&lt;/h3&gt;
Now to connect you need to do the following steps:

&lt;ul&gt;
&lt;li&gt;Open putty, load the settings and connect.&lt;/li&gt;
&lt;li&gt;Open Exporer and type in:  \\10.0.0.1\&lt;/li&gt;
&lt;/ul&gt;

You should now be connected to your remote windows system over a secure encrypted tunnel.

Cheers,
Mark
				
				</description>
				
				<category>Windows</category>
				
				<category>Systems admin</category>
				
				<category>Linux</category>
				
				<category>HOWTO</category>
				
				<pubDate>Sat, 14 Nov 2009 13:35:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/11/14/Windows-File-Sharing-SMBCIFSSamba-over-SSH</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cp &quot;No space left on device&quot; problem - Solved</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/11/14/cp-No-space-left-on-device-problem--Solved</link>
				<description>
				
				One of my backup scripts started reporting errors recently about running out of space:

&lt;code&gt;
cp: cannot create regular file `filename in here&apos;: No space left on device
&lt;/code&gt;

Running the command &lt;strong&gt;df&lt;/strong&gt; was showing lots of free space.

However, a quick google on &lt;strong&gt;cp &quot;no space left on device&quot;&lt;/strong&gt; turned up the suggestion to try:

&lt;code&gt;
df -i
&lt;/code&gt;

This showed up the problem straight away - I had run out of inodes.

Once the problem is identified it is generally easy to resolve, so I figured out that there was a cron job that was running a wget task and not discarding the output, and so had saved 600,000+ files in their home directory.

However, when I tried to delete them I encountered another problem:

&lt;code&gt;
# rm filepattern*
bash: /bin/rm: Argument list too long
&lt;/code&gt;

There were so many files that I couldn&apos;t use standard delete commands.

Another quick google turned up &lt;a href=&quot;http://www.thothdata.com/news-items/tips-and-tricks/too-many-arguments&quot;&gt;this gem&lt;/a&gt;:

I ran the following command to check that I was going to delete the correct files:
&lt;code&gt;
find . | grep filepattern
&lt;/code&gt;
And then added the command to actually do the delete:
&lt;code&gt;
find . | grep filepattern | xargs rm
&lt;/code&gt;

One final thing was to fix up the cron job that was causing the problem. Adding the parameter &lt;strong&gt;--delete-after&lt;/strong&gt; to wget kept the directory nice and clean.


All fixed.  One of the things this has reinforced for me is how important it is to have /home on a seperate partition.  If this had not been the case then the problem would have taken longer to happen (due to larger filesystem) but would have been more destructive - as all systems and processes would not have been able to create new files.
				
				</description>
				
				<category>Ubuntu</category>
				
				<category>Systems admin</category>
				
				<category>Linux</category>
				
				<pubDate>Sat, 14 Nov 2009 13:12:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/11/14/cp-No-space-left-on-device-problem--Solved</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Two quick server tips</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/8/15/Two-quick-server-tips</link>
				<description>
				
				Here are two quick tips that I&apos;ve recently found for server admins:

&lt;ul&gt;
&lt;li&gt;Automatically fixing file system errors&lt;/li&gt;
&lt;li&gt;Ignoring directories from updatedb&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;&lt;a name=&quot;auto&quot;&gt;&lt;/a&gt;Automatically fixing file system errors&lt;/h3&gt;

If you have a remote server, i.e. at a data center 10km or 1000km away this should prevent some panic when rebooting the server remotely.

Ext2/3 will do a filesystem check after a certain number of reboots or time.  Most of the time any errors are fixed automatically, but certain errors by default require the root shell and the administrator to fix them.  I&apos;ve seen a few of these happen, but I have always replied yes to the prompts as I don&apos;t know enough about file systems to fix it I said no.

So, to prevent the need to rush to a data center and plug in a keyboard and mouse just to press the &quot;Y&quot; key there is and option to automatically assume yes.

On Ubuntu in the file /etc/default/rcS you need to change the following:
&lt;code&gt;
FSCKFIX=no
to 
FSCKFIX=yes
&lt;/code&gt;


&lt;h3&gt;&lt;a name=&quot;ignore&quot;&gt;&lt;/a&gt;Ignoring directories from updatedb&lt;/h3&gt;
If you have a backup server you may not want it to update the locate db for all your backup files, as it can take a very long time.

To tell locate to ignore a directory you need to add it to the PRUNEPATHS line in the /etc/updatedb.conf file like so:

&lt;code&gt;
PRUNE_BIND_MOUNTS=&quot;yes&quot;
PRUNEPATHS=&quot;/tmp /var/spool /media /srv&quot;
PRUNEFS=&quot;NFS nfs nfs4 afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf rpc_pipefs&quot;
&lt;/code&gt;

In the above code I have added the &lt;b&gt;/srv&lt;/b&gt; entry to make it ignore all my backups which are held under the /srv directory.

Note: These tips were tested on Ubuntu linux, other distributions will have similar functionality but the file locations may vary.

Cheers,
Mark
				
				</description>
				
				<category>Ubuntu</category>
				
				<category>Systems admin</category>
				
				<category>Open Source</category>
				
				<category>Linux</category>
				
				<category>HOWTO</category>
				
				<category>General</category>
				
				<pubDate>Sat, 15 Aug 2009 08:12:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/8/15/Two-quick-server-tips</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Installing Dell OpenManage Server Administrator on Ubuntu 32bit</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/8/4/Installing-Dell-OpenManage-Server-Administrator-on-Ubuntu-32bit</link>
				<description>
				
				&lt;p&gt;I found this article on &lt;a href=&quot;http://www.keithscode.com/linux-tutorials/installing-dell-openmanage-server-administrator-on-ubuntu.html#josc41&quot;&gt;Installing Dell OpenManage Server Administrator on Ubuntu x64 on Keith&apos;s Code&lt;/a&gt; and am posting here with modifications for 32 bit for my own reference&lt;/p&gt;


&lt;p&gt;
Dell&apos;s OpenManage Server Administrator is a powerful tool for keeping track of your server&apos;s health and making sure everything is running as it should. Unfortunately, Dell only released packages for RedHat and SuSE, so installing the software on Ubuntu can be tricky, at best. 
&lt;/p&gt;
&lt;p&gt;
There is some information on the Internet about getting the package to install on exotic distributions, but I never found anything definitive. This tutorial will guide you through installing the software and getting the web access up and running.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
My setup is: Dell 2950 with 1 Intel 2.2GHz Processor, 2GB RAM, PERC 5/i SCSI Raid Controller with 2 73GB 15K RPM SAS disks running Ubuntu 8.04.2 LTS 32-bit. 
&lt;/p&gt;


&lt;h3&gt;1. Install the kernel modules&lt;/h3&gt; 

&lt;p&gt;
The first step is installing the needed kernel modules to support IPMI:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;
sudo modprobe ipmi_msghandler
sudo modprobe ipmi_devintf
sudo modprobe ipmi_si&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;
Next,you will want to add those modules to the end of the /etc/modules file. This will allow them to be loaded at boot time.
&lt;/p&gt;

&lt;h3&gt;2. Setup Apt to get the OMSA package &lt;/h3&gt;
&lt;p&gt;
As stated before, Dell only released the OpenManage Server Administrator for RedHat and SuSE. However, someone was kind enough to create an installable Debian based package for us. In order to get access to that package, you will need to add the following line to /etc/apt/sources.list:&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;

&lt;code&gt;deb ftp://ftp.sara.nl/pub/sara-omsa dell sara&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;
Then, you will need to install the Pulic Key for that repository. To do that, create a temporary directory in your home folder and run the following commands from that folder:&lt;br /&gt;
&lt;code&gt;
wget http://ftp.sara.nl/debian_sara.asc

sudo apt-key add debian_sara.asc&lt;/code&gt;
&lt;/p&gt;

&lt;h3&gt;3. Install the needed packages&lt;/h3&gt; 
&lt;p&gt;

Now it&apos;s time to install all the packages that will be needed:&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;sudo apt-get update
sudo apt-get install snmp snmpd
sudo apt-get install openipmi
sudo apt-get install ipmitool
sudo apt-get install dellomsa
&lt;/code&gt;
&lt;/p&gt;
&lt;h3&gt;4. Start SNMP&lt;/h3&gt;
&lt;p&gt;
The following commands will enable SNMP and get it going:&lt;br /&gt;
&lt;code&gt;
sudo /etc/init.d/snmpd restart
sudo /etc/init.d/dataeng start
&lt;/code&gt;

If you get and error like:
&lt;code&gt;
Starting dsm_sa_datamgr32d: /opt/dell/srvadmin/dataeng/bin/dsm_sa_datamgr32d: error while loading shared libraries: libdcsmil32.so.5: cannot open shared object file: No such file or directory 
Starting dsm_sa_eventmgr32d: /opt/dell/srvadmin/dataeng/bin/dsm_sa_eventmgr32d: error while loading shared libraries: libdcsupt32.so.5: cannot open shared object file: No such file or directory
&lt;/code&gt;

You may need to reconfigure the dynamic linker so that it knows the new libraries are.&lt;br /&gt;

&lt;code&gt;
sudo ldconfig&lt;/code&gt;
&lt;/p&gt;


&lt;h3&gt;
5. Start the web services&lt;/h3&gt;
&lt;p&gt;
Start the Dell OMSA web interface:&lt;br /&gt;
&lt;code&gt;
sudo /etc/init.d/dsm_om_connsvc start&lt;/code&gt;
&lt;/p&gt;


&lt;h3&gt;
6. Add a user to access the OMSA site
&lt;/h3&gt;
&lt;p&gt;
If your system is setup properly, you shouldn&apos;t have a password for the root user. To access the OpenManage client, you need to have root access. There is a way to do this without giving the root user a password. I created a user called dellroot that will be able to access the OMSA client:&lt;br /&gt;
&lt;samp&gt;
sudo useradd dellroot&lt;br /&gt;
sudo usermod -g root dellroot&lt;br /&gt;
sudo passwd dellroot&lt;/samp&gt;
&lt;/p&gt;
&lt;p&gt;
Enter a secure password for the user when prompted. 
&lt;/p&gt;

&lt;h3&gt;
7. Check it out&lt;/h3&gt;
&lt;p&gt;
Now you should be able to access the OpenManage web interface by going to https://&amp;lt;servername&amp;gt;:1311 (e.g., https://www.example.com:1311)
&lt;/p&gt;
&lt;p&gt;
Make sure you are using https and you add the port number of 1311 to the end of the URL. You can login using the dellroot user you just created.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
If you are using firefox, you will have to add a security exception for the self-signed certificate the server is using. 

&lt;/p&gt;
&lt;p&gt;


Thanks Keith for the helpful reference.

Cheers,
Mark
				
				</description>
				
				<category>Systems admin</category>
				
				<category>Ubuntu</category>
				
				<pubDate>Tue, 04 Aug 2009 11:27:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/8/4/Installing-Dell-OpenManage-Server-Administrator-on-Ubuntu-32bit</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>SSH SOCK Proxying and preventing it</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/7/1/SSH-SOCK-Proxying-and-preventing-it</link>
				<description>
				
				I&apos;ve been using SSH portforwards extensively for getting access to remote networks securely for years, but today I came across another very &lt;a href=&quot;http://dimitar.me/?p=239&quot;&gt;useful thing you can do with SSH&lt;/a&gt;. That is use it as a SOCKS proxy.

&lt;img src=&quot;http://www.lynchconsulting.com.au/blog/enclosures/firefox_preferences_ssh_socks_proxy.png&quot; align=&quot;right&quot;&gt;

This is useful if you are on a corporate network that has specific restrictions on certain sites that you need to access.  You can use the following command so set it up:

&lt;code&gt;
ssh -D 8080 your_ssh_server
&lt;/code&gt;

This will create a socks proxy on port 8080 and if you configure your browser proxy settings to use a socks proxy on localhost port 8080  - see picture.

Once this is done all your browser traffic will go through the proxy network.


&lt;h3&gt;Preventing Port Forwards on your SSH server&lt;/h3&gt;

However, you may not want everyone who has a login to your ssh server from being able to do this, so you can conditionally limit access to who can do portforward with the following in you sshd_config file:

&lt;code&gt;
AllowTcpForwarding no
Match User someuser
         AllowTcpForwarding yes 
&lt;/code&gt;
or
&lt;code&gt;
AllowTcpForwarding no
Match Group somegroup
         AllowTcpForwarding yes 
&lt;/code&gt;

I found that little gem &lt;a href=&quot;http://www.nabble.com/AllowTcpForwarding---openssh-v4.5p1-6-(fedora-7)-td19906545.html&quot;&gt;here on nabble.&lt;/a&gt;
				
				</description>
				
				<category>Systems admin</category>
				
				<pubDate>Wed, 01 Jul 2009 13:46:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/7/1/SSH-SOCK-Proxying-and-preventing-it</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>HOWTO find files that are not world readable</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/5/18/HOWTO-find-files-that-are-not-world-readable</link>
				<description>
				
				I ran across some permissions errors on content that some users uploaded to a website.  The files uploaded were not world readable so were coming up as forbidden:

This simple find command shows the offending files:

&lt;code&gt;
/usr/bin/find . -type f ! -perm -004
&lt;/code&gt;

A quickie but a goodie.

Cheers,
Mark
				
				</description>
				
				<category>Linux</category>
				
				<category>Mac OSX</category>
				
				<category>Open Source</category>
				
				<category>Systems admin</category>
				
				<category>Ubuntu</category>
				
				<pubDate>Mon, 18 May 2009 21:47:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/5/18/HOWTO-find-files-that-are-not-world-readable</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>ColdFusion per vhosts mappings</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/5/6/ColdFusion-per-vhosts-mappings</link>
				<description>
				
				One of the features of CF8 that I was most interested in and most let down on was per application mappings.  The reason I was so keen was so that we could keep core library application files out of the webroot for additional security, but still have different versions of the same codebase.  I.e. some sites running farcry3 some running farcry5 for example.

This didn&apos;t transpire and so now we use the following technique on apache to map the folder in and then lock it down with apache.

In the vhost section add the following:
&lt;code&gt;
Alias /farcry /path/to/non-webfolder/farcry
&lt;Location /farcry/&gt;
    Order Deny,Allow
     Deny from all
&lt;/Location&gt; 
&lt;/code&gt;

Note: it is important that there is no /farcry mapping defined in the CF Administrator or it will override this setting.

What the above does, is to map in the non-web accessible folder, but then locking it down so it cannot be browsed from the web.  This seems pointless but CF can still see the files and correctly resolves the paths even though they are secure from the outside world.

This then allows us to version our sites independently - i.e. if we want to upgrade from farcry 5 to 5.1 we can do it one site at a time, instead of having to test them all at once.

Note - Railo already has per vhost mappings which solve the same problem as this.  But if you are on CF7 or CF8 then this works a treat.

Cheers,
Mark
				
				</description>
				
				<category>ColdFusion</category>
				
				<category>Open Source</category>
				
				<category>Systems admin</category>
				
				<pubDate>Wed, 06 May 2009 13:32:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/5/6/ColdFusion-per-vhosts-mappings</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Installing Railo on Tomcat via Apache on Leopard - Step by Step</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/3/27/Installing-Railo-on-Tomcat-via-Apache-on-Leopard--Step-by-Step</link>
				<description>
				
				After a bit of fiddling and head scratching I managed to install Railo on Tomcat via Apache on my laptop running on OS X 10.5.6.
&lt;h2&gt;Tomcat&lt;/h2&gt;
Firstly, download &lt;a href=&quot;http://tomcat.apache.org/download-60.cgi&quot;&gt;Tomcat 6&lt;/a&gt;

extract content:
&lt;code&gt;
tar xvzf apache-tomcat-6.0.18.tar.gz
&lt;/code&gt;

Move Tomcat to a more secure place:
&lt;code&gt;
sudo mv apache-tomcat-6.0.18 /usr/local/tomcat
&lt;/code&gt;

&lt;h2&gt;Railo&lt;/h2&gt;
Download &lt;a href=&quot;http://www.railo-technologies.com/down.cfm?item=/railo/remote/download/3.0.2.001/custom/all/railo-3.0.2.001-jars.tar.gz&quot;&gt;Railo custom version&lt;/a&gt;

extract and move into Tomcat lib directory:
&lt;code&gt;
tar zxvf railo-3.0.2.001-jars.tar.gz
sudo mv railo-3.0.2.001-jars/* /usr/local/tomcat/lib
&lt;/code&gt;

Make Tomcat and Railo work together by modifying the web config file:
&lt;code&gt;
sudo nano /usr/local/tomcat/conf/web.xml
&lt;/code&gt;

add the following inside the &amp;lt;web-app&amp;gt; element:
&lt;code&gt;
&lt;servlet&gt;
&lt;servlet-name&gt;CFMLServlet&lt;/servlet-name&gt;
&lt;servlet-class&gt;railo.loader.servlet.CFMLServlet&lt;/servlet-class&gt;
   &lt;init-param&gt;
      &lt;param-name&gt;configuration&lt;/param-name&gt;
      &lt;param-value&gt;{web-root-directory}/WEB-INF/railo/&lt;/param-value&gt;
      &lt;description&gt;Configuraton directory&lt;/description&gt;
   &lt;/init-param&gt;
   &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
   &lt;servlet-name&gt;CFMLServlet&lt;/servlet-name&gt;
   &lt;url-pattern&gt;*.cfm&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;servlet-mapping&gt;
   &lt;servlet-name&gt;CFMLServlet&lt;/servlet-name&gt;
   &lt;url-pattern&gt;*.cfml&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;servlet-mapping&gt;
   &lt;servlet-name&gt;CFMLServlet&lt;/servlet-name&gt;
   &lt;url-pattern&gt;*.cfc&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;/code&gt;

add the following inside &amp;lt;welcome-file-list&amp;gt; element:
&lt;code&gt;
&lt;welcome-file&gt;index.cfm&lt;/welcome-file&gt;
&lt;welcome-file&gt;index.cfml&lt;/welcome-file&gt;
&lt;/code&gt;

&lt;h2&gt;Apache&lt;/h2&gt;
Leopard OS comes with Apache 2, so you don&apos;t have to worry about installing it.  However, you need to download &lt;a href=&quot;http://tomcat.apache.org/connectors-doc/&quot;&gt;The Apache Tomcat Connector&lt;/a&gt; source code.

Next you need to compile the source so that the resulting binary file is compatible with your Intel Mac architecture.  I got this from &lt;a href=&quot;http://blog.lo-fi.net/2007/10/leopard-for-web-developer-installing.html&quot;&gt;Eric Rank&apos;s blog&lt;/a&gt;

cd into tomcat source:
&lt;code&gt;
cd tomcat-connectors-1.2.27-src/native
&lt;/code&gt;

Edit the apache-2.0/Makefile.apxs.in file.

Replace
&lt;code&gt;
mod_jk.la:
 $(APXS)  -c -o $@ -Wc,&quot;${APXSCFLAGS} ${JK_INCL}&quot; &quot;${JAVA_INCL}&quot; &quot;${APXSLDFLAGS}&quot; mod_jk.c ${APACHE_OBJECTS}
&lt;/code&gt;

with:

&lt;code&gt;
mod_jk.la:
 $(APXS) -c -o $@ -Wc,&quot;${APXSCFLAGS} -arch x86_64 ${JK_INCL}&quot; &quot;${JAVA_INCL}&quot; &quot;${APXSLDFLAGS} -arch x86_64 &quot; mod_jk.c ${APACHE_OBJECTS}
&lt;/code&gt;

configure the build files:
&lt;code&gt;
./configure --with-apxs=/usr/sbin/apxs
&lt;/code&gt;

now go into apache-2.0 directory and build:
&lt;code&gt;
cd apache-2.0
make -f Makefile.apxs
&lt;/code&gt;

Finally install
&lt;code&gt;
sudo make install
&lt;/code&gt;

Now specify the connection between Apache and Tomcat.  To do this you need to create workers.properties file.  I created mine in /etc/apache2.
&lt;code&gt;
sudo nano /etc/apache2/workers.properties
&lt;/code&gt;

Paste the following:
&lt;code&gt;
worker.list=default

worker.default.port=8009
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1
&lt;/code&gt;

Now we need to modify the Apache httpd.conf file:
&lt;code&gt;
sudo nano /etc/apache2/httpd.conf
&lt;/code&gt;

Enable The Apache Tomcat Connector:
&lt;code&gt;
LoadModule jk_module    libexec/apache2/mod_jk.so
&lt;/code&gt;

Underneath that tell Apache where your workers.properties file is located and add some logging info (could be useful):
&lt;code&gt;
# Mod_jk settings                                            
JkWorkersFile /etc/apache2/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel debug
DirectoryIndex index.html index.htm index.cfm index.cfml
&lt;/code&gt;

&lt;h2&gt;Back to Tomcat&lt;/h2&gt;
To test our Railo installation, let&apos;s create a test site by adding a new virtual host in both Tomcat and Apache.  We do this by modifying Tomcat server.xml file (/usr/local/tomcat/conf/server.xml )
&lt;code&gt;
&lt;Host name=&quot;railo.local&quot; appBase=&quot;webapps&quot;&gt;
    &lt;Context path=&quot;&quot; docBase=&quot;/Library/Webserver/Documents&quot;/&gt;
&lt;/Host&gt;
&lt;/code&gt; 

&lt;h2&gt;Apache&lt;/h2&gt;
Now we need to create a virtual host entry in Apache as well:
&lt;code&gt;
&lt;VirtualHost *:80&gt;
        JkMount /*.cfm default
        ServerName railo.local
        DirectoryIndex index.cfm
&lt;/VirtualHost&gt;
&lt;/code&gt;

&lt;code&gt;
JkMount /*.cfm default
&lt;/code&gt;
Tells mod_jk to use the connector specified in your workers.properties file when it encounters a .cfm extension.

&lt;h2&gt;Important&lt;/h2&gt;
Notice that in my Apache VirtualHost entry there is no DocumentRoot.  I originally had it in there and it was breaking my Apache-Tomcat connection.  It was driving me mad.  It&apos;s probably because document root is already specified in /usr/local/tomcat/conf/server.xml.

One last thing, to start your Tomcat server type in this command:
&lt;code&gt;
/usr/local/tomcat/bin/startup.sh 
&lt;/code&gt;

shut down

&lt;code&gt;
/usr/local/tomcat/bin/shutdown.sh
&lt;/code&gt;

My assumption is that the above steps would be very similar on other operating systems as long as you use the correct file paths.

Good luck :-)

Marko
				
				</description>
				
				<category>Systems admin</category>
				
				<category>Railo</category>
				
				<category>Mac OSX</category>
				
				<category>HOWTO</category>
				
				<pubDate>Fri, 27 Mar 2009 14:45:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/3/27/Installing-Railo-on-Tomcat-via-Apache-on-Leopard--Step-by-Step</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>HOWTO generate diff files from subversion</title>
				<link>http://www.lynchconsulting.com.au/blog/index.cfm/2009/3/3/HOWTO-generate-diff-files-from-subversion</link>
				<description>
				
				Here&apos;s a nice and quick way to generate a diff file from subversion and store it on your local machine. 

&lt;code&gt;
svn diff filepath/myFile.ext &gt; saveDirPath/myFile.ext.diff
&lt;/code&gt;

Where filePath is the local path to your working directory in which your file is located.  And saveDirPath is the path where you want to save your diff file.

Diff files can be very useful when contributing to open source projects.

You can also get a &lt;a href=&quot;http://www.lynchconsulting.com.au/blog/index.cfm/2009/1/16/SVN--Get-list-of-files-changed-between-revisions&quot;&gt;list of files changed between revisions&lt;/a&gt;.

Marko
				
				</description>
				
				<category>HOWTO</category>
				
				<category>General</category>
				
				<category>Open Source</category>
				
				<category>Systems admin</category>
				
				<pubDate>Tue, 03 Mar 2009 11:46:00 --1000</pubDate>
				<guid>http://www.lynchconsulting.com.au/blog/index.cfm/2009/3/3/HOWTO-generate-diff-files-from-subversion</guid>
				
			</item>
			
		 	
			</channel></rss>