<?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>This is not supported dot com</title>
	<atom:link href="http://www.thisisnotsupported.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thisisnotsupported.com</link>
	<description>Making cloud servers work since 2010</description>
	<lastBuildDate>Sun, 03 Mar 2013 17:44:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>EOL of Thisisnotsupported.com</title>
		<link>http://www.thisisnotsupported.com/eol-of-thisisnotsupported-coml/</link>
		<comments>http://www.thisisnotsupported.com/eol-of-thisisnotsupported-coml/#comments</comments>
		<pubDate>Sun, 03 Mar 2013 17:44:04 +0000</pubDate>
		<dc:creator>nomad</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.thisisnotsupported.com/?p=365</guid>
		<description><![CDATA[Well I have not updated this blog in a while, frankly been to busy learning how to do new things and got tired of it. I&#8217;m now working to created a new space that better reflects my current IT mindset. http://www.cybermerc.org I will be refreshing a few of the better articles and incorporating them into</p><p class="more-link"><a href="http://www.thisisnotsupported.com/eol-of-thisisnotsupported-coml/">(Read More...)</a></p>]]></description>
				<content:encoded><![CDATA[<p>Well I have not updated this blog in a while, frankly been to busy learning how to do new things and got tired of it. I&#8217;m now working to created a new space that better reflects my current IT mindset.</p>
<p><a title="My new home" href="http://www.cybermerc.org" target="_blank">http://www.cybermerc.org</a></p>
<p>I will be refreshing a few of the better articles and incorporating them into my new site. I will be leaving this site up for the next few months but eventually I will pull the plug.</p>
<p>No-Mad</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisisnotsupported.com/eol-of-thisisnotsupported-coml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rackspace Cloud Server API basics</title>
		<link>http://www.thisisnotsupported.com/rackspace-cloud-server-api-basics/</link>
		<comments>http://www.thisisnotsupported.com/rackspace-cloud-server-api-basics/#comments</comments>
		<pubDate>Tue, 26 Jun 2012 05:56:59 +0000</pubDate>
		<dc:creator>nomad</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Cloud Automation]]></category>
		<category><![CDATA[Rackspace]]></category>

		<guid isPermaLink="false">http://www.thisisnotsupported.com/?p=303</guid>
		<description><![CDATA[So you have made the decision to wean off the GUI and learn something about using a command line API tool. The Rackspace Cloud Servers API basics starts with using a simple tool in this case the openstack-compute command line tool. I will begin by showing you the main uses of the most common command</p><p class="more-link"><a href="http://www.thisisnotsupported.com/rackspace-cloud-server-api-basics/">(Read More...)</a></p>]]></description>
				<content:encoded><![CDATA[<p>So you have made the decision to wean off the GUI and learn something about using a command line API tool. The Rackspace Cloud Servers API basics starts with using a simple tool in this case the <a title="openstack-compute github repository" href="https://github.com/jacobian/openstack.compute">openstack-compute</a> command line tool. I will begin by showing you the main uses of the most common command line tool to manage Rackspace cloud servers. This article is the first in a series of &#8216;basic&#8217; articles that will show you various command line tools to use to customize your Rackspace experience. This tool is a simple python command line interface used to issue direct API calls to Rackspace cloud servers. It provides all the server controls you would find within the control panel in a single command line interface.</p>
<p><strong>Installation:</strong>  The program is a simple python command line script which should be able to be installed on any OS with python installed. I wont even bother going over how to install it, you can figure it out, If you can not install software on your workstation you might want to stay away from a server- sorry.</p>
<p><strong>Basic configuration:</strong>  The tool is written to allow you to pass the account username and API key via the command line or add it to your system as an environment variable. On a Unix system this is just a matter of adding the following lines to your profile.</p>
<blockquote>
<pre>export OPENSTACK_COMPUTE_USERNAME=frankjones
export OPENSTACK_COMPUTE_APIKEY=4f3wO9ssdfaer2kw21sdf0</pre>
</blockquote>
<p>Before we dig any deeper you may to want to look over the documentation for this tool located <a title="openstack-compute documentation" href="http://openstackcompute.readthedocs.org/en/latest/index.html">here</a>.  Next you may want to review the <a title="Rackspace Developers Documentation" href="http://docs.rackspace.com/servers/api/v1.0/cs-devguide/content/Overview-d1e70.html" target="_blank">Rackspace developers documentation</a> to better understand the terminology used with this tool. So lets get to the meat of this article -</p>
<p><strong> How to use this great little tool </strong></p>
<p><strong>The list command:</strong>  First lets start with a example of listing all the servers on your account. A basic command as long as the username and APIkey are passed via the environment variables if not you will need to add: &#8211;username &lt;rackspace username&gt; &#8211;apikey &lt;account API key&gt; to every command listed in this article.</p>
<blockquote><p>$ openstack-compute list<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+<br />
|    ID           |       Name           | Status  | Public IP      |   Private IP   |<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+<br />
| 20151110 | webtest2           | ACTIVE | 50.56.22.1 | 10.177.192.8   |<br />
| 20121115 | logserver           | ACTIVE | 50.56.23.5 | 10.177.192.4   |<br />
| 20121113 | webtest1            | ACTIVE | 50.56.23.2| 10.177.194.1    |<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+</p></blockquote>
<p>This gives us a quick view of all the servers on the account. It provides the server ID, name, and server status which are required to dig deeper into the server details.</p>
<p><strong>The show command:</strong>  Now lets look at the details on a specific server (viewed by ID). The format is: openstack-compute show &lt;server ID&gt;</p>
<blockquote><p>$ openstack-compute show 20121113<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />
|  Property  |              Value                            |<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />
| flavor       | 1G server                                    |<br />
| hostId     | 3fc8serbc4ea8sef916c08         |<br />
| id             | 20121113                                      |<br />
| image      | CentOS 6.2                                 |<br />
| metadata | {}                                                 |<br />
| name        | webtest1                                     |<br />
| private ip | 10.177.194.1                               |<br />
| progress   | 100                                              |<br />
| public ip  | 50.56.23.2                                  |<br />
| status       | ACTIVE                                       |<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+</p></blockquote>
<p>This provides a list of details about the specific server. Such as image and flavor type which are details that are needed to create new servers.</p>
<p><strong>The flavor-List command:</strong>  Flavor is the term for the server size which includes RAM and disk size available. The flavors are listed in RAM size and start at the size of 256MB and include 512MB,1GB, 2GB, 4GB, 8GB, 15GB, and 30GB. Below is a list of the flavors available on Rackspace cloud servers with the RAM and Disks sizes listed.</p>
<blockquote><p>$ openstack-compute flavor-list<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;+<br />
| ID |      Name     |  RAM  | Disk |<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;+<br />
| 1  | 256 server    | 256   | 10      |<br />
| 2  | 512 server    | 512   | 20      |<br />
| 3  | 1GB server    | 1024  | 40    |<br />
| 4  | 2GB server    | 2048  | 80   |<br />
| 5  | 4GB server    | 4096  | 160  |<br />
| 6  | 8GB server    | 8192  | 320  |<br />
| 7  | 15.5GB server | 15872 | 620  |<br />
| 8  | 30GB server   | 30720 | 1200 |<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;+</p></blockquote>
<p><strong>The image-list command:</strong>  Next are images, they are the OS builds that are available. Images fall into two categories, the basic models provided by Rackspace and any custom images you have created within your account. Notice in the example below the last image has a much higher ID number, that is a custom image the rest are the current Rackspace default OS choices. Unlike Amazon there is no shared image pool so you can only build a default system provided by Rackspace or your own custom built image.</p>
<blockquote><p>$ openstack-compute image-list<br />
+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+<br />
|    ID    |                        Name                                         | Status |<br />
+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+<br />
| 24       | Windows Server 2008 SP2 x64                       | ACTIVE |<br />
| 31       | Windows Server 2008 SP2 x86                       | ACTIVE |<br />
| 56       | Windows Server 2008 SP2 x86 &#8211; MSSQL2K8R2          | ACTIVE |<br />
| 57       | Windows Server 2008 SP2 x64 &#8211; MSSQL2K8R2          | ACTIVE |<br />
| 85       | Windows Server 2008 R2 x64                        | ACTIVE |<br />
| 86       | Windows Server 2008 R2 x64 &#8211; MSSQL2K8R2           | ACTIVE |<br />
| 89       | Windows Server 2008 R2 x64 &#8211; SQL2K8R2 Web         | ACTIVE |<br />
| 91       | Windows Server 2008 R2 + SQL Server 2012 Standard | ACTIVE |<br />
| 92       | Windows Server 2008 R2 + SQL Server 2012 Web      | ACTIVE |<br />
| 100      | Arch 2011.10                                      | ACTIVE |<br />
| 103      | Debian 5 (Lenny)                                  | ACTIVE |<br />
| 104      | Debian 6 (Squeeze)                                | ACTIVE |<br />
| 108      | Gentoo 11.0                                               | ACTIVE |<br />
| 109      | openSUSE 12                                           | ACTIVE |<br />
| 110      | Red Hat Enterprise Linux 5.5                   | ACTIVE |<br />
| 111      | Red Hat Enterprise Linux 6                        | ACTIVE |<br />
| 112      | Ubuntu 10.04 LTS                                  | ACTIVE |<br />
| 114      | CentOS 5.6                                            | ACTIVE |<br />
| 115      | Ubuntu 11.04                                           | ACTIVE |<br />
| 116      | Fedora 15                                               | ACTIVE |<br />
| 118      | CentOS 6.0                                           | ACTIVE |<br />
| 119      | Ubuntu 11.10                                         | ACTIVE |<br />
| 120      | Fedora 16                                               | ACTIVE |<br />
| 121      | CentOS 5.8                                             | ACTIVE |<br />
| 122      | CentOS 6.2                                             | ACTIVE |<br />
| 125      | Ubuntu 12.04 LTS                                  | ACTIVE |<br />
| 126      | Fedora 17                                                | ACTIVE |<br />
| 17177128 | test-setup-122911                                 | ACTIVE |<br />
+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+</p></blockquote>
<p>To create a new server you need to understand these two options so you can add these variables to create a new system.</p>
<p><strong>The boot command:</strong>  Here is an example of a create command for a new server named &#8216;webtest3&#8242; with a size of 1GB (flavor 3) and the OS of CentOS 6.2 (image 122). The format is: openstack-compute boot &lt;flavor #&gt; &lt;image #&gt; &lt;new server name&gt;</p>
<blockquote><p>$ openstack-compute boot &#8211;flavor 3 &#8211;image 122 webtest3<br />
+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
|  Property |                             Value                              |<br />
+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
| addresses | {u&#8217;public&#8217;: [u'50.56.118.48'], u&#8217;private&#8217;: [u'10.19.1.12']} |<br />
| adminPass | v7lAC76webtest3                                                |<br />
| flavorId  | 3                                                                                  |<br />
| hostId    | 3fe7f91b4657cf0a098f5df1b27                             |<br />
| id        | 20936230                                                                      |<br />
| imageId   | 122                                                                            |<br />
| metadata  | {}                                                                              |<br />
| name      | webtest3                                                                    |<br />
| progress  | 0                                                                                |<br />
| status    | BUILD                                                                        |<br />
+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+</p></blockquote>
<p>The output shows the command was accepted and the new server was created, it has setup the public and private IP&#8217;s and assigned a new root login. The status is &#8216;BUILD&#8217; and will take 3-5 minutes to completed then the status will become &#8216;ACTIVE&#8217; when the server is ready for your use. To check the status and ensure the build completes just run the &#8216;show&#8217; command. The format is: openstack-compute show &lt;server ID&gt;</p>
<blockquote><p>$ openstack-compute show 20936230<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
|  Property  |              Value               |<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
| flavor     | 1GB server                       |<br />
| hostId     | 3fe7f91b4657cf0a098f5df1b27 |<br />
| id         | 20936230                         |<br />
| image      | CentOS 6.2                       |<br />
| metadata   | {}                               |<br />
| name       | webtest3                         |<br />
| private ip | 10.19.1.12                     |<br />
| progress   | 100                              |<br />
| public ip  | 50.56.118.48                    |<br />
| status     | ACTIVE                           |<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+</p></blockquote>
<p><strong>The reboot command:</strong>  Another useful command is the server reboot command this can be important if the server locks up or otherwise fails and you need to restore it. The command is pretty straight forward its : openstack-compute reboot &lt;server ID&gt;  This command will not have any output but you can use the &#8216;show&#8217; command to see the status which will at first be &#8216;REBOOT&#8217; then &#8216;ACTIVE&#8217; once its up and running again.</p>
<p><strong>The root-password command:</strong>  Along that same line say you have forgot your root password (or administrator on Windows images) and need to reset it to get access to your server again. The control panel will let you reset it, but it generates a random new password for you. This program allows you to reset it to whatever you want in a single command: openstack-compute root-password &lt;server ID&gt; it will then prompt you for the new password twice to ensure its typed correctly. The server will then reboot and once back online the new password will be in effect.</p>
<p><strong>The rename command:</strong>  One more useful command is the server rename command, all this does is change the server name as its listed in the API and the control panel it does not make any changes to the server such as changing the hostname. The command is : openstack-compute rename &lt;server ID&gt; &lt;new server name&gt;</p>
<p><strong>The image-create command: </strong> So now you have your new server all configured the way you want it. Before you go into production or make that next new code push you decide to make a on-demand backup of the server in its current state. So if needed you can &#8216;roll back&#8217; and restore the system to this point in time. This is a full backup of the drive containing all data (configuration files etc). The format for this is:  openstack-compute &lt;server ID&gt; &lt;backup name&gt;</p>
<blockquote><p>$ openstack-compute image-create 20936230 test3backup<br />
+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />
| Property |           Value           |<br />
+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />
| id       | 23478575                  |<br />
| name     | test3backup               |<br />
| serverId | 20936230                  |<br />
| status   | QUEUED                    |<br />
| updated  | 2012-06-23T00:44:35-05:00 |<br />
+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+</p></blockquote>
<p>The creation of the server image can take a few minutes (depending on the number of inodes on the server), once it has completed it will be added to image listing for your account so you can use the command: openstack-compute image-list to see all your images and the new one should be listed at the bottom.</p>
<p><strong>The image-delete command: </strong> So now times goes by and you have created multiple backup images and there are several you no longer need. Even though they are pretty cheap to store you may want to remove some of the old ones. Lucky for you there is a command for just that purpose. First you would do a image-list and pick out the image ID of the image you want to remove then issue the following command: openstack-compute image-delete &lt;image ID&gt;  This command will run and you will not get any direct feedback but next time you run and image-list command you will see the image is no longer listed on your account.</p>
<p><strong>The resize command:</strong>  The next issue I will show is how to resize a server via the command line tool. First off we need to determine what size the server is and what size you want it to become. Using the show command you can see the details of a specific server: openstack-compute show &lt;server ID&gt; using the example server above (webtest3) its a 1GB server and we can to resize it to a 256MB server. The command to resize using this example is: openstack-compute resize &lt;server ID&gt; &lt;flavor #&gt;</p>
<p>Now the resize command has no output so you have to use the show command to see if the resize started, if it is working it will show status of PREP_RESIZE as the example below shows.</p>
<blockquote><p>$ openstack-compute show 20936230<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
|  Property  |              Value               |<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
| flavor     | 1GB server                       |<br />
| hostId     | 3fe7f91b4657cf0a098f5df1b27ea1fa |<br />
| id         | 20936230                         |<br />
| image      | CentOS 6.2                       |<br />
| metadata   | {}                               |<br />
| name       | webtest3                         |<br />
| private ip | 10.179.1.102                     |<br />
| progress   | 0                                |<br />
| public ip  | 50.56.188.248                    |<br />
| status     | PREP_RESIZE                      |<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+</p></blockquote>
<p>The resize can take some time depending on the size of the server and the number of inodes in use. Once it has completed it will reboot and come back online as the new size and be in the &#8216;verify resize&#8217; state. From this point you need to check the status of the server then either confirm or revert the resize.</p>
<blockquote><p>$ openstack-compute show 20936230<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
|  Property  |              Value               |<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
| flavor     | 256 server                       |<br />
| hostId     | 4a9002b8e571ff57c1baf981844270b3 |<br />
| id         | 20936230                         |<br />
| image      | CentOS 6.2                       |<br />
| metadata   | {}                               |<br />
| name       | webtest1                         |<br />
| private ip | 10.179.1.102                     |<br />
| progress   | 0                                |<br />
| public ip  | 50.56.188.248                    |<br />
| status     | VERIFY_RESIZE                    |<br />
+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+</p></blockquote>
<p>Then you would issue one of the following two commands to either verify or revert the resize.</p>
<p>$ openstack-compute resize-confirm 20936230</p>
<p>$ openstack-compute resize-revert 20936230</p>
<p>There is no output from these commands but after issued you can use the &#8216;show&#8217; command to verify it has executed.</p>
<p><strong>The delete command:</strong>  Now say this server has lived out its needed life and your ready to delete it from the account. The command to do that is pretty simple its: openstack-compute delete &lt;server ID&gt;  This command will not return any values but next time you do a list command the server will no longer be on the list.</p>
<p>In conclusion these commands will provide you the basic skills needed to use the openstack-compute command line tool.  In later articles I will go into additional details on how to do advanced curl commands and once live I will be getting deeper into the NOVA client which is the command line tool for the next generation Rackspace cloud platform that will be public within a few months. I&#8217;m current in the beta so I&#8217;m having a blast playing with Rackspace&#8217;s wonderful new toy, which I look forward to teaching you all about soon.</p>
<p>Enjoy</p>
<p>- Nomad</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisisnotsupported.com/rackspace-cloud-server-api-basics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I will not install %#*@&#8217;ing Plesk or cPanels in the Cloud</title>
		<link>http://www.thisisnotsupported.com/why-i-will-not-install-plesk-or-cpanels/</link>
		<comments>http://www.thisisnotsupported.com/why-i-will-not-install-plesk-or-cpanels/#comments</comments>
		<pubDate>Sat, 05 May 2012 01:03:54 +0000</pubDate>
		<dc:creator>nomad</dc:creator>
				<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Chef]]></category>
		<category><![CDATA[Cloud Automation]]></category>
		<category><![CDATA[Cloud Providers]]></category>
		<category><![CDATA[Fabric]]></category>
		<category><![CDATA[Puppet]]></category>
		<category><![CDATA[Rackspace]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://www.thisisnotsupported.com/?p=254</guid>
		<description><![CDATA[I have recently been approached by several potential clients about doing various work to help them migrate to the Cloud. Everything was good until they asked for a control panel such as Plesk or cPanels . They were determined to have some type of web based control panel for their cloud systems. I&#8217;m completely baffled</p><p class="more-link"><a href="http://www.thisisnotsupported.com/why-i-will-not-install-plesk-or-cpanels/">(Read More...)</a></p>]]></description>
				<content:encoded><![CDATA[<p>I have recently been approached by several potential clients about doing various work to help them migrate to the Cloud. Everything was good until they asked for a control panel such as <a title="Plesk" href="http://www.parallels.com/products/plesk/" target="_blank">Plesk</a> or <a title="cPanels" href="http://www.cpanel.net/" target="_blank">cPanels</a> . They were determined to have some type of web based control panel for their cloud systems. I&#8217;m completely baffled by these people, They are trying to use extremely dated crap with cutting edge stuff and then are going to be surprised when it does not work well.</p>
<p>Let me give some history here for the young ones. Web based control panels specifically Plesk and cPanels were designed to run virtual hosting businesses. They became popular in the early 2000&#8242;s during the rise of rented dedicated server solutions. Where you wanted to cram 100&#8242;s of small sites/customers onto a single server and give them some ability to manage their own setup. Keep in mind you have very limited ability to do non-standard setups so you can meet the lowest common denominator of the systems configuration. This made sense 10 years ago when dedicated servers were expensive and you had to have lots of customers on one just to break even.</p>
<p>Now the cloud servers world today is an extremely different place. When I&#8217;m talking about cloud server I&#8217;m referring to services like <a title="Amazon EC2" href="http://aws.amazon.com/ec2/" target="_blank">Amazon EC2</a> or <a title="Rackspace Cloud Servers" href="http://www.rackspace.com/cloud/cloud_hosting_products/servers/" target="_blank">Rackspace Cloud servers</a>. These systems are designed for modular specialized services that allows for fast scalability and redundancy.  You spin up a few web servers behind a load balancer, and a couple of database servers and you have your own small server farm. You offload email and DNS to a third party service and your ready to go.</p>
<p>The smartest designs and setups in the cloud today are all about modularity and optimization. The last thing you would want to do is add a layer of additional crap to slow down your system and keep it from working as designed. Control panels by design are all about setting limits and the cloud is all about building without limits.</p>
<p>Over the next couple of weeks I will be writing several articles to explain how you should be developing cloud solutions using various API and automation tools. With these open source tools I have built scripts that allow me to create multiple types of systems within minutes, along with making configuration changes to multiple lives servers with a single command.</p>
<ul>
<li>Rackspace API</li>
<li>Amazon API</li>
<li>Using Chef for Automation</li>
<li>Using Puppet for Automation</li>
<li>Using Fabric for system configuration</li>
</ul>
<p>If your business is not fluent is using API&#8217;s and some type of automation tool such as Chef or Puppet to build and configure your servers you are way behind the power curve of current technology. Leave the GUI on Windows and learn a new skill set that will enable your business and well as your resume.</p>
<p>Enjoy</p>
<p>- No-Mad</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisisnotsupported.com/why-i-will-not-install-plesk-or-cpanels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why every blogger should use CloudFlare</title>
		<link>http://www.thisisnotsupported.com/why-every-blogger-should-use-cloudflare/</link>
		<comments>http://www.thisisnotsupported.com/why-every-blogger-should-use-cloudflare/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 21:37:55 +0000</pubDate>
		<dc:creator>nomad</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[CDN]]></category>
		<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://www.thisisnotsupported.com/?p=239</guid>
		<description><![CDATA[A while back when I was starting this blog I was searching for a way to mitigate the possibilities of a DDOS or other attack against my site. Now this is a small site running on a pair of virtual machines, so it would not take much to knock it off the net. A friend</p><p class="more-link"><a href="http://www.thisisnotsupported.com/why-every-blogger-should-use-cloudflare/">(Read More...)</a></p>]]></description>
				<content:encoded><![CDATA[<p>A while back when I was starting this blog I was searching for a way to mitigate the possibilities of a DDOS or other attack against my site. Now this is a small site running on a pair of virtual machines, so it would not take much to knock it off the net. A friend in the cloud space mentioned <a title="Cloud Flare main site" href="http://www.cloudflare.com" target="_blank">cloudflare.com</a>. I was a bit of a skeptic when I first looked over their site but within a few days of using it, I could not be happier. I have used the service for almost a year now and I&#8217;m a very satisfied customer.</p>
<p>They have a ton of great services documented well <a title="Cloud Flare Overview" href="http://www.cloudflare.com/overview" target="_blank">here</a>. they include such things as:</p>
<ul>
<li>Added layer of security and DDOS Mitigation</li>
<li>built in CDN</li>
<li>Web Analytics</li>
<li>Application optimization</li>
</ul>
<p>One of the undocumented feature I found to be useful is the ability to completely obscure the real location of my web servers. Using cloudflare along with a private whois service and manicured DNS records there is no way to locate my server behind the cloudflare service, from a security stand point this is a nice addition to an already great service. This limits the attack surface to just web applications so you don&#8217;t have to worry about as many attack vectors.</p>
<p>The service comes in two price structures a free basic service (HTTP only) and a &#8216;Pro&#8217; service for $20/month that adds tons of great features documented <a title="Cloud Flare Plans" href="https://www.cloudflare.com/plans" target="_blank">here</a>. I would strongly recommend this service to anyone hosting sites today. The added security and the CDN service alone more than pay for the monthly fee for the &#8216;Pro&#8217; account.</p>
<p>Overall an amazing value add for the small and large bloggers looking to make their sites faster and more secure.</p>
<p>- No-Mad</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisisnotsupported.com/why-every-blogger-should-use-cloudflare/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilize Lsyncd to sync multiple web servers</title>
		<link>http://www.thisisnotsupported.com/lsyncd/</link>
		<comments>http://www.thisisnotsupported.com/lsyncd/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 23:14:56 +0000</pubDate>
		<dc:creator>nomad</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Lsyncd]]></category>

		<guid isPermaLink="false">http://www.thisisnotsupported.com/?p=175</guid>
		<description><![CDATA[This article will show the steps needed to install and utilize lsyncd to sync multiple web servers in a cloud environment. I have set this up in various production environments, from 2 to 12+ servers. This can be used for many purposes, for this article I will use it to sync a pair of wordpress</p><p class="more-link"><a href="http://www.thisisnotsupported.com/lsyncd/">(Read More...)</a></p>]]></description>
				<content:encoded><![CDATA[<p>This article will show the steps needed to install and utilize lsyncd to sync multiple web servers in a cloud environment. I have set this up in various production environments, from 2 to 12+ servers. This can be used for many purposes, for this article I will use it to sync a pair of wordpress web servers since its a very common application that I have setup for many of my clients. For this demo I will show you how to do it on CentOS.</p>
<p>First setup the file systems on all the web servers, including a user with same UID/GID to use for the ownership of the transferred locations (this part of the configuration is not required to make lsyncd work, but I think a uniform simplistic approach is best). For this example we will use a default web layout of /var/www/html owned by a regular user bob (UID 501, GID 501)</p>
<div>
<div>
<blockquote>
<pre>#adduser bob -d /var/www/html</pre>
<pre>#passwd bob</pre>
<pre>#chown -R bob:bob /var/www/html</pre>
</blockquote>
<p>Next we will setup passwordless SSH from master to slave system for user root (I don&#8217;t care for this part from a security standpoint, but have not figured out how to run demon as a regular user yet).</p>
</div>
</div>
<p>Generate SSH keypair on master:</p>
<div>
<div>
<blockquote><p># ssh-keygen -t rsa</p></blockquote>
</div>
</div>
<p>Then copy /root/.ssh/id_rsa.pub on master to /root/.ssh/authorized_keys on the slave server</p>
<p>Then ensure the following lines are uncommitted in /etc/ssh/sshd_config on the slave server</p>
<div>
<div>
<blockquote>
<pre>PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys</pre>
</blockquote>
</div>
</div>
<p>Then make sure to restart SSH after making changes to the configuration. Then test SSH access from master to slave to ensure entry is working correctly.</p>
<p>Before we can install the demon you will need to ensure you have all the dependencies in place, most likely the following command will get everything you need.</p>
<blockquote><p># yum install lua lua-devel pkgconfig</p></blockquote>
<p>Then grab the source from <a href="http://code.google.com/p/lsyncd/" rel="nofollow" target="_blank">http://code.google.com/p/<wbr>lsyncd/</wbr></a></p>
<p>Untar the file and run the standard &#8216;./configure &amp;&amp; make &amp;&amp; make install&#8217; to create and install the binaries.</p>
<p>The source code install does not add the init.d script or configuration file by default, those have to be manually added after installation. Create the init.d script from template below.</p>
<p>/etc/init.d/lsyncd</p>
<blockquote>
<pre>#!/bin/bash
#
# lsyncd: Starts the lsync Daemon
#
# chkconfig: 345 99 90
# description: Lsyncd uses rsync to synchronize local directories with a remote
# machine running rsyncd. Lsyncd watches multiple directories
# trees through inotify. The first step after adding the watches
# is to, rsync all directories with the remote host, and then sync
# single file buy collecting the inotify events.
# processname: lsyncd

# . /etc/rc.d/init.d/functions 

config="/etc/lsyncd.lua"
lsyncd="/usr/local/bin/lsyncd"
lockfile="/var/lock/lsyncd"
prog="lsyncd" RETVAL=0
RETVAL=0

start() {
        if [ -f $lockfile ]; then
        echo -n $"$prog is already running: "
        echo
        else
        echo -n $"Starting $prog: "
        $lsyncd $config
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] &amp;&amp; touch $lockfile
        return $RETVAL
        fi
    }</pre>
<pre>stop() {
        echo -n $"Stopping $prog: "
        killall $lsyncd
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] &amp;&amp; rm -f $lockfile
        return $RETVAL
    }</pre>
<pre>case "$1" in
        start)
        start
        ;;
        stop)
        stop
        ;;
        restart)
        stop
        start
        ;;
        status)
        status $lsyncd
        ;;
        *)

        echo "Usage: lsyncd {start|stop|restart|status}"
        exit 1
    esac

    exit $?</pre>
</blockquote>
<pre> Set permissions and ownership on init.d file:</pre>
<div>
<div>
<blockquote>
<pre># chmod 775 /etc/init.d/lsyncd
# chown root:root /etc/init.d/lsyncd</pre>
</blockquote>
</div>
</div>
<p>Lsyncd configuration file examples. /etc/lsyncd.lua</p>
<p>Here is an example of a master, single slave configuration file (1.1.1.1 is the IP of the slave server).</p>
<blockquote>
<pre>settings = {</pre>
<pre>   logfile = "/var/log/lsyncd.log",</pre>
<pre>   statusFile = "/var/log/lsyncd-status.log",</pre>
<pre>   statusInterval = 20 }</pre>
<pre>sync{</pre>
<pre>   default.rsyncssh,</pre>
<pre>   source="/var/www/html",</pre>
<pre>   host="1.1.1.1",</pre>
<pre>   targetdir="/var/www/html",</pre>
<pre>   rsyncOpts="-avz" }</pre>
</blockquote>
<p>Here is an example for a master with two slave configuration (1.1.1.1 first slave, 2.2.2.2 second slave)</p>
<blockquote>
<pre>settings = {</pre>
<pre>   logfile = "/var/log/lsyncd.log",</pre>
<pre>   statusFile = "/var/log/lsyncd-status.log",</pre>
<pre>   statusInterval = 20 }</pre>
<pre>sync{</pre>
<pre>   default.rsyncssh,</pre>
<pre>   source="/var/www/html",</pre>
<pre>   host="1.1.1.1",</pre>
<pre>   targetdir="/var/www/html",</pre>
<pre>   rsyncOpts="-avz" }</pre>
<pre>sync{</pre>
<pre>   default.rsyncssh,</pre>
<pre>   source="/var/www/html",</pre>
<pre>   host="2.2.2.2",</pre>
<pre>   targetdir="/var/www/html",</pre>
<pre>   rsyncOpts="-avz" }</pre>
</blockquote>
<p>There is a huge amount that can be done using the configuration file, including execution of lau and bash scripts triggered by events in the configuration files. Here is the manual for configuration <a href="http://code.google.com/p/lsyncd/wiki/Lsyncd20Manual" rel="nofollow" target="_blank">http://code.google.com/p/<wbr>lsyncd/wiki/Lsyncd20Manual</wbr></a> I will show you one example of its power to exclude files from sync. If you want to exclude a directory, use an exclude file and the excludeFrom directive:</p>
<p>Sample exclude file &#8211; /etc/lsyncd-excludes.txt:</p>
<blockquote><p>cache/</p>
<p>uploads/</p>
<p>dontcopymebro/</p></blockquote>
<p>Then a sample configuration file with the exclude file included &#8211; /etc/lsyncd.lua:</p>
<blockquote>
<pre>settings = {</pre>
<pre>   logfile = "/var/log/lsyncd.log",</pre>
<pre>   statusFile = "/var/log/lsyncd-status.log",</pre>
<pre>   statusInterval = 20 }</pre>
<pre>sync{</pre>
<pre>   default.rsyncssh,</pre>
<pre>   source="/var/www/html",</pre>
<pre>   host="1.1.1.1",</pre>
<pre>   targetdir="/var/www/html",</pre>
<pre>   excludeFrom="/etc/lsyncd-excludes.txt",</pre>
<pre>   rsyncOpts="-avz" }</pre>
</blockquote>
<p>&nbsp;</p>
<p>Once the init script and the configuration file are in place, run the following command to setup run on boot:</p>
<blockquote><p>chkconfig lsyncd on</p></blockquote>
<p>Make sure to look over your log files to ensure that everything is working, the most common problem other than SSH login is running out of inodes if your file structure is large. This can be adjusted in /proc/sys/fs/inotify/max_user_<wbr>watches .</wbr></p>
<p>Now I mentioned at the first of this article that this is a one way synchronization program so all disk writes have to be done on the master web server or this will break sync. Now using a CMS like wordpress this is pretty easy to do. The way I recommend to my clients is to force SSL login/admin access. by adding the following lines to your wp-config.php. In my opinion this is a good standard security step anyways.</p>
<blockquote>
<pre>define('FORCE_SSL_ADMIN', true);</pre>
<pre>define(‘FORCE_SSL_LOGIN’, true);</pre>
</blockquote>
<p>This forces all logins to the control panel, which is where all writes are done to SSL. Then you just have to configure whatever load balancing solution your using to send all SSL traffic to your master server only.</p>
<p>Now there are plenty of other things that need to be done to setup a multi-server CMS configuration such as session handling and Apache optimization but that&#8217;s another article.</p>
<p>Hope you find this article helpful.</p>
<p>- Nomad</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisisnotsupported.com/lsyncd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SFTP Chroot Jail on RHEL6 and CentOS6</title>
		<link>http://www.thisisnotsupported.com/sftp-chrootjail-on-centos6/</link>
		<comments>http://www.thisisnotsupported.com/sftp-chrootjail-on-centos6/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 03:15:04 +0000</pubDate>
		<dc:creator>nomad</dc:creator>
				<category><![CDATA[CentOS]]></category>
		<category><![CDATA[RedHat]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SFTP]]></category>
		<category><![CDATA[sftp]]></category>

		<guid isPermaLink="false">http://www.thisisnotsupported.com/?p=154</guid>
		<description><![CDATA[Finally RedHat has stepped into the 21st century with the introduction of OpenSSH 5.3 in RHEL 6 / CentOS 6. Now we can finally build a working SFTP chroot jail within RedHat without having to build custom rpms or compile SSHd from source. This article will guide you through setting up SSHd and a couple</p><p class="more-link"><a href="http://www.thisisnotsupported.com/sftp-chrootjail-on-centos6/">(Read More...)</a></p>]]></description>
				<content:encoded><![CDATA[<p>Finally RedHat has stepped into the 21st century with the introduction of <a title="Open SSH site" href="http://www.openssh.com/" target="_blank">OpenSSH 5.3 </a>in <a title="RedHat Linux" href="http://www.redhat.com/products/enterprise-linux/" target="_blank">RHEL 6</a> / <a title="CentOS site" href="https://www.centos.org/" target="_blank">CentOS 6</a>. Now we can finally build a working SFTP chroot jail within RedHat without having to build custom rpms or compile SSHd from source. This article will guide you through setting up SSHd and a couple of users into a completely jailed STFP environment.</p>
<p>First let&#8217;s discussed what we are trying to achieve. We are going to setup two users for web content uploads that will be locked into their respective /var/www/vhosts/%u directory structures. There are basically four steps to getting this setup.</p>
<ul>
<li>design the layout you want to use for the users</li>
<li>setup the user and group accounts</li>
<li>make changes to the sshd configuration</li>
<li>do permissions cleanup and testing</li>
</ul>
<p><strong>Layout design</strong></p>
<p>For this example we are setting up two users for website content updates. Each user will have a directory structure that will be tied to a domain. They can edit the files within that structure but can not see or edit anything outside that structure.</p>
<p>We will be setting up the two users &#8211; bob and ted, each will have a directory off /var/www/vhosts/ to managed their respective sites. We will create a group call &#8216;sftponly&#8217; which will include both these users. These accounts will only have sftp access and will not have a working shell (ie standard SSH access).</p>
<p>Setup directory structure for users by adding the following directories as the user root.</p>
<p><em>      /var/www/vhosts/bob/site1/</em></p>
<p><em>     /var/www/vhosts/ted/site1/</em></p>
<p>Note how each user has a directory to match their user name, then a content directory (in this case named site1).</p>
<p><strong>User and Group setup</strong></p>
<p>First you will want to establish the sftponly group</p>
<p><em>     # groupadd sftponly</em></p>
<p>Then create the users with the correct home directories and group</p>
<p><em>    # useradd -d /var/www/vhosts/bob -s /bin/false -G sftponly bob</em></p>
<p><em>     # useradd -d /var/www/vhosts/ted -s /bin/false -G sftponly ted</em></p>
<p>Don&#8217;t forget at this point to also add password to these new accounts.</p>
<p><strong>SSHd configuration changes</strong></p>
<p>Now we need to make changes in /etc/ssh/sshd_config to enable SFTP chroot jails in SSH.<strong></strong></p>
<p>Comment out the following line in /etc/ssh/sshd_config:</p>
<p><em>      #  <code>Subsystem sftp /usr/lib/openssh/sftp-server</code></em></p>
<p>and replace it with this line:</p>
<p><em><code>     Subsystem sftp internal-sftp</code></em></p>
<p>Then add the following set of lines to the very bottom of the file:</p>
<p><em>     Match Group sftponly</em></p>
<p><em>     ChrootDirectory /var/www/vhosts/%u</em></p>
<p><em>     X11Forwarding no</em></p>
<p><em>     AllowTCPForwarding no</em></p>
<p><em>     ForceCommand internal-sftp</em></p>
<p>This creates a special login group that then chroot jailed all users in that group into their own home directory.</p>
<p>Once these file changes are saved you will need to restart SSHd for the changes to take effect, using the following command:</p>
<p><em>        # service sshd restart</em></p>
<p><strong> Permissions cleanup and testing</strong></p>
<p>Last issue to address is the permissions settings, for this example the directories /var/www/vhosts/bob and /var/www/vhosts/ted should both be owned by root. The directory /var/www/vhosts/ted/site1 should be owned by ted and the directory /var/www/vhosts/bob/site1 should be owned by bob.</p>
<p>You can then test by trying to SFTP login and see what can be done:</p>
<p>If done correctly you can not upload to any directory other than /site1</p>
<p><em>$ sftp bob@1.2.3.4</em><br />
<em> bob@1.2.3.4′s password:</em><br />
<em> Connected to 1.2.3.4.</em><br />
<em> sftp&gt; pwd</em><br />
<em> Remote working directory: /</em><br />
<em> sftp&gt; cd site1</em><br />
<em> sftp&gt; put index.html</em><br />
<em> Uploading index.html to /site1/index.html</em><br />
<em> index.html                                    100%    0     0.0KB/s   00:00</em><br />
<em> sftp&gt; ls</em><br />
<em> index.html</em><br />
<em> sftp&gt; exit</em></p>
<p>&nbsp;</p>
<p>Gotcha to watch for here is <span style="text-decoration: underline;">selinux</span>. If all your permission are correct and you can still not write to the site1 folder then check selinux. I have to use &#8216;setenforce = 0&#8242; to get this demo working.</p>
<p>You should now have two users that are completely jailed off from each other with limited abilities to do any damage to your server.</p>
<p>Enjoy</p>
<p>- Nomad</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisisnotsupported.com/sftp-chrootjail-on-centos6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Impression of the RedHat RHCSA Certification</title>
		<link>http://www.thisisnotsupported.com/redhat-rhcsa-certification/</link>
		<comments>http://www.thisisnotsupported.com/redhat-rhcsa-certification/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 01:33:12 +0000</pubDate>
		<dc:creator>nomad</dc:creator>
				<category><![CDATA[RedHat]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[RHCE]]></category>
		<category><![CDATA[RHCSA]]></category>

		<guid isPermaLink="false">http://www.thisisnotsupported.com/?p=144</guid>
		<description><![CDATA[So my employer has been nice enough to send to me to the new RedHat RHEL 6 certification track. I started this week taking the RHCSA RHEL6 certification class. This is the first certification that is now required before you can take the new RHCE exam. Now I have been RedHat certified for years, the</p><p class="more-link"><a href="http://www.thisisnotsupported.com/redhat-rhcsa-certification/">(Read More...)</a></p>]]></description>
				<content:encoded><![CDATA[<p>So my employer has been nice enough to send to me to the new RedHat RHEL 6 certification track. I started this week taking the RHCSA RHEL6 certification class. This is the first certification that is now required before you can take the new RHCE exam.</p>
<p>Now I have been RedHat certified for years, the first certificate I got from them was the RHCT (RHEL3) back on 2004, they have made a lot of changes to RedHat over the years and the new two part certification program is nice example of a maturing certification.</p>
<p>I was pleasantly surprised to see all the changes in RHEL6.</p>
<ul>
<li>New init script based on upstart</li>
<li>New cron process anacron</li>
<li>New disk encryption program LUKS</li>
<li>New logging process Rsyslog</li>
<li>Better implementation of SE Linux</li>
<li>OpenSSH now allows Match directive for chroot jail</li>
</ul>
<p>I&#8217;m looking forward to CentOS 6 which is due out shortly so I can start implementing more of these changes for my customers.</p>
<p>-Nomad</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisisnotsupported.com/redhat-rhcsa-certification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing mod_suphp on CentOS</title>
		<link>http://www.thisisnotsupported.com/mod_suphp/</link>
		<comments>http://www.thisisnotsupported.com/mod_suphp/#comments</comments>
		<pubDate>Sat, 18 Jun 2011 22:44:09 +0000</pubDate>
		<dc:creator>nomad</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[RedHat]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.thisisnotsupported.com/?p=135</guid>
		<description><![CDATA[For years I’ve fought the battle between usability and security with WordPress.  Installing mod_suphp on CentOS is a great way to fix this issue. Being able to patch the application and add plugins via the control panel, while still trying to keep the system safe from possible apache or wordpress vulnerabilities. Just recently I was</p><p class="more-link"><a href="http://www.thisisnotsupported.com/mod_suphp/">(Read More...)</a></p>]]></description>
				<content:encoded><![CDATA[<p>For years I’ve fought the battle between usability and security with WordPress.  Installing mod_suphp on CentOS is a great way to fix this issue. Being able to patch the application and add plugins via the control panel, while still trying to keep the system safe from possible apache or wordpress vulnerabilities. Just recently I was introduced to mod_suphp for apache. This completely fixed all the little permissions gotcha’s that have plagued anyone using this application.</p>
<p>Here is the official definition of what it does directly from their <a title="suphp.org" href="http://www.suphp.org" target="_blank">homepage</a></p>
<blockquote><p>suPHP is a tool for executing PHP scripts with the permissions of their owners. It consists of an Apache module (mod_suphp) and a setuid root binary (suphp) that is called by the Apache module to change the uid of the process executing the PHP interpreter.</p></blockquote>
<p>What that means in a nutshell is if the user bob owns the directory (and the files) wordpress is installed in, then all php files and scripts will run as that user. Keeping the typical <em>apache does not have permission to write to that directory/file errors</em> from occurring.</p>
<p>Now installing this on the standard CentOS/RHEL server is pretty straightforward, this guide is for RHEL/CentOS 5, The newer version available with RHEL/CentOS 6 will be discussed in a future article.</p>
<p>Mod_suphp is available via RPM from the EPEL repository (its version 0.6.3 for RHEL 5, version 0.7.1 is now available for RHEL 6 via <a title="RPMforge" href="http://rpmrepo.org/RPMforge" target="_blank">RPMForge</a> ). So first off you have to have that repository setup, here is a link for <a title="EPEL repository" href="http://fedoraproject.org/wiki/EPEL" target="_blank">EPEL</a>.</p>
<p>Once you have EPEL setup just run YUM</p>
<blockquote><p>yum install mod_suphp</p></blockquote>
<p>Move your php.conf file out of the way</p>
<blockquote><p>mv /etc/httpd/conf.d/php,conf /root/</p></blockquote>
<p>Next we will need to edit /etc/httpd/conf.d/mod_suphp.conf</p>
<blockquote>
<pre># This is the Apache server configuration file providing suPHP support..
# It contains the configuration directives to instruct the server how to
# serve php pages while switching to the user context before rendering.

LoadModule suphp_module modules/mod_suphp.so

### Uncomment to activate mod_suphp
AddHandler x-httpd-php .php .php3 .php4 .php5
suPHP_AddHandler x-httpd-php

# This option tells mod_suphp if a PHP-script requested on this server (or
# VirtualHost) should be run with the PHP-interpreter or returned to the
# browser "as it is".
suPHP_Engine on

# This option tells mod_suphp which path to pass on to the PHP-interpreter
# (by setting the PHPRC environment variable).
# Do \*NOT\* refer to a file but to the directory the file resists in.
#
# E.g.: If you want to use "/path/to/server/config/php.ini", use "suPHP_Config
# /path/to/server/config".
#
# If you don't use this option, PHP will use its compiled in default path.
suPHP_ConfigPath /etc</pre>
</blockquote>
<p>Next you can edit the /etc/suphp.conf file</p>
<blockquote><p>webserver_user=apache</p>
<p>;Path all scripts have to be in<br />
docroot=/</p>
<p>;Path to chroot() to before executing script<br />
;chroot=/mychroot</p>
<p>; Security options<br />
allow_file_group_writeable=false<br />
allow_file_others_writeable=false<br />
allow_directory_group_writeable=false<br />
allow_directory_others_writeable=false</p>
<p>;Check wheter script is within DOCUMENT_ROOT<br />
check_vhost_docroot=true</p>
<p>;Send minor error messages to browser<br />
errors_to_browser=true</p>
<p>;PATH environment variable<br />
env_path=/bin:/usr/bin</p>
<p>;Umask to set, specify in octal notation<br />
umask=0055</p>
<p>; Minimum UID<br />
min_uid=500</p>
<p>; Minimum GID<br />
min_gid=500</p>
<p>; Use correct permissions for mod_userdir sites<br />
handle_userdir=true</p>
<p>[handlers]<br />
;Handler for php-scripts<br />
x-httpd-php=php:/usr/bin/php-cgi</p>
<p>;Handler for CGI-scripts<br />
x-suphp-cgi=execute:!self</p></blockquote>
<p>&nbsp;</p>
<p>Once those two files are setup a restart of apache should be all that is needed. Now this goes better some days than others. You may need to use the apache error logs and the suphp log (var/log/suphp.log) to troubleshoot any problems you might get with your specific configuration. You may need to change a few setting within /etc/suphp.conf to get everything working depending on the setup of your apache files.</p>
<p>Enjoy</p>
<p>-Nomad</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisisnotsupported.com/mod_suphp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amazon Web Services Breakdown</title>
		<link>http://www.thisisnotsupported.com/amazon-web-services-breakdown/</link>
		<comments>http://www.thisisnotsupported.com/amazon-web-services-breakdown/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 04:06:17 +0000</pubDate>
		<dc:creator>nomad</dc:creator>
				<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[Cloud Providers]]></category>
		<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://www.thisisnotsupported.com/?p=126</guid>
		<description><![CDATA[We continue our Cloud provider information with Amazon Web Services Breakdown. Elastic Compute Cloud (EC2) – The basic building block of Amazon’s Cloud, Virtual machines that comes in various RAM and CPU sizes. They have 10 OS’s including RedHat Enterprise Linux, OpenSolaris, SUSE enterprise and Windows 2008 ready to use. Not to mention you can</p><p class="more-link"><a href="http://www.thisisnotsupported.com/amazon-web-services-breakdown/">(Read More...)</a></p>]]></description>
				<content:encoded><![CDATA[<p>We continue our Cloud provider information with Amazon Web Services Breakdown.</p>
<p><a title="Elastic Compute Cloud " href="http://aws.amazon.com/ec2/" target="_blank">Elastic Compute Cloud (EC2) </a>–  The basic building block of Amazon’s Cloud, Virtual machines that comes  in various RAM and CPU sizes. They have 10 OS’s including RedHat  Enterprise Linux, OpenSolaris, SUSE enterprise and Windows 2008 ready to  use. Not to mention you can upload your own custom VM’s right into  their environment.</p>
<p>These virtual machines come with one public IP and one internal network IP. The internal IP is part of the Amazon <a title="VIrtual Private Cloud" href="http://aws.amazon.com/vpc/" target="_blank">Virtual Private Cloud (VPC)</a>.  It allows customers to do extensive customizable networking to meet  your advanced security needs. It allows things like custom tunnels  between server clusters in different availability zones or even VPN  tunneling to your office or private datacenter.</p>
<p>Additional available networking services include <a title="Amazon Route 53" href="http://aws.amazon.com/route53/" target="_blank">Amazon Route 53</a> for your DNS Service needs and <a title="Elastic Load Balancing" href="http://aws.amazon.com/elasticloadbalancing/" target="_blank">Elastic Load Balancing</a> to balance your EC2 virtual machines.</p>
<p>Amazon Storage- Amazon has two specific types of storage, <a title="Simple Storage Service" href="http://aws.amazon.com/s3/" target="_blank">Simple Storage Service (S3) </a>or <a title="Elastic Block Store" href="http://aws.amazon.com/ebs/" target="_blank">Elastic Block Store (EBS)</a>. S3 allows for unlimited storage and also includes <a title="CloudFront" href="http://aws.amazon.com/cloudfront/" target="_blank">CloudFront</a>,  Amazon’s own Content Delivery Network (CDN). Elastic Block Store is  more like a dedicated SAN in the Cloud that can be added to an EC2  instance within that specific Availability Zone. They can be from 1GB to  1TB in size and can be used in various ways to meet your specific  storage needs.</p>
<p>Amazon Database as a Service -</p>
<p><a title="SimpleDB" href="http://aws.amazon.com/simpledb/" target="_blank">SimpleDB</a> – is a highly available, flexible, and scalable non-relational data  store that offloads the work of database administration. Developers  simply store and query data items via web services requests, and  SimpleDB does the rest.</p>
<p><a title="Relational Database Service" href="http://aws.amazon.com/rds/" target="_blank">Relational Database Service (RDS)</a>-  Relational Database as a service solution to offload your relational  database server needs to Amazon. This also automates database backups  and scaling issues, so you can concentrate on the front end services.</p>
<p>Monitoring and Deployment Management programs –</p>
<p><a title="CloudFormation" href="http://aws.amazon.com/cloudformation/" target="_blank">CloudFormation</a> – Think of this as a very basic version of puppet or chef for your  Amazon Cloud. Allow you to build various templates to quickly standup of  additional systems as needed.</p>
<p><a title="CloudWatch" href="http://aws.amazon.com/cloudwatch/" target="_blank">CloudWatch</a> – Web based front end for monitoring of cloud resources and your  applications. System administrators can use it to collect and track  metrics, gain insight, and react immediately to keep their applications  running smoothly. It lets you retrieve your monitoring data, view  graphs, and set alarms to help you troubleshoot, spot trends, and take  automated action based on the state of your cloud environment.</p>
<p>Amazon Cloud Applications –</p>
<p><a title="Simple Email Service" href="http://aws.amazon.com/ses/" target="_blank">Simple Email Service (SES)</a> – Is a scalable and cost effect bulk email sending service, much in the same line as <a title="Sendgrid" href="http://www.sendgrid.com" target="_blank">sendgrid.com</a>.</p>
<p><a title="Fulfillment Web Service" href="http://aws.amazon.com/fws/" target="_blank">Fulfillment Web Service (FWS)</a> – allows merchants to access Amazon.com’s fulfillment capabilities  through a simple web services interface. Merchants can programmatically  send order information to Amazon with instructions to physically fulfill  customer orders on their behalf.</p>
<p><a title="Flexible Payments Service" href="http://aws.amazon.com/fps/" target="_blank">Flexible Payments Service (FPS) </a>-  is the first payments service designed from the ground up for Amazon’s  customers. It is built on top of Amazon’s reliable and scalable payments  infrastructure and provides developers with a convenient way to charge  Amazon’s large customer base. Amazon customers can pay using the same  login credentials, shipping address and payment information they already  have on file with Amazon.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisisnotsupported.com/amazon-web-services-breakdown/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rackspace Cloud Breakdown</title>
		<link>http://www.thisisnotsupported.com/rackspace-cloud-breakdown/</link>
		<comments>http://www.thisisnotsupported.com/rackspace-cloud-breakdown/#comments</comments>
		<pubDate>Sun, 05 Jun 2011 18:49:40 +0000</pubDate>
		<dc:creator>nomad</dc:creator>
				<category><![CDATA[Cloud Providers]]></category>
		<category><![CDATA[Rackspace]]></category>
		<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://www.thisisnotsupported.com/?p=110</guid>
		<description><![CDATA[Rackspace Cloud Breakdown is the first in a series of breakdown articles on various cloud providers. Cloud Servers- This is the most commonly understood part of Rackspace’s cloud. Consisting of large clusters of virtual machines that can be purchases and spun up within a couple of minutes. Servers sized are determined by RAM amount purchased.</p><p class="more-link"><a href="http://www.thisisnotsupported.com/rackspace-cloud-breakdown/">(Read More...)</a></p>]]></description>
				<content:encoded><![CDATA[<p>Rackspace Cloud Breakdown is the first in a series of breakdown articles on various cloud providers.</p>
<p><a title="Rackspace Cloud Servers" href="http://www.rackspace.com/cloud/cloud_hosting_products/servers/" target="_blank">Cloud Servers</a>- This is the most commonly understood part of Rackspace’s cloud. Consisting of large clusters of virtual machines that can be purchases and spun up within a couple of minutes. Servers sized are determined by RAM amount purchased. Starting at 256MB up to 15.5GB, the larger the systems the more hard-drive space and CPU utilization you get.</p>
<p>These are basic building block servers. They have 15 Linux and 2 Windows OS versions available, these systems come pretty stripped down so you can build what you need. Consider these like basic Lego’s simple building blocks that can be used to design a system that meets your needs.</p>
<p>Every server comes with one public static IP and one private network address. The private IP is referred to as “private net”, traffic over this network incurs no bandwidth charges and is not publicly accessible.  Additional public static IP’s can be purchased with proper justification.</p>
<p><a title="Cloud Server API" href="http://www.rackspace.com/cloud/cloud_hosting_products/servers/api/" target="_blank">The API</a> – Rackspace has a completely open API, which can be used to Launch servers, reboot systems, rebuild systems from images and soon control DNS zone files for your account. There is also a separate <a title="Cloud LB API" href="http://www.rackspace.com/cloud/cloud_hosting_products/loadbalancers/api/" target="_blank">API for Cloud Load Balancers</a> and a third <a title="Cloud Files API" href="http://www.rackspace.com/cloud/cloud_hosting_products/files/api/" target="_blank">API for Cloud Files</a> intergration.</p>
<p>Service Levels in the Cloud- Rackspace has built their business around great support. For cloud servers this support comes in two levels. Standard support, which include 24/7 chat, phone and ticket support. With Standard support though they will not login to your server, they will ensure its up and running and provide you links and guides and assist with troubleshooting but the rest is up to your team.</p>
<p>Now Rackspace’s Cloud really shines with the introduction late last year of <a title="Managed Cloud Support" href="http://www.rackspace.com/cloud/managed_cloud/" target="_blank">Managed Level Support in the Cloud</a>. This is basically the same support model as their traditional dedicated hosting that built the company into a small business support star.</p>
<p>For an additional management fees they offer full management of the OS. Patching, Monitoring and a more robust backup system is also part of their managed offering. They also have a good deal of expertise in vertical and horizontal scaling and will spend the time to help you design and implement a system that meet your scaling needs.  The extra cost is well worth it if your small business does not have a dedicated Linux specialist on staff.</p>
<p>Other Important Rackspace Offerings:</p>
<p><a title="Cloud Files" href="http://www.rackspace.com/cloud/cloud_hosting_products/files/" target="_blank">Cloud Files </a>– This is Rackspace’s unlimited storage system. It allows for the storage of files and media and that content can be delivered via Akamai’s content delivery network (CDN). Rackspace provide an API for Cloud Files that allows for you to integrate file storage and CDN capability right into your site or product.</p>
<p><a title="Rackspace Email and Apps" href="http://www.rackspace.com/apps" target="_blank">Cloud Email and Apps</a> – Rackspace’s also has become an industry leader in managed email and applications. They can provide managed email, Exchange and SharePoint to meet your businesses every need.</p>
<p><a title="Rackspace Dedicated Servers" href="http://www.rackspace.com/managed_hosting/" target="_blank">Dedicated Servers</a> and <a title="Hybrid Hosting" href="http://www.rackspace.com/hosting_solutions/hybrid_hosting/" target="_blank">Hybrid Hosting</a> – Last but not least Rackspace’s traditional dedicate servers unit is still a great asset. At the end of the day there are many needs the Cloud can not provide and dedicated systems may still be needed by many companies not only for performance issues but also for compliance such as PCI and HIPPA. Rackspace has the ability to build you not only an amazing Cloud infrastructure but has the specialists on staff to build amazing Hybrid solutions to meet your every need.</p>
<p>- Nomad</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisisnotsupported.com/rackspace-cloud-breakdown/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
