How to: Scaling WordPress Servers & Deploys from Mark Jaquith

Ever wanted to learn how Auttomatic is handling & scaling the massive installation of 25 Million+ blogs? And, how they deploy code updates and fixes across 3 data centers and 1000s of servers?

Check out the video below from WordCamp San Francisco (WordCampSF) 2011 and watch the talk of Mark Jaquith (WordPress core developer).

Please let me know in the comments below if you know of other great posts, videos, or, resources about scaling and deployment of WordPress. Thank you!

Read More

How to: Install WordPress in a sub folder

Wordpress folder
Are you hosting WordPress yourself?

A great new feature is that you’re now able to keep the WordPress core folders and files in a separate sub folder.

The core files are all the WordPress installation files which you never touch or alter. All the other files which you upload, plug-ins, themes and configuration files are kept apart. This helps greatly to reduce the “unclean” mix of files of your installation. And, reduces the risk of deleting files which you should stay away from (the core WordPress installation files).

Another very helpful aspect of this feature is the ability to soft launch / beta test a new WordPress blog in a less prominent way (e.g. ) and than move it to the main location with the simple procedure below.

To reiterate: You can apply this in two ways, either by starting in a sub directory and than move the blog to the main URL/directory or you did set up your blog under the main URL/directory and want to move the core WordPress files into its own sub directory.

Below you’ll find the complete description from the WordPress codex about giving WordPress its own directory:

  1. Create the new location for the core WordPress files to be stored (we will use /wordpress in our examples). (On linux, use mkdir wordpress from your www directory. You’ll probably want to use “chown apache:apache” on the wordpress directory you created.)
  2. Go to the General panel.
  3. In the box for WordPress address (URL): change the address to the new location of your main WordPress core files. Example:
  4. In the box for Blog address (URL): change the address to the root directory’s URL. Example:
  5. Click Save Changes. (Do not worry about the error message and do not try to see your blog at this point! You will probably get a message about file not found.)
  6. Move your WordPress core files to the new location (WordPress address).
  7. Copy the index.php and .htaccess files from the WordPress directory into the root directory of your site (Blog address). The .htaccess file is invisible, so you may have to set your FTP client to show hidden files. If you are not using pretty permalinks, then you may not have a .htaccess file.
  8. Open your root directory’s index.php file in a text editor
  9. Change the following and save the file. Change the line that says:
    to the following, using your directory name for the WordPress core files:
  10. Login to the new location. It might now be
  11. If you have set up Permalinks, go to the Permalinks panel and update your Permalink structure. WordPress will automatically update your .htaccess file if it has the appropriate file permissions. If WordPress can’t write to your .htaccess file, it will display the new rewrite rules to you, which you should manually copy into your .htaccess file (in the same directory as the main index.php file.)

Please feel free to ask questions in the comments section below. I’ll help you to get this set up and working. Thanks!

Read More

SEO: Copywriting made simple – Scribe optimizes your posts

Scribe SEO

Do you sometimes wonder if there is still some tweak which needs to be done to your post to optimize your content for search engines?

If you don’t than you might miss out on a lot of organic traffic from search engines. There are many rules to follow to make your content perform best and to appear at the top of search results. It starts with the content you create, but it is important to come up with an optimal headline (and length), keywords you place at the right positions of you text, meta description & keywords, etc. etc.

If you want to optimize the SEO process than you should check out the new service is called Scribe SEO. It’s available as a WordPress plugin and web/stand alone version. You have the choice between 3 subscription levels:

  • Starter (30 evaluations, $27/m.)
  • Publisher (120 evaluations, $47/m.)
  • Advanced (300 evaluations, $97/m.)

After you completed your post than you run Scribe (counts as 1 evaluation) and it produces a report with scores and suggestions to further optimize your content, keywords, headline, etc. The tool is available here: Scribe SEO

Read More

How to: Harden WordPress – Great Presentation on Security

Wordpress securityI found a great presentation about WordPress security which shows some great ways to harden your WordPress installation. This is very important if your’re hosting you own version of WordPress.

In this presentation you’ll find out about:

  • How to do regular database backups
  • Changing your administrator account user name
  • How to change your security keys: ensure better encryption of your sessions
  • Always update WordPress and all of your plugins
  • How to create strong passwords
  • Folder & file permissions
  • How to remove the WordPress version number from your html source
  • Enable SSL Login & admin access
  • Limit access to specific IPs
  • Change the Wordpess database table prefix
  • Userful Security Plugins

