Easy WordPress Client Management via Command Line

I’ve had a WiredTree VPS for about 3 months now. In addition to hosting about 5 of my personal sites on it, I also host a few family members blogs and some pro-bono stuff I’ve done for past clients.

Anytime I get ready to create a new account on the VPS (which, in turn, creates its own cPanel account just as if one had purchased a shared hosting account) I always dread the next step of downloading the latest version of WordPress, grabbing the latest copies of what I consider ‘base-install plugins’ (that is, plugins that I always include in a WordPress installation. These include Absolute Privacy, Google Analyticator, All-in-One SEO Pack, Next-Gen Photo Gallery, WP-Optimize, WP Super Cache, Google XML Sitemap Generator, Contact Form 7, and Akismet.) [Note: I don’t always activate all of these in each build, but I do like to have them handy if I need them. In today’s ‘Unlimited Storage Space’ environment, these small plugins don’t get in the way.]

After going through this download, unzip, upload, and activate process about a hundred times, I figured there had to be an easier way. Yes, I know you can auto-install plugins (and even WordPress, via Fantastico or Softaculous) but I don’t pay for either of those two auto-installers on my VPS because, well, I don’t need them. Plus, I run my PHP as DSO on my VPS rather than suPHP, so there can easily be permissions issues since I run all processes as the ‘nobody’ user.

So, I began thinking…couldn’t I download the latest WordPress build, download the lastest plugin versions I want, put the plugins, extracted, in the wp-content/plugins folder and even toss in a few ‘Coming Soon’ or ‘Maintenance Mode’ themes in the wp-content/themes/ folder. Then, when I create a new account, I could just explode the zip file into the newly created public_html directory and the only manual process I would have to go through would be setting up the MySQL database and editing the wp-config. file–a process which I can now due in under 5min.

Well, that’s exactly what I did. I created the folder I wanted and zipped it up. Then I dropped it on my VPS in a high level folder and tried exploding it into a directory. What I noticed was that, since I had zipped things on my Mac and then uploaded to a Linux box, I had the nasty _MACOSX folders in each directory…making the zip file larger than it needed to be AND making things convoluted.

I did a bit of Google research and found that I just needed an archive utility that would zip ‘Windows Friendly’ files which simply excludes those Mac folders. There were several programs out there, but I settled on one called YemuZip for it’s simplicity and cost (free!). It has a simple drag-and-drop interface that worked perfectly.

I deleted the ugly directory I created the first time using the fantastic “$ rm -rf /ugly-directory” command, uploaded the newest zip and exploded it. This time, it worked like a charm. I quickly tied it to a database I had standing by and was able to log in, with themes & plugins intact, in a matter of seconds.

This process certainly beats the heck out of downloading WordPress each time and and then subsequently downloading plugins. Below, I’ll share the Linux commands for accomplishing this.

How to do it

Once you’ve created your zip (using a program like YemuZip if you’re on a Mac!), upload your wordpress.zip file to a neutral folder on your server. (By neutral, I simply mean a higher level folder that isn’t likely to be deleted…something like /home/.)

Then, you’ll want to ‘explode’ (uncompress) the zip file to a directory on your server.

You’ll need to have navigated to the directory where your recently uploaded wordpress.zip lives.For me, that means logging into my VPS via Terminal (SSH) and the using the bash command:

cd /home/

…which simply tells the server to ‘change directory’ (cd) to the /home/ folder. Then, you have two options for inflating: (1) you can pre-create the destination folder or (2) you can tell the command line to create it for you. I typically follow the latter, so my code looks like this:

unzip wordpress.zip -d /home/USER/public_html/destination

That “-d” tells Linux to create the referenced directory, “destination”, even though it doesn’t exist. If you’re inflating to a folder that already exists, you’ll simple leave off the -d.

The server-side explode takes about 2 seconds and then everything is ready for you to start configuring. In my opinion, this is the fastest way of quickly installing WordPress, fully configured, on a new server. (There are also config files you can include in your install to further personalize things, but I avoid those in most cases unless I’m setting up 5+ sites for the same client. You can Google that topic for more info.)

If you’re interested, I’ve included my latest ‘wordpress.zip’ here for you to download. All the plugins & core files are up-to-date as of the date of this post and it includes WP v. 3.0. I hope you find it useful. FYI: The unzipped folder is 18.6 MB. The zipped file is 6.0MB…another pro of uploading the zip to the server and inflating it there rather than the other way around.

Download pre-built WordPress.zip.

Do you have any tips or tricks for making things easier that I haven’t thought of? Please share you tips with us! Oh, and for what it’s worth, I also delete the “Hello Dolly” plugin…you would think Matt and the team would have gotten rid of this by now…

Hosting: Shared vs VPS vs Dedicated

web hosting
In my line of work, I have the frequent task of helping clients choose a hosting provider. Usually, my clients are not IT people but, rather, they work in Marketing, PR, or are the CEO of a company, wearing all kind of hats. Thus, my task of explaining the differences to them can be somewhat painstaking at times.

