<?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/"
	>

<channel>
	<title>Tech4Him - Technology with Integrity &#187; Featured</title>
	<atom:link href="http://blog.tech4him.com/topics/featured/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tech4him.com</link>
	<description>A Christian technology chaos wrangler and his thoughts</description>
	<lastBuildDate>Wed, 24 Mar 2010 23:15:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ESXi 4, Moving VMs to new Storage</title>
		<link>http://blog.tech4him.com/2010/03/esxi-4-moving-vms-to-new-storage/</link>
		<comments>http://blog.tech4him.com/2010/03/esxi-4-moving-vms-to-new-storage/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 23:15:39 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[esxi]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[md3000i]]></category>
		<category><![CDATA[san]]></category>
		<category><![CDATA[vmfs]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://blog.tech4him.com/?p=948</guid>
		<description><![CDATA[As previously discussed, we recently purchased an MD3000i iSCSI SAN from Dell. We are running the &#8220;free&#8221; VSphere ESXi 4 on 3 hosts. That&#8217;s right, no VCenter, no VCB, no VMotion, no SVM. So, how does one best approach moving these VM guests from local storage to our new lovely SAN? Well, we looked into [...]]]></description>
			<content:encoded><![CDATA[<p>As <a id="aptureLink_2qk6IeDHi4" href="../2010/03/dell-md3000i-and-r710-shiny-and-new/">previously discussed</a>, we recently purchased an MD3000i iSCSI SAN from Dell. We are running the &#8220;free&#8221; VSphere ESXi 4 on 3 hosts. That&#8217;s right, no VCenter, no VCB, no VMotion, no SVM. So, how does one best approach moving these VM guests from local storage to our new lovely SAN? Well, we looked into the following possibilities:<span id="more-948"></span></p>
<ol>
<li>Upgrade and <a id="aptureLink_bpOxGkat45" href="http://www.slideshare.net/championsg/navigating-the-new-vsphere-licensing-landscape">purchase licenses for VSphere</a>, VCenter, etc&#8230;</li>
<li>Use the VI client data store browse &#8220;Move&#8221; functionality</li>
<li>Try out a third party product like Veeam FastSCP</li>
<li>Try standard TAR/GZ combined with cp command</li>
<li>Try vmkfstools disk cloning</li>
</ol>
<p>One important note. While testing some of these options, we became aware of a complicating factor. If you have created your disks as Thin provisioned and are moving to storage that has a different block size, the vmdk will become thick provisioned. This means that the &#8220;entire&#8221; contents of the fully thick provisioned disk will be moved, not just the used space.</p>
<h2>Upgrade and Purchase VSphere Infrastructure Licenses</h2>
<p>This option is one we continue to re-evaluate every 6-8 months. Working in a non-profit, we are always evaluating how to be the best stewards of the resources we&#8217;ve been provided. One of those resources is obviously financial resources. This seems like the only real option for moving running VMs.</p>
<p>While having VSphere Enterprise in place would make this process of migrating to new storage easier, we just cannot justify the long term expense. Our small environment just does not need what you pay for over the long haul.</p>
<p>As such, we ruled this out. Some downtime is perfectly acceptable in this organization.</p>
<h2>Use VI Client Datastore Browse/Move Functionality</h2>
<p><a href="http://blog.tech4him.com/wp-content/uploads/20100324-VI-Client-Data-Browser.png"><img class="alignleft size-medium wp-image-953" style="border: 1px solid black; margin: 8px;" title="20100324 VI Client Data Browser" src="http://blog.tech4him.com/wp-content/uploads/20100324-VI-Client-Data-Browser-300x151.png" alt="" width="300" height="151" /></a>When using the VI Client, you can browse the VMFS datastores similar to a Windows Explorer window. This is accessed by viewing the storage configuration of the host in the VI Client. Right-clicking the particular datastore and choosing browse.</p>
<p>Obviously, this function does not work on running VMs. As a matter of fact, in one of our tests, we actually caused a problem doing so. This is a &#8220;move&#8221; not a copy. If the move fails mid-way through, some files will have been moved while others are still in their original location. Now you&#8217;ve got a bigger mess on your hands.</p>
<p>So, this option means the VM has to be powered off. Ok, we can deal with that. The other downside was that, as explained above, the new vmdk is thick provisioned and therefore, much more data is transferring that is really necessary.</p>
<h2>Test 3rd Party Product Like Veeam FastSCP</h2>
<p><a href="http://blog.tech4him.com/wp-content/uploads/20100324-Veeam-FastSCP.png"><img class="alignright size-medium wp-image-954" style="border: 0pt none; margin: 8px;" title="20100324 Veeam FastSCP" src="http://blog.tech4him.com/wp-content/uploads/20100324-Veeam-FastSCP-300x230.png" alt="" width="300" height="230" /></a>I really do like the folks over at <a id="aptureLink_trsgG6If96" href="http://www.veeam.com/">Veeam</a>. I have used the monitoring /reporting product and like there licensing models. We thought we&#8217;d check out <a id="aptureLink_5GjLxUf0tc" href="http://www.veeam.com/vmware-esxi-fastscp.html">their free FastSCP</a> product. Why? Well because is says &#8220;Fast&#8221; in the name. <img src='http://blog.tech4him.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The tool worked great. It did everything is said it would do. Like the other options, the VMs need to be powered down. We even tested copying between different ESXi hosts. Worked great. The only downside was the lack of speed. Yeah really! We did some reading and it appears that this may be a throttling of the ESXi product, not Veeam FastSCP. Bummer.</p>
<h2>Try standard TAR/GZ combined with cp command</h2>
<p><a href="http://blog.tech4him.com/wp-content/uploads/20100324-tar-failure.png"><img class="alignleft size-medium wp-image-955" style="border: 0pt none; margin: 8px;" title="20100324 tar failure" src="http://blog.tech4him.com/wp-content/uploads/20100324-tar-failure-300x81.png" alt="" width="300" height="81" /></a>&#8220;Wow&#8221;, I though as I was researching. Why don&#8217;t we just tar/gzip everything and then copy to the new storage location and then untar. Well, not so fast our ESXi said to m as it spewed out an error that &#8220;tar: cannot store file &#8216;xxxxxxxxxxx.vmdk&#8217; of size #########, aborting&#8221;. Yuck~!</p>
<p>It appears that BusyBox, the underlying unsupported ESXi console has a limitation of 4GB in ESXi3.5 and 8GB in ESXi 4. Therefore, trying to tar a 100GB vmdk file went no where fast. Check this option off the list.</p>
<h2>Try vmkfstools disk cloning</h2>
<p>This, we thought, is an interesting idea. Yes, the VMs still need to be powered off but perhaps this will shorten the downtime by lowering the amount of data that gets copied. See, as we talk about earlier, going to storage of a different block size will mean yout thin provisioned disks will begin thick. As such, the total size of the thick disk has to be transferred. This could siginificantly increase the copy time if you have lots of unused space on a disk.</p>
<p><a href="http://blog.tech4him.com/wp-content/uploads/20100324-vmkfstools-example-success.png"><img class="alignright size-medium wp-image-957" style="border: 1px solid black; margin: 8px;" title="20100324 vmkfstools example success" src="http://blog.tech4him.com/wp-content/uploads/20100324-vmkfstools-example-success-300x45.png" alt="" width="300" height="45" /></a>The vmkfstools utility has a feature known as cloning. This allows you to make a clone copy of a vmdk disk to anyVMFS datastore. Now that&#8217;s all good but where this got us jazzed was the ability to force that newly cloned disk to be created as a thin provisioned disk. Eureka!</p>
<p>Now, first, make sure you remove all snapshots in the vm. Those are just going to cause us a headache.</p>
<p>So a command like this does the deed:<br />
<code>vmkfstools -i /vmfs/volumes/source/vmname/vmname.vmdk -d thin /vmfs/volumes/dest/vmname/vmname.vmdk<br />
</code></p>
<blockquote><p><em>Note: you need to do this against the vmname.vmdk NOT the vmname-flat.vmdk. Be forwarned.</em></p></blockquote>
<p>Some small scale, non-scientific testing gave us around 1.3GB per minute in transfer speed. Again, this is not true i/o but rather therate used for calculating down time for our migration project by taking the amount of used space on the source drive/time to create cloned drive = transfer rate.</p>
<p>Now, when the vmdks are moved, don&#8217;t forget to cp all the other VM files in the VM directories!</p>
<p>This looks to be the path we will be taking and thought we&#8217;d share how we arrived here.</p>
<img src="http://blog.tech4him.com/?ak_action=api_record_view&id=948&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.tech4him.com/2010/03/esxi-4-moving-vms-to-new-storage/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dell MD3000i and R710 &#8211; Shiny and New</title>
		<link>http://blog.tech4him.com/2010/03/dell-md3000i-and-r710-shiny-and-new/</link>
		<comments>http://blog.tech4him.com/2010/03/dell-md3000i-and-r710-shiny-and-new/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 22:53:10 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Links/Resources]]></category>
		<category><![CDATA[dell]]></category>
		<category><![CDATA[esxi]]></category>
		<category><![CDATA[idrac]]></category>
		<category><![CDATA[md3000i]]></category>
		<category><![CDATA[r710]]></category>
		<category><![CDATA[san]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://blog.tech4him.com/?p=924</guid>
		<description><![CDATA[Well, the time finally came. We bit the bullet and purchased a new Dell PowerEdge R710 and an MD3000i SAN for the office. The R710 will be a new VSphere ESXi 4 host that will take on a bulk of the production VM&#8217;s while one of the remaining 2950&#8217;s will remain a smaller production host [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.tech4him.com/wp-content/uploads/P1020983.jpg"><img class="alignleft size-medium wp-image-925" style="border: 1px solid black; margin: 8px;" title="P1020983" src="http://blog.tech4him.com/wp-content/uploads/P1020983-300x236.jpg" alt="MD3000i and Dell Poweredge R710 mounted." width="300" height="236" /></a>Well, the time finally came. We bit the bullet and purchased a new <a id="aptureLink_hCyM6UtDdt" href="http://www.dell.com/us/en/enterprise/servers/server-poweredge-r710/pd.aspx?refid=server-poweredge-r710&amp;cs=555&amp;s=biz">Dell PowerEdge R710</a> and an <a id="aptureLink_bLYLP1Uv0w" href="http://www.dell.com/us/en/enterprise/storage/pvaul_md3000i/pd.aspx?refid=pvaul_md3000i&amp;cs=555&amp;s=biz">MD3000i SAN</a> for the office. The R710 will be a new <a id="aptureLink_RyUIbc3vQk" href="http://www.vmware.com/products/esxi/">VSphere ESXi 4</a> host that will take on a bulk of the production VM&#8217;s while one of the remaining 2950&#8217;s will remain a smaller production host and the third 2950 will be a test and development box.</p>
<p>So you can see the MD3000i with the faceplate off directly below the new R710. I&#8217;m tempted to leave the faceplate off so that the executives and visitors see more lights when they look in. For some reason, non-technical people tend to have a first reaction to hardware such that more lights is mo&#8217; better. <img src='http://blog.tech4him.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <span id="more-924"></span></p>
<p><a href="http://blog.tech4him.com/wp-content/uploads/Dell-PowerConnect-Summary.png"><img class="alignright size-medium wp-image-928" style="border: 0pt none; margin: 8px;" title="Dell PowerConnect Summary" src="http://blog.tech4him.com/wp-content/uploads/Dell-PowerConnect-Summary-300x143.png" alt="" width="300" height="143" /></a>Along with these two pieces of hardware, we went ahead and got a <a id="aptureLink_zs7XEvwIti" href="http://www.dell.com/us/en/enterprise/networking/pwcnt_5424/pd.aspx?refid=pwcnt_5424&amp;cs=555&amp;s=biz">Dell PowerConnect 5424</a> iSCSI optimized switch. This will be dedicated to the storage segment for the time being. Configuration of the switch meant actually going back to the rack. Initial configuration must be done via serial cable (included). Once you configure the management IP address and administrator credentials, the rest of the configuration can be done via the web based management tool.</p>
<p><a href="http://blog.tech4him.com/wp-content/uploads/Dell-R710-DRAC-Summary.png"><img class="alignleft size-thumbnail wp-image-929" style="border: 0pt none; margin: 8px;" title="Dell R710 DRAC Summary" src="http://blog.tech4him.com/wp-content/uploads/Dell-R710-DRAC-Summary-150x150.png" alt="" width="150" height="150" /></a>Now the R710 was purchased with the nice <a id="aptureLink_MQtvMeQu2C" href="http://www.delltechcenter.com/page/lifecycle+controller">iDRAC</a>. This web based, out of band, management tool is wonderful. No client to load. You can configure, manage and review just about anything at the hardware level here.</p>
<p>One of the things I really liked about the new iDRAC is the console redirection or virtual KVM functionality. Of course, this allows you to run a java application the is the server console, however, it also allows you to map client resources as virtual media for the server.</p>
<p><a href="http://blog.tech4him.com/wp-content/uploads/Dell-DRAC-KVM-Virtual-Media.png"><img class="alignright size-thumbnail wp-image-930" style="border: 0pt none; margin: 8px;" title="Dell DRAC KVM Virtual Media" src="http://blog.tech4him.com/wp-content/uploads/Dell-DRAC-KVM-Virtual-Media-150x150.png" alt="" width="150" height="150" /></a>In our case, we mapped the VMWare Vsphere ESXi 4 ISO image to the R710 server. We booted to it and installed the operating system without so much as a single walk back to the serer rack. This is much akin to the VMWare ability to mount client CD/DVD drives or ISO images as media for the guest operating systems. The difference here is that this is for the physical hardware. Lights out operations, indeed!</p>
<p><a href="http://blog.tech4him.com/wp-content/uploads/md3000i-Storage-Manager-Summary.png"><img class="alignleft size-thumbnail wp-image-931" style="border: 0pt none; margin: 8px;" title="md3000i Storage Manager Summary" src="http://blog.tech4him.com/wp-content/uploads/md3000i-Storage-Manager-Summary-150x150.png" alt="" width="150" height="150" /></a>Finally, the MD3000i is configured with the <a id="aptureLink_dcprywcZIQ" href="http://dell.driversdown.com/dell-drivers-downloads/Dell-MD3000i-Configuration-Utility_21455.shtml">Dell MD3000i Configuration Utility</a>. Downloading this zip file was easy enough, extracted the contents and ran the SAConfig.bat file. The wizard walks you through the process. We had already wired the management ports on the MD3000i to our LAN while leaving the controllers on the storage network. The Wizard easily identified the unit, asked us for information on how we wanted to configure ip addresses and the like and then applied the configuration to the MD3000i. 5 minutes later we used the Modular Disk Storage Manager to begin the configuration process.</p>
<p>Dell will be helping with the final configuration next week but already setting up iSCSI to the ESXi hosts has been fairly painless following the <a id="aptureLink_EtfppEsgJi" href="http://www.delltechcenter.com/page/VMware+ESX+4.0+and+PowerVault+MD3000i">documented processes</a> outlined by Dell and VMWare.</p>
<img src="http://blog.tech4him.com/?ak_action=api_record_view&id=924&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.tech4him.com/2010/03/dell-md3000i-and-r710-shiny-and-new/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Linode StackScripts and LAMP Servers</title>
		<link>http://blog.tech4him.com/2010/03/linode-stackscripts-and-lamp-servers/</link>
		<comments>http://blog.tech4him.com/2010/03/linode-stackscripts-and-lamp-servers/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 03:16:45 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[linode]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.tech4him.com/?p=891</guid>
		<description><![CDATA[On February 8th, 2010 Linode.com announced the availability of StackScripts. The StackScripts are described as:
StackScripts™ provide a  flexible way to customize our distribution templates. They’re very easy  to use — find a StackScript, answer its questions, and click deploy.  When the deployment is first booted, the script is executed and does its [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.tech4him.com/wp-content/uploads/20103008-StackScript-Start.png"><img class="alignleft size-medium wp-image-895" style="border: 1px solid black; margin: 8px;" title="StackScript Start" src="http://blog.tech4him.com/wp-content/uploads/20103008-StackScript-Start-300x204.png" alt="" width="300" height="204" /></a>On February 8th, 2010 <a href="http://blog.linode.com/2010/02/09/introducing-stackscripts/">Linode.com announced the availability of StackScripts</a>. The StackScripts are described as:</p>
<blockquote><p><a href="http://www.linode.com/stackscripts/">StackScripts</a>™ provide a  flexible way to customize our distribution templates. They’re very easy  to use — find a StackScript, answer its questions, and click deploy.  When the deployment is first booted, the script is executed and does its  thing. You can even watch its progress by viewing the console.</p>
<p><span id="more-891"></span></p></blockquote>
<p>As so many things with Linode.com and its community there is a public library of the <a href="http://www.linode.com/stackscripts/">Stackscripts</a> available for a variety of purposes. Anything a from a standard LAMP setup to WordPress, Drupal and TRAC/SVN setups.</p>
<p>Already having a Linode up and running, I have also been thinking about re-doing the setup of ourLAMP server. Seeing this as an opportunity to both rebuild our LAMP server and test StackScripts, I set out to give it a try.</p>
<p>We already had a Linode configuration and a disk image actively running. The good news was that when you choose to deploy a new distribution via a stackscript, it will create both a new Linode configuration as well as a new disk image. Doing so keeps you from having to remove the currently running setup.</p>
<p><a href="http://blog.tech4him.com/wp-content/uploads/20100308-Stackscript-LAMP.png"><img class="alignright size-medium wp-image-892" style="border: 1px solid black; margin: 8px;" title="Stackscript LAMP" src="http://blog.tech4him.com/wp-content/uploads/20100308-Stackscript-LAMP-300x195.png" alt="" width="300" height="195" /></a>One of the standard Linode LAMP StackScripts provide a form like the image to the left when executed to deploy a new distribution. MySQL user and password, creation of a default database, as well as root O/S password and such. dec</p>
<p>Once the configuration is created, you now only need to boot into the new configuration. If you are logged into your LISH console, you will see the distribution go through the automated process of the StackScript. In our test case, an Ubuntu 8.04 LTS kernel was booted and installed, system updates installed and applied, postfix installed for local loopback only, MySQL installed and tuned, php installed and tuned and apache2 installed and tuned.</p>
<p>Pretty cool so far. Now, there is plenty left to do to get a fairly decent LAMP going that in our case would run Drupal.</p>

<p>Create a new non-root admin  user account called myadminuser and add to the admin group:</p>
<pre>adduser myadminuser
usermod -G admin myadminuser</pre>
<blockquote><p>NOTE: Looks like the admin group is already part of sudoers so your new account has sudo privileges.</p></blockquote>
<p>Update the timezone:</p>
<pre>sudo dpkg-reconfigure tzdata</pre>
<p>Secure MySQL services in a quick fashion:</p>
<pre>sudo mysql_secure_installation</pre>
<p>Enable a few Apache2 modules:</p>
<pre>sudo a2enmod deflate
sudo a2enmod expires
sudo a2enmod cache
sudo /etc/init.d/apache2 force-reload</pre>
<p>Add a few PHP tools:</p>
<pre>sudo apt-get install php5-gd
sudo apt-get install php5-curl
sudo apt-get install php5-cli</pre>
<p>Secure SSH daemon by changing the port for SSH and disallow root login:</p>
<pre>sudo vim /etc/ssh/sshd_config
-- # Protocol 1
-- Protocol 2
-- ListenAddress 10.54.55.104 #your IP
-- Port 5502 # New port different than 22 and &lt; 65535
-- PermitRootLogin no
-- X11Forwarding no

sudo /etc/init.d/ssh restart</pre>
<p>Install the firewall and configure:</p>
<pre>sudo apt-get install ufw
sudo ufw default deny
sudo ufw allow http/tcp
sudo ufw allow 5502/tcp
sudo ufw enable
sudo ufw status verbose</pre>
<p>Configured PostFix by following pieces of our<a href="http://blog.tech4him.com/2009/08/linode-setup-domain-email-forwarding/"> previous post on PostFix and domain forwarding</a>.</p>
<pre>sudo vim main.cf
-- See article referenced
sudo vim virtual
-- See article referenced
sudo postmap virtual
sudo ufw allow 25/tcp
sudo postconf -e "inet_interfaces = all"
sudo /etc/init.d/postfix restart</pre>

<p>Lastly upon reboot we noticed that mysqld was failing. The problem was that mysqld was not binding correctly. We editing the my.cnf file and added BindAddress 127.0.0.1 above our existing BindAddress 10.54.55.104. This allows mysqld to bind and listen to both local loopback and the external IP (if needed)</p>
<p>At this point, we had not installed APC or MemCached yet. Performance was quite good with this setup and the minimal memory available to this test Linode. We ran six(6) Drupal , one (1) WordPress and one (1) CMS Made simple site with sub-second response times under fairly good load.</p>
<p>Kudos to Linode.com on their StackScript concept. I can certainly see this being very appealing for providers needing to crank out Linodes with a standard configuration for customers.</p>
<p>Blessings.</p>
<img src="http://blog.tech4him.com/?ak_action=api_record_view&id=891&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.tech4him.com/2010/03/linode-stackscripts-and-lamp-servers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing APC on MediaTemple DV 3.5 for Drupal</title>
		<link>http://blog.tech4him.com/2009/12/installing-apc-on-mediatemple-dv-3-5-for-drupal/</link>
		<comments>http://blog.tech4him.com/2009/12/installing-apc-on-mediatemple-dv-3-5-for-drupal/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 19:16:13 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[apc]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[mediatemple]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.tech4him.com/?p=870</guid>
		<description><![CDATA[We have a few sites that exist on a MediaTemple DV 3.5 server. We&#8217;ve long been concerned about the lack of performance we are getting on this DV versus sites on a smaller Linode.com DV. We are not here to debate that today.
What we have done is to install APC on the MediaTemple DV in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.tech4him.com/wp-content/uploads/3815370381_4dde638066.jpg"><img class="alignleft size-medium wp-image-871" style="margin: 8px;" title="3815370381_4dde638066" src="http://blog.tech4him.com/wp-content/uploads/3815370381_4dde638066-224x300.jpg" alt="3815370381_4dde638066" width="224" height="300" /></a>We have a few sites that exist on a MediaTemple DV 3.5 server. We&#8217;ve long been concerned about the lack of performance we are getting on this DV versus sites on a smaller <a href="http://linode.com" target="_blank">Linode.com</a> DV. We are not here to debate that today.</p>
<p>What we have done is to install APC on the MediaTemple DV in order to improve performance to some degree by taking advantage of op_code caching.  Now, this is not a silver bullet for performance folks. This is just one piece of a total tuning exercise. Be forewarned.</p>
<p><span id="more-870"></span>[<em>Note: You are on your own as with anything we present. We do not warranty nor represent explicitly nor implied that this will actually work for you. In fact, you might just hose things up badly. Don't call us, we warned you.  <img src='http://blog.tech4him.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </em>]</p>
<h2>1. Install Developer Tools and Enable Root Access</h2>
<p>Log into your MediaTemple Account Center and go to the “Root Access &amp; Developer Tools” page. If Root access is not enabled, you&#8217;ll need to enable it. Be sure to set a massively secure password on this!</p>
<p>Also, if the developer tools have not yet been installed, then click the button to install them. Wait until the installation has finished before proceeding.</p>
<h2>2. Install APC</h2>
<p>Use your favorite SSH client to log into your server via SSH. Once you have logged in, you will perform the following commands:</p>
<ul>
<li>cd /usr/local/src</li>
<li>wget http://pecl.php.net/get/APC-3.0.19.tgz</li>
<li>gunzip -c APC-3.0.19.tgz | tar xf -</li>
<li>cd APC-3.0.19</li>
<li>/usr/bin/phpize</li>
<li>./configure –enable-apc –enable-apc-mmap –with-apxs2=/usr/sbin/apxs –with-php-config=/usr/bin/php-config</li>
<li>make</li>
<li>make install</li>
</ul>
<h2>3. Let PHP know about APC</h2>
<p>Now perform the following actions to modify your APC installation. (Thanks to <a href="http://www.timlinden.com/blog/server/installing-apc-cache-on-media-temple/" target="_blank">TimLinden</a> for the details)</p>
<ul>
<li>vi +/extension_dir /etc/php.ini</li>
<li>press i</li>
<li>press enter to start a new line</li>
<li>type extension = “apc.so”</li>
<li>press esc and then type :wq to exit and save (if you mess up type :q! to quit without saving)</li>
</ul>
<h2>4. Drupal APC customization</h2>
<p>Thanks to an <a href="http://2bits.com/articles/high-php-execution-times-drupal-and-tuning-apc-includeonce-performance.html" target="_blank">article from 2bits</a>, we made the following modifications to the php.ini to set some specific APC configuration options.</p>
<ul>
<li>vi +/extension_dir /etc/php.ini</li>
<li>press down arrow</li>
<li>press down arrow</li>
<li>press i</li>
<li>press enter to start a new line</li>
<li>type apc.apc.stat = 0</li>
<li>press enter</li>
<li>type apc.include_once_override = 1</li>
<li>press enter</li>
<li>type apc.shm_size = 64</li>
<li>press enter</li>
<li>press esc and then type :wq to exit and save (if you mess up type :q! to quit without saving)</li>
<li>service httpd stop</li>
<li>service httpd start</li>
</ul>
<p>For those that don&#8217;t need key press by key press instructions for the php.ini, here is what we added to the php.ini</p>
<pre>extension = “apc.so”
apc.apc.stat = 0
apc.include_once_override = 1
apc.shm_size = 64</pre>
<p>Hopefully this will help you get things started. Obviously, we are still testing and tweaking but this has provided some good improvements for a few sites that are located on a MediaTemple DV 3.5 server.</p>
<img src="http://blog.tech4him.com/?ak_action=api_record_view&id=870&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.tech4him.com/2009/12/installing-apc-on-mediatemple-dv-3-5-for-drupal/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Parent Feed Title in FeedAPI Item Node</title>
		<link>http://blog.tech4him.com/2009/10/parent-feed-title-in-feedapi-item-node/</link>
		<comments>http://blog.tech4him.com/2009/10/parent-feed-title-in-feedapi-item-node/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 22:35:58 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[feedapi]]></category>
		<category><![CDATA[openpublish]]></category>
		<category><![CDATA[templates]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://blog.tech4him.com/?p=853</guid>
		<description><![CDATA[We recently began testing the installation profile for Drupal called OpenPublish. The good folks at Phase 2 Technology have opened this installation profile (distribution) up for all to use with some key features for the semantic web. This post is not to go over or compares features with other similar distributions. Instead this is more [...]]]></description>
			<content:encoded><![CDATA[<p>We recently began testing the installation profile for <a href="http://drupal.org" target="_blank">Drupal</a> called <a href="http://www.opensourceopenminds.com/openpublish" target="_blank">OpenPublish</a>. The good folks at <a href="http://www.phase2technology.com/" target="_blank">Phase 2 Technology</a> have opened this installation profile (distribution) up for all to use with some key features for the semantic web. This post is not to go over or compares features with other similar distributions. Instead this is more about how to get the parent feed title into the template for a node created from a feed-item with the <a href="http://drupal.org/project/feedapi" target="_blank">feedapi module</a>.</p>
<p><span id="more-853"></span></p>
<p><a href="http://blog.tech4him.com/wp-content/uploads/drupal_by_line_parent_feed.png"><img class="alignright size-medium wp-image-854" title="drupal_by_line_parent_feed" src="http://blog.tech4him.com/wp-content/uploads/drupal_by_line_parent_feed-300x101.png" alt="drupal_by_line_parent_feed" width="300" height="101" /></a>Let&#8217;s jump right in. The scenario is that we have a content type of article. The node-article.tpl.php displays the Drupal node author as part of the by line of the article. In our case, we wanted to change this.</p>
<p>Instead, we will have articles created by staff, as well as articles automatically generated from RSS feeds. It is important for us to honor our partners by not showing the article as being authored by us, but instead to change the authored by line to give credit to the originating feed source where appropriate.</p>

<p>Enough talk, let&#8217;s see details.</p>
<p>First, we need to make the parent feed&#8217;s title and link available as a variable for the templates. We did this in Drupal 6 by adding to the existing template.php file. Using the <a href="http://drupal.org/node/223430" target="_blank"><em>phptemplate_preprocess_node</em></a> hook, we can add variables that can be accessed in node templates. (Note: If you are following along in an OpenPublish distribution, this function does not exist in the standard template.php file. You will need to add it.)</p>
<p>Keep in mind that when you use feedapi/feedapi node module to turn a feed item into a node, the <em>$node</em> object does not have all the details about the parent feed that generated the feed-item. It does however contain the <em>nid</em> (node id) of the feed that generated it. Soooo&#8230; in our custom code, we need to get this parent feed nid, load the feed title and url and then stuff the link into a variable to use in our node template.</p>
<p>Here is the function as added to the template.php:</p>
<pre>/**
* Override or insert PHPTemplate variables into the node templates.
*/
function phptemplate_preprocess_node(&amp;$vars) {</pre>
<pre>  // 20091029 Added for Parent Feed Title Link
 if ($vars['node']-&gt;feedapi_node-&gt;feed_nids) {
    $parent_feed_node_id = array_values($vars['node']-&gt;feedapi_node-&gt;feed_nids);
    $parent_feed_node = node_load($parent_feed_node_id[0]);
    $vars['parent_feed_link'] = l($parent_feed_node-&gt;title, $parent_feed_node-&gt;feed-&gt;url);
  }</pre>
<pre>}</pre>
<p>Just a note that the array index of <em>feed_nids</em> is not zero based but instead, the array index is the same number as the <em>nid</em>. That makes doing the typical <em>$vars['node']-&gt;feedapi_node-&gt;feed_nids[0]</em> impossible. That is where the php <em>array_values()</em> function comes to the rescue. It takes all the array values from <em>feed_nids</em> and created a zero base indexed array.</p>
<p>Now, we have a variable called <em>$parent_feed_link</em> that is available in our template files. So, our next step is to use it. Since the content type we want to impact is the article type, we are going to modify our node-article.tpl.php. Below is the portion of the file that outputs the article by line:</p>
<pre>&lt;div&gt;Article |
&lt;?php print date('m.d.y', $node-&gt;created); ?&gt;
 | By  
&lt;?php  
 $author = user_load(array('uid' =&gt; $node-&gt;uid));
 if ($parent_feed_link) {
   print $parent_feed_link;
 }
 else {
   print l($author-&gt;profile_full_name, 'user/'.$node-&gt;uid);  
 }
?&gt;    
&lt;/div&gt;</pre>
<p>As you can see above, we now test to see if the <em>$parent_feed_link</em> actually has a value. If so, we want to output that link. Otherwise, the article was not created from a feed-item and we want to show the actual author of the node.</p>
<p>I know this is simple for many of you, however it took me a little while to figure out where in Drupal 6 to generate these custom variables. In Drupal 5, you may have typically done this in the <em>_phptemplate_variables</em> hook in your template.php.</p>
<h4>Well, did we do it wrong? Do you know a better way? Let us know with a comment below.</h4>
<p>Blessings.</p>
<img src="http://blog.tech4him.com/?ak_action=api_record_view&id=853&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.tech4him.com/2009/10/parent-feed-title-in-feedapi-item-node/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What do you look for in a new hire?</title>
		<link>http://blog.tech4him.com/2009/10/what-do-you-look-for-in-a-new-hire/</link>
		<comments>http://blog.tech4him.com/2009/10/what-do-you-look-for-in-a-new-hire/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 18:03:00 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[employment]]></category>
		<category><![CDATA[hiring]]></category>
		<category><![CDATA[management]]></category>

		<guid isPermaLink="false">http://blog.tech4him.com/?p=835</guid>
		<description><![CDATA[ 
Today&#8217;s SSWUG.org newsletter contained a great few paragraphs regarding what you look for in a new hire. As a hiring manager at various levels over my career, I have often asked myself, in self-reflection, such questions.
I believe that beyond the specific technical skill sets you are looking, there are some other specific characteristics you [...]]]></description>
			<content:encoded><![CDATA[<p><span class="wp-decoratr-image"> </span></p>
<div id="attachment_838" class="wp-caption alignleft" style="width: 249px"><a href="http://blog.tech4him.com/wp-content/uploads/3528281481_71710aa279_m.jpg"><img class="size-full wp-image-838 " style="margin: 0px 20px 0px 0px;" title="Hire Me, Please" src="http://blog.tech4him.com/wp-content/uploads/3528281481_71710aa279_m.jpg" alt="Hire me, please." width="239" height="240" /></a><a rel="external" href="http://www.flickr.com/photos/photomishdan/3528281481/">Photo by Photomish Dan</a><p class="wp-caption-text">Hire me, please.</p></div>
<p>Today&#8217;s <a href="http://www.sswug.org/editorials/default.aspx?id=1797" target="_blank">SSWUG.org newsletter</a> contained a great few paragraphs regarding what you look for in a new hire. As a hiring manager at various levels over my career, I have often asked myself, in self-reflection, such questions.</p>
<p>I believe that beyond the specific technical skill sets you are looking, there are some other specific characteristics you want to find. In particular I look for a candidate that shows the following characteristics:</p>
<p><span id="more-835"></span></p>
<div style="display:block; margin:10px;">
<ul>
<li>Firm grasp of the role and what will define &#8220;success&#8221; in the role. (This is incumbent upon you to properly explain the role, the needs and the goals for the role.)</li>
<li>A fervent desire to learn and an aptitude to do so effectively</li>
<li>Demonstrated effort to connect with and network with industry peers. (It is tough for maintain critical thinking in a silo.)</li>
<li>Ability and willingness to teach others what they know. (Sometimes this is the best way to ensure learning sticks!)</li>
<li>Positive, vibrant &#8220;heart&#8221;. (Yup, I know this is hard to make tangible, but it is a real factor. This is also part of determining how the candidate would &#8220;fit&#8221; with the organization.)</li>
<li>Unquestionable honesty. (Tell me what you really know and tell me what you really don&#8217;t know but can learn. Lie to me and you&#8217;re done!)</li>
</ul>
</div>
<p>Below is the content on this topic from the <a href="http://www.sswug.org/editorials/default.aspx?id=1797" target="_blank">SSWUG.org newsletter</a> today.</p>
<blockquote><p>As a hiring manager, there have been times when I have had two very qualified DBA’s sitting in front of me.  Both of them are looking for a position on a team and both of them know their stuff.  How do you make a decision between the two?</p>
<p>As a hiring manager I have hired Jr. DBA positions as well. How do you make a decision on a role like a Jr. DBA that is really defined as someone who is starting to learn about being a database administrator and not a seasoned professional?</p>
<p>I have been in both of the above situations more than once. It is a difficult decision to make when you step back and realize that, if the DBA stays with the company for at least one year, you are trying to make a decision that will last 2,000 hours just based on a couple interviews and a resume.  The people that I end up with in the long run have given me every reason to hire them.  They have participated in a local user group and they are members of professional organizations. People that go out of their way to become better professionals are worth their weight in gold.</p>
<p>I cannot help but to remember that people can learn a number of technical skills but they have a harder time learning the desire to better themselves or to put in the extra hours to make sure something is just right.  Consider this as an example:</p>
<p>About 5 years ago I received an e-mail that was sent to me when I was the local user group president.  The person who sent me the email wanted to know how to get their first time DBA job.  I had lunch with her and another friend of mine and she talked about how she had paid to go to a conference and how she had been studying at the same time she was going to school.</p></blockquote>
<blockquote><p>She became a regular at the user group meetings and today she is starting what I believe to be her 5<sup>th</sup> year as a DBA.  She really put forth the effort to make sure she was learning and doing everything she could to become a better DBA.</p></blockquote>
<p>Unfortunately it seems that all too often, even these less technical criteria are so very difficult to find in candidates. In most of the SMB environments I have been a part of, you need depth and breadth of skills in a single individual. However, so often your IT folks break into the industry in a larger organization and get pigeon holed in a very specific skill, making it difficult to hire for us. Conversely, the more seasoned veterans with depth and breadth of skills can&#8217;t work for the salary many SMB&#8217;s and non-profits can pay. This dichotomy is were we continue to find ourselves today.</p>
<h4>What do you look for? Tell us by posting a comment below.</h4>
<img src="http://blog.tech4him.com/?ak_action=api_record_view&id=835&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.tech4him.com/2009/10/what-do-you-look-for-in-a-new-hire/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tattler 1.0 RC 1-155 Installation Problem Workaround</title>
		<link>http://blog.tech4him.com/2009/10/tattler-1-0-rc-1-155-installation-problem-workaround/</link>
		<comments>http://blog.tech4him.com/2009/10/tattler-1-0-rc-1-155-installation-problem-workaround/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 18:22:07 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[installation profile]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[tattler]]></category>

		<guid isPermaLink="false">http://blog.tech4him.com/?p=811</guid>
		<description><![CDATA[Are you a tattler? No, not the kind mom told you not to be, but rather the Tattler application from Phase2 Technology.

&#8220;Tattler (app) is an open source topic monitoring tool for today&#8217;s Web. Tattler finds and aggregates content from the Web on the topics you want. Using semantic Web technologies, Tattler mines news, websites, blogs, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.tech4him.com/wp-content/uploads/tattler_logo.png"><img class="size-full wp-image-814 alignright" title="tattler_logo" src="http://blog.tech4him.com/wp-content/uploads/tattler_logo.png" alt="tattler_logo" width="245" height="70" /></a>Are you a tattler? No, not the kind mom told you not to be, but rather the Tattler application from <a href="http://phase2technology.com/">Phase2 Technology.</a></p>
<p><span id="more-811"></span></p>
<blockquote><p>&#8220;Tattler (app) is an open source topic monitoring tool for today&#8217;s Web. Tattler finds and aggregates content from the Web on the topics you want. Using semantic Web technologies, Tattler mines news, websites, blogs, multimedia sites, and other social media like Twitter, to find mentions of the issues most relevant to a journalist, researcher, advocate or communications professional.</p>
<div>
<p>Built and distributed on open source <a href="http://drupal.org/">Drupal</a>, Tattler&#8217;s allows a user to easily filter, organize and share content gathered from the Web.&#8221;</div>
</blockquote>

<p>This Drupal installation profile was something I have been waiting to get my hands on for the last few weeks. When it finally was made available, I went to install it and immediately had a major problem with the installation.</p>
<p><a href="http://drupal.org/node/603728" target="_blank">The error</a> was during the profile installation where the content types for the <a href="http://tattlerapp.com/download">buzzmonitor module</a> are being created. Following this issue in the Drupal issue queue for Tattler, I make several passes and have come up with a work around that allows me to get Tattler up and running.</p>
<p>For those who are interested, our system that we are running Tattler on has the follow versions of O/S, MySQL and PHP:</p>
<ul>
<li>O/S Ubuntu 8.04 LTS</li>
<li>MySQL database	5.0.51a</li>
<li>PHP	5.2.11-0.dotdeb.1</li>
</ul>
<p>Now here are the steps I am taking with the current version of Tattler running and working around this particular &#8220;sources&#8221; content type error.</p>
<ol>
<li>Download and extract Tattler <a href="http://tattlerapp.com/sites/default/files/releases/tattler-1.0RC1-155.tar.gz">tattler-1.0RC1-155.tar.gz </a>(Don&#8217;t run the installer yet!)</li>
<li><a href="http://tattlerapp.com/download">Download Buzzmonitor</a> module version <a href="http://drupal.org/node/499206">6.x-1.0-beta1</a>. (IMPORTANT: Version 1, NOT 2)</li>
<li>Extract Buzzmonitor module version 1 into the /sites/all/modules/buzzmonitor directory of the Tattler distribution.</li>
<li>Now, run the Tattler installation.</li>
<li>Once the Tattler installation completes download the Buzzmonitor <a href="http://drupal.org/node/603578">6.x-2.0-beta1</a> (IMPORTANT: Version 2, NOT 1)</li>
<li>Extract this to your Tattler installation and run the update.php script.</li>
</ol>
<p>Doing this has worked around the problem but has not fully identified the source of the problem. It appears that not everyone is having this problem so remediation is a bit slow while the maintainers await more information. Hopefully this points them in a good direction.</p>
<p>BTW, now that I have Tattler up and running, I am REALLY excited. Less than 24 hours of running it and I still feel like a kid in a candy store. The &#8220;application&#8221; is really neat, but I also can&#8217;t wait to get in and see how they &#8220;glued&#8221; everything together within Drupal.</p>
<p>Blessings</p>
<img src="http://blog.tech4him.com/?ak_action=api_record_view&id=811&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.tech4him.com/2009/10/tattler-1-0-rc-1-155-installation-problem-workaround/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Windows 7 and the Dreaded Temp Profile</title>
		<link>http://blog.tech4him.com/2009/09/windows-7-and-the-dreaded-temp-profile/</link>
		<comments>http://blog.tech4him.com/2009/09/windows-7-and-the-dreaded-temp-profile/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 22:10:45 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[profiles]]></category>
		<category><![CDATA[registry]]></category>
		<category><![CDATA[windows 7]]></category>

		<guid isPermaLink="false">http://blog.tech4him.com/?p=756</guid>
		<description><![CDATA[Thanks to Google, I came across this article from Microsoft about Windows Server 2008 R2 and a similar issue. In it, I opened regedt32.exe and deleted the offending profile registry key]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.tech4him.com/wp-content/uploads/windows7.jpg"><img class="alignleft size-medium wp-image-764" style="margin: 8px;" title="windows7" src="http://blog.tech4him.com/wp-content/uploads/windows7-300x182.jpg" alt="windows7" width="300" height="182" /></a>Phew. For someone who&#8217;s corporate OS deployment experience has purposefully not included Vista, Windows 7 poses some challenges and a need to re-learn some things. Recently, one of our users brought us their machine that they recently had the hard drive replaced by a helpful soul. Unfortunately, the helpful soul returned the machine with Windows 7 RC rather than Windows XP Professional and our user has been using it for several weeks already. (Yes, I know this is not really the type of work I do, but hey, when folks are out of the office in a small organization, everyone pitches in.)</p>
<p><span id="more-756"></span></p>
<p>First thing we did was setup the local administrator account so we had a way in no matter what. Next, the machine was added to our domain. No problem. Next was to copy the local user profile to the domain profile, overwriting the basic domain profile and setting proper permissions. DOH! No, wait a minute. Why can&#8217;t I get into the Documents and Settings folder?</p>

<p>Some quick reading and I realized that in Vista and now Windows 7, this is really just a symbolic link of sorts and the real profiles are in C:\Users. So I copy local profile folders over to the new domain profile. Oops, another revelation, now I have copies of core profile folders and files. Ugh! Quick, delete the domain user profile and try again. Nope!</p>
<p>Now every time I try to login as the domain account, it creates a temp profile, even after deleting the profile for this account. Argh!  <img src='http://blog.tech4him.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Thanks to Google, I came across <a href="http://support.microsoft.com/kb/960464/" target="_blank">this article</a> from Microsoft about Windows Server 2008 R2 and a similar issue. In it, I opened regedt32.exe and deleted the offending profile registry key</p>
<pre>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\&lt;User_SID&gt;</pre>
<p>This solved the problem of always creating a temp profile upon login.</p>
<p>Now back to trying to copy the local profile to the domain profile. Let is suffice that after a bit of Googling combined with much trial and error, I came across these steps that seem to provide a solution.</p>
<ol>
<li>Download Windows Enabler from <a href="http://www.angelfire.com/falcon/speedload/Enabler.htm" target="_blank">http://www.angelfire.com/falcon/speedload/Enabler.htm</a></li>
<li> Save it to a USB drive. (That&#8217;s another reason I love this little utility.)</li>
<li> Right-Click &#8220;Windows Enabler.exe&#8221; and choose &#8220;Run As Administrator&#8221;</li>
<li>Click the Notification Tray icon for Windows Enabler to turn Windows Enabler on.  The icon with change to say &#8220;on&#8221;.</li>
<li>Open the System Properties applet and choose Advanced System Settings.</li>
<li>Open the &#8220;User Profiles&#8221; dialog and click on the grayed out &#8220;Copy To&#8230;&#8221; button and it will become enabled.</li>
<li>Copy the profile as you used to in XP and Vista.</li>
<li>When completed. We need to update permissions on the registry key.</li>
<li>Start &#8211;&gt; Run &#8211;&gt;regedt32 (Open the registry editor)</li>
<li>Locate the profile key in: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\&lt;User_SID&gt;</li>
<li>Right click on the Key and choose &#8220;Permissions&#8221;</li>
<li>Locate the User account that will use this profile and give Full Control</li>
<li>Reboot</li>
</ol>
<p>After all of that, I was able to log in and most everything was good to go. The only issue we had was with Outlook as the .PST did not move. I then manually copied the .pst files to their proper place in the new profile and then added them to the mail profile for this user, opened Outlook and then remove the old data files from the profile.</p>
<p>Long way around but it ended up working. Now I&#8217;m no Windows 7 expert ,just sharing and documenting my steps for future reference. Your mileage might vary.</p>
<p>Blessings.</p>
<img src="http://blog.tech4him.com/?ak_action=api_record_view&id=756&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.tech4him.com/2009/09/windows-7-and-the-dreaded-temp-profile/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linode Setup &#8211; Domain Email Forwarding</title>
		<link>http://blog.tech4him.com/2009/08/linode-setup-domain-email-forwarding/</link>
		<comments>http://blog.tech4him.com/2009/08/linode-setup-domain-email-forwarding/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 01:51:33 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[linode]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.tech4him.com/?p=722</guid>
		<description><![CDATA[Previously I talked about our adventure moving to the Linode.com service. Now that the websites have been running spectacularly for a few a week, I noticed that emails were not being sent or received properly from some of the domains. Doh! See how we fixed it.

For our sites, we like Gmail. So I want all [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-725" href="http://blog.tech4him.com/2009/08/linode-setup-domain-email-forwarding/2228964249_b1f77e5564_o/"><img class="alignright size-full wp-image-725" style="margin: 8px;" title="Postfix" src="http://blog.tech4him.com/wp-content/uploads/2228964249_b1f77e5564_o.jpg" alt="Postfix" width="256" height="192" /></a><a href="http://blog.tech4him.com/2009/08/drupal-can-fly-on-a-linode/">Previously</a> I talked about our adventure moving to the Linode.com service. Now that the websites have been running spectacularly for a few a week, I noticed that emails were not being sent or received properly from some of the domains. Doh! See how we fixed it.</p>
<p><span id="more-722"></span></p>
<p>For our sites, we like Gmail. So I want all my domains to be sent to my Gmail account. This is where we need to setup postfix to forward email for these domain names to a few Gmail account. Below we talk about how we made it happen.</p>
<p>To back up a few steps, I&#8217;ll explain what was already installed. We chose to use postfix instead of sendmail because of the security issues surrounding sendmail.</p>
<p><code>sudo apt-get install postfix</code></p>
<p><code>sudo dpkg-reconfigure postfix</code></p>

<h2>Setup Domain Catch-all Aliases</h2>
<p>We chose the Internet Site option, set postfix mail domain to our domain name (e.g. example.com). Hmmmm&#8230;. so why is it not working. Remember in the previous article I said it had been many moons since I did Unix or Linux admin? Well, I guess I should have added that I have never setup a mail server on Linux.</p>
<p>Thanks to the first two sections of <a href="http://www.24hourapps.com/2009/01/linode-ubuntu-mail-server-part-2.html" target="_blank">this article</a> we got email working.</p>
<h3>Step 1.</h3>
<p><code>sudo vi /etc/postfix/main.cf</code></p>
<p>and change this to myhostname to localhost</p>
<p><code>myhostname = localhost</code></p>
<h3>Step 2</h3>
<p>Add the following lines to the main.cf file as well.</p>
<p><code>virtual_alias_domains = example1.com example2.com<br />
virtual_alias_maps = hash:/etc/postfix/virtual</code></p>
<p>The virtual_alias_domains is a space separated list of the domain names that you want postfix to handle mail for.</p>
<h3>Step 3</h3>
<p>Now we need to create the virtual alias map file</p>
<p><code>cd /etc/postfix<br />
sudo vi virtual<br />
</code></p>
<p>Now you have just created the file named virtual. Add a mapping of where to send the emails for the various domains and email addresses.</p>
<p>First we will deal with the catch all forwarding. The format is the domain name then a space and then the email address you want all emails to go to if they don&#8217;t match a particular email address.</p>
<p><code>@example1.com myusername@gmail.com<br />
@example2.com myusername@gmail.com</code></p>
<p>Next you can add specific email address mappings instead of the catch alls. This format is similar and starts with the specific domain email address, a space and then the forwarder email address.</p>
<p><code>admin@example1.com myusername@gmail.com<br />
webmaster@example1.com otheruser@gmail.com</code></p>
<h3>Step 4</h3>
<p>Now we need to create the hash map the speeds up how postfix reads these virtual mappings.</p>
<p><code>cd /etc/postfix<br />
sudo postmap virtual</code></p>
<h3>Step 5</h3>
<p>Finally we restart postfix</p>
<p><code>sudo /etc/init.d/postfix restart</code></p>
<h2>Networking</h2>
<p>Woohoo, we are now sending email&#8230;.short-lived celebration though. Still not receiving email to these addresses from outside the server. hmmmm&#8230;.</p>
<p>Okay, I&#8217;m not a rocket scientist. After about 15 minutes of checking config files, logs and such I finally just tried to telnet to port 25 on the server. Yup, no answer at all.</p>
<p>In my haste to lock down the server last week, I had not opened port 25. A quick change to the firewall and we are good to go. Sending and receiving emails for the mapped domains works wonderful.</p>
<p><code>sudo ufw allow 25/tcp<br />
</code></p>
<p>You could stop here, but again, I&#8217;m a bit paranoid.</p>
<p><a href="http://www.spamhelp.org/shopenrelay/" target="_blank">Use this tool</a> to ensure you are not a bad netizen by providing an open relay server.</p>
<h2>Blacklist with Linode IP?</h2>
<p>Now, this last bit was specific to our Linode service and the IP address assign in the specific datacenter we are located in. Your mileage may vary. It was noticed that when sending email to a particular user, the message was returned with a 554 message rejected response.</p>
<p>A bit more investigation and we found that the reason was due to our ip address being listed in the <a href="http://www.us.sorbs.net/overview.shtml" target="_blank">SORBS</a> database. Apparently our IP is registered as being a Dynamic User/Host List (DUHL). Essentially, they think it is a dynamically assigned IP address such as those used for home ISP users. A little bit of reading and we submitted our request to have our IP address de-listed. I guess we&#8217;ll have to wait a bit to see what happens.</p>
<p>Blessings.</p>
<img src="http://blog.tech4him.com/?ak_action=api_record_view&id=722&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.tech4him.com/2009/08/linode-setup-domain-email-forwarding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupal can Fly&#8230;.on a Linode</title>
		<link>http://blog.tech4him.com/2009/08/drupal-can-fly-on-a-linode/</link>
		<comments>http://blog.tech4him.com/2009/08/drupal-can-fly-on-a-linode/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 01:52:37 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[linode]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.tech4him.com/?p=694</guid>
		<description><![CDATA[Yup, I learned this week just how well Drupal can fly. Well, maybe not measured in feet above the earth but certainly in terms of response time. Come take a look at a new setup were are testing out.

This week we got fed up with such terribly sporadic performance on a MediaTemple grid server account. [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-702" href="http://blog.tech4him.com/2009/08/drupal-can-fly-on-a-linode/linodecom/"><img class="alignleft size-full wp-image-702" style="margin: 8px;" title="linodecom" src="http://blog.tech4him.com/wp-content/uploads/linodecom.png" alt="linodecom" width="295" height="73" /></a>Yup, I learned this week just how well Drupal can fly. Well, maybe not measured in feet above the earth but certainly in terms of response time. Come take a look at a new setup were are testing out.</p>
<p><span id="more-694"></span></p>
<p>This week we got fed up with such terribly sporadic performance on a <a href="http://www.mediatemple.net/webhosting/gs/" target="_blank">MediaTemple grid server account</a>. After many months of watching performance go from acceptable to abysmal, we finally said &#8220;enough&#8221; with a few sites that were running on this account.</p>
<p>We had just finished doing a major migration of another few of sites to a new <a href="http://www.mediatemple.net/webhosting/dv/pricing.php" target="_blank">MediaTemple Rage dedicated virtual server</a>. The DV&#8217;s at MediaTemple are fantastic. After a day of tuning and tweaking, those sites are humming. But, I think this is what really caused the decision to leave the grid server account for some other sites. Grid server performance was terrrible if you site was not a significantly active site.</p>
<p>After a bit of digging, I decide to try my hand at the <a href="http://www.linode.com/" target="_blank">Linode.com VPS</a> route. Linode.com has long been praised in Drupal circles for their value/performance proposition. Essentially a Linode is a linux virtual server in a Xen environment. Now, please note that this is not for the faint of heart. These are raw server distributions. No web server, mysql, php, control panel pre-installed. You are building your linux server from scratch. Be fore-warned.</p>
<p>It&#8217;s been many moons since I did Unix admin work, let alone Linux. I&#8217;ve been spoiled by Plesk and cPanel with most hosts. So this was certainly a challenge. Linode provides some very basic tutorials for getting your LAMP server setup in your choice of linux distributions. Again, these tutorials are very basic and will not suffice for long term hosting and certainly don&#8217;t secure your server.</p>
<p><a rel="attachment wp-att-710" href="http://blog.tech4him.com/2009/08/drupal-can-fly-on-a-linode/linodedashboard/"><img class="aligncenter size-medium wp-image-710" title="linodedashboard" src="http://blog.tech4him.com/wp-content/uploads/linodedashboard-300x108.png" alt="linodedashboard" width="300" height="108" /></a></p>
<p>One nice thing about Linode.com is a very active community in both their forums and IRC (#linode). I popped into irc and asked a few basic questions. I got some decent help right away, along with the usual, &#8220;stupid noobie&#8221; style remarks. Oh well, ignore the chaff.</p>
<p>Upon signing up for my Linode 540 I had a running server in about 34 minutes. Of course, I learned a few things, trashed it and made a new server. Man, my command line Apache2 skills have vastly improved in the last 24 hours. <img src='http://blog.tech4him.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Luckily I could just &#8220;rsync&#8221; all the files for a site from the old grid server, directly to my new linode super fast. Mysql db backup and then resotred to the linode server. Then I edited my /windows/system32/drives/etc/host file to point www.myexample.com to the new linode IP. This let me test the site on the linode server without changing DNS for the time being. (Heck, you don&#8217;t want your sites down, right?)</p>

<p>I typed the url into my browser and in less than 1 second the page was rendering. Wow! Now compare that to the 15 second lag time on the grid server for a first time hit. Incredible. Of course, I had to run through lots of site pages just to keep seeing that great response time.</p>
<p>Now for my test installation I went with Ubuntu 8.04 LTS OS image. Then, <a title="Aegir server preparation" href="http://groups.drupal.org/node/25482" target="_blank">this great Aegir prep article</a> on <a title="Drupal.org" href="http://drupal.org" target="_blank">Drupal.org</a> was used as a basis for the install. The only difference was that that instead of manually installing Apache2 and Mysql I installed the lamp-server^ package which does this and more for you. (Don&#8217;t forget the ^ carrot as part of the package name.)</p>
<p><code>sudo apt-get install lamp-server^</code></p>
<p>I also found that a particular plugin for Wordpress needed curl instead of wget. So a quick install of php5-curl did the trick.</p>
<p><code> sudo apt-get install php5-curl</code></p>
<p>For those that don&#8217;t want to deal with command line might want to look at the <a href="http://www.virtualmin.com/download" target="_blank">VirtualMin GPL</a> product which provides a web based interface to manage your hosting sever. The automatic install is a breeze but you&#8217;ll need to do some reading to understand how to create your first virtual server and such. For us, we stuck to the command line.</p>
<p>One thing that I guess I didn&#8217;t get right away was that one linode package equals a single linux server. The reason for this is that I&#8217;m used to VMware environments where it is nothing to bring up a new VM on any one host. For some reason my brain was thinking of the linode as the host, not the guest. Oh well. My bad for adding a second ip address to my account, create new disk images and then realize, &#8220;How do I boot this second system?&#8221;. Doh! You can&#8217;t.</p>
<p>Of course, it is easy enough order another linode and move disk images between linodes. Also, Linode bills per month (or annually) but you get credit for days not used. So&#8230;you can add a linode to create a new &#8220;hosting server&#8221;, set it up the way you want it, migrate everything from your current linode and then delete the old linode. Doing this, will credit you for the unused days in the billing cycle for the old linode. Essentially, you pay for each days use which is great for minimal cost + flexibility.</p>
<blockquote><p><em>On average, a Linode 360 host has 40 Linodes on it. A Linode 540 host has on average 30.  Linode 720 host: 20 Linodes; Linode 1080 host: 15; Linode 1440 host: 10; Linode 2880: 5.</em></p></blockquote>
<p>Another exciting item is the announced Linode API. This new api is clean and provides 30+ methods for managing Linode accounts. I am interested at looking into this more and could easily see someone building a module for Aegir to provision more Linodes as needed for new Drupal sites, etc&#8230; This has got to have quite a big potential for folks wanting to automate Drupal hosting but want to stay away from the Plesk and cPanel type offerings.</p>
<p>As for flying, on the MediaTemple (gs) account, it would average between 2-10 seconds (2000+ ms) for TTFB for a lightly used site. Now the same site is pulling 400-800 ms TTFB. Now that&#8217;s a difference and in my opinion worth the extra administration. Even our MediaTemple (DV) rage is pulling TTFB of around 600-800 ms.</p>
<pre>Linode 540              $39.95/mo     400-800 ms TTFB
MediaTemple (gs)        $20.00/mo     &gt; 2000 ms TTFB
MediaTemple (dv) Rage   $100.00/mo    600-800 ms TTFB</pre>
<p style="text-align: center;"><a rel="attachment wp-att-705" href="http://blog.tech4him.com/2009/08/drupal-can-fly-on-a-linode/loadtime/"><img class="size-full wp-image-705 aligncenter" style="margin: 8px;" title="loadtime" src="http://blog.tech4him.com/wp-content/uploads/loadtime.png" alt="loadtime" width="436" height="172" /></a></p>
<p style="text-align: center;"><a rel="attachment wp-att-705" href="http://blog.tech4him.com/2009/08/drupal-can-fly-on-a-linode/loadtime/"></a>All in all, the linode service has been great, performance superb and freedom impressive. Only time will tell how well this will stay this way, but judging by the many others praising Linodes, the ride should be sweet.</p>
<p>Linode Drupal references:</p>
<ul>
<li><a href="http://drupal.org/node/194971" target="_blank">http://drupal.org/node/194971</a></li>
<li><a href="http://drupal.org/node/547910" target="_blank">http://drupal.org/node/547910</a></li>
<li><a href="http://www.rundrupal.com/linode-review" target="_blank">http://www.rundrupal.com/linode-review</a></li>
<li><a href="http://www.linodereview.com/linode-drupal" target="_blank">http://www.linodereview.com/linode-drupal</a></li>
<li><a href="http://hostingfu.com/article/linode-xen-vps-review" target="_blank">http://hostingfu.com/article/linode-xen-vps-review</a></li>
<li><a href="http://www.jeffbeeman.com/node/23" target="_blank">http://www.jeffbeeman.com/node/23</a></li>
</ul>
<p>Recent write-up</p>
<ul>
<li>http://www.ddj.com/hpc-high-performance-computing/219401166</li>
</ul>
<img src="http://blog.tech4him.com/?ak_action=api_record_view&id=694&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.tech4him.com/2009/08/drupal-can-fly-on-a-linode/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
