<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>The Developer&#039;s Tidbit</title>
	<atom:link href="http://ipggi.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ipggi.wordpress.com</link>
	<description>Helpful tips for random problems</description>
	<lastBuildDate>Tue, 24 Jan 2012 20:17:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='ipggi.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>The Developer&#039;s Tidbit</title>
		<link>http://ipggi.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ipggi.wordpress.com/osd.xml" title="The Developer&#039;s Tidbit" />
	<atom:link rel='hub' href='http://ipggi.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Tuckey URLRewrite How-To</title>
		<link>http://ipggi.wordpress.com/2011/11/28/tuckey-urlrewrite-how-to/</link>
		<comments>http://ipggi.wordpress.com/2011/11/28/tuckey-urlrewrite-how-to/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 09:04:34 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[CFML/ColdFusion]]></category>
		<category><![CDATA[Railo]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://ipggi.wordpress.com/?p=635</guid>
		<description><![CDATA[Today I will walk through how to put into practice use the Tuckey URL Rewrite java web filter under an Apache Tomcat web server. URL rewriting is the method of converting complex URL parameters into more human readable format to allow more simple and memorable URLs. This can be an important function if you start [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=635&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today I will walk through how to put into practice use the <a class="vt-p" href="http://www.tuckey.org/urlrewrite/">Tuckey URL Rewrite</a> java web filter under an <a class="vt-p" href="http://www.tomcat.apache.org/">Apache Tomcat</a> web server.</p>
<p>URL rewriting is the method of converting complex URL parameters into more human readable format to allow more simple and memorable URLs. This can be an important function if you start using frameworks or content management systems which automatically generate long and at times cryptic URLs. While URL rewrite on the more popular <a class="vt-p" href="httpd.apache.org">Apache HTTP Server</a> is relatively easy to set up using the default mod_rewrite module, reproducing this functionality on Tomcat requires a little more work.</p>
<p>Standard URL: <a class="vt-p" href="http://www.example.com/list.html?product=fruit&amp;page=1&amp;order=asc&amp;perpage=30">http://www.example.com/list.cfm?product=fruit&amp;page=1&amp;order=asc&amp;perpage=30</a><br />
Rewrite URL: <a class="vt-p" href="http://www.example.com/list/fruit/asc/30/1">http://www.example.com/list/fruit/asc/30/1</a></p>
<h2>Installation</h2>
<p>A downloadable copy of URLRewrite can be found from one of 2 sources. The outdated website at <a class="vt-p" href="http://www.tuckey.org/urlrewrite/">http://www.tuckey.org/urlrewrite/</a> lists version 3.2 as the most recent version. But there is a more recent and in my testing still stable 4.0 beta at Google Code <a class="vt-p" href="http://code.google.com/p/urlrewritefilter/downloads/list">http://code.google.com/p/urlrewritefilter/downloads/list</a> that contains some critical bug fixes. This article will assume you have downloaded the 4.0 beta and not the 3.2 stable.</p>
<p>Extracting the downloaded URLRewrite archive reveals a single <em>WEB-INF</em> folder which contains a <em>lib</em> folder and the file <em>urlrewrite.xml</em>. Both these items will need to be copied to the <em>WEB-INF</em> folder of your Tomcat server root directory. For example if example.com was located in <em>/var/www/www.example.com</em> or <em>c:\www\www.example.com</em> the <em>lib</em> folder and <em>urlrewrite.xml</em> would go in <em>/var/www/www.example.com/WEB-INF/</em> or<em> c:\www\www.example.com\WEB-INF</em>.</p>
<div id="attachment_684" class="wp-caption alignnone" style="width: 310px"><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/11/28-11-2011-3-00-41-pm.png"><img class="size-medium wp-image-684" title="Content of Tuckey URLRewrite 4.0" src="http://ipggi.files.wordpress.com/2011/11/28-11-2011-3-00-41-pm.png?w=300&#038;h=50" alt="" width="300" height="50" /></a><p class="wp-caption-text">Content of Tuckey URLRewrite 4.0&#039;s archive</p></div>
<div id="attachment_687" class="wp-caption alignnone" style="width: 310px"><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/11/28-11-2011-3-06-46-pm.png"><img class="size-medium wp-image-687" title="Content of WEB-INF" src="http://ipggi.files.wordpress.com/2011/11/28-11-2011-3-06-46-pm.png?w=300&#038;h=52" alt="" width="300" height="52" /></a><p class="wp-caption-text">Content of WEB-INF with URLRewrite</p></div>
<div id="attachment_685" class="wp-caption alignnone" style="width: 310px"><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/11/28-11-2011-4-05-39-pm.png"><img class="size-medium wp-image-685" title="Content Of A Clean WEB.XML" src="http://ipggi.files.wordpress.com/2011/11/28-11-2011-4-05-39-pm.png?w=300&#038;h=57" alt="" width="300" height="57" /></a><p class="wp-caption-text">Content Of A Clean WEB.XML</p></div>
<p>Generally for most default installations of Tomcat the <em>WEB-INF</em> folder will only contain the single file <em>web.xml</em>. We will need to edit<em> web.xml</em> using a text editor to enable URLRewrite on Tomcat but because it is an XML text file. It can be machined parsed so I&#8217;d recommend editing it using a source code text editor such as <a class="vt-p" href="http://www.notepad-plus-plus.org/">NotePad++</a> on Windows or <a class="vt-p" href="http://www.macromates.com/">Textmate </a>on OS/X.</p>
<p>Add the following code to <em>web.xm</em>l anywhere contained within the <em>&lt;web-app&gt;&lt;/web-app&gt;</em> tags.<br />
<code><br />
&lt;!-- URL ReWriter --&gt;<br />
&lt;filter&gt;<br />
&lt;filter-name&gt;UrlRewriteFilter&lt;/filter-name&gt;<br />
&lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter&lt;/filter-class&gt;<br />
&lt;!-- set the amount of seconds the conf file will be checked for reload<br />
can be a valid integer (0 denotes check every time,<br />
empty/not set denotes no reload check) --&gt;<br />
&lt;init-param&gt;<br />
&lt;param-name&gt;confReloadCheckInterval&lt;/param-name&gt;<br />
&lt;param-value&gt;0&lt;/param-value&gt;<br />
&lt;/init-param&gt;<br />
&lt;!-- you can disable status page if desired<br />
can be: true, false (default true) --&gt;<br />
&lt;init-param&gt;<br />
&lt;param-name&gt;statusEnabled&lt;/param-name&gt;<br />
&lt;param-value&gt;true&lt;/param-value&gt;<br />
&lt;/init-param&gt;<br />
&lt;init-param&gt;<br />
&lt;param-name&gt;logLevel&lt;/param-name&gt;<br />
&lt;param-value&gt;DEBUG&lt;/param-value&gt;<br />
&lt;/init-param&gt;<br />
&lt;init-param&gt;<br />
&lt;param-name&gt;statusEnabledOnHosts&lt;/param-name&gt;<br />
&lt;param-value&gt;localhost&lt;/param-value&gt;<br />
&lt;/init-param&gt;<br />
&lt;/filter&gt;</code></p>
<p><code>&lt;filter-mapping&gt;<br />
&lt;filter-name&gt;UrlRewriteFilter&lt;/filter-name&gt;<br />
&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />
&lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;<br />
&lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;<br />
&lt;/filter-mapping&gt;</code></p>
<div id="attachment_686" class="wp-caption alignnone" style="width: 310px"><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/11/28-11-2011-7-21-44-pm.png"><img class="size-medium wp-image-686" title="Edited WEB.XML" src="http://ipggi.files.wordpress.com/2011/11/28-11-2011-7-21-44-pm.png?w=300&#038;h=278" alt="" width="300" height="278" /></a><p class="wp-caption-text">Edited WEB.XML</p></div>
<p>Let&#8217;s quickly go through these settings.</p>
<p><em><strong>confReloadCheckInterval</strong></em> is a numeric value in seconds that tells how frequently URLRewrite should check your <em>urlrewrite.xml</em> rules for any changes. Normally with Tomcat the modification of an XML configuration file requires a restart before the changes are reflected. You can set this value to <strong>-1</strong> to disable automatic checking, while our value of <strong>0</strong> will mean that URLRewrite will check the<em> urlrewrite.xml</em> on every HTTP request. It is a great setting while testing and developing but a resource waste if used on a production server.</p>
<p><strong><em>statusEnabled</em></strong> is a Boolean value that enables a URLRewrite status page that is reachable via a web browser at <a class="vt-p" href="http://www.example.com/rewrite-status">http://www.example.com/rewrite-status</a>. It is probably best to disable this feature on production servers.</p>
<p><em><strong>logLevel</strong></em> sets how much logging should be produced by URLRewrite. While the default setting is <strong>INFO</strong>, I suggest using <strong>DEBUG</strong> while you are testing. Through in a production environment you will probably want to use <strong>ERROR</strong> or <strong>FATAL</strong> to limit logging as URLRewrite can generate some large log files very quickly with more verbose log settings.</p>
<p><em><strong>statusEnabledOnHosts</strong></em> allows you set which IP addresses and hosts that have access to the URLRewrite status page previously mentioned.</p>
<p>Finally the <em>&lt;filer-mapping&gt;</em> tag tells what kinds of methods to pass through via URLRewrite. The tags <em>&lt; url-pattern &gt;&lt;/ url-pattern&gt;</em> should be left as is to apply URLRewrite to the whole site. While the 2 <em>&lt; dispatcher &gt;&lt;/ dispatcher &gt;</em> tags mean that URLRewrite should be used for all HTTP REQUESTS and HTTP internal FORWARDing.</p>
<p>Once done, save your web.xml file and restart your Tomcat server. If all goes well you should be able to point your browser to <a class="vt-p" href="http://www.example.com/rewrite-status">http://www.example.com/rewrite-status</a> and an <strong>UrlRewriteFilter 3.2.0 build 1 configuration</strong> overview should be shown. Yes that 3.2 version number is incorrectly listed in 4.0. Point your browser to <a class="vt-p" href="http://www.example.com/test/status/">http://www.example.com/test/status/</a> and you should be automatically forwarded to <em>/rewrite-status</em>. When this works then congratulations as you now have URLRewrite enabled on your server. Now I will give you some helpful example rules that may come in use. These rules all go in-between the <em>&lt;urlrewrite&gt;&lt;/urlrewrite&gt;</em> tags located in the <em>urlrewrite.xml</em> file within the <em>WEB-INF</em> folder. Whenever a page is requested on your Tomcat server the URLRewrite application will in a sequential order process ALL the rules contained in the <em>urlrewrite.xml</em>.</p>
<h2>Pretty URL, SES Friendly URL Pass-Through</h2>
<p>The most common use of URLRewrite would probably be to enable a 3rd party framework or CMS to use pretty URLs. The rule below is a generic setup that could be adapted for many uses. Generally speaking this should always be the LAST rule listed in your urlrewrite.xml rule set. The rule passes all URL requests to the <em>index.cfm</em> file except requests with URLs pointing to files or folders listed in the <em>&lt;condition&gt;&lt;/condition&gt; </em>tag regular expression value. So with this rule the URL <a class="vt-p" href="http://www.example.com/list/apples">http://www.example.com/list/apples</a> would be displayed as is in the user&#8217;s browser but URLRewrite will actually pass <a class="vt-p" href="http://www.example.com/index.cfm/list/apples">http://www.example.com/index.cfm/list/apples</a> to the Tomcat server. You do want to make sure that the page that contained within the <em>&lt;to&gt;&lt;/to&gt; </em>tag value is also listed in the (not equal) <em>&lt;condition&gt;&lt;/condition&gt;</em> value otherwise you could run into an infinite loop.</p>
<p><code>&lt;rule enabled="true"&gt;<br />
&lt;name&gt;Generic Pretty URLs Pass-through&lt;/name&gt;<br />
&lt;condition type="request-uri" operator="notequal"&gt;^/(index.cfm|robots.txt|osd.xml|flex2gateway|cfide|cfformgateway|railo-context|admin-context|files|images|jrunscripts|javascripts|miscellaneous|stylesheets)&lt;/condition&gt;<br />
&lt;from&gt;^/(.*)$&lt;/from&gt;<br />
&lt;to type="passthrough"&gt;/index.cfm/$1&lt;/to&gt;<br />
&lt;/rule&gt;</code></p>
<h2>Permanent Redirection</h2>
<p>This rule is specifically for when you want to do a permanent redirection using the HTTP code 301. If we break this rule down, the <em>&lt;rule enable=&#8221;"&gt;</em> Boolean enables you to selectively turn off this rule without the need to comment it out. The<em> &lt;name&gt;&lt;/name&gt;</em> tags contains the label you wish to use to describe the rule. <em>&lt;from&gt;&lt;/from&gt;</em> tag contains a regular expression to forward all requests for the <em>documents.cfm</em> page plus any URL parameters. While <em>&lt;to&gt;&lt;/to&gt;</em> is the new URL to redirect to. The attribute type tells URLRewrite to send a permanent direct code to the browser requesting the URL, while the attribute <em>last = </em><strong>true</strong> tells URLRewrite not to process any further rules for this page request.</p>
<p><code>&lt;rule enabled="true"&gt;<br />
&lt;name&gt;Permanent redirect example&lt;/name&gt;<br />
&lt;from&gt;^/documents.html(.*)$&lt;/from&gt;<br />
&lt;to type="permanent-redirect" last="true"&gt;/file/list/document&lt;/to&gt;<br />
&lt;/rule&gt;</code></p>
<h2>Selective HTTPS Enforcement</h2>
<p>If you have HTTPS setup on your server you can use URLRewrite to enforce certain folders, URL paths or files to only be served on an encrypted HTTPS protocol. The <em>&lt;condition&gt;&lt;/condition&gt;</em> tag is used to enforce additional policies as to when the rule should be implemented. The attribute <em>type</em> with a value of <strong>scheme</strong> and the attribute <em>operator</em> with a value of <strong>equal</strong> states that when the URL scheme (http, https, ftp, etc) is equal to <strong>HTTP</strong> then apply this rule.</p>
<p><code>&lt;rule enabled="false"&gt;<br />
&lt;name&gt;Force HTTPS example&lt;/name&gt;<br />
&lt;note&gt;Automatically redirects adminstration requests to a secure protocol.&lt;/note&gt;<br />
&lt;condition type="scheme" operator="equal"&gt;^http$&lt;/condition&gt;<br />
&lt;from&gt;^/CFIDE/administrator/(.*)$&lt;/from&gt;<br />
&lt;to type="permanent-redirect" last="true"&gt;https://www.example.com/CFIDE/administrator/$1&lt;/to&gt;<br />
&lt;/rule&gt;</code></p>
<h2>Railo HTTPS Enforcement railo-content.</h2>
<p><code>&lt;rule enabled="false"&gt;<br />
&lt;name&gt;Force HTTPS example&lt;/name&gt;<br />
&lt;note&gt;Automatically redirects adminstration requests to a secure protocol.&lt;/note&gt;<br />
&lt;condition type="scheme" operator="equal"&gt;^http$&lt;/condition&gt;<br />
&lt;from&gt;^/railo-context/admin/(index|web|server).cfm$&lt;/from&gt;<br />
&lt;to type="permanent-redirect" last="true"&gt;https://www.example.com/railo-context/admin/$1.cfm&lt;/to&gt;<br />
&lt;/rule&gt;</code></p>
<h2>Conditions Based On URL Parameters</h2>
<p>You can also apply conditions to user supplied URL parameters. In the example below the condition looks for the URL parameter named fruit and sees if its value is either kiwi, apple or orange. If the values match then it redirects to a replacement URL which also incorporates the parameter. The URL request <a class="vt-p" href="http://www.example.com/list.html?fruit=apple">http://www.example.com/list.html?fruit=apple</a> would forward to <a class="vt-p" href="http://www.example.com/list/fruit/apple">http://www.example.com/list/fruit/apple</a>.</p>
<p><code>&lt;rule enabled="true"&gt;<br />
&lt;name&gt;Selective fruit example redirect&lt;/name&gt;<br />
&lt;condition type="parameter" name="fruit" operator="equal"&gt;(apple|kiwi|orange)&lt;/condition&gt;<br />
&lt;from&gt;^/list.html(.*)$&lt;/from&gt;<br />
&lt;to type="permanent-redirect" last="true"&gt;list/fruit/%{parameter:fruit}&lt;/to&gt;<br />
&lt;/rule&gt;</code></p>
<br />Filed under: <a href='http://ipggi.wordpress.com/category/cfmlcoldfusion/'>CFML/ColdFusion</a>, <a href='http://ipggi.wordpress.com/category/cfmlcoldfusion/railo/'>Railo</a>, <a href='http://ipggi.wordpress.com/category/server-2/'>Server</a>, <a href='http://ipggi.wordpress.com/category/tomcat-2/'>Tomcat</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ipggi.wordpress.com/635/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ipggi.wordpress.com/635/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ipggi.wordpress.com/635/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ipggi.wordpress.com/635/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ipggi.wordpress.com/635/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ipggi.wordpress.com/635/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ipggi.wordpress.com/635/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ipggi.wordpress.com/635/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ipggi.wordpress.com/635/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ipggi.wordpress.com/635/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ipggi.wordpress.com/635/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ipggi.wordpress.com/635/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ipggi.wordpress.com/635/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ipggi.wordpress.com/635/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=635&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ipggi.wordpress.com/2011/11/28/tuckey-urlrewrite-how-to/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01aa96818e11d6d361d9832c957f8a0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Ipggi</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/11/28-11-2011-3-00-41-pm.png?w=300" medium="image">
			<media:title type="html">Content of Tuckey URLRewrite 4.0</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/11/28-11-2011-3-06-46-pm.png?w=300" medium="image">
			<media:title type="html">Content of WEB-INF</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/11/28-11-2011-4-05-39-pm.png?w=300" medium="image">
			<media:title type="html">Content Of A Clean WEB.XML</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/11/28-11-2011-7-21-44-pm.png?w=300" medium="image">
			<media:title type="html">Edited WEB.XML</media:title>
		</media:content>
	</item>
		<item>
		<title>Embed a Railo ColdFusion/CFML Server within your CFEclipse/Eclipse application with no need for XML configurations.</title>
		<link>http://ipggi.wordpress.com/2011/10/07/embed-a-railo-coldfusioncfml-server-within-your-cfeclipseeclipse-application-with-no-need-for-xml-configurations/</link>
		<comments>http://ipggi.wordpress.com/2011/10/07/embed-a-railo-coldfusioncfml-server-within-your-cfeclipseeclipse-application-with-no-need-for-xml-configurations/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 02:00:23 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[CFML/ColdFusion]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Railo]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cfeclipse]]></category>
		<category><![CDATA[cfml]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://ipggi.wordpress.com/?p=644</guid>
		<description><![CDATA[This entry will walk you through step by step to enable you from within Eclipse to start and shutdown a custom install of the open source CFML engine Railo running off Apache Tomcat. Most importantly though you will be able to implement this without the need of touching any fickle XML Tomcat configuration files. This [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=644&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This entry will walk you through step by step to enable you from within Eclipse to start and shutdown a custom install of the open source CFML engine Railo running off Apache Tomcat. Most importantly though you will be able to implement this without the need of touching any fickle XML Tomcat configuration files.</p>
<p>This article was written in mind with the CFEclipse add-on running off Eclipse Helios. I have not tested these steps with Adobe’s proprietary CFBuilder.</p>
<p>Eclipse: <a class="vt-p" href="http://www.eclipse.org/downloads/compare.php">http://www.eclipse.org/downloads/compare.php</a><br />
CFEclipse: <a class="vt-p" href="http://cfeclipse.org/">http://cfeclipse.org</a></p>
<p>Let’s start.</p>
<p>Visit Apache Tomcat and download your appropriate edition under the <strong>Core</strong> section. Windows users should download either the 32-bit or 64-bit Windows zip but <span style="text-decoration:underline;">not</span> the Service Installer.</p>
<p>Tomcat 7: <a class="vt-p" href="http://tomcat.apache.org/download-70.cgi">http://tomcat.apache.org/download-70.cgi<br />
</a>Tomcat 6: <a class="vt-p" href="http://tomcat.apache.org/download-60.cgi">http://tomcat.apache.org/download-60.cgi</a></p>
<p>Extract the downloaded zip containing Apache and then move the created <code>apache-tomcat-7.*.*</code> directory to a location of your choice. In this example I will move it to my server collection under <code>W:\Dev\Server\</code>.</p>
<p>Go to the Railo download page and fetch the latest <strong>Current stable</strong> release <strong>Railo Custom WAR Archive</strong> under the <strong>ALL OS</strong>.</p>
<p>Railo: <a class="vt-p" href="http://www.getrailo.org/index.cfm/download">http://www.getrailo.org/index.cfm/download</a></p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/5-10-2011-10-36-30-am.png"><img class="alignnone size-medium wp-image-647" title="railo war download" src="http://ipggi.files.wordpress.com/2011/10/5-10-2011-10-36-30-am.png?w=300&#038;h=186" alt="" width="300" height="186" /></a></p>
<p>Using 7-Zip or some other WAR compatible archive tool extract the downloaded <code>Railo-3.*.*</code> WAR archive.</p>
<p>7-Zip: <a class="vt-p" href="http://www.7-zip.org">http://www.7-zip.org</a></p>
<p>Now create a working resource directory for your CFEclipse project. I will use <code>W:\Railo\Test\</code>.</p>
<p>Copy the content of the extracted WAR archive to your project resource directory.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/7-10-2011-11-03-34-am.png"><img class="size-medium wp-image-648" title="content of w:\railo\test\&quot; width=" src="http://ipggi.files.wordpress.com/2011/10/7-10-2011-11-03-34-am.png?w=300" alt="" height="159" /></a></p>
<p>Start Eclipse.</p>
<p>From the pull-down menu select <strong>Window &gt; Preferences </strong>then<strong> Server &gt; Runtime Environment</strong> and select <strong>Add</strong>.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/5-10-2011-11-05-54-am.png"><img class="alignnone size-medium wp-image-649" title="windows preferences server runtime" src="http://ipggi.files.wordpress.com/2011/10/5-10-2011-11-05-54-am.png?w=300&#038;h=261" alt="" width="300" height="261" /></a></p>
<p>In the <strong>New Server Runtime Environment</strong> dialog select your appropriate Apache Tomcat version and select <strong>Next &gt;</strong>. If you cannot see an Apache folder containing various Tomcat versions you will need to click the <strong>Download additional server adapters</strong> link and follow the <strong>Install New Extension</strong> wizard.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/5-10-2011-11-06-23-am.png"><img class="alignnone size-medium wp-image-650" title="new runtime environment" src="http://ipggi.files.wordpress.com/2011/10/5-10-2011-11-06-23-am.png?w=285&#038;h=300" alt="" width="285" height="300" /></a></p>
<p>Give your<strong> Tomcat Server</strong> a <strong>name</strong> and point it to your <strong>Tomcat installation directory</strong>.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/5-10-2011-11-34-27-am.png"><img class="alignnone size-medium wp-image-651" title="new server runtime environment" src="http://ipggi.files.wordpress.com/2011/10/5-10-2011-11-34-27-am.png?w=285&#038;h=300" alt="" width="285" height="300" /></a></p>
<p>Click the <strong>Installed JREs&#8230;</strong> button and in the <strong>Installed JREs</strong> dialog select <strong>Add</strong>. In the <strong>Add JRE</strong> wizard select <strong>Add</strong> and point the <strong>JRE home:</strong> input to your local Java Runtime Environment location. This is often either <code>C:\Program Files\Java\jre6</code> or <code>C:\Program Files (x86)\Java\jre6</code>. If you downloaded the 64-bit edition of Tomcat you will need to point to the 64-bit Java RE that is installed on your machine. Once done select the <strong>Finish</strong> button and then the <strong>OK</strong> button in the <strong>Installed JREs</strong> dialog.</p>
<p>Java Runtime Environment: <a class="vt-p" href="http://java.com/en/download/manual.jsp">http://java.com/en/download/manual.jsp</a></p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/5-10-2011-11-14-50-am.png"><img class="alignnone size-medium wp-image-652" title="add jre" src="http://ipggi.files.wordpress.com/2011/10/5-10-2011-11-14-50-am.png?w=292&#038;h=300" alt="" width="292" height="300" /></a></p>
<p>Now make sure the <strong>New Server Runtime Environment</strong> has your installed JRE selected and <span style="text-decoration:underline;">not</span> the Workbench default JRE and press <strong>Finish</strong>. Press <strong>OK</strong> in the<strong> Server Runtime Environments</strong> dialog.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/jre-selection1.png"><img class="alignnone size-medium wp-image-654" title="jre selection" src="http://ipggi.files.wordpress.com/2011/10/jre-selection1.png?w=285&#038;h=300" alt="" width="285" height="300" /></a></p>
<p>Now we need to bring up the Eclipse Servers view. From the Eclipse pull-down menu select <strong>Window</strong> &gt; <strong>Show View</strong> &gt; <strong>Other</strong> &gt; <strong>Server</strong> &gt; <strong>Servers </strong>and press<strong> OK</strong>. The <strong>Servers</strong> tab should now be selected, right click on the <strong>Servers</strong> pane and select <strong>New</strong> &gt; <strong>Server</strong>.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/servers-right-click.png"><img class="alignnone size-medium wp-image-655" title="servers right click" src="http://ipggi.files.wordpress.com/2011/10/servers-right-click.png?w=300&#038;h=115" alt="" width="300" height="115" /></a></p>
<p>In the <strong>Define a New Server</strong> dialog select your Apache Tomcat server type. Give the server a <strong>Server name</strong>, keep the host name as <em>localhost</em>, make sure the <strong>Server runtime environment</strong> is correct and select <strong>Finish</strong>.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/define-a-new-server1.png"><img class="alignnone size-medium wp-image-657" title="define a new server" src="http://ipggi.files.wordpress.com/2011/10/define-a-new-server1.png?w=284&#038;h=300" alt="" width="284" height="300" /></a></p>
<p>You should have a new entry in your <strong>Servers</strong> tab. Double left-click it to bring up the server’s <strong>Overview</strong> tab.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/servers-double-left-click.png"><img class="alignnone size-medium wp-image-658" title="servers double left click" src="http://ipggi.files.wordpress.com/2011/10/servers-double-left-click.png?w=300&#038;h=67" alt="" width="300" height="67" /></a></p>
<p>Under <strong>Server Locations</strong> select the <strong>Use Tomcat installation</strong> option. The <strong>Deploy path</strong> should be set to <em>webapps</em> and then save the changes using Ctrl-S.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/server-overview1.png"><img class="alignnone size-medium wp-image-660" title="server overview" src="http://ipggi.files.wordpress.com/2011/10/server-overview1.png?w=247&#038;h=300" alt="" width="247" height="300" /></a></p>
<p>Now select the <strong>Modules</strong> tab in the <strong>Overview</strong> and press the <strong>Add External Web Module&#8230;</strong> button. Point the <strong>document base</strong> to your Railo working resource directory in my case it is <code>W:\Railo\Test\</code> but keep the <strong>path</strong> as <code>/</code> and press <strong>OK</strong>. Save the updated Web Modules using Ctrl-S.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/web-modules.png"><img class="alignnone size-medium wp-image-661" title="web modules" src="http://ipggi.files.wordpress.com/2011/10/web-modules.png?w=300&#038;h=152" alt="" width="300" height="152" /></a></p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/add-web-module.png"><img class="alignnone size-medium wp-image-662" title="add web module" src="http://ipggi.files.wordpress.com/2011/10/add-web-module.png?w=300&#038;h=188" alt="" width="300" height="188" /></a></p>
<p>Back to the <strong>Servers</strong> tab select your server, right click and select <strong>Start</strong>. Eclipse should automatically switch tabs to the <strong>Console</strong> as the server starts before reverting you back to the <strong>Servers</strong>. The server should have a revised status saying <em>Started, Synchronized</em>.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/start-server.png"><img class="alignnone size-medium wp-image-663" title="start server" src="http://ipggi.files.wordpress.com/2011/10/start-server.png?w=300&#038;h=285" alt="" width="300" height="285" /></a></p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/server-started-synchronized-status.png"><img class="alignnone size-medium wp-image-664" title="server started synchronized status" src="http://ipggi.files.wordpress.com/2011/10/server-started-synchronized-status.png?w=300&#038;h=31" alt="" width="300" height="31" /></a></p>
<p>Point your web browser to <a class="vt-p" href="http://localhost:8080/">http://localhost:8080/</a>and you should have the Railo Welcome page. To shut down your server select it under the Eclipse <strong>Servers</strong> tab, right-click and select <strong>Stop</strong>. Congratulations you have a working embedded Tomcat Railo server operating within Eclipse.</p>
<p>Next we will create a CFEclipse project and a simple <em>Hello World</em> application otherwise you can end the tutorial here.</p>
<p>In Eclipse pull-down <strong>Window</strong> and select <strong>Show View</strong> &gt; <strong>Project Explorer</strong>.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/5-10-2011-10-58-09-am.png"><img class="alignnone size-medium wp-image-665" title="select project explorer" src="http://ipggi.files.wordpress.com/2011/10/5-10-2011-10-58-09-am.png?w=300&#038;h=269" alt="" width="300" height="269" /></a></p>
<p>Right click on the <strong>Project Explorer</strong> pane and select <strong>New</strong> &gt; <strong>Project</strong> to bring up the <strong>New Project</strong> wizard. Open the <strong>CFEclipse</strong> folder and selected <strong>CFML Project</strong> and press <strong>Next</strong>.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/project-explorer-new-project.png"><img class="alignnone size-medium wp-image-666" title="project explorer new project" src="http://ipggi.files.wordpress.com/2011/10/project-explorer-new-project.png?w=300&#038;h=223" alt="" width="300" height="223" /></a></p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/new-cfml-project.png"><img class="alignnone size-medium wp-image-667" title="new cfml project" src="http://ipggi.files.wordpress.com/2011/10/new-cfml-project.png?w=205&#038;h=300" alt="" width="205" height="300" /></a></p>
<p>Give your CFEclipse Project a <strong>Project name</strong> and then <span style="text-decoration:underline;">deselect</span> the <strong>Use default location</strong> checkbox. Select the location of your working resource directory where you placed your Railo installation. For me it was <code>W:\Railo\Test\</code> and then <strong>Finish</strong>.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/new-cfeclipse-project-wizard.png"><img class="alignnone size-medium wp-image-668" title="new cfeclipse project wizard" src="http://ipggi.files.wordpress.com/2011/10/new-cfeclipse-project-wizard.png?w=300&#038;h=204" alt="" width="300" height="204" /></a></p>
<p>Open your newly created project from the <strong>Project Explorer</strong>, right-click and select <strong>New</strong> &gt; <strong>File</strong>. Create a new file named hello.cfm in your project and <strong>Finish</strong>. Edit the hello.cfm and add the following mark-up and save using Ctrl-S.</p>
<p>&lt;cfdump var=&#8221;Hello world!&#8221;&gt;</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/open-project.png"><img class="alignnone size-full wp-image-669" title="open project" src="http://ipggi.files.wordpress.com/2011/10/open-project.png?w=620" alt=""   /></a></p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/5-10-2011-12-37-49-pm.png"><img class="alignnone size-medium wp-image-670" title="new file wizard" src="http://ipggi.files.wordpress.com/2011/10/5-10-2011-12-37-49-pm.png?w=274&#038;h=300" alt="" width="274" height="300" /></a></p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/hello-world-code.png"><img class="alignnone size-full wp-image-671" title="hello world code" src="http://ipggi.files.wordpress.com/2011/10/hello-world-code.png?w=620" alt=""   /></a></p>
<p>In the<strong> Servers</strong> tab start your server. Once it has loaded select from the Eclipse pull-down menu <strong>Window</strong> and then <strong>Show View</strong> &gt; <strong>Browser View</strong>. Under the <strong>Project browser </strong>tab enter the URL <a class="vt-p" href="http://localhost:8080/hello.cfm">http://localhost:8080/hello.cfm</a> and you should see a dump of text <em>Hello world!</em>.</p>
<p><a class="vt-p" href="http://ipggi.files.wordpress.com/2011/10/hello-world-output.png"><img class="alignnone size-medium wp-image-672" title="hello world output" src="http://ipggi.files.wordpress.com/2011/10/hello-world-output.png?w=300&#038;h=167" alt="" width="300" height="167" /></a></p>
<p>Now you are ready to develop, test and troubleshoot your ColdFusion Mark-up all contained within the Eclipse environment.</p>
<br />Filed under: <a href='http://ipggi.wordpress.com/category/cfmlcoldfusion/'>CFML/ColdFusion</a>, <a href='http://ipggi.wordpress.com/category/eclipse/'>Eclipse</a>, <a href='http://ipggi.wordpress.com/category/cfmlcoldfusion/railo/'>Railo</a> Tagged: <a href='http://ipggi.wordpress.com/tag/apache/'>apache</a>, <a href='http://ipggi.wordpress.com/tag/cfeclipse/'>cfeclipse</a>, <a href='http://ipggi.wordpress.com/tag/cfml/'>cfml</a>, <a href='http://ipggi.wordpress.com/tag/tomcat/'>tomcat</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ipggi.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ipggi.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ipggi.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ipggi.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ipggi.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ipggi.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ipggi.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ipggi.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ipggi.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ipggi.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ipggi.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ipggi.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ipggi.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ipggi.wordpress.com/644/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=644&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ipggi.wordpress.com/2011/10/07/embed-a-railo-coldfusioncfml-server-within-your-cfeclipseeclipse-application-with-no-need-for-xml-configurations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01aa96818e11d6d361d9832c957f8a0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Ipggi</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/5-10-2011-10-36-30-am.png?w=300" medium="image">
			<media:title type="html">railo war download</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/7-10-2011-11-03-34-am.png?w=300" medium="image">
			<media:title type="html">content of w:\railo\test\&#34; width=</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/5-10-2011-11-05-54-am.png?w=300" medium="image">
			<media:title type="html">windows preferences server runtime</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/5-10-2011-11-06-23-am.png?w=285" medium="image">
			<media:title type="html">new runtime environment</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/5-10-2011-11-34-27-am.png?w=285" medium="image">
			<media:title type="html">new server runtime environment</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/5-10-2011-11-14-50-am.png?w=292" medium="image">
			<media:title type="html">add jre</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/jre-selection1.png?w=285" medium="image">
			<media:title type="html">jre selection</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/servers-right-click.png?w=300" medium="image">
			<media:title type="html">servers right click</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/define-a-new-server1.png?w=284" medium="image">
			<media:title type="html">define a new server</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/servers-double-left-click.png?w=300" medium="image">
			<media:title type="html">servers double left click</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/server-overview1.png?w=247" medium="image">
			<media:title type="html">server overview</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/web-modules.png?w=300" medium="image">
			<media:title type="html">web modules</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/add-web-module.png?w=300" medium="image">
			<media:title type="html">add web module</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/start-server.png?w=300" medium="image">
			<media:title type="html">start server</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/server-started-synchronized-status.png?w=300" medium="image">
			<media:title type="html">server started synchronized status</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/5-10-2011-10-58-09-am.png?w=300" medium="image">
			<media:title type="html">select project explorer</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/project-explorer-new-project.png?w=300" medium="image">
			<media:title type="html">project explorer new project</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/new-cfml-project.png?w=205" medium="image">
			<media:title type="html">new cfml project</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/new-cfeclipse-project-wizard.png?w=300" medium="image">
			<media:title type="html">new cfeclipse project wizard</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/open-project.png" medium="image">
			<media:title type="html">open project</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/5-10-2011-12-37-49-pm.png?w=274" medium="image">
			<media:title type="html">new file wizard</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/hello-world-code.png" medium="image">
			<media:title type="html">hello world code</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/10/hello-world-output.png?w=300" medium="image">
			<media:title type="html">hello world output</media:title>
		</media:content>
	</item>
		<item>
		<title>Cygwin Walkthrough and Beginners Guide &#8211; Is it Linux for Windows or a POSIX Compatible Alternative To PowerShell?</title>
		<link>http://ipggi.wordpress.com/2011/07/01/cygwin-walkthrough-and-beginners-guide-is-it-linux-for-windows-or-a-posix-compatible-alternative-to-powershell/</link>
		<comments>http://ipggi.wordpress.com/2011/07/01/cygwin-walkthrough-and-beginners-guide-is-it-linux-for-windows-or-a-posix-compatible-alternative-to-powershell/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 03:30:18 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[cygwin]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[lighttpd]]></category>
		<category><![CDATA[posix]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://ipggi.wordpress.com/?p=590</guid>
		<description><![CDATA[Linux in Windows? Cygwin is an awesome tool for agnostic operating system users who regularly use both Windows and Linux but want the power of a Linux shell and its tools running within Windows. It is a great replacement to the primitive Windows command prompt without the need to learn a new collection of commands [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=590&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Linux in Windows?</h2>
<p>Cygwin is an awesome tool for agnostic operating system users who regularly use both Windows and Linux but want the power of a Linux shell and its tools running within Windows. It is a great replacement to the primitive Windows command prompt without the need to learn a new collection of commands or a new scripting language. A requirement which is needed for the Microsoft developed and recommended command prompt alternative PowerShell.</p>
<p>Cygwin is <a href="http://en.wikipedia.org/wiki/POSIX">POSIX</a> (Portable Operating System Interface for uniX) complaint which basically means it shares a common API with all the other complaint operating systems. It does not mean applications compiled for other POSIX systems such as Linux software will automatically work within Cygwin. To add new POSIX software you still need to compile the software source code under Cygwin using its own compilers and libraries. This process is a requirement with most POSIX complaint operating systems e.g. software complied for FreeBDS (Unix) will not work under Debian/Ubuntu (Linux).</p>
<p>Cygwin will work on any x86 32-bit or x86-64 editions of Windows NT from NT 4.0 Service Pack 4 (1998) onwards to Windows 7 including 2000, 2003, 2008, XP and Vista. There is no support for the Windows 16/32-bit hybrids such as 95, 98 or ME.</p>
<h2>Installation</h2>
<p>So lets get started. Visit <a href="http://cygwin.com/install.html">http://cygwin.com/install.html</a>, download then run the <em>setup.exe</em>. This file is a Windows based package manager for Cygwin. By default it will download and install the latest minimal install of Cygwin but on future launches it will also enable you to add new packages and update your existing Cygwin software. So after you install Cygwin do not delete or loose the location of <em>setup.exe</em>!</p>
<div id="attachment_600" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/cygwin-net-release-setup-program.png"><img class="size-medium wp-image-600" title="cygwin net release setup program" src="http://ipggi.files.wordpress.com/2011/06/cygwin-net-release-setup-program.png?w=300&#038;h=219" alt="" width="300" height="219" /></a><p class="wp-caption-text">Cygwin Net Release Setup Program (setup.exe).</p></div>
<div id="attachment_594" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/choose-a-download-source.png"><img class="size-medium wp-image-594" title="choose a download source" src="http://ipggi.files.wordpress.com/2011/06/choose-a-download-source.png?w=300&#038;h=219" alt="" width="300" height="219" /></a><p class="wp-caption-text">For Choose A Download Source select Install from Internet.</p></div>
<div id="attachment_610" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/select-root-install-directory.png"><img class="size-medium wp-image-610" title="Select Root Install Directory" src="http://ipggi.files.wordpress.com/2011/06/select-root-install-directory.png?w=300&#038;h=219" alt="" width="300" height="219" /></a><p class="wp-caption-text">Select Root Install Directory.</p></div>
<p>By default Cygwin will install to <em>C:\cygwin</em> but you can change this to any directory of your choosing. It is highly recommended that you do not choose a directory path which contains spaces in the name, so both <em>C:\Program Files\cygwin</em> or <em>C:\Program Files (x86)\cygwin</em> are out.</p>
<div id="attachment_608" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/select-local-package-directory.png"><img class="size-medium wp-image-608" title="select local package directory" src="http://ipggi.files.wordpress.com/2011/06/select-local-package-directory.png?w=300&#038;h=219" alt="" width="300" height="219" /></a><p class="wp-caption-text">Select Local Package Directory.</p></div>
<p>Cygwin setup will save all downloaded packages to this folder after it has finished installation. You can then either delete them, leave them in this directory or back them up to a USB stick for future use on this or other computers.</p>
<div id="attachment_611" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/select-your-internet-connection.png"><img class="size-medium wp-image-611" title="select your internet connection" src="http://ipggi.files.wordpress.com/2011/06/select-your-internet-connection.png?w=300&#038;h=219" alt="" width="300" height="219" /></a><p class="wp-caption-text">Select Your Internet Connection.</p></div>
<p>Unless otherwise needed you should leave the Internet connected selection with the default selection of Direct Connection.</p>
<div id="attachment_593" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/choose-a-download-site.png"><img class="size-medium wp-image-593" title="Choose A Download Site" src="http://ipggi.files.wordpress.com/2011/06/choose-a-download-site.png?w=300&#038;h=219" alt="" width="300" height="219" /></a><p class="wp-caption-text">Choose A Download Site.</p></div>
<p>Choose A Download Site lets you select a file repository from where Cygwin setup will download the the packages and files. It is preferable to pick a download location from a site this is geographically close to your own. But if you can not determine this from the country codes in the URL or can not find a suitable mirror then simply select the first item.</p>
<h3>Selecting Packages</h3>
<div id="attachment_609" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/select-packages.png"><img class="size-medium wp-image-609" title="select packages" src="http://ipggi.files.wordpress.com/2011/06/select-packages.png?w=300&#038;h=239" alt="" width="300" height="239" /></a><p class="wp-caption-text">Select Packages.</p></div>
<p>This Select Packages screen is the most important part to Cygwin setup. It is the Cygwin package manager interface, equivalent to <a href="http://www.ubuntugeek.com/synaptic-package-manager-beginners-guide-for-ubuntu-users.html">Synaptic Package Manager</a> in Debian and Ubuntu or <a href="http://www.yum-extender.org">YUM Extender</a> in Fedora Linux. The screen capture has a number of arrows pointing to features of the interface but as a first time user you can completely ignore all of these and press <em>Next</em> to accept the default installation.</p>
<ul>
<li>The<span style="color:#008000;"> dark green solid arrow</span> points to the search dialog enabling you to quickly filer packages by name. Unfortunately the search does not work on the package descriptions.</li>
<li>The <strong>solid black arrow</strong> has 4 radio buttons enabling you to mass-apply installation restrictions on all packages.</li>
<li><em>Keep</em> tells Cygwin setup not to update any installed packages.</li>
<li><em>Prev</em> is short for previous which reverts all packages back one version.</li>
<li><em>Curr</em> is the default and recommended option as it installs the current version of all selected packages.</li>
<li><em>Exp</em> will install the most current or experimental version of all selected packages.</li>
<li>The <span style="color:#c00000;">red arrows</span> point to the manager categories which can be expanded to reveal individual packages.</li>
<li>The <span style="color:#8064a2;">purple arrow</span> points to version numbers which belong to packages that are already installed onto Cygwin.</li>
<li><span style="color:#f79646;">Orange arrow</span> enables you to manually override the global package version (black arrow radio buttons).</li>
<li><em>Skip</em> means the package has not been installed and setup will ignore it.</li>
<li><em>Keep</em> means the package has been installed but setup will ignore it.</li>
<li><em>Reinstall</em> will overwrite an existing package installation with the same version from a fresh download.</li>
<li><em>1.0-1</em> or some other version number means setup will install this version of the package for the first time.</li>
<li><em>Source</em> means setup will ignore the installed package but will download the source codes.</li>
<li><em>Uninstall</em> removes the installed package from your Cygwin installation.</li>
<li>The <strong><span style="color:#fef445;">yellow arrow</span></strong> points to a Binary check-box while the <span style="color:#7fd13b;">light green</span> points to a Source check-box. These check-boxes only appear only when available to the package New column.</li>
<li>The <span style="color:#4bacb2;">light blue arrow</span> is the package download size in Kilobytes.</li>
<li><span style="color:#1f497d;">Dark blue</span> contains the package name and a brief description.</li>
</ul>
<div>
<div id="attachment_606" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/progress.png"><img class="size-medium wp-image-606" title="progress" src="http://ipggi.files.wordpress.com/2011/06/progress.png?w=300&#038;h=219" alt="" width="300" height="219" /></a><p class="wp-caption-text">Progress.</p></div>
<p>Cygwin setup will now download and install all the default-install packages. Wait until the Progress screen is complete and go onto the <em>Next</em> screen.</p>
<div id="attachment_598" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/create-icons.png"><img class="size-medium wp-image-598" title="create icons" src="http://ipggi.files.wordpress.com/2011/06/create-icons.png?w=300&#038;h=219" alt="" width="300" height="219" /></a><p class="wp-caption-text">Create Icons &amp; Install Complete.</p></div>
<p>Create Icons enable you to add Desktop and Start Menu shortcuts. Once finished use either shortcut to launch Cygwin.</p>
<h2>Bash Terminal</h2>
<div id="attachment_599" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/cygwin-home.png"><img class="size-medium wp-image-599" title="cygwin home" src="http://ipggi.files.wordpress.com/2011/06/cygwin-home.png?w=300&#038;h=151" alt="" width="300" height="151" /></a><p class="wp-caption-text">Welcome to Bash.</p></div>
<p>Welcome to your Bash prompt in Windows! You can test this by running Bash version.</p>
<pre>bash --version</pre>
<div id="attachment_592" class="wp-caption alignnone" style="width: 630px"><a href="http://ipggi.files.wordpress.com/2011/06/bash-version.png"><img class="size-full wp-image-592" title="Bash version" src="http://ipggi.files.wordpress.com/2011/06/bash-version.png?w=620&#038;h=142" alt="" width="620" height="142" /></a><p class="wp-caption-text">Display your version of Bash.</p></div>
<p>The first thing I’d recommend doing is customising your bash shell to implement some aliases for basic colouring for some staple Cygwin commands.</p>
<pre>dir -A ~</pre>
<p>Will reveal some hidden setting files in your home directory which you can edit these using a text editor, but please avoid using the standard Windows Notepad. I use Windows <a href="http://notepad-plus-plus.org/">Notepad++</a> and would edit <em>w:\cygwin\home\Ben\.bashrc </em>but you would probably need to edit<em> c:\cygwin\home\[User name]\.bashrc</em>. Windows may have issues opening a file which it sees as only having an extension but lacking a file name. If this is the case just use the <em>Open With</em> dialog but make sure you have the <em>Always use the selected program to open this kind of file</em> check-box left unchecked.</p>
<div id="attachment_616" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/bash-settings-todo.png"><img class="size-medium wp-image-616" title="bash settings todo" src="http://ipggi.files.wordpress.com/2011/06/bash-settings-todo.png?w=300&#038;h=166" alt="" width="300" height="166" /></a><p class="wp-caption-text">The yellow highlights the settings I would recommend to un-comment.</p></div>
<div id="attachment_617" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/bash-settings-post-edit.png"><img class="size-medium wp-image-617" title="bash settings post edit" src="http://ipggi.files.wordpress.com/2011/06/bash-settings-post-edit.png?w=300&#038;h=166" alt="" width="300" height="166" /></a><p class="wp-caption-text">Bash settings file after the comments have been removed.</p></div>
<p>Once you have finished your changes you can apply them by reloading Bash.</p>
<pre>bash --login</pre>
<p>Test your new alias and option defaults.</p>
<pre>cd /
ll</pre>
<p>You now see a colourised directory and file listing of the Cygwin root.</p>
<div id="attachment_603" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/ll-of-root.png"><img class="size-medium wp-image-603" title="ll of root" src="http://ipggi.files.wordpress.com/2011/06/ll-of-root.png?w=300&#038;h=120" alt="" width="300" height="120" /></a><p class="wp-caption-text">Line list of root.</p></div>
<p>This is the same directory as you chose during the Cygwin setup installation which by default is <em>c:\cygwin</em>. You can use either Windows File Explorer, Windows command prompt or Cygwin to modify the contents of the root. For more details on how Cygwin handles POSIX permissions within Windows and other potential incompatibilities I&#8217;d recommend reading the <a href="http://cygwin.com/cygwin-ug-net/ntsec.html">Using Windows Security</a> in Cygwin chapter in the manual.</p>
<h3>Tips</h3>
<p>By default there is no Cygwin clear command (<em>cls</em> in command prompt) but the easiest way to clean your terminal is to press <strong>Ctrl l</strong>.</p>
<p>Use the <strong>Tab</strong> key on your keyboard to auto-complete commands, file and directory names. This Bash feature is superior to the basic Tab auto-complete used by Windows command prompt.</p>
<p>Did you also know you can chain 2 or more commands together using a semi-column <strong>;</strong> character as the separator.</p>
<pre>cd /; echo "Root Directory"; ls; cd ~; echo "My Home Directory"; ls</pre>
<p>And if you didn&#8217;t realise in the command above, change directory forward-slash <em>cd /</em> takes you to the Cygwin root, while change directory tilde <em>cd ~</em> takes you to your user home directory.</p>
<h2>Drill Down of the Cygwin Root</h2>
<ul id="internal-source-marker_0.14371047518216074">
<li><strong>Cygwin.bat</strong> is the Windows batch file used to launch a Cygwin Bash prompt within a Windows command prompt.</li>
<li><strong>Cygwin.ico</strong> is a standard Windows icon file attached to the Cygwin batch file.</li>
<li><strong>bin/</strong> is a directory containing binary (execute) applications that have been compiled for use on Windows under Cygwin. In here are all the unique POSIX-like commands and applications that give you all that extra functionality that a bare-Windows install often lacks.</li>
<li><strong>cygdrive/</strong> contains a list of mounted Windows drive letters. From here you can access any drive partition that is viewable to Windows. For example <em>cygdrive/c/Windows/</em> would be the location of most peoples Windows installation.</li>
<li><strong>dev/</strong> is short for devices. Traditionally for POSIX this is where your detected hardware devices are listed but in Cygwin its usage is mainly there for software compatibility and can be ignored. <a href="http://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-posixdevices">http://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-posixdevices</a></li>
<li><strong>etc/</strong> contains all your Cygwin related configuration files. Unlike the Windows registry these should all be plain text files that can be edited within any Windows text editor (such as NotePad++) or a Cygwin editor such as VM or Nano.</li>
<li><strong>home/</strong> contains the user directories which are not unlike the Windows User directories. This is where your non-Cygwin files such as documents, file downloads should be stored.</li>
<li><strong>lib/</strong> is an abbreviation of library. These are compiled, shared components that are used by various Cygwin commands and applications but you can ignore this directory.</li>
<li><strong>proc/</strong> is a virtual directory that allows you to display various aspects of your system using the <em>cat</em> command.</li>
<li><em>cat /proc/cpuinfo</em> Displays your computer CPU details.</li>
<li><em>cat /proc/meminfo</em> Displays your Windows memory information.</li>
<li><em>cat /proc/mounts</em> Lists your disk mounts within Cygwin.</li>
<li><strong>tmp/</strong> is the Cygwin temporary directory.</li>
<li><strong>usr/</strong> is the bread and butter of your Cygwin install.</li>
<li><strong>usr/bin/</strong> is identical to <em>bin/</em> that was listed previously.</li>
<li><strong>usr/include/</strong> are programming header files which are somewhat like shared libraries, you can ignore this.</li>
<li><strong>usr/local/</strong> is a location where you can compile applications for yourself, again if this does not interest you it can be ignored.</li>
<li><strong>usr/sbin/</strong> contains system binaries and applications tools for Cygwin system administration.</li>
<li><strong>usr/share/</strong> are platform independent read-only shared files such as documentation. For example <em>/usr/share/fonts</em> contain a collection of system fonts. <em>/usr/share/doc</em> contains application documents.</li>
<li><strong>usr/src/</strong> is a location for storing application source code.</li>
<li><strong>usr/ssl/</strong> is a location for storing SSL (Secure Socket Layer) and TLS (Transport Layer Security) certificates which are used for Internet communication encryption and security.</li>
<li><strong>usr/tmp/</strong> is the same temporary folder as <em>/tmp</em>.</li>
<li><strong>var/</strong> is where variable data files are stored. These are files generated by yourself or applications. For example all log files would go in <em>/var/log</em>. If you ran an Apache HTTP daemon the files it hosted would be contained in <em>/var/www</em>.</li>
</ul>
<h2>POSIX and Cygwin Commands</h2>
<p>Now the usage of a Bash shell or POSIX-like commands is out of the scope of this article. You can run <em>dir /bin</em> to see all the <em>.exe</em> execute commands available to you within Cygwin. Like Windows command prompt you do not need to include the file extension when running an application, <em>dir </em>works the same as <em>dir.exe</em>.</p>
<p>If you need quick help on the usage of a command, use <em>[command] &#8211;help</em> e.g. <em>dir &#8211;help</em>. Many commands share the same options.</p>
<p>If you think the default Cygwin bash shell is a bit ugly then you are not alone. Microsoft does not give the default command prompt much love and unfortunately this is what Cygwin relies on for its own terminal interface. You can easily change this though by again running Cygwin <em>setup.exe</em>. When you are back in the Select Packages screen do a search for <strong>mintty</strong>. Select to install the mintty binary package and once complete go to your Cygwin start menu. There should be a new mintty option in addition to the Cygwin Bash Shell.</p>
<div>
<div id="attachment_605" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/mintty-install.png"><img class="size-medium wp-image-605" title="Mintty install" src="http://ipggi.files.wordpress.com/2011/06/mintty-install.png?w=300&#038;h=143" alt="" width="300" height="143" /></a><p class="wp-caption-text">Install Mintty Terminal.</p></div>
<div id="attachment_596" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/cli-compare-cygwin.png"><img class="size-medium wp-image-596" title="cli compare cygwin" src="http://ipggi.files.wordpress.com/2011/06/cli-compare-cygwin.png?w=300&#038;h=151" alt="" width="300" height="151" /></a><p class="wp-caption-text">Cygwin under command prompt is not that attractive.</p></div>
<div id="attachment_597" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/cli-compare-mintty.png"><img class="size-medium wp-image-597" title="cli compare mintty" src="http://ipggi.files.wordpress.com/2011/06/cli-compare-mintty.png?w=300&#038;h=165" alt="" width="300" height="165" /></a><p class="wp-caption-text">Cygwin under Mintty allows for font smoothing.</p></div>
</div>
<div>From now on use Mintty for a cleaner terminal interface to Cygwin.</div>
<h2>Services and Daemons</h2>
<p>Want to to implement a service or daemon into your Cygwin install? I will show an basic example using Lighttpd, a light-weight HTTP server that is an alternative to Apache2 HTTP (which also can be installed to Cygwin).</p>
<p>Run Cygwin <em>setup.exe</em> again to search and install <strong>lighttpd </strong>and make sure you say yes to install any resolving dependencies. Once installed you will find the application residing in the <em>usr/sbin/</em> directory as <em>lighttpd.exe</em>. An example configuration file <em>lighttpd.conf.default</em> can be found in <em>etc/lighttpd/</em>. We will create an empty configuration file using the touch command.</p>
<pre>cd /etc/lighttpd
touch lighttpd.conf</pre>
<p>Now use your Windows notepad application to edit <em>c:/cygwin/etc/lighttpd/lighttpd.conf</em> and copy the settings listed below.</p>
<blockquote>
<p id="internal-source-marker_0.14371047518216074" dir="ltr">server.document-root = &#8220;/var/www/servers/www.example.org/pages/&#8221;</p>
<p>server.port = 80</p>
<p>server.username = &#8220;www&#8221;<br />
server.groupname = &#8220;www&#8221;</p>
<p>mimetype.assign = (<br />
&#8220;.html&#8221; =&gt; &#8220;text/html&#8221;,<br />
&#8220;.txt&#8221; =&gt; &#8220;text/plain&#8221;,<br />
&#8220;.jpg&#8221; =&gt; &#8220;image/jpeg&#8221;,<br />
&#8220;.png&#8221; =&gt; &#8220;image/png&#8221;<br />
)</p>
<p>static-file.exclude-extensions = ( &#8220;.fcgi&#8221;, &#8220;.php&#8221;, &#8220;.rb&#8221;, &#8220;~&#8221;, &#8220;.inc&#8221; )<br />
index-file.names = ( &#8220;index.html&#8221; )</p>
<p>$HTTP["host"] == &#8220;www2.example.org&#8221; {<br />
server.document-root = &#8220;/var/www/servers/www2.example.org/pages/&#8221;<br />
}</p></blockquote>
<p>This config we are using is taken from the <a href="http://redmine.lighttpd.net/wiki/lighttpd/TutorialConfiguration">Lighttpd Configuration Tutorial</a>.</p>
<p>Now attempt to launch lighttpd with your new configuration file.</p>
<pre>/usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf</pre>
<p>Our attempt will fail because the web server document root directory does not exist, so lets create that and lets also make an <em>index.html</em> document and try it again.</p>
<pre>mkdir /var/www ; mkdir /var/www/servers ; mkdir /var/www/servers/www.example.org ; mkdir /var/www/servers/www.example.org/pages
touch /var/www/servers/www.example.org/pages/index.html</pre>
<p id="internal-source-marker_0.14371047518216074" dir="ltr">In a Windows notpad application edit <em>c:/cgywin/var/www/servers/www.example.org/pages/index.html</em> and copy/paste the following HTML code.</p>
<blockquote>
<p id="internal-source-marker_0.14371047518216074" dir="ltr">&lt;html&gt;<br />
&lt;title&gt;Hello World&lt;/title&gt;<br />
&lt;body&gt;<br />
&lt;h1&gt;Hello from Lighttpd running in Cygwin!&lt;h1&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
</blockquote>
<div id="attachment_620" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/index-html-file.png"><img class="size-medium wp-image-620" title="index html file" src="http://ipggi.files.wordpress.com/2011/06/index-html-file.png?w=300&#038;h=84" alt="" width="300" height="84" /></a><p class="wp-caption-text">index.html content.</p></div>
<p>Lets retry running Lighttpd again.</p>
<pre>/usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf</pre>
<p>Once Lighttpd has loaded you may need to press the <strong>Enter</strong> key to restore your Bash prompt but Lighttpd will continue to run in the background. Now point your local Windows web browser to <em>127.0.0.1</em> or <em>localhost</em>.</p>
<div id="attachment_595" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/chrome-browser-viewing-lighttpd.png"><img class="size-medium wp-image-595" title="chrome browser viewing lighttpd" src="http://ipggi.files.wordpress.com/2011/06/chrome-browser-viewing-lighttpd.png?w=300&#038;h=128" alt="" width="300" height="128" /></a><p class="wp-caption-text">Chrome browser viewing our primitive HTML file.</p></div>
<p>When you want to shutdown Lighttpd run find the PID (Process IDentifier) and kill it.</p>
<pre>ps -s
kill [PID number]</pre>
<div id="attachment_607" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/ps-and-kill.png"><img class="size-medium wp-image-607" title="ps and kill" src="http://ipggi.files.wordpress.com/2011/06/ps-and-kill.png?w=300&#038;h=154" alt="" width="300" height="154" /></a><p class="wp-caption-text">Discover and shutdown of the Lighttpd service.</p></div>
<p>Congratulations! You have successfully implemented a Bash shell environment on your Windows operating system that also has a robust but simple <a href="http://www.lighttpd.net/">HTTP server</a>.</p>
<h2>Popular Cygwin Applications</h2>
<p>Other popular Cygwin packages that maybe of interest.</p>
<p>Servers services such as <a href="http://httpd.apache.org/">Apache</a>, <a href="http://www.isc.org/software/bind">BIND</a>, <a href="www.postgresql.org">PostgreSQL</a>, <a href="www.pureftpd.org/">Pure-FTPd</a>, <a href="http://www.openssh.com/">OpenSSH</a>.<br />
Programming languages such as C, C++, <a href="www.perl.org/">Perl</a>, <a href="www.python.org/">Python</a>, <a href="ruby-lang.org">Ruby</a>, <a href="http://www.tcl.tk/">TCL</a>.<br />
Remote log-in tools SSH, RSH, Telnet.<br />
File transfer tools FTP, SCP, rsync, unison, rtorrent.<br />
In addition to an extensive range of network, system and file diagnostics tools.</p>
<p>More information on Cygwin can be found in its <a href="http://www.cygwin.com/cygwin-ug-net/cygwin-ug-net.html">User&#8217;s Guide</a>.</p>
</div>
<br />Filed under: <a href='http://ipggi.wordpress.com/category/linux/cygwin/'>cygwin</a>, <a href='http://ipggi.wordpress.com/category/linux/'>Linux</a>, <a href='http://ipggi.wordpress.com/category/server-2/'>Server</a>, <a href='http://ipggi.wordpress.com/category/windows/'>Windows</a> Tagged: <a href='http://ipggi.wordpress.com/tag/bash/'>bash</a>, <a href='http://ipggi.wordpress.com/tag/cygwin/'>cygwin</a>, <a href='http://ipggi.wordpress.com/tag/lighttpd/'>lighttpd</a>, <a href='http://ipggi.wordpress.com/tag/linux/'>Linux</a>, <a href='http://ipggi.wordpress.com/tag/posix/'>posix</a>, <a href='http://ipggi.wordpress.com/tag/powershell/'>powershell</a>, <a href='http://ipggi.wordpress.com/tag/unix/'>unix</a>, <a href='http://ipggi.wordpress.com/tag/windows/'>Windows</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ipggi.wordpress.com/590/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ipggi.wordpress.com/590/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ipggi.wordpress.com/590/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ipggi.wordpress.com/590/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ipggi.wordpress.com/590/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ipggi.wordpress.com/590/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ipggi.wordpress.com/590/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ipggi.wordpress.com/590/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ipggi.wordpress.com/590/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ipggi.wordpress.com/590/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ipggi.wordpress.com/590/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ipggi.wordpress.com/590/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ipggi.wordpress.com/590/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ipggi.wordpress.com/590/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=590&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ipggi.wordpress.com/2011/07/01/cygwin-walkthrough-and-beginners-guide-is-it-linux-for-windows-or-a-posix-compatible-alternative-to-powershell/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>51.524531 -0.008318</georss:point>
		<geo:lat>51.524531</geo:lat>
		<geo:long>-0.008318</geo:long>
		<media:content url="http://0.gravatar.com/avatar/01aa96818e11d6d361d9832c957f8a0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Ipggi</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/cygwin-net-release-setup-program.png?w=300" medium="image">
			<media:title type="html">cygwin net release setup program</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/choose-a-download-source.png?w=300" medium="image">
			<media:title type="html">choose a download source</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/select-root-install-directory.png?w=300" medium="image">
			<media:title type="html">Select Root Install Directory</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/select-local-package-directory.png?w=300" medium="image">
			<media:title type="html">select local package directory</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/select-your-internet-connection.png?w=300" medium="image">
			<media:title type="html">select your internet connection</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/choose-a-download-site.png?w=300" medium="image">
			<media:title type="html">Choose A Download Site</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/select-packages.png?w=300" medium="image">
			<media:title type="html">select packages</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/progress.png?w=300" medium="image">
			<media:title type="html">progress</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/create-icons.png?w=300" medium="image">
			<media:title type="html">create icons</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/cygwin-home.png?w=300" medium="image">
			<media:title type="html">cygwin home</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/bash-version.png" medium="image">
			<media:title type="html">Bash version</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/bash-settings-todo.png?w=300" medium="image">
			<media:title type="html">bash settings todo</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/bash-settings-post-edit.png?w=300" medium="image">
			<media:title type="html">bash settings post edit</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/ll-of-root.png?w=300" medium="image">
			<media:title type="html">ll of root</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/mintty-install.png?w=300" medium="image">
			<media:title type="html">Mintty install</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/cli-compare-cygwin.png?w=300" medium="image">
			<media:title type="html">cli compare cygwin</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/cli-compare-mintty.png?w=300" medium="image">
			<media:title type="html">cli compare mintty</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/index-html-file.png?w=300" medium="image">
			<media:title type="html">index html file</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/chrome-browser-viewing-lighttpd.png?w=300" medium="image">
			<media:title type="html">chrome browser viewing lighttpd</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/ps-and-kill.png?w=300" medium="image">
			<media:title type="html">ps and kill</media:title>
		</media:content>
	</item>
		<item>
		<title>Implement a SFTP Service for Ubuntu/Debian With a Chroot&#8217;ed, Isolated File Directory.</title>
		<link>http://ipggi.wordpress.com/2011/06/29/implement-a-sftp-service-for-ubuntudebian-with-a-chrooted-isolated-file-directory/</link>
		<comments>http://ipggi.wordpress.com/2011/06/29/implement-a-sftp-service-for-ubuntudebian-with-a-chrooted-isolated-file-directory/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 09:30:15 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[ftps]]></category>
		<category><![CDATA[sftp]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://ipggi.wordpress.com/?p=528</guid>
		<description><![CDATA[In this entry I will explain how to install and setup a SFTP service in a Ubuntu or Debian Linux server. SFTP (Secure File Transfer Protocol) is an extension of the SSH (Secure SHell protocol) which is commonly used for secure remote access into systems. Despite its name SFTP is not an extension to the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=528&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this entry I will explain how to install and setup a SFTP service in a Ubuntu or Debian Linux server. SFTP (Secure File Transfer Protocol) is an extension of the SSH (Secure SHell protocol) which is commonly used for secure remote access into systems.</p>
<p>Despite its name SFTP is not an extension to the 1985 FTP (File Transfer Protocol &#8211; <a href="http://www.faqs.org/rfcs/rfc959.html">RFC 959</a>) which was in common use until the late 1990s to share files online. FTP usage has fallen out of favor for Internet use in the 2000’s due to the protocol’s inherent insecurities in addition to competition from newer protocol such as the bandwidth friendly BitTorrent protocol. The most glaring insecurity with FTP is that it requires log-in user names and passwords to be communicated between the client and the server using unencrypted plain-text.</p>
<p>Fortunately in recent years many of the more popular FTP clients have implemented complete support for SFTP making the end-user transition from insecure to secure transfers seamless. Older, now redundant stop gaps for secure FTP such as FTPS/FTP-SSL which is now referred to as FTP with TLS (<a href="http://www.ietf.org/rfc/rfc4217.txt">RFC 4217)</a> were confusing to use and difficult to setup correctly.</p>
<p>It is now gotten to the point where people probably would not know the difference between browsing a secure SFTP site to browsing an open, insecure FTP site. Personally my favourite FTP/SFTP client is the multi-platform, open sourced <a href="http://filezilla-project.org/">FileZilla</a> but there are many others such as <a href="http://www.smartftp.com/">SmartFTP</a>, <a href="http://winscp.net/">WinSCP</a> or <a href="http://fireftp.mozdev.org/">FireFTP</a> (for Firefox).</p>
<p>Okay to the task at hand we will do everything in CLI (command line interface) aka shell mode.</p>
<p>First make sure your repository is up to date.</p>
<pre>sudo apt-get update</pre>
<p>Now install OpenSSH server software.</p>
<pre>sudo apt-get install openssh-server</pre>
<p>We then create a user group for SFTP access, I will be calling it <strong>sftponly</strong>. For security I think it is best practice not to allow accounts with SFTP access additional admission to the server using secure shell (SSH) remote log in.</p>
<pre>sudo groupadd sftponly</pre>
<p>Run the following to display your new group. It will be listed as the last entry.</p>
<pre>cat /etc/group</pre>
<p>Cat allows you to quickly display a text file while <em>/etc/group</em> is the file that defines the groups on the server. You should see something like this.</p>
<div id="attachment_537" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_1.png"><img class="size-medium wp-image-537" title="cat /etc/group" src="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_1.png?w=300&#038;h=198" alt="" width="300" height="198" /></a><p class="wp-caption-text">Output of cat /etc/group.</p></div>
<p>Each line is an individual group, you can see the name, the password which is set to <strong>x</strong> which means none, the numeric group id and users who are associated with the group. For <strong>sftponly</strong> there are currently no assigned users.</p>
<p><span style="text-decoration:underline;">Take note of the group id</span>, in this screenshot it is the value <strong>1001</strong>.</p>
<p>We now add a new user that we will use exclusively for SFTP access.</p>
<pre>sudo useradd [user name] -d / -g [sftponly group id] -M -N -o -u [sftponly group id]
sudo passwd [user name]</pre>
<p>The arguments we used.</p>
<ul>
<li><strong>-d</strong> is the user home directory which needs to be set to <strong>/</strong> (root).</li>
<li><strong>-g</strong> is the user group id to assign which in our example needs to be assigned to <strong>sftponly</strong>.</li>
<li><strong>-M</strong> stops the <em>useradd</em> command creating a home directory.</li>
<li><strong>-N</strong> <em>useradd</em> by default creates a group with the same name as the new user, this disables that behaviour.</li>
<li><strong>-u</strong> is the user id, which in our case needs to be the same id value as <strong>sftponly</strong>.</li>
<li><strong>-o</strong> allows duplicate, non-unique user ids.</li>
<li>The <em>passwd</em> command sets an encrypted user password.</li>
</ul>
<p>Add a user of your choice, I will use <strong>ben_example</strong>. To display your users.</p>
<pre><span class="Apple-style-span" style="font-family:Consolas, Monaco, monospace;font-size:12px;line-height:18px;white-space:pre;">cat /etc/passwd</span></pre>
<div>
<div id="attachment_538" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_-22.png"><img class="size-medium wp-image-538" title="cat /etc/passwd" src="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_-22.png?w=300&#038;h=198" alt="" width="300" height="198" /></a><p class="wp-caption-text">Output cat /etc/passwd.</p></div>
</div>
<p>We now backup and edit the SSH Daemon configuration file.</p>
<pre>sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano +76 /etc/ssh/sshd_config</pre>
<p>The line</p>
<pre>Subsystem sftp /usr/lib/openssh/sftp-server</pre>
<p>Needs to be replaced with</p>
<pre>Subsystem sftp internal-sftp</pre>
<p>Now go to the end of the document, the key combination <strong>Alt /</strong> should take you there or you could simply use the<strong> Page Down</strong> key. After <em>UsePAM Yes</em> add the following lines to configure our <strong>sftponly</strong> group permissions and settings. The <em>ChrootDirectory</em> setting will confine all <strong>sftponly</strong> users to this directory. Otherwise <strong>sftponly</strong> will have access to your server root which you do not want.<em> /var/www</em> is often the default Debian/Ubuntu location for web servers to place their assets such as HTML, CSS files and images. Though you can use a different directory for <em>ChrootDirectory</em> such as <em>/var/sftp</em>.</p>
<pre>Match group sftponly
ChrootDirectory /var/www
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp</pre>
<p>Once finished use the key combination <strong>Ctrl O</strong> to save and then <strong>Ctrl X</strong> exit.</p>
<div id="attachment_539" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_-4.png"><img class="size-medium wp-image-539" title="sudo nano /etc/ssh/sshd_config" src="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_-4.png?w=300&#038;h=198" alt="" width="300" height="198" /></a><p class="wp-caption-text">Output of sudo nano /etc/ssh/sshd_config.</p></div>
<p>Now make sure the directory you assigned to <em>ChrootDirectory</em> actually exists and if it does not then create it. Also the directory group and owner need to be <strong>root</strong> which it should by default if you use the command.</p>
<pre>sudo mkdir /var/www</pre>
<div id="attachment_556" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_-5.png"><img class="size-medium wp-image-556" title="ll /var/www" src="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_-5.png?w=300&#038;h=198" alt="" width="300" height="198" /></a><p class="wp-caption-text">Output of SFTP root directory.</p></div>
<p>Now for later testing create the first of 3 directories within your <em>ChrootDirectory</em>.</p>
<pre>cd /var/www
sudo mkdir test_readonly
sudo chmod 755 test_readonly</pre>
<p>If you do not understand the <em>chmod</em> command shown we will quickly go through it but it is beyond the scope of this article. Change mode (<em>chmod</em>) parameter <strong>755</strong> is a permission code in octal notation. You break it up into 3 parts, <strong>7</strong>/<strong>5</strong>/<strong>5</strong>.</p>
<ol>
<li>1st part is root permission for this directory.</li>
<li>2nd is group permission.</li>
<li>3rd is everyone else.</li>
</ol>
<p>The value of the individual part grants permissions for its user. A value of <strong>0</strong> grants no permission, a value of <strong>1</strong> grants execute permissions, <strong>2</strong> grants write and <strong>4</strong> grants read. These values can be summed to create multiple permissions. So <strong>1</strong> (<em>execute</em>) <strong>+</strong> <strong>2</strong> (<em>write</em>) + <strong>4</strong> (<em>read</em>) equals <strong>7</strong> which grants <em>execute</em>, <em>write</em> and <em>read</em> aka total access. <em>chmod 755</em> <em>test_readonly</em> means the root has total access. While users associated with the directory’s group and everyone else only have <em>execute</em> and <em>read</em> access, <strong>4</strong> (<em>read</em>) + <strong>1</strong> (<em>execute</em>) = <strong>5</strong>. More can be read about Linux permissions here <a id="internal-source-marker_0.025506722507998347" href="http://en.wikipedia.org/wiki/File_system_permissions#Symbolic_notation">http://en.wikipedia.org/wiki/File_system_permissions#Symbolic_notation</a>.</p>
<pre>sudo mkdir test_readwrite
sudo chown root:sftponly test_readwrite
sudo chmod 775 test_readwrite</pre>
<p>The above commands creates a <em>test_readwrite</em> directory whose owner is <strong>root</strong> and group is <strong>sftponly</strong>. Both <strong>root</strong> and <strong>sftponly</strong> members have full access permissions within <em>test_readwrite, </em>which allows the creation and deletion of files and sub-directories.</p>
<p>To remove browsing access to a directory you remove the read permission as shown below. 1 (<em>execute</em>) + 2 (<em>write</em>) = 3, <em>execute</em> and <em>write</em> access but critically no <em>read</em> which leaves the other two permissions redundant.</p>
<pre>sudo mkdir test_noaccess
sudo chmod 733 test_noaccess</pre>
<p>Restart the SSH server.</p>
<pre>sudo /etc/init.d/ssh restart</pre>
<p>If you don’t know your server IP address.</p>
<pre>ip -o -f inet addr</pre>
<div id="attachment_560" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_-var-www1.png"><img class="size-medium wp-image-560" title="ip -o -f inet addr" src="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_-var-www1.png?w=300&#038;h=198" alt="" width="300" height="198" /></a><p class="wp-caption-text">Discover your server&#039;s IP address.</p></div>
<p><em>lo</em> is your local host, <em>eth0</em> is your Ethernet cable connected address, <em>wlan0</em> is probably wireless.</p>
<p>Connect to your SSH server using an SFTP client such as FileZilla. Make sure you use the correct IP address and port number which by default is <strong>22</strong>.</p>
<div id="attachment_562" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/screenshot-site-manager.png"><img class="size-medium wp-image-562" title="filezilla site manager" src="http://ipggi.files.wordpress.com/2011/06/screenshot-site-manager.png?w=300&#038;h=191" alt="" width="300" height="191" /></a><p class="wp-caption-text">Filezilla site manager connecting to my example SFTP server.</p></div>
<p>You should be connected to the directory assigned to <em>ChRootDirectory</em> (<em>var/www</em>) in your SSHD configuration and that doubles as the SFTP client root folder. Also listed should be the <em>test_readonly</em>, <em>test_readwrite</em> and <em>test_noaccess</em> directories that we created earlier. Play or navigate around, hopefully you can upload files and create/delete directories within <em>test_readwrite</em>. While <em>test_noaccess</em> should be displayed but limited to browsing or download access.</p>
<div id="attachment_563" class="wp-caption alignnone" style="width: 310px"><a href="http://ipggi.files.wordpress.com/2011/06/screenshot-test-sftp-sftp_-ben_example127-0-0-1-filezilla.png"><img class="size-medium wp-image-563" title="filezilla browsing test sftp" src="http://ipggi.files.wordpress.com/2011/06/screenshot-test-sftp-sftp_-ben_example127-0-0-1-filezilla.png?w=300&#038;h=164" alt="" width="300" height="164" /></a><p class="wp-caption-text">Browsing your SFTP root in Filezilla.</p></div>
<p>In the screen capture below we have Filezilla&#8217;s message log with 3 sections highlighted. The orange section shows my failed attempt at accessing <em>test_noaccess</em>. The purple is the successful attempt at accessing <em>test_readonly</em>, but a failure in creating a <em>New directory</em> sub-folder within. While the green section shows access into <em>test_readwrite</em> as well as being able to create a <em>New directory</em> sub-folder and its subsequent removal.</p>
<div id="attachment_564" class="wp-caption alignnone" style="width: 300px"><a href="http://ipggi.files.wordpress.com/2011/06/screenshot-test-sftp-sftp_-ben_example127-0-0-1-filezilla-1.png"><img class="size-medium wp-image-564" title="filezilla message log" src="http://ipggi.files.wordpress.com/2011/06/screenshot-test-sftp-sftp_-ben_example127-0-0-1-filezilla-1.png?w=290&#038;h=300" alt="" width="290" height="300" /></a><p class="wp-caption-text">Colour-coded message log from browsing our SFTP service in FileZilla.</p></div>
<p>Congratulations you now have a working example of a SFTP service running on your server. It should be mentioned that a number of these instructions were originally learnt from the blog post <a href="http://blog.markvdb.be/2009/01/sftp-on-ubuntu-and-debian-in-9-easy.html">SFTP on Ubuntu and Debian in 9 easy steps</a> and the reader comments.</p>
<br />Filed under: <a href='http://ipggi.wordpress.com/category/linux/'>Linux</a>, <a href='http://ipggi.wordpress.com/category/server-2/'>Server</a> Tagged: <a href='http://ipggi.wordpress.com/tag/debian/'>debian</a>, <a href='http://ipggi.wordpress.com/tag/ftp/'>ftp</a>, <a href='http://ipggi.wordpress.com/tag/ftps/'>ftps</a>, <a href='http://ipggi.wordpress.com/tag/linux/'>Linux</a>, <a href='http://ipggi.wordpress.com/tag/sftp/'>sftp</a>, <a href='http://ipggi.wordpress.com/tag/ubuntu/'>ubuntu</a>, <a href='http://ipggi.wordpress.com/tag/unix/'>unix</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ipggi.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ipggi.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ipggi.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ipggi.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ipggi.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ipggi.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ipggi.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ipggi.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ipggi.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ipggi.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ipggi.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ipggi.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ipggi.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ipggi.wordpress.com/528/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=528&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ipggi.wordpress.com/2011/06/29/implement-a-sftp-service-for-ubuntudebian-with-a-chrooted-isolated-file-directory/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<georss:point>51.524531 -0.008318</georss:point>
		<geo:lat>51.524531</geo:lat>
		<geo:long>-0.008318</geo:long>
		<media:content url="http://0.gravatar.com/avatar/01aa96818e11d6d361d9832c957f8a0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Ipggi</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_1.png?w=300" medium="image">
			<media:title type="html">cat /etc/group</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_-22.png?w=300" medium="image">
			<media:title type="html">cat /etc/passwd</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_-4.png?w=300" medium="image">
			<media:title type="html">sudo nano /etc/ssh/sshd_config</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_-5.png?w=300" medium="image">
			<media:title type="html">ll /var/www</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/screenshot-benben-xps-m1330_-var-www1.png?w=300" medium="image">
			<media:title type="html">ip -o -f inet addr</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/screenshot-site-manager.png?w=300" medium="image">
			<media:title type="html">filezilla site manager</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/screenshot-test-sftp-sftp_-ben_example127-0-0-1-filezilla.png?w=300" medium="image">
			<media:title type="html">filezilla browsing test sftp</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/screenshot-test-sftp-sftp_-ben_example127-0-0-1-filezilla-1.png?w=290" medium="image">
			<media:title type="html">filezilla message log</media:title>
		</media:content>
	</item>
		<item>
		<title>MySQL lower/UPPER casing and ISO 8859, Unicode, UTF-8, UTF-16, UTF-32 Character Set Collations</title>
		<link>http://ipggi.wordpress.com/2011/06/22/mysql-lowerupper-casing-and-iso-8859-unicode-utf-8-utf-16-utf-32-character-set-collations/</link>
		<comments>http://ipggi.wordpress.com/2011/06/22/mysql-lowerupper-casing-and-iso-8859-unicode-utf-8-utf-16-utf-32-character-set-collations/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 09:30:29 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ansi]]></category>
		<category><![CDATA[ascii]]></category>
		<category><![CDATA[case insensitive]]></category>
		<category><![CDATA[case sensitive]]></category>
		<category><![CDATA[iso 8859]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[utf]]></category>
		<category><![CDATA[utf-16]]></category>
		<category><![CDATA[utf-32]]></category>
		<category><![CDATA[utf-8]]></category>

		<guid isPermaLink="false">http://ipggi.wordpress.com/?p=502</guid>
		<description><![CDATA[By default MySQL uses the collation of latin1_swedish_ci character set for all columns. First off in case you are wondering the ci after the second underscore means case insensitive. All SQL queries targeting this column will ignore the letter case of the query values and the field data. Other collations that end with cs are case [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=502&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>By default MySQL uses the collation of <em>latin1_swedish_ci</em> character set for all columns. First off in case you are wondering the <em>ci</em> after the second underscore means case insensitive. All SQL queries targeting this column will ignore the letter case of the query values and the field data. Other collations that end with <em>cs</em> are case sensitive, which in everyday use is often more of a hindrance. That is unless you are needing to store the names of pointers to data held on case-sensitive file systems such as those used by Unix and Linux.</p>
<div id="attachment_508" class="wp-caption alignnone" style="width: 491px"><a href="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-40-57-am.png"><img class="size-full wp-image-508" title="Linux file list" src="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-40-57-am.png?w=620" alt=""   /></a><p class="wp-caption-text">Attempting to list a file in Linux, a case-sensitive operating system.</p></div>
<p>According to the official documentation <em>latin1_swedish</em> is the MySQL equivalent of the <em>Windows cp1252</em> character set. For those of you who do not know <em>Windows cp1252</em> character set is basically the same as the universal <em>ISO 8859-1</em> /<em> Latin1</em> character set.</p>
<div id="attachment_506" class="wp-caption alignnone" style="width: 626px"><a href="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-30-54-am.png"><img class="size-full wp-image-506" title="Default MySQL 5.* collation" src="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-30-54-am.png?w=620" alt=""   /></a><p class="wp-caption-text">The default MySQL 5.x collation for text.</p></div>
<p>If the above paragraph meant very little to you, a character set or character encoding scheme is a means of representing alpha-numeric and punctuation characters in an alternative form. The character <strong>A</strong> encoded in the <em>Morse code</em> character set is represented by a <strong>dot</strong> and <strong>dash</strong>.</p>
<p>The same character <strong>A</strong> as a capital in the 1963 <em>ASCII</em> character encoding scheme is represented by the hexadecimal <strong>0041</strong>, the decimal <strong>65</strong> and the octal of <strong>101</strong>. More importantly it also states that the character capital <strong>A</strong> is represented as the 7-bit binary code <strong>100 0001</strong>. The basis of this 1963 uniformity is still adhered to today and allows <em>ASCII</em> text documents written on ancient computers to be usable on modern machines. It permits this text file <a href="http://www.textfiles.com/apple/parameters.txt">http://www.textfiles.com/apple/parameters.txt</a> from 1982 which was written on an Apple II home computer to be read in a modern web browser. B.t.w. the odd formatting in the text file is due to the Apple II&#8217;s archaic capability of only handling upper-casing letters with 40 character strings per line.</p>
<p id="internal-source-marker_0.6566794919781387" dir="ltr">So back to the <em>latin1_swedish</em>, <em>CP1252</em> and<em> ISO 8859-1</em> character sets which I should add are for the most part interchangeable. They are sets of numeric codes (remember how we said <strong>A</strong> is represented as <strong>41</strong> hexadecimal or <strong>65</strong> decimal) which can handle the majority of characters needed by Western European languages that use the Latin alphabet. So French, Spanish, Italian and English are in but the Greek alphabet is not. You can find a list of all the characters that make up the <em>ISO 8859-1</em> character set with their numeric, HTML and binary codes on <a title="ASCII Code - The extended ASCII table" href="http://ascii-code.com/">ascii-code.com</a>.</p>
<p id="internal-source-marker_0.6566794919781387" dir="ltr">Lets go through some of these acronyms and technical terms.</p>
<ul>
<li><em>ASCII</em> (American Standard Code for Information Interchange) is an early computing standard that was developed by the Washington based American Standards Association to exclusively handle English data communication between different computers and telecommunication equipment.</li>
<li>ANSI (American National Standards Institute) escape codes were formalised in 1976 as an extension of ASCII to include colour, formatting and controls for computer display terminals (display monitors). Confusingly ANSI escape codes are also known as ECMA-48 and as ISO 6429. Former Microsoft DOS users may remember the need for the ANSI.SYS driver to handle ANSI documents.</li>
<li>The<em> ISO 8859</em> (International Organisation for Standardisation) is a mid-1980s European standard with a similar purpose to ASCII except that it introduced additional character sets to handle non-English languages.</li>
<li>While <em>CP1252</em> (Code Page) is part of a Microsoft developed guideline designed for use in the Windows operating system. Non-standard compliant code pages were initially developed by IBM as <em>CP437 </em>to be a collection of graphical glyphs for use on their first personal computer, the 1981 IBM-PC in the US market. Other vendors later modified or created new code pages for various non-US regions.</li>
</ul>
<p id="internal-source-marker_0.6566794919781387" dir="ltr">The<em> ISO 8859</em> and Code Page series of 8-bit (1 byte) character sets were only designed to handle 256 unique characters. They had to include upper and lower casing for each character, separate characters for accents, as well as  control codes for new lines, tabs, spaces, printing etc. This size limitation meant different languages and their derivatives need their own unique 8-bit character sets. It is why there are numerous legacy sets and character schemes out in the wild including 16 different parts to <em>ISO 8859</em>.</p>
<p id="internal-source-marker_0.6566794919781387" dir="ltr">Unfortunately these different sets are not interchangeable outside the basic <em>ASCII</em> English alpha-numeric and punctuation characters. As the sets generally assign different characters to the same identifiers. So someone in the Baltic (<em>ISO 8859-4</em>) reading a document written in the UK (<em>ISO 8859-1</em>) would see <strong>£</strong>10 displayed as <strong>Ŗ</strong>10. In <em>ISO 8859</em> both <strong>£</strong> and <strong>Ŗ</strong> share the same hexadecimal of <strong>00A3</strong>, decimal <strong>163</strong>, octal of <strong>243</strong>, binary of <strong>10100011</strong>. It means you can never have both these characters displayed together in the same document when using <em>ISO 8859</em>.</p>
<p id="internal-source-marker_0.6566794919781387" dir="ltr">The solution to this glaring issue was to create a new character encoding set without the inherit 8-bit / 1 byte, 256 character limit. One that could handle all characters in a unified setup without the need to switch between different groupings of characters. The solution was the <em>Universal Character Set</em> but more commonly referred to as <em>Unicode</em>. <em>Unicode</em> solves all these problems with a simple and fairly obvious solution. It assigns a unique code point to every character it recognises and supports. Capital <strong>A</strong> is given <strong>U+0041</strong>, the pound sign <strong>£</strong> is always <strong>U+00A3</strong> and capital R with cedilla <strong>Ŗ</strong> is guaranteed to be <strong>U+0156</strong>.</p>
<p id="internal-source-marker_0.6566794919781387" dir="ltr">These code points are converted into binary using the <em>Unicode Transformation Format</em> character encoding schemes. There are a number of these schemes including <em>UTF-16</em> and <em>UTF-32</em> but the most common is <em>UTF-8</em> due to its popularity on the Internet. It partly won acceptance due to its backwards compatibility with the original <em>ASCII</em> standard and its variable-width encoding. Which makes it size/bandwidth friendly for many Western European texts in addition to the majority of Internet scripting and programming languages which are based on English.</p>
<p id="internal-source-marker_0.6566794919781387" dir="ltr">The <em>ASCII</em> compatibility means that the 8-bit (1 byte) <em>ASCII</em> binary representation for capital <strong>A</strong> <strong>01000001</strong> is also the same<em> UTF-8</em> binary representation for the code point <strong>U+0041</strong> (capital <strong>A</strong> in <em>Unicode</em>). The first 127 code points in<em> UTF-8</em> are all 1 byte in size. The following 1920 points are 2 bytes, then the next 65,346 are 3 bytes while the remaining 1million+ are 4 bytes. Which means both <em>Unicode</em> and <em>UTF-8</em> can represent over 1 million unique characters yet most <em>Latin-1</em> characters remain 1 byte in size.</p>
<p id="internal-source-marker_0.6566794919781387" dir="ltr">In contrast <em>UTF-32</em> which is a fix-width encoder requires 32-bits or 4 bytes of binary data for all code points including our example capital letter <strong>A</strong> (<strong>00000000 00000000 00000000 01000001</strong>). In <em>UTF-16</em> the capital <strong>A</strong> in binary is<strong> 00000000 01000001</strong>, so it requires 2 bytes but there are many other code points that require a pair of 16-bit  or 2 byte values making them 4 bytes in size.</p>
<div id="attachment_517" class="wp-caption alignnone" style="width: 505px"><a href="http://ipggi.files.wordpress.com/2011/06/22-06-2011-2-30-26-pm.png"><img class="size-full wp-image-517" title="Identical HTML file" src="http://ipggi.files.wordpress.com/2011/06/22-06-2011-2-30-26-pm.png?w=620" alt=""   /></a><p class="wp-caption-text">3 identical Western Latin-1 HTML files encoded using ANSI, UTF-8 and UTF-16. The green numbers are the file sizes shown in bytes.</p></div>
<div id="attachment_518" class="wp-caption alignnone" style="width: 534px"><a href="http://ipggi.files.wordpress.com/2011/06/22-06-2011-2-40-17-pm.png"><img class="size-full wp-image-518" title="Japanese Haiku" src="http://ipggi.files.wordpress.com/2011/06/22-06-2011-2-40-17-pm.png?w=620" alt=""   /></a><p class="wp-caption-text">Here is an example where UTF-8 is less efficient than UTF-16. These 3 files contain an identical Haiku in plain text saved in Japanese Hiragana script.</p></div>
<p dir="ltr">My advise as to which collation you should choose for your data depends on the column’s purpose. If potentially a group of international users are going to be submitting data such as their personal details, addresses, names, signatures etc. to your system then you should at least use <em>UTF-8</em> to store that data.</p>
<div id="attachment_514" class="wp-caption alignnone" style="width: 613px"><a href="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-04-39-am1.png"><img class="size-full wp-image-514" title="MySQL Warning" src="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-04-39-am1.png?w=620" alt=""   /></a><p class="wp-caption-text">A MySQL warning caused by attempting to save the name &#039;Jackie Chan&#039; in Simplified Chinese Unicode characters with a column using the latin1_swedish_ci collation.</p></div>
<div id="attachment_515" class="wp-caption alignnone" style="width: 217px"><a href="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-05-30-am.png"><img class="size-full wp-image-515 " title="MySQL errror display" src="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-05-30-am.png?w=620" alt=""   /></a><p class="wp-caption-text">An attempt at displaying the Simplified Chinese Unicode.</p></div>
<div id="attachment_516" class="wp-caption alignnone" style="width: 217px"><a href="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-25-03-am.png"><img class="size-full wp-image-516 " title="MySQL good" src="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-25-03-am.png?w=620" alt=""   /></a><p class="wp-caption-text">The Unicode encoded name displays correctly when the username column is collated to utf8_unicode_ci.</p></div>
<p dir="ltr">On the other hand if you’re going to be keeping the data submission in-house or you know that you are not going to encounter any non Western <em>Latin-1</em> characters then you should be okay sticking to the MySQL’s defaults.</p>
<p dir="ltr">Alternatively another good use for<em> UTF-8</em> is where you are pulling data off the Internet and saving it locally to your MySQL database. With data fetched from website HTTP headers, RSS feeds or interactions with 3rd party API’s. You never know what data your application may run into so your system and database should be prepared for anything. But remember that each step of your setup needs to fully support <em>UTF-8</em>, for example &#8230;</p>
<pre>HTML form text input encoded as UTF-8 → PHP data processing in UTF-8 → MySQL UTF-8 storage.</pre>
<p dir="ltr">Additional links.</p>
<ul>
<li><a href="http://dev.mysql.com/doc/refman/5.5/en/charset-charsets.html">Character Sets and Collations That MySQL Supports</a></li>
<li><a title="Conversion Table - Decimal, Hexadecimal, Octal, Binary" href="http://www.ascii.cl/conversion.htm">Conversion Table &#8211; Decimal, Hexadecimal, Octal, Binary</a></li>
<li><a href="http://graphemica.com">Graphemica</a></li>
<li><a href="http://www.binaryconvert.com/">Binary Convert</a></li>
<li><a href="http://unicode.org/faq/">Unicode FAQ</a></li>
<li><a href="http://ascii-table.com/ansi-codes.php">ANSI Character Set</a></li>
<li><a href="http://ascii-table.com/index.php">ASCII Character Set</a></li>
</ul>
<br />Filed under: <a href='http://ipggi.wordpress.com/category/linux/'>Linux</a>, <a href='http://ipggi.wordpress.com/category/mysql/'>MySQL</a>, <a href='http://ipggi.wordpress.com/category/server-2/'>Server</a>, <a href='http://ipggi.wordpress.com/category/windows/'>Windows</a> Tagged: <a href='http://ipggi.wordpress.com/tag/ansi/'>ansi</a>, <a href='http://ipggi.wordpress.com/tag/ascii/'>ascii</a>, <a href='http://ipggi.wordpress.com/tag/case-insensitive/'>case insensitive</a>, <a href='http://ipggi.wordpress.com/tag/case-sensitive/'>case sensitive</a>, <a href='http://ipggi.wordpress.com/tag/iso-8859/'>iso 8859</a>, <a href='http://ipggi.wordpress.com/tag/mysql-2/'>mysql</a>, <a href='http://ipggi.wordpress.com/tag/unicode/'>unicode</a>, <a href='http://ipggi.wordpress.com/tag/utf/'>utf</a>, <a href='http://ipggi.wordpress.com/tag/utf-16/'>utf-16</a>, <a href='http://ipggi.wordpress.com/tag/utf-32/'>utf-32</a>, <a href='http://ipggi.wordpress.com/tag/utf-8/'>utf-8</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ipggi.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ipggi.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ipggi.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ipggi.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ipggi.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ipggi.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ipggi.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ipggi.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ipggi.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ipggi.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ipggi.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ipggi.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ipggi.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ipggi.wordpress.com/502/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=502&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ipggi.wordpress.com/2011/06/22/mysql-lowerupper-casing-and-iso-8859-unicode-utf-8-utf-16-utf-32-character-set-collations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>51.524531 -0.008318</georss:point>
		<geo:lat>51.524531</geo:lat>
		<geo:long>-0.008318</geo:long>
		<media:content url="http://0.gravatar.com/avatar/01aa96818e11d6d361d9832c957f8a0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Ipggi</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-40-57-am.png" medium="image">
			<media:title type="html">Linux file list</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-30-54-am.png" medium="image">
			<media:title type="html">Default MySQL 5.* collation</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/22-06-2011-2-30-26-pm.png" medium="image">
			<media:title type="html">Identical HTML file</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/22-06-2011-2-40-17-pm.png" medium="image">
			<media:title type="html">Japanese Haiku</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-04-39-am1.png" medium="image">
			<media:title type="html">MySQL Warning</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-05-30-am.png" medium="image">
			<media:title type="html">MySQL errror display</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/06/21-06-2011-10-25-03-am.png" medium="image">
			<media:title type="html">MySQL good</media:title>
		</media:content>
	</item>
		<item>
		<title>The WordPress eXtended Rss (WXR) Export/Import, XML Document Format Decoded and Explained.</title>
		<link>http://ipggi.wordpress.com/2011/03/16/the-wordpress-extended-rss-wxr-exportimport-xml-document-format-decoded-and-explained/</link>
		<comments>http://ipggi.wordpress.com/2011/03/16/the-wordpress-extended-rss-wxr-exportimport-xml-document-format-decoded-and-explained/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 11:08:59 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[RSS]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Delicious]]></category>
		<category><![CDATA[dublin core]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[rfc-822]]></category>
		<category><![CDATA[site summary content module]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[well-formed web]]></category>
		<category><![CDATA[WGS84]]></category>
		<category><![CDATA[WordPress eXtended Rss]]></category>
		<category><![CDATA[WXR]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xmlns]]></category>

		<guid isPermaLink="false">http://ipggi.wordpress.com/?p=477</guid>
		<description><![CDATA[One of the great things about WordPress is its portability and its popularity. It is extremely easy for a WordPress blogger to move their entire blog, comments and all, between different hosting providers without the use of any complex database languages such as SQL. Every WordPress blogging system provides the option to import and export [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=477&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the great things about WordPress is its portability and its popularity. It is extremely easy for a WordPress blogger to move their entire blog, comments and all, between different hosting providers without the use of any complex database languages such as SQL.</p>
<p>Every WordPress blogging system provides the option to import and export data between other WordPress blogs. This is not only limited to the blog entries themselves but can also include the post’s categories, tags, comments, drafts and even spam! It does all this using the WordPress Extended Rss document format, WXR.</p>
<p>The WXR format is based on the Really Simple Syndication or Rss specification which is a very popular dialect of XML. It has been designed as a syndication format for websites who wish to share and serialise some of their data. <a href="http://www.rssboard.org">http://www.rssboard.org/</a></p>
<p>A web syndication specification might seem an odd choice for a blog exporting tool but Rss popularity on today’s Internet, its simplicity and its expandable format through the use of 3rd party extensions make it a great choice. Being an XML dialect also means you can open up any text editor and have complete access to all blog data in a mark-up format that is human readable (in a layout not too different from a HTML file.)</p>
<p>To create a WXR export file of your own you need to login into your WordPress Dashboard, scroll down to Tools and select Export. A filter option allows you to drill down to specific data to trim your export file size. If you are exporting the complete site I’d recommend changing the Statuses filter to ‘Published’. If left as ‘All Statuses’ all the blog’s redundant auto-saved entries will be included, which ineffectively duplicate the published articles.</p>
<p><a href="http://ipggi.files.wordpress.com/2011/03/15-03-2011-21-49-48.png"><img class="alignnone size-medium wp-image-479" title="WordPress Export Screen" src="http://ipggi.files.wordpress.com/2011/03/15-03-2011-21-49-48.png?w=259&#038;h=300" alt="" width="259" height="300" /></a></p>
<p>Once you have pressed Download Export File button and it has finished downloading you should have an XML document with the name of <em>wordpress-[yyyy]-[mm]-[dd].xml</em>. You can open this with any text editor or even Windows Notepad. But it is preferable that you use a text editor that can parse the XML document for colourisation as it makes the document much easier to read. NotePad++ <a href="http://notepad-plus-plus.org/">http://notepad-plus-plus.org/</a> is a good choice for Windows users while TextMate <a href="http://macromates.com/">http://macromates.com/</a> is probably the best choice for OS/X.</p>
<p><a href="http://ipggi.files.wordpress.com/2011/03/15-03-2011-22-09-08.png"><img class="alignnone size-medium wp-image-481" title="WXR document viewed in Windows Notepad" src="http://ipggi.files.wordpress.com/2011/03/15-03-2011-22-09-08.png?w=300&#038;h=139" alt="" width="300" height="139" /></a> <a href="http://ipggi.files.wordpress.com/2011/03/15-03-2011-22-09-46.png"><img class="alignnone size-medium wp-image-482" title="WRX document viewed in Notepad++" src="http://ipggi.files.wordpress.com/2011/03/15-03-2011-22-09-46.png?w=300&#038;h=139" alt="" width="300" height="139" /></a></p>
<p>As the title suggests in this post I will attempt to decode the content of the WordPress Extended Rss document. This means I will list in published order the Rss elements contained within a standard export and briefly describe their purpose.</p>
<p>This will not be a tutorial on XML or Rss and I will assume you have some understanding of either. However if this is not the case things should not be too hard to follow especially for those people familiar with HTML documents.</p>
<pre>&lt;!-- This is a WordPress eXtended RSS file generated by WordPress as an export of your blog. --&gt;</pre>
<p>At the top of the WXR file there is a large commented section explaining the purpose of the document and in case you have forgotten instructions on how to import the file into a WordPress blog.</p>
<p>Beyond the comments is the required &lt;rss&gt; element containing 5 namespace extensions as well as the Rss version as a numeric value. The extensions listed include the RDF site summary content module, the well-formed web comment API, the Dublin Core metadata element set and 2 WordPress extensions. If this isn’t making too much sense then don’t worry as it is not really important unless you are developing an Rss parser.</p>
<p>The namespaces listed are unique, with each serving specific functions that the base Rss specification does not cover. Each XML namespace starts with xmlns: and is followed by an abbreviated title of the namespace which is usually an acronym. The URL that follows each title is a requirement and should point to a webpage that provides further information on the namespace.</p>
<pre>Xmlns:dc="http://purl.org/dc/elements/1.1/"</pre>
<p>Is an example of the Dublin Core element set namespace.</p>
<p>Below the <em>&lt;rss&gt;</em> element is the <em>&lt;channel&gt;</em> container element. This holds all the child elements and data related to the WordPress blog. You can find the closing <em>&lt;/rss&gt;</em> element at the bottom of the Rss document. At the top of the &lt;channel&gt; we have the elements that are associated with the WordPress blog metadata.</p>
<p><em>&lt;title&gt;</em> Contains the site title of the blog.</p>
<p><em>&lt;link&gt;</em> Is the URL of the blog as determined by WordPress.</p>
<p><em>&lt;description&gt;</em> Is a tagline that can be modified in the Dashboard under General Settings.</p>
<p><em>&lt;pubDate&gt;</em> Was the time and date that the WXR document was created. It is in the RFC-822 format <a href="http://asg.web.cmu.edu/rfc/rfc822.html">http://asg.web.cmu.edu/rfc/rfc822.html</a> as required by the Rss standard. The format should be self explanatory except for the last numeric value which represents the local differential from GMT using a +/-hhmm format. Plus 2 hours from GMT would be represented as +0200. The WordPress time zone can be changed in the Dashboard under General Settings, Timezone.</p>
<p><em>&lt;generator&gt;</em> Is the name or a URL pointing to the homepage of the application that was used to create the Rss document.</p>
<p><em>&lt;language&gt;</em> Is the primary language the blog is written in as determined by General Setting, Language in the WordPress Dashboard. A list of valid codes used to represent the language can be found at <a href="http://www.rssboard.org/rss-language-codes">http://www.rssboard.org/rss-language-codes</a>.</p>
<p><em>&lt;wp: wxr_version&gt;</em> This is our first example of an extended Rss element. We can recognise that it does not belong to the Rss specification as the element contains a colon. Left of the colon contains the elements extension while right is the element name. <em>wp:wxr_version</em> is the version number for the WordPress extension Rss.</p>
<p><em>&lt;wp:base_site_url&gt;</em> Is the root URL  of the WordPress hosting provider.</p>
<p><em>&lt;wp:base_blog_url&gt;</em> Is the root URL of the WordPress blog.</p>
<p>&lt;wp:category&gt; Contains a complete collection of categories associated with the blog. You can view and edit the list within the Dashboard under Posts, Categories. Each category is given its own &lt;category&gt; element and contains the following 3 child elements.</p>
<ul>
<li><em>&lt;wp:category_nicename&gt;</em> Is the category name in a URL friendly format.</li>
<li><em>&lt;wp:category_parent&gt;</em> If the category belongs to a hierarchy then the parent category is listed.</li>
<li><em>&lt;wp:cat_name&gt;&lt;![CDATA[]]&gt;</em> The original name of the category contained within a <em>&lt;![CDDATA[   ]]&gt;</em>. The CDATA or character data enclosure tells the XML/Rss parser not to process the text contained within. This is a safety measure in case the text contains any illegal characters that could generate errors. <a href="http://www.w3schools.com/xml/xml_cdata.asp">http://www.w3schools.com/xml/xml_cdata.asp</a></li>
</ul>
<p><em>&lt;wp:tag&gt;</em> Contains a complete collection of the blog post tags. You can view and edit the post tags within the Dashboard under Posts, Posts Tags. It contains the following 2 child elements.</p>
<ul>
<li><em>&lt;wp:tag_slug&gt;</em> Is the URL friendly name of the tag.</li>
<li><em>&lt;wp:tag_name&gt;</em> Is the original name of the tag contained within a character data enclosure.</li>
</ul>
<p><em>&lt;cloud&gt;</em> Is a pointer to the RssCloud API which is a blog monitoring service supported by WordPress.com. It enables a supporting client to receive instant notification when the blog is updated. <a href="http://www.rssboard.org/rsscloud-interface">http://www.rssboard.org/rsscloud-interface</a></p>
<p><em>&lt;image&gt;</em> Is a logo belonging to the site that can be displayed by Rss clients. You can modify the logo under the General Settings, Blog Picture / Icon dialog in the Dashboard. There are strict size and image formats requirements imposed by the Rss standard. <a href="http://www.rssboard.org/rss-specification#ltimagegtSubelementOfLtchannelgt">http://www.rssboard.org/rss-specification#ltimagegtSubelementOfLtchannelgt</a></p>
<p><em>&lt;atom:link rel=&#8221;search&#8221;&gt;</em> Is a URL pointing to the Open Search description document supplied by WordPress. It enables supported Rss clients and web browsers an easy means to provide search terms to the blog and receive results in a standardised XML format. <a href="http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document">http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document</a></p>
<p><em>&lt;atom:link rel=&#8221;pub&#8221;&gt;</em> Is a URL pointing to the Google designed pubsubhubbub notification service that is supported by WordPress. In my opinion this is easier to implement and use then the alternative &lt;cloud&gt; service that offers similar functionality. <a href="http://code.google.com/p/pubsubhubbub/">http://code.google.com/p/pubsubhubbub/</a></p>
<p>That is the end of the Rss metadata related elements. Below are the list of child elements contained within the<em> &lt;item&gt;&lt;/item&gt; </em>elements. Items are repeated multiple times as each item holds a single blog post, article or page.</p>
<p><em>&lt;title&gt;</em> Title of the <del datetime="2011-04-11T03:46:29+00:00">blog</del><ins datetime="2011-04-11T03:46:29+00:00">post or page</ins>.</p>
<p><em>&lt;link&gt;</em> URL to the <del datetime="2011-04-11T03:46:29+00:00">blog</del><ins datetime="2011-04-11T03:46:29+00:00">post or page</ins>.</p>
<p><em>&lt;pubDate&gt;</em> Time and date that the post was posted online.</p>
<p><em>&lt;dc:creator&gt; </em>Lists the author of the post. The element is a Dublin Core Rss extension as the Rss specification doesn’t contain any suitable elements for this role.</p>
<p><em>&lt;category&gt;</em> Each category associated with the blog is given 2 category elements. The first element contains just the category as a name, while the second element contains both the category name and the URL friendly nicename attribute.</p>
<p><em>&lt;guid&gt;</em> Is the globally unique identifier used for the identification of the blog post by Rss and WordPress clients. The <em>isPermaLink=false</em> attribute just means that this identifier is not a legitimate website URL and is not usable in a web browser.</p>
<p><em>&lt;description&gt;</em> In Rss documents this element contains the synopsis of the item but in WXR it is left blank.</p>
<p><em>&lt;content:encoded&gt;</em> Is the replacement for the restrictive Rss <em>&lt;description&gt;</em> element. Enclosed within a character data enclosure is the complete WordPress formatted blog post, HTML tags and all.</p>
<p><em>&lt;excerpt:encoded&gt;</em> <del datetime="2011-04-11T03:46:29+00:00">This is an unknown element</del><ins datetime="2011-04-11T03:46:29+00:00">This is a summary or description of the post often used by RSS/Atom feeds.</ins>.</p>
<p><em>&lt;wp:post_id&gt;</em> This is an auto-incremental, numeric, unique identification number given to each post, article or page.</p>
<p><em>&lt;wp:post_date&gt;</em> Time and date that the post was published.</p>
<p><em>&lt;wp:post_date_gmt&gt; </em>Time and date in GMT that the post was published.</p>
<p><em>&lt;wp:comment_status&gt;</em> A value stating whether public access for posting comments is opened or closed.</p>
<p><em>&lt;wp:post_name&gt;</em> Is a unique, URL friendly nicename based on the post title.</p>
<p><em>&lt;wp:status&gt;</em> Publish status of the post with the options; ‘publish’, ‘draft’, ‘pending’,’private’.</p>
<p><em>&lt;wp:post_parent&gt;</em> The numeric identification number if the post’s parent. This I think is applicable to WordPress pages which can be nested within each other.</p>
<p><em>&lt;wp:menu_order&gt;</em> I assume is related to menu navigation of nested pages.</p>
<p><em>&lt;wp:post_type&gt; </em>Post type either ‘post’, ‘page’,’media’.</p>
<p><em>&lt;wp:post_password&gt;</em> A non-encrypted password used by WordPress to restrict reading access to the post.</p>
<p><em>&lt;wp:is_sticky&gt;</em> A numeric Boolean value (0 = false, 1 = true) to determine if the post as a sticky. A sticky post means the post will always be displayed at the top of any list of posts.</p>
<p><em>&lt;wp:postmeta&gt;</em> Are containers for newer additions the WXR document format that have been introduced  after the original WXR specification. Each <em>&lt;wp:postmeta&gt;</em> element contains 2 child elements.</p>
<ul>
<li><em>&lt;wp:meta_key&gt;</em> Is the reference key for the meta data element.</li>
<li><em>&lt;wp:meta_value&gt;</em> Is the value for the meta data element contained within a character data enclosure.</li>
</ul>
<p>Below is a list of the <em>&lt;wp:meta_key&gt;</em> references currently used by WXR.</p>
<p><em>delicious</em>; is data related to the Delicious social bookmarking web service. <a href="http://www.delicious.com/">http://www.delicious.com/</a></p>
<p><em>geo_latitude</em>; is the positioning location of the author when submitted the post. The value is the latitude in degrees using the World Geodetic System 1984 (WGS84) datum. It seems to be based on the Google Gears Geolocation API. <a href="http://code.google.com/apis/gears/api_geolocation.html">http://code.google.com/apis/gears/api_geolocation.html</a></p>
<p><em>geo_longitude</em>; is the positioning location of the author when they submitted the post. The value is the longitude coordinates.</p>
<p><em>geo_accuracy</em>; is the horizontal accuracy of the above positioning values in metres.</p>
<p><em>geo_address</em>; is the address determined by the above geolocation data.</p>
<p><em>geo_public</em>; is a Boolean numeric value that determines if the geolocation data should be displayed in the post.</p>
<p><em>email_notification</em>; is an unknown value related to the email notification service for posting comments.</p>
<p><em>_wpas_done_yup</em>; is an unknown numeric Boolean value.</p>
<p><em>_wpas_done_twitter</em>; is an unknown numeric Boolean value related to Twitter.</p>
<p>reddit; is data related to the reddit social news web service. <a href="http://www.reddit.com/">http://www.reddit.com/</a></p>
<p><em>_edit_last</em>; is an unknown reference.</p>
<p><em>_edit_lock</em>; is an unknown reference.</p>
<p><em>&lt;wp:comment&gt;</em> Is a child element for the post item that contains 12 sub-elements listed below. These sub-elements belong to the a single post comment contained within a <em>&lt;wp:comment&gt;</em> element set.</p>
<ul>
<li><em>&lt;wp:comment_id&gt;</em> This is an auto-incremental, numeric, unique identification number given to each comment.</li>
<li><em>&lt;wp:comment_author&gt;</em> The name of author who submitted the comment. The name value is contained within a character data enclosure.</li>
<li><em>&lt;wp:comment_author_email&gt;</em>An e-mail address provided by the author of the comment.</li>
<li><em>&lt;wp:comment_author_url&gt;</em> The URL of the author’s website provided by the author of the comment.</li>
<li><em>&lt;wp:comment_author_IP&gt;</em> The IP address belonging to the author of the comment. The IP address is automatically recorded by WordPress.</li>
<li><em>&lt;wp:comment_date&gt;</em> The date and time local to the blog that the comment was posted.</li>
<li><em>&lt;wp:comment_date_gmt&gt;</em> The date and time at GMT that the comment was posted.</li>
<li><em>&lt;wp:comment_content&gt;</em> The comment text enclosed within a character data enclosure.</li>
<li><em>&lt;wp:comment_approved&gt;</em> A numeric Boolean value to determine if the comment is displayed.</li>
<li><em>&lt;wp:comment_type&gt;</em> The type of comment. If left blank it is classed as a normal comment otherwise a value of ‘pingback’ means it is a post request notification link. <a href="http://en.wikipedia.org/wiki/Pingback">http://en.wikipedia.org/wiki/Pingback</a></li>
<li><em>&lt;wp:comment_parent&gt;</em> The numeric identification of the parent comment used when the comment is a response to a pre-existing comment.</li>
<li><em>&lt;wp:comment_user_id&gt;</em> A numeric identification belonging to the author if they were logged in when they submitted the comment.</li>
</ul>
<p>Hopefully that extensive list helps you out. It should be current with all the main elements in a standard WordPress Extended Rss document been covered. If you find any mistakes, errors or know the purpose of any of the unknown elements please leave a comment.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<br />Filed under: <a href='http://ipggi.wordpress.com/category/rss/'>RSS</a>, <a href='http://ipggi.wordpress.com/category/server-2/'>Server</a>, <a href='http://ipggi.wordpress.com/category/wordpress/'>WordPress</a> Tagged: <a href='http://ipggi.wordpress.com/tag/delicious/'>Delicious</a>, <a href='http://ipggi.wordpress.com/tag/dublin-core/'>dublin core</a>, <a href='http://ipggi.wordpress.com/tag/geolocation/'>geolocation</a>, <a href='http://ipggi.wordpress.com/tag/rdf/'>rdf</a>, <a href='http://ipggi.wordpress.com/tag/rfc-822/'>rfc-822</a>, <a href='http://ipggi.wordpress.com/tag/rss/'>RSS</a>, <a href='http://ipggi.wordpress.com/tag/site-summary-content-module/'>site summary content module</a>, <a href='http://ipggi.wordpress.com/tag/twitter/'>Twitter</a>, <a href='http://ipggi.wordpress.com/tag/well-formed-web/'>well-formed web</a>, <a href='http://ipggi.wordpress.com/tag/wgs84/'>WGS84</a>, <a href='http://ipggi.wordpress.com/tag/wordpress/'>WordPress</a>, <a href='http://ipggi.wordpress.com/tag/wordpress-extended-rss/'>WordPress eXtended Rss</a>, <a href='http://ipggi.wordpress.com/tag/wxr/'>WXR</a>, <a href='http://ipggi.wordpress.com/tag/xml/'>xml</a>, <a href='http://ipggi.wordpress.com/tag/xmlns/'>xmlns</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ipggi.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ipggi.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ipggi.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ipggi.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ipggi.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ipggi.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ipggi.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ipggi.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ipggi.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ipggi.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ipggi.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ipggi.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ipggi.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ipggi.wordpress.com/477/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=477&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ipggi.wordpress.com/2011/03/16/the-wordpress-extended-rss-wxr-exportimport-xml-document-format-decoded-and-explained/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<georss:point>51.524531 -0.008318</georss:point>
		<geo:lat>51.524531</geo:lat>
		<geo:long>-0.008318</geo:long>
		<media:content url="http://0.gravatar.com/avatar/01aa96818e11d6d361d9832c957f8a0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Ipggi</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/03/15-03-2011-21-49-48.png?w=259" medium="image">
			<media:title type="html">WordPress Export Screen</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/03/15-03-2011-22-09-08.png?w=300" medium="image">
			<media:title type="html">WXR document viewed in Windows Notepad</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/03/15-03-2011-22-09-46.png?w=300" medium="image">
			<media:title type="html">WRX document viewed in Notepad++</media:title>
		</media:content>
	</item>
		<item>
		<title>Move or Copy Your Entire DVD Collection to a Home Theatre PC (HTPC), Desktop or Server for Free</title>
		<link>http://ipggi.wordpress.com/2011/01/29/move-or-copy-your-entire-dvd-collection-to-a-home-theatre-pc-htpc-desktop-or-server-for-free/</link>
		<comments>http://ipggi.wordpress.com/2011/01/29/move-or-copy-your-entire-dvd-collection-to-a-home-theatre-pc-htpc-desktop-or-server-for-free/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 06:00:52 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[backup]]></category>
		<category><![CDATA[HTPC]]></category>
		<category><![CDATA[ac-3]]></category>
		<category><![CDATA[ac3]]></category>
		<category><![CDATA[boxee]]></category>
		<category><![CDATA[dolby digital]]></category>
		<category><![CDATA[dts]]></category>
		<category><![CDATA[dvd]]></category>
		<category><![CDATA[dvdfab]]></category>
		<category><![CDATA[htpc]]></category>
		<category><![CDATA[mp2]]></category>
		<category><![CDATA[pcm]]></category>
		<category><![CDATA[rip]]></category>
		<category><![CDATA[ripping]]></category>
		<category><![CDATA[vlc player]]></category>
		<category><![CDATA[vob]]></category>
		<category><![CDATA[xbmp]]></category>

		<guid isPermaLink="false">http://ipggi.wordpress.com/?p=412</guid>
		<description><![CDATA[The goal of this post will be to explain how to transfer a large physical DVD collection over to a desktop/server or home theatre PC using free (as in beer) software. We will try to streamline this process and will show you what can be used to play your collection. Software Due to the potentially large [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=412&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The goal of this post will be to explain how to transfer a large physical DVD collection over to a desktop/server or home theatre PC using free (as in beer) software. We will try to streamline this process and will show you what can be used to play your collection.</p>
<h3>Software</h3>
<p>Due to the potentially large collection of DVD discs many people may own this project had few important requirements for the software.</p>
<ul>
<li>All DVD copy protection and region encoding needed to be removed.<br />
<em>Readers in the USA should note that under the Digital Millennium Copyright Act it is illegal for most consumers to bypass or break any form of digital copy protection. Legally there is no personal fair use granted to consumers in the USA to bypass or break DVD copy protection schemes for the discs they own. This means that by following these instructions, technically readers located in the USA will most likely be breaking the law.</em></li>
<li>Only the movie and primary audio tracks were to be ripped to the PC with out any extras or menus.</li>
<li>The movie data needed to copy over as quickly as possible. We needed to transfer the movie in its original format with no transcoding or additional compression.</li>
<li>Streamlined ripping interface to keep user prompts to a minimum.</li>
<li>Free.</li>
</ul>
<p>I ended up going with DVDFab HD Decrypter software by Fengtao Software which can be found at <a href="http://www.dvdfab.com/hd-decrypter.htm">http://www.dvdfab.com/hd-decrypter.htm</a>. DVDFab is an easy to use tool for DVD/Blu-ray ripping and conversion. While most the DVDFab suite is shareware you do not need to pay for software as the HD Decrypter component we use is freeware.</p>
<h3>Requirements</h3>
<ul>
<li>A Windows PC with a DVD or compatible disc drive which is able to read your DVD discs.</li>
<li>DVDFab HD Decrypter software by Fengtao Software mentioned previously which can be found at <a href="http://www.dvdfab.com/hd-decrypter.htm">http://www.dvdfab.com/hd-decrypter.htm</a>.</li>
<li>A large hard drive big enough to hold your transferred collection. Two identically sized drives would be preferred, one to hold the movie collection and one to clone the hard drive for use as a backup. You would hate to transfer over 500 discs and then loose it all to a faulty disk drive! How much space you&#8217;ll need depends on your collection. On average a movie will require between 3.5 to 7 GB though some longer movies (The Godfather Part II, Lord of the Rings etc) do span multiple discs. As a conservative estimate you’ll need about 5 GB per movie or a terabyte for every 200 movies.</li>
<li>Media centre or Home Theatre PC software to organise and play your collection. This software needs to be able to read the DVD VOB container format <a href="https://docs.google.com/document/d/1hJFoSWgCN61EDvQzwNwN3Tk2KYuGDadJbNZuwE_8w9Q/edit?hl=en_GB">(http://en.wikipedia.org/wiki/VOB)</a> when stored on a computer hard disk. My recommendations would include Boxee (<a title="http://www.boxee.tv/" href="http://www.boxee.tv/">http://www.boxee.tv/</a>), VLC Player (<a title="http://www.videolan.org/vlc/" href="http://www.videolan.org/vlc/">http://www.videolan.org/vlc/</a>) or XBMC (<a title="http://xbmc.org/" href="http://xbmc.org/">http://xbmc.org/</a>).</li>
</ul>
<h3>Install and Run</h3>
<ol id="internal-source-marker_0.49096361454576254">
<li>Download and install DVDFab from <a href="http://www.dvdfab.com/hd-decrypter.htm">http://www.dvdfab.com/hd-decrypter.htm</a>.</li>
<li>Start up DVDFab.</li>
<li>On the DVDFab Welcome Screen check <strong>Do not show again </strong>and click <strong>Start DVDFab</strong>. We will not be using any of the trial software for this project.<a href="http://ipggi.files.wordpress.com/2011/01/27-01-2011-10-33-25-pm2.png"><img class="alignnone size-medium wp-image-424" title="DVDFab Welcome" src="http://ipggi.files.wordpress.com/2011/01/27-01-2011-10-33-25-pm2.png?w=300&#038;h=256" alt="" width="300" height="256" /></a></li>
</ol>
<h3>Settings and Customise</h3>
<ol id="internal-source-marker_0.49096361454576254">
<li>Select the green Settings button that contains a tick.<br />
<a href="http://ipggi.files.wordpress.com/2011/01/27-01-2011-10-35-08-pm1.png"><img title="Settings Button" src="http://ipggi.files.wordpress.com/2011/01/27-01-2011-10-35-08-pm1.png?w=166&#038;h=166" alt="" width="166" height="166" /></a></li>
<li>Go to <strong>General</strong>. You may want to check <strong>Memorize User Interface Options</strong>. Change your <strong>Output directory</strong>. I am using M:\New Rips but you could use something that is easy to remember such as C:\Movies. Uncheck <strong>Creates files in subfolders of output directory</strong>.</li>
<li>If you have a graphics card with a GPU by ATI/AMD or Nvidia you can use these to improve the ripping throughput. While you are in <strong>General</strong>, select the sub-menu <strong>A/V Codex</strong>. Under the <strong>Video Decoder</strong> section find <strong>MPEG2 </strong>and change its mode from software to either <em>DXVA </em>for ATI/AMD cards or <em>CUDA </em>for Nvidia cards.<a href="http://ipggi.files.wordpress.com/2011/01/28-01-2011-10-44-59-am.png"><img class="alignnone size-medium wp-image-427" title="A/V Codex" src="http://ipggi.files.wordpress.com/2011/01/28-01-2011-10-44-59-am.png?w=300&#038;h=300" alt="" width="300" height="300" /></a></li>
<li>Go to <strong>DVD Copy</strong> and change the <strong>Default output size</strong> from <em>DVD5 </em>to <em>DVD9</em>. DVD5 refers to a single sided disc and is only useful if you want to burn your movie to a DVD-R. As we are just ripping to a hard disk we do not need to shrink or split the DVD rip to a smaller factor. Otherwise this could be a time consuming and a not very productive process.</li>
<li>Change the <strong>Default output type</strong> from <em>DVD writer</em> to <em>DVD folder</em>.</li>
<li>If by default you do not want any subtitles. Go to <strong>DVD / Blu-ray</strong>, <strong>Streams</strong>, <strong>Subpicture </strong>and check <strong>Do not preselect any subpicture track</strong>.</li>
<li>Then press <strong>OK </strong>to save your changes and close the settings dialog.</li>
</ol>
<h3>Ripping A Disc</h3>
<ol>
<li>Now you can either rip the <strong>Full Disc</strong> using the current default selection. Or we can save hard disk space and time by just extracting the movie with selected audio tracks by ignoring all the extra features, advertising, menus, etc. To rip the movie rather than the whole DVD select <strong>Main Movie</strong> from the <strong>DVD Copy</strong> menu on the left.<br />
<a href="http://ipggi.files.wordpress.com/2011/01/27-01-2011-10-48-14-pm.png"><img class="alignnone size-full wp-image-431" title="Main Movie" src="http://ipggi.files.wordpress.com/2011/01/27-01-2011-10-48-14-pm.png?w=620" alt=""   /></a></li>
<li>Change the <strong>Target </strong>from the default to your preference.<br />
<a href="http://ipggi.files.wordpress.com/2011/01/27-01-2011-10-49-36-pm.png"><img class="alignnone size-full wp-image-432" title="Target Change" src="http://ipggi.files.wordpress.com/2011/01/27-01-2011-10-49-36-pm.png?w=620&#038;h=81" alt="" width="620" height="81" /></a></li>
<li>Insert the DVD disc you wish to copy into your computer’s DVD drive.</li>
<li>If you get a Windows AutoPlay prompt when you insert the disc I’d suggest turning it off.<br />
<a href="http://ipggi.files.wordpress.com/2011/01/27-01-2011-11-05-35-pm.png"><img class="alignnone size-medium wp-image-436" title="AutoPlay dialog" src="http://ipggi.files.wordpress.com/2011/01/27-01-2011-11-05-35-pm.png?w=300&#038;h=244" alt="" width="300" height="244" /><br />
</a><a href="http://ipggi.files.wordpress.com/2011/01/28-01-2011-7-28-24-am.png"><img class="alignnone size-medium wp-image-443" title="Turn AutoPlay off" src="http://ipggi.files.wordpress.com/2011/01/28-01-2011-7-28-24-am.png?w=300&#038;h=224" alt="" width="300" height="224" /></a></li>
<li>When prompted by DVDFab select the DVD disc region. Feel free to check the <strong>Do not show again</strong>. If you ever need to change this in the future you can go to <strong>Settings,</strong> <strong>DVD / Blu-ray,</strong> <strong>Protection,</strong> <strong>DVD</strong>.</li>
<li>DVDFab will spend a few moment scanning the disc.</li>
<li>In my example I am happy with the default options. DVDFab is intelligent enough to select the movie on the disc as well as the English audio and sound tracks. Your mileage maybe different depending on which DVD you use.</li>
<li>DVDFab lets you know how much hard disk space the rip is going to use. You can decrease this size by removing audio tracks you don’t need. If you want an explanation of the most common types of audio tracks, see the Audio Tracks paragraph near the end of this article.</li>
<li>When you are ready press <strong>Next</strong>.<br />
<a href="http://ipggi.files.wordpress.com/2011/01/27-01-2011-11-09-13-pm.png"><img class="alignnone size-medium wp-image-437" title="Ready to rip" src="http://ipggi.files.wordpress.com/2011/01/27-01-2011-11-09-13-pm.png?w=300&#038;h=198" alt="" width="300" height="198" /></a></li>
<li>Now on the review screen check to make sure your Volume Label is the actual title of the movie. Some discs use very generic labels and this will be used by DVDFab for the movie’s folder name. I recommend using the following naming format .. <em>Title.(Year).Part</em><br />
i.e. <em>Die.Hard.(1988)</em>, <em>The.Godfather.Part.II.(1974).cd1</em>, <em>The.Godfather.Part.II.(1974).cd2</em>.<br />
You will generally find the movie&#8217;s year of theatre release on the back of the DVD case.<br />
<a href="http://ipggi.files.wordpress.com/2011/01/27-01-2011-11-21-05-pm.png"><img class="alignnone size-medium wp-image-439" title="Volume Label" src="http://ipggi.files.wordpress.com/2011/01/27-01-2011-11-21-05-pm.png?w=300&#038;h=114" alt="" width="300" height="114" /></a></li>
</ol>
<h3>Ripping Process</h3>
<ol>
<li>Once you are ready press <strong>Start</strong>.</li>
<li>Depending on your computer hardware and the movie length the ripping process should take somewhere between 10-20 minutes.</li>
<li>When your rip is complete DVDFab will play a notification audio and eject the DVD disc. From here you can select <strong>Finish </strong>to start the ripping process over again with a new movie.</li>
<li>You can use Windows explorer to go to your movies folder to browse over your completed DVD transfers.<br />
<a href="http://ipggi.files.wordpress.com/2011/01/28-01-2011-5-13-28-pm.png"><img class="alignnone size-medium wp-image-444" title="Completed DVD transfers" src="http://ipggi.files.wordpress.com/2011/01/28-01-2011-5-13-28-pm.png?w=300&#038;h=261" alt="" width="300" height="261" /></a></li>
</ol>
<h3>Media Centres &#8211; Boxee</h3>
<p><span style="font-weight:normal;font-size:13px;">If you want a media centre platform to display and play your DVD rips I’d recommend Boxee for first time users. The Boxee software (<a href="http://www.boxee.tv/make">http://www.boxee.tv/make</a>) is quite well known due to the recently released and uniquely designed Boxee Box by Logitech (<a title="http://www.boxee.tv/box" href="http://www.boxee.tv/box">http://www.boxee.tv/box</a>). While the Boxee Box hardware is geared towards fetching and streaming online content for use on a TV. The standalone Boxee software is a less focused, more all round media centre which is what you will probably want. One potential negative is that while the Boxee software is free does require you to create a user login account to run the required social elements of the software. </span></p>
<p><span style="font-weight:normal;font-size:13px;"><a href="http://ipggi.files.wordpress.com/2011/01/29-01-2011-4-43-18-pm.png"><img class="alignnone size-medium wp-image-460" title="Boxee movie browsing" src="http://ipggi.files.wordpress.com/2011/01/29-01-2011-4-43-18-pm.png?w=300&#038;h=168" alt="" width="300" height="168" /></a><br />
</span></p>
<h3>Media Centres &#8211; XBMC</h3>
<p>The alternative to Boxee is the free and open source XBMC (<a href="http://xbmc.org/">http://xbmc.org/</a>). XBMC was once an acronym for XBox Media Centre but now days it is primarily a piece of PC software since the original XBox has long fallen out of use. Boxee is actually a software fork of XBMC and so in many ways the two are quite alike. XBMC is much more customisable but the trade off is greater complexity.</p>
<p>If you do plan on using XBMC I&#8217;d recommend changing the default <em>Confidence </em>skin to something else. <em>Confidence </em>and a couple of other skins such as <em>Transparency! </em>and <em>Xpreience </em>do not understand the folders generated by our ripping process.</p>
<p>To change the XBMC skin use your keyboard arrow keys to navigate down to <strong>System </strong>and press <strong>Enter</strong>. Then navigate to <strong>Appearance</strong>, <strong>Skin, </strong>then use the right arrow key and enter or mouse to select <strong>Skin </strong>again. In the skin dialog select <strong>Get More&#8230;</strong> and install the following skins, <em>Back Row</em>, <em>Mediastream Redux</em>, <em>Night</em>, <em>pm3.hd, Shade </em>to try each of them out. Remember just press Esc a few times to quickly return to the XBMC Home screen.</p>
<p>If you need to add a folder on your computer to the library goto <strong>System</strong>, <strong>Video</strong>, <strong>Library</strong>, <strong>Import video library</strong>.</p>
<p>The Settings system menu in XBMC is a bit confusing at first but you get the hang of it eventually.</p>
<p><a href="http://ipggi.files.wordpress.com/2011/01/29-01-2011-4-27-09-pm.png"><img class="size-medium wp-image-457 alignnone" title="Appearance settings in XBMC" src="http://ipggi.files.wordpress.com/2011/01/29-01-2011-4-27-09-pm.png?w=300&#038;h=187" alt="" width="300" height="187" /></a><a href="http://ipggi.files.wordpress.com/2011/01/29-01-2011-4-28-48-pm.png"><img class="alignnone size-medium wp-image-458" title="Browsing movies using the Media Stream Redux skin in XBMC" src="http://ipggi.files.wordpress.com/2011/01/29-01-2011-4-28-48-pm.png?w=300&#038;h=187" alt="" width="300" height="187" /></a></p>
<h3>Region Locking Issues</h3>
<ol>
<li>I won’t go into the history of region locking other than to say that it was annoying attempt by Hollywood Studios to stagger DVD pricing and release dates for various international markets (<a href="http://en.wikipedia.org/wiki/DVD_region_code">http://en.wikipedia.org/wiki/DVD_region_code</a>).</li>
<li>If part of your DVD collection does not match the region setting of your computer’s DVD drive you may find those mismatched discs cannot be ripped by DVDFab.</li>
<li>The simplest way to get around this problem is to buy a cheap, secondary DVD-ROM drive and use Windows to change the region setting on it. Internal Desktop DVD-ROM drives can be had for $15 USD and slower USB external drives at about double that.<br />
<a href="http://ipggi.files.wordpress.com/2011/01/28-01-2011-5-17-20-pm.png"><img class="alignnone size-medium wp-image-445" title="Control Panel Devices Manager" src="http://ipggi.files.wordpress.com/2011/01/28-01-2011-5-17-20-pm.png?w=200&#038;h=300" alt="" width="200" height="300" /></a><br />
<a href="http://ipggi.files.wordpress.com/2011/01/28-01-2011-9-25-40-am.png"><img class="alignnone size-medium wp-image-441" title="Windows DVD region selection" src="http://ipggi.files.wordpress.com/2011/01/28-01-2011-9-25-40-am.png?w=293&#038;h=300" alt="" width="293" height="300" /></a></li>
<li>Otherwise you could try convert or hack the DVD drives Region Playback Control but this is potentially risky if you are not comfortable with what you are doing. I do not recommend attempting to flash a laptop DVD drive. If the drive flash fails you could be left with an expensive piece of hardware to replace or dead weight in your machine. Flashing the drive ROM means you replace the internal software (firmware) that operates the drive. A corrupt or broken firmware usually means your DVD disc drive will be irreversibly broken. More information on DVD RPC replacements can be found at <a href="http://www.doom9.org/index.html?/rpc1.htm">http://www.doom9.org/index.html?/rpc1.htm</a>.</li>
</ol>
<h3>Audio Tracks</h3>
<p>Audio on DVD can be a pretty complicated and confusing topic as the DVD specification allows for 4 different formats. PCM, DTS, MPEG-2 Audio Layer II (MP2) and Dolby Digital AC-3. In addition to these you may have different tracks of the same format included for different speaker setups. It is common to see AC-3 5.1 and AC-3 2 tracks on the same disk. AC-5.1 is optimised for 5 speakers in surround (the .1 is a sub-woofer) while AC-3 2 is geared towards a traditional stereo 2 speaker setup. Older cinema releases (those prior to mid-1990s) will often use AC-3 2 as the original theatre stereo track or AC-3 1 as the original theatre mono track.</p>
<p>Dolby Digital AC-3 is the most common and supported format. It can be the considered the lowest common denominator and should be supported by all audio hardware. If you are trying to optimise space or to keep things simple go for the AC-3 5.1 track or AC-3 2 if no 5.1 track is available. If you are converting an older movie that was released to theatres in stereo or mono you may wish to include both the remixed for DVD surround sound track as well as the original theatre track.</p>
<p>MPEG-2 Audio Layer II otherwise known as MP2 is a rare alternative to the Dolby standard only occasionally found on PAL region 2/4 DVDs. Technically its specs are greater than those of AC-3 but you will need to make sure it is supported by your audio hardware. Personally I would choose AC-3 over MP2 just for the greater compatibility.</p>
<p>DTS is a well supported alternative format to AC-3. DTS is commonly found in cinemas and has been designed to scale well on many different audio playback setups. If given the choice I would choose DTS over AC-3 though the trade-off is that significantly greater hard disk space is needed for your movie. Whether you actually notice an improvement of your audio playback in DTS over AC-3 is debatable and is probably dependant on your audio hardware.</p>
<p>PCM is an exotic format that is rarely found in movie DVD releases though occasionally found in music video titles. Unlike the other 3 standards PCM does not use lossy compression (<a href="http://en.wikipedia.org/wiki/Lossy_compression">http://en.wikipedia.org/wiki/Lossy_compression</a>) so in theory is a higher quality and more pure audio format. It is not unlike the audio only compact discs though PCM on DVD has the capacity for a much higher playback quality than CDs. If given the choice of a compressed format over an uncompressed, I will take the uncompressed most times. Unfortunately just like DTS you will trade-off hard disk space for possibly only minor perceivable audio improvements which also will be dependant on your hardware. Also it should be noted that while PCM supports up to 6 audio channels (surround sound) it is usually only implemented as a 2 channel stereo track.</p>
<p>Well I hope this was of some help to the many avid DVD collectors out there who may want to move their collections over to a more flexible Home Theatre PC system. If you have any questions please post them in the comments section.</p>
<br />Filed under: <a href='http://ipggi.wordpress.com/category/backup/'>backup</a>, <a href='http://ipggi.wordpress.com/category/htpc/'>HTPC</a> Tagged: <a href='http://ipggi.wordpress.com/tag/ac-3/'>ac-3</a>, <a href='http://ipggi.wordpress.com/tag/ac3/'>ac3</a>, <a href='http://ipggi.wordpress.com/tag/boxee/'>boxee</a>, <a href='http://ipggi.wordpress.com/tag/dolby-digital/'>dolby digital</a>, <a href='http://ipggi.wordpress.com/tag/dts/'>dts</a>, <a href='http://ipggi.wordpress.com/tag/dvd/'>dvd</a>, <a href='http://ipggi.wordpress.com/tag/dvdfab/'>dvdfab</a>, <a href='http://ipggi.wordpress.com/tag/htpc-2/'>htpc</a>, <a href='http://ipggi.wordpress.com/tag/mp2/'>mp2</a>, <a href='http://ipggi.wordpress.com/tag/pcm/'>pcm</a>, <a href='http://ipggi.wordpress.com/tag/rip/'>rip</a>, <a href='http://ipggi.wordpress.com/tag/ripping/'>ripping</a>, <a href='http://ipggi.wordpress.com/tag/vlc-player/'>vlc player</a>, <a href='http://ipggi.wordpress.com/tag/vob/'>vob</a>, <a href='http://ipggi.wordpress.com/tag/xbmp/'>xbmp</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ipggi.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ipggi.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ipggi.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ipggi.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ipggi.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ipggi.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ipggi.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ipggi.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ipggi.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ipggi.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ipggi.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ipggi.wordpress.com/412/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ipggi.wordpress.com/412/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ipggi.wordpress.com/412/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=412&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ipggi.wordpress.com/2011/01/29/move-or-copy-your-entire-dvd-collection-to-a-home-theatre-pc-htpc-desktop-or-server-for-free/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01aa96818e11d6d361d9832c957f8a0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Ipggi</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/27-01-2011-10-33-25-pm2.png?w=300" medium="image">
			<media:title type="html">DVDFab Welcome</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/27-01-2011-10-35-08-pm1.png" medium="image">
			<media:title type="html">Settings Button</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/28-01-2011-10-44-59-am.png?w=300" medium="image">
			<media:title type="html">A/V Codex</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/27-01-2011-10-48-14-pm.png" medium="image">
			<media:title type="html">Main Movie</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/27-01-2011-10-49-36-pm.png" medium="image">
			<media:title type="html">Target Change</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/27-01-2011-11-05-35-pm.png?w=300" medium="image">
			<media:title type="html">AutoPlay dialog</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/28-01-2011-7-28-24-am.png?w=300" medium="image">
			<media:title type="html">Turn AutoPlay off</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/27-01-2011-11-09-13-pm.png?w=300" medium="image">
			<media:title type="html">Ready to rip</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/27-01-2011-11-21-05-pm.png?w=300" medium="image">
			<media:title type="html">Volume Label</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/28-01-2011-5-13-28-pm.png?w=300" medium="image">
			<media:title type="html">Completed DVD transfers</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/29-01-2011-4-43-18-pm.png?w=300" medium="image">
			<media:title type="html">Boxee movie browsing</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/29-01-2011-4-27-09-pm.png?w=300" medium="image">
			<media:title type="html">Appearance settings in XBMC</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/29-01-2011-4-28-48-pm.png?w=300" medium="image">
			<media:title type="html">Browsing movies using the Media Stream Redux skin in XBMC</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/28-01-2011-5-17-20-pm.png?w=200" medium="image">
			<media:title type="html">Control Panel Devices Manager</media:title>
		</media:content>

		<media:content url="http://ipggi.files.wordpress.com/2011/01/28-01-2011-9-25-40-am.png?w=293" medium="image">
			<media:title type="html">Windows DVD region selection</media:title>
		</media:content>
	</item>
		<item>
		<title>Mass Effect Windows Vista 64-bit Troubles.</title>
		<link>http://ipggi.wordpress.com/2010/12/28/mass-effect-windows-vista-64-bit-troubles/</link>
		<comments>http://ipggi.wordpress.com/2010/12/28/mass-effect-windows-vista-64-bit-troubles/#comments</comments>
		<pubDate>Tue, 28 Dec 2010 00:32:35 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[bioware]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[electronic arts]]></category>
		<category><![CDATA[mass effect]]></category>
		<category><![CDATA[troubleshoot]]></category>

		<guid isPermaLink="false">http://ipggi.wordpress.com/?p=371</guid>
		<description><![CDATA[The other day I had bought the 2 year old Mass Effect RPG from Electronics Arts on discount from Valve&#8217;s Steam service. I was amazed that on the first time run the game abruptly crashed with a cryptic message. This issue repeated on every attempt to load the game whether using the Steam launcher or [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=371&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The other day I had bought the 2 year old Mass Effect RPG from Electronics Arts on discount from Valve&#8217;s Steam service. I was amazed that on the first time run the game abruptly crashed with a cryptic message. This issue repeated on every attempt to load the game whether using the Steam launcher or running the binaries manually. There is a simple but not so obvious fix that wasn&#8217;t fully detailed in my attempts to search for a solution on the web.</p>
<p>In File Explorer you need to find the Mass Effect launcher &#8230;</p>
<pre>C:\Program Files (x86)\Steam\steamapps\common\mass effect\Binaries\MassEffect.exe
</pre>
<p>Right click the &#8216;MassEffect.exe&#8217; program and bring up <em>Properties</em>.</p>
<ul>
<li>Select the <em>Compatibility </em>tab.</li>
<li>Within the <em>Compatibility mode</em> section select the <em>Run this program in compatibility mode fo</em>r check-box.</li>
<li>Make sure the pull-down list has <em>Windows XP (Service Pack 2)</em> selected.</li>
<li>Now select <em>Run this program as an administrator </em>check-box in the <em>Privilege Level</em> section.</li>
<li>Press <em>OK</em>.</li>
</ul>
<p>You should now be able to run the game from within Steam without any problems. Once you have launched Mass Effect for the first time I found you could disable the <em>Run this program as an administrator</em> check-box, that way you are not prompted for administrator rights every time you run the game.</p>
<br />Filed under: <a href='http://ipggi.wordpress.com/category/windows/vista/'>Vista</a>, <a href='http://ipggi.wordpress.com/category/windows/'>Windows</a> Tagged: <a href='http://ipggi.wordpress.com/tag/64-bit/'>64-bit</a>, <a href='http://ipggi.wordpress.com/tag/bioware/'>bioware</a>, <a href='http://ipggi.wordpress.com/tag/crash/'>crash</a>, <a href='http://ipggi.wordpress.com/tag/electronic-arts/'>electronic arts</a>, <a href='http://ipggi.wordpress.com/tag/mass-effect/'>mass effect</a>, <a href='http://ipggi.wordpress.com/tag/troubleshoot/'>troubleshoot</a>, <a href='http://ipggi.wordpress.com/tag/vista/'>Vista</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ipggi.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ipggi.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ipggi.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ipggi.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ipggi.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ipggi.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ipggi.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ipggi.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ipggi.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ipggi.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ipggi.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ipggi.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ipggi.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ipggi.wordpress.com/371/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=371&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ipggi.wordpress.com/2010/12/28/mass-effect-windows-vista-64-bit-troubles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01aa96818e11d6d361d9832c957f8a0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Ipggi</media:title>
		</media:content>
	</item>
		<item>
		<title>How to install 64-bit Java on 64-bit Windows and solve an annoying Eclipse 5.6 error</title>
		<link>http://ipggi.wordpress.com/2010/06/30/how-to-install-64-bit-java-on-64-bit-windows-and-solve-an-annoying-eclipse-5-6-error/</link>
		<comments>http://ipggi.wordpress.com/2010/06/30/how-to-install-64-bit-java-on-64-bit-windows-and-solve-an-annoying-eclipse-5-6-error/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 12:39:52 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[64-bit]]></category>
		<category><![CDATA[7]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://ipggi.wordpress.com/?p=332</guid>
		<description><![CDATA[I recently ran into a problem whereby I was trying to run a 64-bit Java application and yet I only had a 32-bit edition of Java installed on my 64-bit Windows computer. To obtain a 64-bit copy of Java I needed visit the Java download page using a 64-bit browser. On visiting with a standard [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=332&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently ran into a problem whereby I was trying to run a 64-bit Java application and yet I only had a 32-bit edition of Java installed on my 64-bit Windows computer. To obtain a 64-bit copy of Java I needed visit the <a title="Sun Java download page" href="http://www.java.com/en/download/">Java download</a> page using a 64-bit browser.</p>
<p>On visiting with a standard 32-bit edition of Internet Explorer, Firefox, Chrome, etc you&#8217;re only be given the option of downloading the 32-bit compatible plug-in. The probable reasoning behind this was to avoid confusion with 64-bit Windows owners. Who might not realise that their browsers are 32-bit programs running within a 64-bit operating system, making the 64-bit plug-ins useless.</p>
<p>As of writing there are currently are no active 64-bit Windows editions of Chrome, Firefox or Opera. Microsoft conveniently includes a 64-bit copy of Internet Explorer 7/8 in all 64-bit editions of Windows Vista and 7. Doing a quick Windows search for &#8216;Internet Explorer&#8217; or &#8217;64-bit&#8217; should reveal it and with that you should be able to obtain a 64-bit edition of Java. You should also be able to install and run both editions of Java on the same operating system.</p>
<p>Now I have the correct edition of Java I can run the 64-bit version of Eclipse 5.6 (Helios) without any of the cryptic &#8220;Failed to load the JNI shared library&#8221; errors!</p>
<br />Filed under: <a href='http://ipggi.wordpress.com/category/windows/64-bit/'>64-bit</a>, <a href='http://ipggi.wordpress.com/category/windows/7/'>7</a>, <a href='http://ipggi.wordpress.com/category/eclipse/'>Eclipse</a>, <a href='http://ipggi.wordpress.com/category/windows/vista/'>Vista</a>, <a href='http://ipggi.wordpress.com/category/windows/'>Windows</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ipggi.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ipggi.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ipggi.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ipggi.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ipggi.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ipggi.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ipggi.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ipggi.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ipggi.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ipggi.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ipggi.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ipggi.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ipggi.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ipggi.wordpress.com/332/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=332&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ipggi.wordpress.com/2010/06/30/how-to-install-64-bit-java-on-64-bit-windows-and-solve-an-annoying-eclipse-5-6-error/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<georss:point>51.524531 -0.008318</georss:point>
		<geo:lat>51.524531</geo:lat>
		<geo:long>-0.008318</geo:long>
		<media:content url="http://0.gravatar.com/avatar/01aa96818e11d6d361d9832c957f8a0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Ipggi</media:title>
		</media:content>
	</item>
		<item>
		<title>Hide, block and secure railo-context from your Railo Tomcat, JBoss, Resin servers.</title>
		<link>http://ipggi.wordpress.com/2010/05/27/hide-block-and-secure-railo-context-from-your-railo-tomcat-jboss-resin-servers/</link>
		<comments>http://ipggi.wordpress.com/2010/05/27/hide-block-and-secure-railo-context-from-your-railo-tomcat-jboss-resin-servers/#comments</comments>
		<pubDate>Thu, 27 May 2010 08:16:49 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[CFML/ColdFusion]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Railo]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[resin]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[urlrewrite]]></category>

		<guid isPermaLink="false">https://ipggi.wordpress.com/?p=321</guid>
		<description><![CDATA[In this example I will show you how to quickly and dynamically lock down your server to block access to the Railo administration features that are enabled by default. This modification will require an additional download and the restarting of each Railo web server you wish to protect. We will require the popular Url Rewrite [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=321&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this example I will show you how to quickly and dynamically lock down your server to block access to the Railo administration features that are enabled by default. This modification will require an additional download and the restarting of each Railo web server you wish to protect.</p>
<p>We will require the popular Url Rewrite Filter (<a href="http://tuckey.org/urlrewrite/">http://tuckey.org/urlrewrite/</a>).</p>
<pre style="background-color:#ffffff;width:100%;">cd ~
wget http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip
unzip -x urlrewritefilter-2.6.zip -d urlrewrite
cd urlrewrite/WEB-INF
ls</pre>
<p>Now you should see listed a lib directory and the file urlwrite.xml. Both these need to be copied into your website’s root /WEB-INF directory.</p>
<pre style="background-color:#ffffff;width:100%;">cp -r * /var/www/mysite.com/WEB-INF
cd /var/www/mysite.com/WEB-INF
nano web.xml</pre>
<p>Copy and insert this code below into your web.xml. It will tell your server to load the Url Rewrite Filter and to recheck your urlwrite.xml every 60 seconds for changes. This is important in case in the future you need to re-enable the Railo administration without the requirement of restarting your server.</p>
<pre style="background-color:#ffffff;width:100%;"><span style="color:#0000ff;">&lt;?</span>xml version="1.0" encoding="ISO-8859-1"<span style="color:#0000ff;">?&gt;
</span><span style="color:#0000ff;">&lt;</span><span style="color:#800000;">web</span>-<span style="color:#ff0000;">app</span> <span style="color:#ff0000;">xmlns</span>=<span style="color:#0000ff;">"http://java.sun.com/xml/ns/javaee"
</span>    <span style="color:#ff0000;">xmlns</span>:<span style="color:#ff0000;">xsi</span>=<span style="color:#0000ff;">"http://www.w3.org/2001/XMLSchema-instance"
</span>    <span style="color:#ff0000;">xsi</span>:<span style="color:#ff0000;">schemaLocation</span>=<span style="color:#0000ff;">"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
</span>    <span style="color:#ff0000;">version</span>=<span style="color:#0000ff;">"2.5"</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">    <span style="color:#008000;">&lt;!-- URL ReWriter --&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">    <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">filter</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">filter</span>-<span style="color:#ff0000;">name</span><span style="color:#0000ff;">&gt;</span>UrlRewriteFilter<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">filter</span>-name<span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">filter</span>-<span style="color:#ff0000;">class</span><span style="color:#0000ff;">&gt;</span>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">filter</span>-class<span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">        <span style="color:#008000;">&lt;!-- set the amount of seconds the conf file will be checked for reload</span></pre>
<pre style="background-color:#ffffff;width:100%;">        can be a valid integer (0 denotes check every time,</pre>
<pre style="background-color:#ffffff;width:100%;">        empty/not set denotes no reload check) --&gt;</pre>
<pre style="background-color:#ffffff;width:100%;">        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">init</span>-<span style="color:#ff0000;">param</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">            <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">param</span>-<span style="color:#ff0000;">name</span><span style="color:#0000ff;">&gt;</span>confReloadCheckInterval<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">param</span>-name<span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">            <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">param</span>-<span style="color:#ff0000;">value</span><span style="color:#0000ff;">&gt;</span>60<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">param</span>-value<span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">         <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">init</span>-param<span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">         <span style="color:#008000;">&lt;!-- you can disable status page if desired</span></pre>
<pre style="background-color:#ffffff;width:100%;">         can be: true, false (default true) --&gt;</pre>
<pre style="background-color:#ffffff;width:100%;">         <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">init</span>-<span style="color:#ff0000;">param</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">            <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">param</span>-<span style="color:#ff0000;">name</span><span style="color:#0000ff;">&gt;</span>statusEnabled<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">param</span>-name<span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">            <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">param</span>-<span style="color:#ff0000;">value</span><span style="color:#0000ff;">&gt;</span>false<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">param</span>-value<span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">         <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">init</span>-param<span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">     <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">filter</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">     <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">filter</span>-<span style="color:#ff0000;">mapping</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">filter</span>-<span style="color:#ff0000;">name</span><span style="color:#0000ff;">&gt;</span>UrlRewriteFilter<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">filter</span>-name<span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">url</span>-<span style="color:#ff0000;">pattern</span><span style="color:#0000ff;">&gt;</span>/*<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">url</span>-pattern<span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">     <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">filter</span>-mapping<span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;"><span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">web</span>-app<span style="color:#0000ff;">&gt;</span></pre>
<p>Now edit your urlwrite.xml to look something like this.</p>
<pre style="background-color:#ffffff;width:100%;"><span style="color:#0000ff;">&lt;?</span>xml version="1.0" encoding="utf-8"<span style="color:#0000ff;">?&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;"><span style="color:#0000ff;">&lt;</span>!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"</pre>
<pre style="background-color:#ffffff;width:100%;">        "http://tuckey.org/res/dtds/urlrewrite2.6.dtd"<span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;"><span style="color:#008000;">&lt;!--</span></pre>
<pre style="background-color:#ffffff;width:100%;">    Configuration file for UrlRewriteFilter</pre>
<pre style="background-color:#ffffff;width:100%;">    http://tuckey.org/urlrewrite/</pre>
<pre style="background-color:#ffffff;width:100%;">--&gt;</pre>
<pre style="background-color:#ffffff;width:100%;"><span style="color:#0000ff;">&lt;</span><span style="color:#800000;">urlrewrite</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;"><span style="color:#0000ff;">&lt;</span><span style="color:#800000;">rule</span> <span style="color:#ff0000;">enabled</span>=<span style="color:#0000ff;">"true"</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">	<span style="color:#0000ff;">&lt;</span><span style="color:#800000;">name</span><span style="color:#0000ff;">&gt;</span>Disable Railo<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">name</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">	<span style="color:#0000ff;">&lt;</span><span style="color:#800000;">from</span><span style="color:#0000ff;">&gt;</span>^/railo-context/admin/(.*)$<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">from</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">	<span style="color:#0000ff;">&lt;</span><span style="color:#800000;">to</span><span style="color:#0000ff;">&gt;</span>null<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">to</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;">	<span style="color:#0000ff;">&lt;</span><span style="color:#800000;">set</span> <span style="color:#ff0000;">type</span>=<span style="color:#0000ff;">"status"</span><span style="color:#0000ff;">&gt;</span>403<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">set</span><span style="color:#0000ff;">&gt;
</span><span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">rule</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="background-color:#ffffff;width:100%;"><span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">urlrewrite</span><span style="color:#0000ff;">&gt;</span></pre>
<p>You can now restart your server and then try to access <a href="http://www.mysite.com/railo-context/admin/web.cfm">http://www.mysite.com/railo-context/admin/web.cfm</a> or <a href="http://www.mysite.com/railo-context/admin/server.cfm">http://www.mysite.com/railo-context/admin/server.cfm</a>. Hopefully if all went well both pages will return a HTTP status 403. If you need to re-enable these pages, edit your urlwrite.xml and change the rule enabled attribute value to false.</p>
<br />Filed under: <a href='http://ipggi.wordpress.com/category/cfmlcoldfusion/'>CFML/ColdFusion</a>, <a href='http://ipggi.wordpress.com/category/linux/'>Linux</a>, <a href='http://ipggi.wordpress.com/category/cfmlcoldfusion/railo/'>Railo</a>, <a href='http://ipggi.wordpress.com/category/server-2/'>Server</a> Tagged: <a href='http://ipggi.wordpress.com/tag/jboss/'>jboss</a>, <a href='http://ipggi.wordpress.com/tag/linux/'>Linux</a>, <a href='http://ipggi.wordpress.com/tag/railo/'>Railo</a>, <a href='http://ipggi.wordpress.com/tag/resin/'>resin</a>, <a href='http://ipggi.wordpress.com/tag/tomcat/'>tomcat</a>, <a href='http://ipggi.wordpress.com/tag/urlrewrite/'>urlrewrite</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ipggi.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ipggi.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ipggi.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ipggi.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ipggi.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ipggi.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ipggi.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ipggi.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ipggi.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ipggi.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ipggi.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ipggi.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ipggi.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ipggi.wordpress.com/321/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ipggi.wordpress.com&amp;blog=2513273&amp;post=321&amp;subd=ipggi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ipggi.wordpress.com/2010/05/27/hide-block-and-secure-railo-context-from-your-railo-tomcat-jboss-resin-servers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>51.524531 -0.008318</georss:point>
		<geo:lat>51.524531</geo:lat>
		<geo:long>-0.008318</geo:long>
		<media:content url="http://0.gravatar.com/avatar/01aa96818e11d6d361d9832c957f8a0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Ipggi</media:title>
		</media:content>
	</item>
	</channel>
</rss>