There are three basic types of hosting (but you know that already because you’ve read the post title.) Allow me to break down the three in less-than-technical terms.

Shared:

This hosting plan is the most common and the cheapest. Big name companies like Dreamhost, Bluehost, and Startlogic are some of the big players in this game. They take fairly good hardware (a fast processor, a lot of ram, and a Linux distribution like Ubuntu or CentOS) and then ‘partition’ the server into thousands of tiny little slices. They then resell those slices to individuals for a nominal fee…anywhere from $5 to $10 per month, usually.

Shared hosting is OK for your brother’s blog, a super-simple website without complicated eCommerce transactions, and the occasional calling-card website. The price is right and smaller, simple sites like these don’t require a lot of system resources to run. Where shared hosting falls short is when you have an application (or string of applications such as PHP) that need a lot of RAM to run the site. This can happen if you make a lot of custom MySQL database calls or if you’re uploading & serving lots of photos. Since shared hosts typically ‘oversell’ these servers (meaning, they sell more slices than ‘the math’ says they should, expecting some clients to use MORE than their slice but most to use less, the server can quickly get bogged down. It’s not uncommon for these mega hosts to have 1,500 or more ‘slices’ on a single server…which is too many, no matter how you cut it. More often than not, I like to stay away from shared hosting.

VPS:

VPS, or Virtual Private Server, is the mid-way point between shared and dedicated, as you may have guessed. In this case, the larger server is still ‘sliced’ into pieces, but rather than sharing and pooling resources, each virtual slice acts like it’s own server. It has it’s own OS, it’s allocated it’s own amount of RAM that it doesn’t share with others on the server, and–unlike shared servers–virtual servers can be independently rebooted (this really comes in handy when recompiling PHP or other server-side languages.)

In my opinion, the biggest advantage to VPS is that one has root access (meaning that they can do absolutely anything they want to on the server…install programs, allocate resources, and as I said, it typically has a guaranteed amount of RAM. Because VPS servers have come down so much in price (ranging from $50 to $150/month), many resellers use a VPS to resell accounts to clients and host their sites. The major players in the VPS game are VPS.net, MediaTemple, though my personal favorite as of late is WiredTree…their level of customer support is second to none.

Dedicated:

Finally, Dedicated servers are upper-echelon of the hosting world. Priced anywhere from $135 to $750, depending of the configuration, these servers power the most highly trafficked and CPU / RAM intensive sites. These servers are highly configurable and vary based on which host you go with. You can configure them with multiple hard drives, several CPU units, redundant power supplies, a custom amount of RAM and even the speed of the connectivity port. Dedicated servers are often housed with hosting providers who have extremely fast connections to the internet (close to a backbone), providing great transfer rates between the server and client. Dedicated servers have become more of a commodity over the past few years as prices for components have dropped significantly but would still be considered ‘overkill’ for the vast majority of websites out there.

Other Considerations

Another thing to ask yourself if whether or not you want a managed setup or whether you plan to act as your own administrator. Managed sites offer greater flexibility. Your team is available to help you recompile PHP, install software, keep the OS updated with the latest version and security patches and you have a support team to help you when you can’t figure things out on your own. This is almost priceless for someone who has little or no knowledge of server administration, has little time to learn, or for someone who wants to learn, but needs help along the way. The best hosts will not only help you with you questions but will also help teach you along the way…in their eyes, if they can teach you how to perform a task on the server, you won’t need their help next time. And if you’re a geek, you’ll really enjoy having root access after awhile.

Conversely, unmanaged servers require the admin to install and update everything: the OS, PHP version, MySQL support, anti-virus program, FTP programs, Mail programs…everything. Who has time for that? While you’ll be charged a premium for Managed support, after your first support ticket, you’ll appreciate the nominal fee.

On a side note, here’s a great Linux command-line cheat sheet that has helped me out multiple times.

There are a lot of choices out there when it comes to hosting. Beyond the types of hosting, there are thousands or even tens of thousands of hosts who claim to specialize in different areas in an attempt to boost their organic search results. Some hosts claim to be great for hosting WordPress blogs while others target geographic markets. At the end of the day, the best choice is to decide which type of host you need, do some research to narrow your possible choices down to a handful, and then check their knowledge base out as well as their Twitter feed. Knowledge bases are online help centers that attempt to cover questions that are asked repetitively; sort of like a FAQ but in much greater detail; if a host has an amazing online knowledge base (like MediaTemple, for example) that’s a good sign that they’ll offer great real-time support as well. I mention the Twitter feed because every host will have one and customers, pleased and otherwise, will be sure to make their voices heard. Read the replies to their twitter account…are people thrilled with their support and service or is it a myriad of complaints? WiredTree’s twitter account, for example, is laden with great comments which was a deal sealer for me. One can have the slickest website in the world, but if they don’t have quality support, they’re not worth paying for…even if it’s free!