Wanted to share it with everyone. Enjoy!

Protecting WordPress from the Inside Out

View more presentations from Syed Balkhi.
Another great resource about WordPress security you can find here on the WordPress codex page about hardening WordPress.

Read More

How to change: WordPress autosave and post revisions

Wordpress LogoWordPress has a built in autosave feature that automatically saves when you’re editing a post. A big disadvantage is the default frequency at which it saves your posts, every minute is kinda often. So, if you use the WP editor to write your posts than you save quiet often and it might interrupt your editing.

What I usually do is to change this default value to something like every 5 minutes. You can alter the autosave behaviour by adding this define to your wp-config.php (interval is in seconds, 300 = 5min):

define('AUTOSAVE_INTERVAL', 300);

Even a higher value of 10 or 15min might make sense if you write longer posts and don’t want to end up with so many “autosaves” of your current draft…

Another feature which is pretty new is post revisions. You find them as one of the boxes below your post editor on the write panel. If these post revisions go unmanaged, they might significantly increase the size of your database.

define('WP_POST_REVISIONS', 10);

This define is telling WP to only keep 3 revisions. If you save the 4th revision, the first one is purged off.

It is also possible to disabled post revisions altogether, by using the following define:

define('WP_POST_REVISIONS', false);

Another way to solve this is to use a plugin, like:

Post Revision Control

By using this plugin you also get a very granular way to control the number of revision per post & page. Just in case if you think you need more / less revisions than your new default setting.

Hope this helps! Let us know what other useful defines you usually add to your configuration of WordPress. Thanks!

Read More

WordPress Updates in Seconds – Via SVN or Auto-Update

Wordpress LogoWordPress is getting a lot of updates lately and it is important to stay up to date with your installation. Even more important if its “only” a minor update, but a security update!

WordPress introduced a very simple way in the current version (v2.8) called auto-upgrade. See Upgrading WordPress:

Recent versions of WordPress feature an Automatic Upgrade. You can launch the automatic upgrade by clicking the link in the new version banner (if it’s there) or by going to the Tools -> Upgrade menu. After that it should be straightforward.

Automatic Upgrades do fail sometimes, though, so remember to backup your database first, and deactivate your plugins before starting the upgrade.

Note that your files all need to be owned by the user under which your Apache server executes, or you will receive a dialog box asking for “connection information,” and you will find that no matter what you enter, it won’t work.

If this doesn’t work for you there is always the good old way of doing a manual update:

  • downloading the latest zip archive, unzip it
  • copy over all of your files (wp-content folder, wp-config, .htaccess, all other custom folder/files you added to wordpress)
  • move the current installation to another folder
  • move the new version + your files back to the web folder

But, there is another way to keep WP up-to-date:

SVN or Subversion

First you need to be able to login to your server via SSH / Shell. Next, you need to check if you have Subversion installed (just type “svn” in the shell of your server). If this is all working than you’re good to go, otherwise you need to look into how to install subversion on your server.

There is a detailed description of how to update WP on the codex. All you have to do is:

$ mkdir blog
$ cd blog
$ svn co .

WPMU users (codex page):

$ svn co .

If you’ve already installed WP and want to switch to updating via SVN:

$ cd ../blog
$ cp -p wp-config.php .htaccess ../blog-new
$ cp -rpfu wp-content/* ../blog-new/wp-content

Make sure to copy over all other custom files/folders and you should have a directory with the latest version of wordpress, running on your configuration. You’re ready for SVN 🙂

All is left now is to switch this new directory with your old blog directory:

$ mv blog blog-old; mv blog-new blog

… and to test your new installation by browsing your blog. Don;t forget to update your blog, if you

Updating your blog is now as easy as (always remember to replace [blog dir] with the correct directory of your blog installation):

$ svn sw [blog dir]


Read More

Error 999: Using Feedburner RSS Feeds for your Yahoo Pipes

I have a couple of RSS feeds which are a mashup of multiple RSS feeds using Yahoo Pipes, and to be able to track their usage I utilize Feedburner. But lately all of these Feedburner feeds were not updating.  Feedburner returned “Error getting URL: 999 – Unknown” with HTTP Error code 502, though the Yahoo! pipes source feed was valid RSS (even using the recommended services listed over on the pages of feedburner).

This happened after the migration of Feedburner accounts to Google accounts and the recent redirects to urls.

All attempts troubleshooting feedburner failed (incl. to resync the feed). In case you recently created a Feedburner feed which sources Yahoo Pipes -> check if it is working.

Update: DON’T move your Feedburner feeds to Google accounts if the original source is Yahoo Pipes:

If you use Yahoo! Pipes as the “Original Feed,” or content source, for one or more FeedBurner feeds, and you haven’t already moved over to a Google Account, please postpone moving it (for now).

We are working directly with Yahoo! to restore Google-hosted feeds’ access to Pipes as soon as possible, but until this fix is in place, FeedBurner feeds with Pipes sources moved to Google will stop working properly.

Update 2: As of today (Feb. 1, 2009 – Sun.) the feeds seem to have re-started to work as normal. No post/news yet on the official Feedburner Blog.

Read More

MyBlogLog releases JustForYou – Personalizes Your WordPress Blog

Today I installed a new WordPress plugin from MyBlogLog called JusrForYou.
You see an example set of recommendations to the left (taken from the quoted blog post below).

Here is the blog post explaining a little more about it “Just for You Personalizes Your WordPress Blog“:

Yet, none of these add-ons look at the stated interests of the individual reader, mostly because this data is closed off, hidden inside social networks and closed off to the open internet.

Just for You, released today as a WordPress plug-in, builds a list of headlines based on the expressed interests of the reader. The plug-in looks at each visitor to your blog and, if they are a cookied MyBlogLog member, looks up the tags attached to that user’s profile. Using these tags, Just for You looks into the blog’s archive for posts with matching tags or categories and shows a list of matching headlines in a sidebar widget.

A very interesting way of making suggestions for your blog visitors. In the comments you wil find some people complaining about some missing php extensions:

It seems your host is not supporting json data format. Please ask your hosting provider to enable json extension for php.

So, it remains to be seen if this plugin will work here on my blog or not. What do you think about this idea to provide recommendations to site visitors?

Read More

Web Programming: Data Portability – Gnip & OpenSocial

Data portability is a topic which is becoming more and more important, prominent example is OpenSocial from Google. OpenSocial allows you to build apps/widgets for many big social networks out there, based on one API (OpenSocial). This helps the developer of an app to make it available for all supported platforms without the need to re-write it for every social network/online community out there.

A different approach is the one from Gnip. They want to act as a data stream coverter, providing you with data from many services in the format most appropriate for your app. Below you find the services offered by them (or what they will offer soon):

Gnip Notifications Data Consumers: Poll for new data the moment it exists. Avoid throttling & decrease latency from hours to seconds.
Data Providers: Reduce API traffic by an order of magnitude while increasing distribution through aggregators.
Gnip Polling (soon) Offload API and RSS polling to Gnip and receive full content updates via your preferred protocol (REST, XMPP, ATOM, etc).
Gnip Transformation (soon) Receive standardized cross-service XML markup and turn integrating with new APIs into a plug-and-play experience.
Gnip Identification (soon) Let Gnip offer suggestions for your users’ profiles through a variety of identity discovery mechanisms.

This is an basic overview of their service (from Gnip’s site):

They support many well known services, in which data streams you can hook into as an application developer, among them are e.g. MyBlogLog, Flickr,, Twitter, etc.

Chem them out at gnipcentral. Do you have some experience with this service or are you thinking about using it? Let us know and leave a comment.

Read More

Twitter: Do you have a Twitter counter on your website?

Everybody knows the famous counter from to show (off) how many people are (approximately) reading your blog. Based on the idea of counter and stats is a new tool called “twittercounter”, doing the same kind of counter for the advanced micro-blogger, or twitterer. The service is providing not only an embeddable counter for your homepage, but also some stats. Here are their current stats, about their own account on

We now track 277,753 unique Twitter accounts.

Yesterday we generated 284,821 counters.

In total we generated 16,524,230 counters since we started tracking.

And below you’ll see the counter preview (several display options exist) of the embadable counter for your webpage or maybe your Online community page:

And a little history of their followers of the last time:

Are you already the proude owner of a Twitter counter for your homepage? I am working on mine, mostly I still need 100000 of people following me to make it worth displaying on my site:)

Read More